@prisma-next/sql-relational-core 0.4.0-dev.9 → 0.4.1
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-Cs52upp3.d.mts → errors-ChY_dHam.d.mts} +2 -2
- package/dist/errors-ChY_dHam.d.mts.map +1 -0
- package/dist/exports/ast.d.mts +31 -1
- package/dist/exports/ast.d.mts.map +1 -1
- package/dist/exports/ast.mjs +0 -3
- package/dist/exports/ast.mjs.map +1 -1
- package/dist/exports/errors.d.mts +2 -2
- package/dist/exports/plan.d.mts +1 -1
- package/dist/exports/types.d.mts +1 -1
- package/dist/index.d.mts +4 -4
- package/dist/{plan-5qUWdlJM.d.mts → plan-Cs65hb-E.d.mts} +2 -2
- package/dist/{plan-5qUWdlJM.d.mts.map → plan-Cs65hb-E.d.mts.map} +1 -1
- package/dist/{types-CLCtwVWx.d.mts → types-C3Hg-CVz.d.mts} +2 -3
- package/dist/types-C3Hg-CVz.d.mts.map +1 -0
- package/dist/{types-V1qiC5DO.d.mts → types-k9pir8XY.d.mts} +3 -3
- package/dist/{types-V1qiC5DO.d.mts.map → types-k9pir8XY.d.mts.map} +1 -1
- package/package.json +8 -8
- package/src/ast/driver-types.ts +30 -0
- package/src/ast/types.ts +1 -15
- package/dist/errors-Cs52upp3.d.mts.map +0 -1
- package/dist/types-CLCtwVWx.d.mts.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { b as RuntimeError } from "./types-
|
|
1
|
+
import { b as RuntimeError } from "./types-k9pir8XY.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-ChY_dHam.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-ChY_dHam.d.mts","names":[],"sources":["../src/errors.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,WAAA,4BAEJ,+EAGT;iBAkBa,eAAA,4BAEJ,+EAGT"}
|
package/dist/exports/ast.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as CodecMeta, c as CodecRegistry, d as ExtractCodecTypes, f as ExtractDataTypes, h as defineCodecs, i as CodecInput, l as CodecTrait, m as createCodecRegistry, n as CodecDefBuilder, o as CodecOutput, p as codec, r as CodecId, s as CodecParamsDescriptor, t as Codec, u as CodecTraits } from "../codec-types-DcEITed4.mjs";
|
|
2
|
-
import { $ as ToWhereExpr, 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 SelectAst, K as ProjectionExpr, L as ListExpression, M as JoinAst, N as JoinOnExpr, O as IdentifierRef, P as JsonArrayAggExpr, Q as TableSource, R as LiteralExpr, S as EqColJoinOn, T as ExpressionFolder, U as OrExpr, V as NullCheckExpr, W as OrderByItem, X as SubqueryExpr, Y as SelectAstOptions, Z as TableRef, _ as DeleteAst, a as AndExpr, at as whereExprKinds, b as DoNothingConflictAction, c as AnyInsertOnConflictAction, d as AnyQueryAst, et as UpdateAst, f as AstRewriter, g as DefaultValueExpr, h as ColumnRef, i as AggregateOpFn, it as queryAstKinds, j as InsertValue, k as InsertAst, l as AnyInsertValue, m as BinaryOp, n as AggregateExpr, nt as isQueryAst, o as AnyExpression, p as BinaryExpr, q as ProjectionItem, r as AggregateFn, rt as isWhereExpr, s as AnyFromSource, t as AggregateCountFn, tt as WhereArg, u as AnyOperationArg, v as DerivedTableSource, w as ExprVisitor, x as DoUpdateSetConflictAction, y as Direction, z as LoweredStatement } from "../types-
|
|
2
|
+
import { $ as ToWhereExpr, 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 SelectAst, K as ProjectionExpr, L as ListExpression, M as JoinAst, N as JoinOnExpr, O as IdentifierRef, P as JsonArrayAggExpr, Q as TableSource, R as LiteralExpr, S as EqColJoinOn, T as ExpressionFolder, U as OrExpr, V as NullCheckExpr, W as OrderByItem, X as SubqueryExpr, Y as SelectAstOptions, Z as TableRef, _ as DeleteAst, a as AndExpr, at as whereExprKinds, b as DoNothingConflictAction, c as AnyInsertOnConflictAction, d as AnyQueryAst, et as UpdateAst, f as AstRewriter, g as DefaultValueExpr, h as ColumnRef, i as AggregateOpFn, it as queryAstKinds, j as InsertValue, k as InsertAst, l as AnyInsertValue, m as BinaryOp, n as AggregateExpr, nt as isQueryAst, o as AnyExpression, p as BinaryExpr, q as ProjectionItem, r as AggregateFn, rt as isWhereExpr, s as AnyFromSource, t as AggregateCountFn, tt as WhereArg, u as AnyOperationArg, v as DerivedTableSource, w as ExprVisitor, x as DoUpdateSetConflictAction, y as Direction, z as LoweredStatement } from "../types-C3Hg-CVz.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/ast/adapter-types.d.ts
|
|
5
5
|
type AdapterTarget = string;
|
|
@@ -61,7 +61,37 @@ interface SqlDriver<TBinding = void> extends SqlQueryable {
|
|
|
61
61
|
}
|
|
62
62
|
interface SqlConnection extends SqlQueryable {
|
|
63
63
|
beginTransaction(): Promise<SqlTransaction>;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the connection to the pool for reuse. Must only be called when the
|
|
66
|
+
* connection is known to be in a clean, reusable state. If a transaction
|
|
67
|
+
* operation (commit/rollback) failed or the connection is otherwise suspect,
|
|
68
|
+
* call `destroy(reason)` instead.
|
|
69
|
+
*/
|
|
64
70
|
release(): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Evicts the connection so it is never reused. Call this when the
|
|
73
|
+
* connection may be in an indeterminate state (e.g. a failed rollback
|
|
74
|
+
* leaving an open transaction, or a broken socket).
|
|
75
|
+
*
|
|
76
|
+
* Implementations MUST:
|
|
77
|
+
* - Leave the connection retryable if teardown fails, so a follow-up
|
|
78
|
+
* call can actually dispose of the handle. Calling destroy() or
|
|
79
|
+
* release() more than once after a successful teardown is caller
|
|
80
|
+
* error and behaves as the underlying primitive dictates (typically
|
|
81
|
+
* a thrown error).
|
|
82
|
+
* - Treat `reason` as advisory context only. It may be surfaced to
|
|
83
|
+
* driver-level observability hooks (e.g. pg-pool's `'release'` event)
|
|
84
|
+
* but MUST NOT influence eviction behavior and MUST NOT be rethrown.
|
|
85
|
+
* - Dispose of any driver-wide state that depends on this single
|
|
86
|
+
* connection (e.g. a direct-client driver should close itself, since a
|
|
87
|
+
* destroyed connection means its one underlying socket is unusable).
|
|
88
|
+
* - Propagate errors raised while tearing down the underlying connection.
|
|
89
|
+
* The caller has context the driver does not (whether it is already
|
|
90
|
+
* about to throw a more informative error, whether it is shutting
|
|
91
|
+
* down, etc.) and is better positioned to decide whether to swallow
|
|
92
|
+
* or surface the failure.
|
|
93
|
+
*/
|
|
94
|
+
destroy(reason?: unknown): Promise<void>;
|
|
65
95
|
}
|
|
66
96
|
interface SqlTransaction extends SqlQueryable {
|
|
67
97
|
commit(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.mts","names":[],"sources":["../../src/ast/adapter-types.ts","../../src/ast/driver-types.ts","../../src/ast/sql-codecs.ts","../../src/ast/util.ts"],"sourcesContent":[],"mappings":";;;;KAEY,aAAA;UAEK,eAAA;;EAFL,SAAA,MAAA,EAAa,SAAA,OAAA,EAAA;AAEzB;AAKiB,UAAA,cAAc,CAAA,gBAAiB,aAAjB,GAAiC,aAAjC,CAAA,CAAA;EAAiB,SAAA,EAAA,EAAA,MAAA;EAAgB,SAAA,MAAA,EAE7C,OAF6C;EAE7C,SAAA,YAAA,EACM,MADN,CAAA,MAAA,EAAA,OAAA,CAAA;EACM;;;;AAezB;EAMiB,MAAA,EAAA,EAfL,aAemB;EAKnB;;;;;EAGP,mBAAA,EAAA,EAjBoB,eAiBpB;;AAEY,UAhBA,cAgBO,CAAA,QAAA,OAAA,CAAA,CAAA;EACJ,SAAA,SAAA,CAAA,EAAA,MAAA;EACP,SAAA,IAAA,EAhBI,KAgBJ;EAA6B,SAAA,WAAA,CAAA,EAfjB,MAeiB,CAAA,MAAA,EAAA,OAAA,CAAA;;AAA4B,UAZrD,cAYqD,CAAA,YAAA,OAAA,CAAA,CAAA;EAAf,SAAA,QAAA,EAXlC,SAWkC;EAAc,SAAA,MAAA,CAAA,EAAA,SAAA,OAAA,EAAA;;KAPzD,qEACL,cACI,eAAe,eACrB,eAAe;UAEH;EC3CA,SAAA,OAAA,ED4CG,cC5Cc;EAKjB,KAAA,CAAA,GAAA,EDwCJ,GCxCI,EAAA,OAAc,EDwCJ,cCxCI,CDwCW,SCxCX,CAAA,CAAA,EDwCwB,cCxCxB,CDwCuC,KCxCvC,CAAA;;;;UALd,iBAAA;;;;ADEL,UCGK,cDHQ,CAAA,MCGa,MDHb,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA;EAER,SAAA,IAAA,ECEA,aDFe,CCED,GDFC,CAAA;EAKf,SAAA,QAAc,CAAA,EAAA,MAAA,GAAA,IAAA;EAAiB,UAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;AAE7B,UCAF,gBDAE,CAAA,MCAqB,MDArB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA;EACM,SAAA,IAAA,ECAR,aDAQ,CCAM,GDAN,CAAA;;AAYA,KCTb,cAAA,GDSa,SAAA,GAAA,WAAA,GAAA,QAAA;AAAe,UCPvB,SDOuB,CAAA,WAAA,IAAA,CAAA,SCPY,YDOZ,CAAA;EAGvB,SAAA,KAAA,CAAA,ECTE,cDSY;EAMd,OAAA,CAAA,OAAA,ECdE,QDcY,CAAA,ECdD,ODcC,CAAA,IACV,CAAA;EAIT,iBAAO,EAAA,EClBI,ODkBJ,CClBY,aDkBZ,CAAA;EACZ,KAAA,EAAA,EClBI,ODkBJ,CAAA,IAAA,CAAA;;AACI,UChBM,aAAA,SAAsB,YDgB5B,CAAA;EACS,gBAAA,EAAA,EChBE,ODgBF,CChBU,cDgBV,CAAA;EAAf,OAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"ast.d.mts","names":[],"sources":["../../src/ast/adapter-types.ts","../../src/ast/driver-types.ts","../../src/ast/sql-codecs.ts","../../src/ast/util.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/exports/ast.mjs
CHANGED
|
@@ -740,9 +740,6 @@ var BinaryExpr = class BinaryExpr extends Expression {
|
|
|
740
740
|
static like(left, right) {
|
|
741
741
|
return new BinaryExpr("like", left, right);
|
|
742
742
|
}
|
|
743
|
-
static ilike(left, right) {
|
|
744
|
-
return new BinaryExpr("ilike", left, right);
|
|
745
|
-
}
|
|
746
743
|
static in(left, right) {
|
|
747
744
|
return new BinaryExpr("in", left, right);
|
|
748
745
|
}
|
package/dist/exports/ast.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.mjs","names":["codec","codecs","codecTypes: Record<\n string,\n { readonly input: unknown; readonly output: unknown; readonly traits: unknown }\n >","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 >","arktype","refs: ColumnRef[]","refs: ParamRef[]","queryAstKinds: ReadonlySet<string>","whereExprKinds: ReadonlySet<string>","out: Record<string, unknown>"],"sources":["../../src/ast/codec-types.ts","../../src/ast/sql-codecs.ts","../../src/ast/types.ts","../../src/ast/util.ts"],"sourcesContent":["import type { JsonValue } from '@prisma-next/contract/types';\nimport type { Codec as BaseCodec, CodecTrait } from '@prisma-next/framework-components/codec';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type { Type } from 'arktype';\nimport type { O } from 'ts-toolbelt';\n\nexport type { CodecTrait } from '@prisma-next/framework-components/codec';\n\n/**\n * Descriptor for parameterized codecs that require type parameter validation.\n * Shared between adapter (compile-time) and runtime layers to avoid duplication.\n *\n * @template TParams - The shape of the type parameters (e.g., `{ length: number }`)\n * @template THelper - The type returned by the optional `init` hook\n */\nexport interface CodecParamsDescriptor<TParams = Record<string, unknown>, THelper = unknown> {\n /** The codec ID this descriptor applies to (e.g., 'pg/vector@1') */\n readonly codecId: string;\n\n /**\n * Arktype schema for validating typeParams.\n * Used to validate both storage.types entries and inline column typeParams.\n */\n readonly paramsSchema: Type<TParams>;\n\n /**\n * Optional init hook called during runtime context creation.\n * Receives validated params and returns a helper object to be stored in context.types.\n * If not provided, the validated params are stored directly.\n */\n readonly init?: (params: TParams) => THelper;\n}\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 * SQL codec interface — extends the framework base with SQL-specific fields.\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 * and between JS values and contract JSON.\n */\nexport interface Codec<\n Id extends string = string,\n TTraits extends readonly CodecTrait[] = readonly CodecTrait[],\n TWire = unknown,\n TJs = unknown,\n TParams = Record<string, unknown>,\n THelper = unknown,\n> extends BaseCodec<Id, TTraits, TWire, TJs> {\n readonly meta?: CodecMeta;\n readonly paramsSchema?: Type<TParams>;\n readonly init?: (params: TParams) => THelper;\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 /** Returns true if the codec with this ID has the given trait. */\n hasTrait(codecId: string, trait: CodecTrait): boolean;\n /** Returns all traits for a codec, or an empty array if not found. */\n traitsOf(codecId: string): readonly CodecTrait[];\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 hasTrait(codecId: string, trait: CodecTrait): boolean {\n const codec = this._byId.get(codecId);\n return codec?.traits?.includes(trait) ?? false;\n }\n\n traitsOf(codecId: string): readonly CodecTrait[] {\n return this._byId.get(codecId)?.traits ?? [];\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 * Provides identity defaults for encodeJson/decodeJson when not supplied.\n */\nexport function codec<\n Id extends string,\n const TTraits extends readonly CodecTrait[],\n TWire,\n TJs,\n TParams = Record<string, unknown>,\n THelper = unknown,\n>(config: {\n typeId: Id;\n targetTypes: readonly string[];\n encode: (value: TJs) => TWire;\n decode: (wire: TWire) => TJs;\n encodeJson?: (value: TJs) => JsonValue;\n decodeJson?: (json: JsonValue) => TJs;\n meta?: CodecMeta;\n paramsSchema?: Type<TParams>;\n init?: (params: TParams) => THelper;\n traits?: TTraits;\n renderOutputType?: (typeParams: Record<string, unknown>) => string | undefined;\n}): Codec<Id, TTraits, TWire, TJs, TParams, THelper> {\n const identity = (v: unknown) => v;\n return {\n id: config.typeId,\n targetTypes: config.targetTypes,\n ...ifDefined('meta', config.meta),\n ...ifDefined('paramsSchema', config.paramsSchema),\n ...ifDefined('init', config.init),\n ...ifDefined(\n 'traits',\n config.traits ? (Object.freeze([...config.traits]) as TTraits) : undefined,\n ),\n ...ifDefined('renderOutputType', config.renderOutputType),\n encode: config.encode,\n decode: config.decode,\n encodeJson: (config.encodeJson ?? identity) as (value: TJs) => JsonValue,\n decodeJson: (config.decodeJson ?? identity) as (json: JsonValue) => TJs,\n };\n}\n\n/**\n * Type helpers to extract codec types.\n */\nexport type CodecId<T> =\n T extends Codec<infer Id> ? Id : T extends { readonly id: infer Id } ? Id : never;\nexport type CodecInput<T> =\n T extends Codec<string, readonly CodecTrait[], unknown, infer JsT> ? JsT : never;\nexport type CodecOutput<T> =\n T extends Codec<string, readonly CodecTrait[], unknown, infer JsT> ? JsT : never;\nexport type CodecTraits<T> =\n T extends Codec<string, infer TTraits> ? TTraits[number] & CodecTrait : 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> ? Id : never]: {\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly traits: CodecTraits<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> ? 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\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<\n string,\n { readonly input: unknown; readonly output: unknown; readonly traits: unknown }\n > = {};\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 traits: undefined as unknown as CodecTraits<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> ? 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> ? 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 }\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","import { type as arktype } from 'arktype';\nimport { codec, defineCodecs } from './codec-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\nconst lengthParamsSchema = arktype({\n length: 'number.integer > 0',\n});\n\nconst precisionParamsSchema = arktype({\n 'precision?': 'number.integer >= 0 & number.integer <= 6',\n});\n\ntype LengthTypeHelper = {\n readonly kind: 'fixed' | 'variable';\n readonly maxLength: number;\n};\n\nfunction createLengthTypeHelper(\n kind: LengthTypeHelper['kind'],\n): (params: Record<string, unknown>) => LengthTypeHelper {\n return (params) => ({\n kind,\n maxLength: params['length'] as number,\n });\n}\n\nconst sqlCharCodec = codec<\n typeof SQL_CHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n>({\n typeId: SQL_CHAR_CODEC_ID,\n targetTypes: ['char'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire.trimEnd(),\n paramsSchema: lengthParamsSchema,\n init: createLengthTypeHelper('fixed'),\n renderOutputType: (typeParams) => {\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});\n\nconst sqlVarcharCodec = codec<\n typeof SQL_VARCHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n>({\n typeId: SQL_VARCHAR_CODEC_ID,\n targetTypes: ['varchar'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n paramsSchema: lengthParamsSchema,\n init: createLengthTypeHelper('variable'),\n renderOutputType: (typeParams) => {\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});\n\nconst sqlIntCodec = codec({\n typeId: SQL_INT_CODEC_ID,\n targetTypes: ['int'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n});\n\nconst sqlFloatCodec = codec({\n typeId: SQL_FLOAT_CODEC_ID,\n targetTypes: ['float'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n});\n\nconst sqlTextCodec = codec({\n typeId: SQL_TEXT_CODEC_ID,\n targetTypes: ['text'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n});\n\nconst sqlTimestampCodec = codec({\n typeId: SQL_TIMESTAMP_CODEC_ID,\n targetTypes: ['timestamp'],\n traits: ['equality', 'order'],\n encode: (value: string | Date): string => (value instanceof Date ? value.toISOString() : value),\n decode: (wire: string | Date): string => (wire instanceof Date ? wire.toISOString() : wire),\n paramsSchema: precisionParamsSchema,\n renderOutputType: (typeParams) => {\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\nconst codecs = defineCodecs()\n .add('char', sqlCharCodec)\n .add('varchar', sqlVarcharCodec)\n .add('int', sqlIntCodec)\n .add('float', sqlFloatCodec)\n .add('text', sqlTextCodec)\n .add('timestamp', sqlTimestampCodec);\n\nexport const sqlCodecDefinitions = codecs.codecDefinitions;\nexport const sqlDataTypes = codecs.dataTypes;\nexport type SqlCodecTypes = typeof codecs.CodecTypes;\n","import type { PlanRefs } from '@prisma-next/contract/types';\nimport type { ParamSpec } from '@prisma-next/operations';\nimport type { SqlLoweringSpec } from '@prisma-next/sql-operations';\n\nexport type Direction = 'asc' | 'desc';\n\nexport type BinaryOp =\n | 'eq'\n | 'neq'\n | 'gt'\n | 'lt'\n | 'gte'\n | 'lte'\n | 'like'\n | 'ilike'\n | 'in'\n | 'notIn';\n\nexport type AggregateCountFn = 'count';\nexport type AggregateOpFn = 'sum' | 'avg' | 'min' | 'max';\nexport type AggregateFn = AggregateCountFn | AggregateOpFn;\n\nexport interface ExpressionSource {\n toExpr(): AnyExpression;\n}\n\nexport interface ExpressionRewriter {\n columnRef?(expr: ColumnRef): AnyExpression;\n identifierRef?(expr: IdentifierRef): AnyExpression;\n paramRef?(expr: ParamRef): ParamRef | LiteralExpr;\n literal?(expr: LiteralExpr): LiteralExpr;\n list?(expr: ListExpression): ListExpression | LiteralExpr;\n select?(ast: SelectAst): SelectAst;\n}\n\nexport interface AstRewriter extends ExpressionRewriter {\n tableSource?(source: TableSource): TableSource;\n eqColJoinOn?(on: EqColJoinOn): EqColJoinOn | AnyExpression;\n}\n\nexport interface ExprVisitor<R> {\n columnRef(expr: ColumnRef): R;\n identifierRef(expr: IdentifierRef): R;\n subquery(expr: SubqueryExpr): R;\n operation(expr: OperationExpr): R;\n aggregate(expr: AggregateExpr): R;\n jsonObject(expr: JsonObjectExpr): R;\n jsonArrayAgg(expr: JsonArrayAggExpr): R;\n binary(expr: BinaryExpr): R;\n and(expr: AndExpr): R;\n or(expr: OrExpr): R;\n exists(expr: ExistsExpr): R;\n nullCheck(expr: NullCheckExpr): R;\n not(expr: NotExpr): R;\n literal(expr: LiteralExpr): R;\n param(expr: ParamRef): R;\n list(expr: ListExpression): R;\n}\n\nexport interface ExpressionFolder<T> {\n empty: T;\n combine(a: T, b: T): T;\n isAbsorbing?(value: T): boolean;\n columnRef?(expr: ColumnRef): T;\n identifierRef?(expr: IdentifierRef): T;\n paramRef?(expr: ParamRef): T;\n literal?(expr: LiteralExpr): T;\n list?(expr: ListExpression): T;\n select?(ast: SelectAst): T;\n}\n\nexport type ProjectionExpr = AnyExpression;\nexport type InsertValue = ColumnRef | ParamRef | DefaultValueExpr;\nexport type JoinOnExpr = EqColJoinOn | AnyExpression;\nexport type WhereArg = AnyExpression | ToWhereExpr;\nexport type JsonObjectEntry = {\n readonly key: string;\n readonly value: ProjectionExpr;\n};\n\nfunction frozenArrayCopy<T>(values: readonly T[]): ReadonlyArray<T> {\n return Object.freeze([...values]);\n}\n\nfunction frozenOptionalRecordCopy<T extends Record<string, unknown>>(\n value: T | undefined,\n): Readonly<T> | undefined {\n return value === undefined ? undefined : Object.freeze({ ...value });\n}\n\nfunction frozenRecordCopy<T>(record: Readonly<Record<string, T>>): Readonly<Record<string, T>> {\n return Object.freeze({ ...record });\n}\n\nfunction freezeRows(\n rows: ReadonlyArray<Record<string, InsertValue>>,\n): ReadonlyArray<Readonly<Record<string, InsertValue>>> {\n return Object.freeze(rows.map((row) => Object.freeze({ ...row })));\n}\n\nfunction combineAll<T>(folder: ExpressionFolder<T>, thunks: Array<() => T>): T {\n let result = folder.empty;\n for (const thunk of thunks) {\n if (folder.isAbsorbing?.(result)) {\n return result;\n }\n result = folder.combine(result, thunk());\n }\n return result;\n}\n\nfunction rewriteComparable(value: AnyExpression, rewriter: ExpressionRewriter): AnyExpression {\n switch (value.kind) {\n case 'param-ref':\n return rewriter.paramRef ? rewriter.paramRef(value) : value;\n case 'literal':\n return rewriter.literal ? rewriter.literal(value) : value;\n case 'list':\n if (rewriter.list) {\n return rewriter.list(value);\n }\n return value.rewrite(rewriter);\n default:\n return value.rewrite(rewriter);\n }\n}\n\nfunction foldComparable<T>(value: AnyExpression, folder: ExpressionFolder<T>): T {\n switch (value.kind) {\n case 'param-ref':\n return folder.paramRef ? folder.paramRef(value) : folder.empty;\n case 'literal':\n return folder.literal ? folder.literal(value) : folder.empty;\n case 'list':\n return value.fold(folder);\n default:\n return value.fold(folder);\n }\n}\n\nfunction collectColumnRefsWith<TNode extends Expression>(node: TNode): ColumnRef[] {\n return node.fold<ColumnRef[]>({\n empty: [],\n combine: (a, b) => [...a, ...b],\n columnRef: (columnRef) => [columnRef],\n select: (ast) => ast.collectColumnRefs(),\n });\n}\n\nfunction collectParamRefsWith<TNode extends Expression>(node: TNode): ParamRef[] {\n return node.fold<ParamRef[]>({\n empty: [],\n combine: (a, b) => [...a, ...b],\n paramRef: (paramRef) => [paramRef],\n select: (ast) => ast.collectParamRefs(),\n });\n}\n\nfunction sortRefs(\n tables: ReadonlySet<string>,\n columns: ReadonlyMap<string, { table: string; column: string }>,\n): PlanRefs {\n const sortedTables = [...tables].sort((a, b) => a.localeCompare(b));\n const sortedColumns = [...columns.values()].sort((a, b) => {\n const tableCompare = a.table.localeCompare(b.table);\n if (tableCompare !== 0) {\n return tableCompare;\n }\n return a.column.localeCompare(b.column);\n });\n\n return {\n tables: sortedTables,\n columns: sortedColumns,\n };\n}\n\nfunction addColumnRefToRefSets(\n columnRef: ColumnRef,\n tables: Set<string>,\n columns: Map<string, { table: string; column: string }>,\n): void {\n if (columnRef.table === 'excluded') {\n return;\n }\n tables.add(columnRef.table);\n const key = `${columnRef.table}.${columnRef.column}`;\n if (!columns.has(key)) {\n columns.set(key, {\n table: columnRef.table,\n column: columnRef.column,\n });\n }\n}\n\nfunction mergeRefsInto(\n refs: PlanRefs,\n tables: Set<string>,\n columns: Map<string, { table: string; column: string }>,\n): void {\n for (const table of refs.tables ?? []) {\n tables.add(table);\n }\n for (const column of refs.columns ?? []) {\n addColumnRefToRefSets(new ColumnRef(column.table, column.column), tables, columns);\n }\n}\n\nabstract class AstNode {\n abstract readonly kind: string;\n\n protected freeze(): void {\n Object.freeze(this);\n }\n}\n\nabstract class QueryAst extends AstNode {\n abstract collectRefs(): PlanRefs;\n abstract collectParamRefs(): ParamRef[];\n abstract toQueryAst(): AnyQueryAst;\n\n collectColumnRefs(): ColumnRef[] {\n const refs = this.collectRefs().columns ?? [];\n return refs.map((ref) => new ColumnRef(ref.table, ref.column));\n }\n}\n\nabstract class FromSource extends AstNode {\n abstract collectRefs(): PlanRefs;\n abstract rewrite(rewriter: AstRewriter): AnyFromSource;\n abstract toFromSource(): AnyFromSource;\n}\n\nabstract class Expression extends AstNode implements ExpressionSource {\n abstract accept<R>(visitor: ExprVisitor<R>): R;\n abstract rewrite(rewriter: ExpressionRewriter): AnyExpression;\n abstract fold<T>(folder: ExpressionFolder<T>): T;\n\n collectColumnRefs(): ColumnRef[] {\n return collectColumnRefsWith(this);\n }\n\n collectParamRefs(): ParamRef[] {\n return collectParamRefsWith(this);\n }\n\n baseColumnRef(): ColumnRef {\n throw new Error(`${this.constructor.name} does not expose a base column reference`);\n }\n\n toExpr(): AnyExpression {\n return this as unknown as AnyExpression;\n }\n\n not(): NotExpr {\n return new NotExpr(this as unknown as AnyExpression);\n }\n}\n\nexport class TableSource extends FromSource {\n readonly kind = 'table-source' as const;\n readonly name: string;\n readonly alias: string | undefined;\n\n constructor(name: string, alias?: string) {\n super();\n this.name = name;\n this.alias = alias;\n this.freeze();\n }\n\n static named(name: string, alias?: string): TableSource {\n return new TableSource(name, alias);\n }\n\n override rewrite(rewriter: AstRewriter): AnyFromSource {\n return rewriter.tableSource ? rewriter.tableSource(this) : this;\n }\n\n override toFromSource(): AnyFromSource {\n return this;\n }\n\n override collectRefs(): PlanRefs {\n return {\n tables: [this.name],\n columns: [],\n };\n }\n}\n\nexport interface TableRef {\n readonly name: string;\n readonly alias?: string;\n}\n\nexport class DerivedTableSource extends FromSource {\n readonly kind = 'derived-table-source' as const;\n readonly alias: string;\n readonly query: SelectAst;\n\n constructor(alias: string, query: SelectAst) {\n super();\n this.alias = alias;\n this.query = query;\n this.freeze();\n }\n\n static as(alias: string, query: SelectAst): DerivedTableSource {\n return new DerivedTableSource(alias, query);\n }\n\n // Intentionally does not call rewriter.tableSource — derived tables are rewritten\n // via their inner query, not intercepted at the FromSource level. A future\n // fromSource?(source: AnyFromSource) callback would be needed for that.\n override rewrite(rewriter: AstRewriter): AnyFromSource {\n return new DerivedTableSource(this.alias, this.query.rewrite(rewriter));\n }\n\n override toFromSource(): AnyFromSource {\n return this;\n }\n\n override collectRefs(): PlanRefs {\n return this.query.collectRefs();\n }\n}\n\nexport class ColumnRef extends Expression {\n readonly kind = 'column-ref' as const;\n readonly table: string;\n readonly column: string;\n\n constructor(table: string, column: string) {\n super();\n this.table = table;\n this.column = column;\n this.freeze();\n }\n\n static of(table: string, column: string): ColumnRef {\n return new ColumnRef(table, column);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.columnRef(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.columnRef ? rewriter.columnRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.columnRef ? folder.columnRef(this) : folder.empty;\n }\n\n override baseColumnRef(): ColumnRef {\n return this;\n }\n}\n\nexport class IdentifierRef extends Expression {\n readonly kind = 'identifier-ref' as const;\n readonly name: string;\n\n constructor(name: string) {\n super();\n this.name = name;\n this.freeze();\n }\n\n static of(name: string): IdentifierRef {\n return new IdentifierRef(name);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.identifierRef(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.identifierRef ? rewriter.identifierRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.identifierRef ? folder.identifierRef(this) : folder.empty;\n }\n}\n\nexport class ParamRef extends Expression {\n readonly kind = 'param-ref' as const;\n readonly value: unknown;\n readonly name: string | undefined;\n readonly codecId: string | undefined;\n\n constructor(\n value: unknown,\n options?: {\n name?: string;\n codecId?: string;\n },\n ) {\n super();\n this.value = value;\n this.name = options?.name;\n this.codecId = options?.codecId;\n this.freeze();\n }\n\n static of(\n value: unknown,\n options?: {\n name?: string;\n codecId?: string;\n },\n ): ParamRef {\n return new ParamRef(value, options);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.param(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.paramRef ? rewriter.paramRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.paramRef ? folder.paramRef(this) : folder.empty;\n }\n}\n\nexport class DefaultValueExpr extends AstNode {\n readonly kind = 'default-value' as const;\n\n constructor() {\n super();\n this.freeze();\n }\n}\n\nexport class LiteralExpr extends Expression {\n readonly kind = 'literal' as const;\n readonly value: unknown;\n\n constructor(value: unknown) {\n super();\n this.value = value;\n this.freeze();\n }\n\n static of(value: unknown): LiteralExpr {\n return new LiteralExpr(value);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.literal(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.literal ? rewriter.literal(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.literal ? folder.literal(this) : folder.empty;\n }\n}\n\nexport class SubqueryExpr extends Expression {\n readonly kind = 'subquery' as const;\n readonly query: SelectAst;\n\n constructor(query: SelectAst) {\n super();\n this.query = query;\n this.freeze();\n }\n\n static of(query: SelectAst): SubqueryExpr {\n return new SubqueryExpr(query);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.subquery(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n const query = this.query.rewrite(rewriter);\n return new SubqueryExpr(query);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.select ? folder.select(this.query) : folder.empty;\n }\n}\n\nexport class OperationExpr extends Expression {\n readonly kind = 'operation' as const;\n readonly method: string;\n readonly self: AnyExpression;\n readonly args: ReadonlyArray<AnyExpression | ParamRef | LiteralExpr>;\n readonly returns: ParamSpec;\n readonly lowering: SqlLoweringSpec;\n\n constructor(options: {\n readonly method: string;\n readonly self: AnyExpression;\n readonly args: ReadonlyArray<AnyExpression | ParamRef | LiteralExpr> | undefined;\n readonly returns: ParamSpec;\n readonly lowering: SqlLoweringSpec;\n }) {\n super();\n this.method = options.method;\n this.self = options.self;\n this.args = frozenArrayCopy(options.args ?? []);\n this.returns = options.returns;\n this.lowering = options.lowering;\n this.freeze();\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.operation(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new OperationExpr({\n method: this.method,\n self: this.self.rewrite(rewriter),\n args: this.args.map((arg) => rewriteComparable(arg, rewriter)) as ReadonlyArray<\n AnyExpression | ParamRef | LiteralExpr\n >,\n returns: this.returns,\n lowering: this.lowering,\n });\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => this.self.fold(folder),\n ...this.args.map((arg) => () => foldComparable(arg, folder)),\n ]);\n }\n\n override baseColumnRef(): ColumnRef {\n return this.self.baseColumnRef();\n }\n}\n\nexport class AggregateExpr extends Expression {\n readonly kind = 'aggregate' as const;\n readonly fn: AggregateFn;\n readonly expr: AnyExpression | undefined;\n\n constructor(fn: AggregateFn, expr?: AnyExpression) {\n super();\n if (fn !== 'count' && expr === undefined) {\n throw new Error(`Aggregate function \"${fn}\" requires an expression`);\n }\n this.fn = fn;\n this.expr = expr;\n this.freeze();\n }\n\n static count(expr?: AnyExpression): AggregateExpr {\n return new AggregateExpr('count', expr);\n }\n\n static sum(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('sum', expr);\n }\n\n static avg(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('avg', expr);\n }\n\n static min(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('min', expr);\n }\n\n static max(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('max', expr);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.aggregate(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return this.expr === undefined ? this : new AggregateExpr(this.fn, this.expr.rewrite(rewriter));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr ? this.expr.fold(folder) : folder.empty;\n }\n}\n\nexport class JsonObjectExpr extends Expression {\n readonly kind = 'json-object' as const;\n readonly entries: ReadonlyArray<JsonObjectEntry>;\n\n constructor(entries: ReadonlyArray<JsonObjectEntry>) {\n super();\n this.entries = frozenArrayCopy(entries.map((entry) => Object.freeze({ ...entry })));\n this.freeze();\n }\n\n static entry(key: string, value: ProjectionExpr): JsonObjectEntry {\n return {\n key,\n value,\n };\n }\n\n static fromEntries(entries: ReadonlyArray<JsonObjectEntry>): JsonObjectExpr {\n return new JsonObjectExpr(entries);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.jsonObject(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new JsonObjectExpr(\n this.entries.map((entry) => ({\n key: entry.key,\n value:\n entry.value.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(entry.value)\n : entry.value\n : entry.value.rewrite(rewriter),\n })),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.entries.map(\n (entry) => () =>\n entry.value.kind === 'literal'\n ? folder.literal\n ? folder.literal(entry.value)\n : folder.empty\n : entry.value.fold(folder),\n ),\n );\n }\n}\n\nexport class OrderByItem extends AstNode {\n readonly kind = 'order-by-item' as const;\n readonly expr: AnyExpression;\n readonly dir: Direction;\n\n constructor(expr: AnyExpression, dir: Direction) {\n super();\n this.expr = expr;\n this.dir = dir;\n this.freeze();\n }\n\n static asc(expr: AnyExpression): OrderByItem {\n return new OrderByItem(expr, 'asc');\n }\n\n static desc(expr: AnyExpression): OrderByItem {\n return new OrderByItem(expr, 'desc');\n }\n\n rewrite(rewriter: ExpressionRewriter): OrderByItem {\n return new OrderByItem(this.expr.rewrite(rewriter), this.dir);\n }\n}\n\nexport class JsonArrayAggExpr extends Expression {\n readonly kind = 'json-array-agg' as const;\n readonly expr: AnyExpression;\n readonly onEmpty: 'null' | 'emptyArray';\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n\n constructor(\n expr: AnyExpression,\n onEmpty: 'null' | 'emptyArray' = 'null',\n orderBy?: ReadonlyArray<OrderByItem>,\n ) {\n super();\n this.expr = expr;\n this.onEmpty = onEmpty;\n this.orderBy = orderBy && orderBy.length > 0 ? frozenArrayCopy(orderBy) : undefined;\n this.freeze();\n }\n\n static of(\n expr: AnyExpression,\n onEmpty: 'null' | 'emptyArray' = 'null',\n orderBy?: ReadonlyArray<OrderByItem>,\n ): JsonArrayAggExpr {\n return new JsonArrayAggExpr(expr, onEmpty, orderBy);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.jsonArrayAgg(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new JsonArrayAggExpr(\n this.expr.rewrite(rewriter),\n this.onEmpty,\n this.orderBy?.map((orderItem) => orderItem.rewrite(rewriter)),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => this.expr.fold(folder),\n ...(this.orderBy ?? []).map((orderItem) => () => orderItem.expr.fold(folder)),\n ]);\n }\n}\n\nexport class ListExpression extends Expression {\n readonly kind = 'list' as const;\n readonly values: ReadonlyArray<AnyExpression>;\n\n constructor(values: ReadonlyArray<AnyExpression>) {\n super();\n this.values = frozenArrayCopy(values);\n this.freeze();\n }\n\n static of(values: ReadonlyArray<AnyExpression>): ListExpression {\n return new ListExpression(values);\n }\n\n static fromValues(values: ReadonlyArray<unknown>): ListExpression {\n return new ListExpression(values.map((value) => new LiteralExpr(value)));\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.list(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n if (rewriter.list) {\n return rewriter.list(this);\n }\n\n return new ListExpression(this.values.map((value) => value.rewrite(rewriter)));\n }\n\n fold<T>(folder: ExpressionFolder<T>): T {\n if (folder.list) {\n return folder.list(this);\n }\n return combineAll(\n folder,\n this.values.map((value) => () => value.fold(folder)),\n );\n }\n}\n\nexport class BinaryExpr extends Expression {\n readonly kind = 'binary' as const;\n readonly op: BinaryOp;\n readonly left: AnyExpression;\n readonly right: AnyExpression;\n\n constructor(op: BinaryOp, left: AnyExpression, right: AnyExpression) {\n super();\n this.op = op;\n this.left = left;\n this.right = right;\n this.freeze();\n }\n\n static eq(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('eq', left, right);\n }\n\n static neq(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('neq', left, right);\n }\n\n static gt(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('gt', left, right);\n }\n\n static lt(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('lt', left, right);\n }\n\n static gte(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('gte', left, right);\n }\n\n static lte(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('lte', left, right);\n }\n\n static like(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('like', left, right);\n }\n\n static ilike(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('ilike', left, right);\n }\n\n static in(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('in', left, right);\n }\n\n static notIn(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('notIn', left, right);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.binary(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new BinaryExpr(\n this.op,\n rewriteComparable(this.left, rewriter),\n rewriteComparable(this.right, rewriter),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => foldComparable(this.left, folder),\n () => foldComparable(this.right, folder),\n ]);\n }\n}\n\nexport class AndExpr extends Expression {\n readonly kind = 'and' as const;\n readonly exprs: ReadonlyArray<AnyExpression>;\n\n constructor(exprs: ReadonlyArray<AnyExpression>) {\n super();\n this.exprs = frozenArrayCopy(exprs);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<AnyExpression>): AndExpr {\n return new AndExpr(exprs);\n }\n\n static true(): AndExpr {\n return new AndExpr([]);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.and(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new AndExpr(this.exprs.map((expr) => expr.rewrite(rewriter)));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.exprs.map((expr) => () => expr.fold(folder)),\n );\n }\n}\n\nexport class OrExpr extends Expression {\n readonly kind = 'or' as const;\n readonly exprs: ReadonlyArray<AnyExpression>;\n\n constructor(exprs: ReadonlyArray<AnyExpression>) {\n super();\n this.exprs = frozenArrayCopy(exprs);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<AnyExpression>): OrExpr {\n return new OrExpr(exprs);\n }\n\n static false(): OrExpr {\n return new OrExpr([]);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.or(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new OrExpr(this.exprs.map((expr) => expr.rewrite(rewriter)));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.exprs.map((expr) => () => expr.fold(folder)),\n );\n }\n}\n\nexport class ExistsExpr extends Expression {\n readonly kind = 'exists' as const;\n readonly notExists: boolean;\n readonly subquery: SelectAst;\n\n constructor(subquery: SelectAst, notExists = false) {\n super();\n this.notExists = notExists;\n this.subquery = subquery;\n this.freeze();\n }\n\n static exists(subquery: SelectAst): ExistsExpr {\n return new ExistsExpr(subquery, false);\n }\n\n static notExists(subquery: SelectAst): ExistsExpr {\n return new ExistsExpr(subquery, true);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.exists(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new ExistsExpr(this.subquery.rewrite(rewriter), this.notExists);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.select ? folder.select(this.subquery) : folder.empty;\n }\n}\n\nexport class NullCheckExpr extends Expression {\n readonly kind = 'null-check' as const;\n readonly expr: AnyExpression;\n readonly isNull: boolean;\n\n constructor(expr: AnyExpression, isNull: boolean) {\n super();\n this.expr = expr;\n this.isNull = isNull;\n this.freeze();\n }\n\n static isNull(expr: AnyExpression): NullCheckExpr {\n return new NullCheckExpr(expr, true);\n }\n\n static isNotNull(expr: AnyExpression): NullCheckExpr {\n return new NullCheckExpr(expr, false);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.nullCheck(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new NullCheckExpr(this.expr.rewrite(rewriter), this.isNull);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr.fold(folder);\n }\n}\n\nexport class NotExpr extends Expression {\n readonly kind = 'not' as const;\n readonly expr: AnyExpression;\n\n constructor(expr: AnyExpression) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n toWhereExpr(): AnyExpression {\n return this;\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.not(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new NotExpr(this.expr.rewrite(rewriter));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr.fold(folder);\n }\n}\n\nexport class EqColJoinOn extends AstNode {\n readonly kind = 'eq-col-join-on' as const;\n readonly left: ColumnRef;\n readonly right: ColumnRef;\n\n constructor(left: ColumnRef, right: ColumnRef) {\n super();\n this.left = left;\n this.right = right;\n this.freeze();\n }\n\n static of(left: ColumnRef, right: ColumnRef): EqColJoinOn {\n return new EqColJoinOn(left, right);\n }\n\n rewrite(rewriter: AstRewriter): EqColJoinOn | AnyExpression {\n return rewriter.eqColJoinOn ? rewriter.eqColJoinOn(this) : this;\n }\n}\n\nexport class JoinAst extends AstNode {\n readonly kind = 'join' as const;\n readonly joinType: 'inner' | 'left' | 'right' | 'full';\n readonly source: AnyFromSource;\n readonly lateral: boolean;\n readonly on: JoinOnExpr;\n\n constructor(\n joinType: 'inner' | 'left' | 'right' | 'full',\n source: AnyFromSource,\n on: JoinOnExpr,\n lateral = false,\n ) {\n super();\n this.joinType = joinType;\n this.source = source;\n this.lateral = lateral;\n this.on = on;\n this.freeze();\n }\n\n static inner(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('inner', source, on, lateral);\n }\n\n static left(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('left', source, on, lateral);\n }\n\n static right(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('right', source, on, lateral);\n }\n\n static full(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('full', source, on, lateral);\n }\n\n rewrite(rewriter: AstRewriter): JoinAst {\n return new JoinAst(\n this.joinType,\n this.source.rewrite(rewriter),\n this.on.kind === 'eq-col-join-on' ? this.on.rewrite(rewriter) : this.on.rewrite(rewriter),\n this.lateral,\n );\n }\n}\n\nexport class ProjectionItem extends AstNode {\n readonly kind = 'projection-item' as const;\n readonly alias: string;\n readonly expr: ProjectionExpr;\n\n constructor(alias: string, expr: ProjectionExpr) {\n super();\n this.alias = alias;\n this.expr = expr;\n this.freeze();\n }\n\n static of(alias: string, expr: ProjectionExpr): ProjectionItem {\n return new ProjectionItem(alias, expr);\n }\n}\n\nexport interface SelectAstOptions {\n readonly from: AnyFromSource;\n readonly joins: ReadonlyArray<JoinAst> | undefined;\n readonly projection: ReadonlyArray<ProjectionItem>;\n readonly where: AnyExpression | undefined;\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n readonly distinct: true | undefined;\n readonly distinctOn: ReadonlyArray<AnyExpression> | undefined;\n readonly groupBy: ReadonlyArray<AnyExpression> | undefined;\n readonly having: AnyExpression | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n readonly selectAllIntent: { readonly table?: string } | undefined;\n}\n\nexport class SelectAst extends QueryAst {\n readonly kind = 'select' as const;\n readonly from: AnyFromSource;\n readonly joins: ReadonlyArray<JoinAst> | undefined;\n readonly projection: ReadonlyArray<ProjectionItem>;\n readonly where: AnyExpression | undefined;\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n readonly distinct: true | undefined;\n readonly distinctOn: ReadonlyArray<AnyExpression> | undefined;\n readonly groupBy: ReadonlyArray<AnyExpression> | undefined;\n readonly having: AnyExpression | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n readonly selectAllIntent: { readonly table?: string } | undefined;\n\n constructor(options: SelectAstOptions) {\n super();\n this.from = options.from;\n this.joins =\n options.joins && options.joins.length > 0 ? frozenArrayCopy(options.joins) : undefined;\n this.projection = frozenArrayCopy(options.projection);\n this.where = options.where;\n this.orderBy =\n options.orderBy && options.orderBy.length > 0 ? frozenArrayCopy(options.orderBy) : undefined;\n this.distinct = options.distinct;\n this.distinctOn =\n options.distinctOn && options.distinctOn.length > 0\n ? frozenArrayCopy(options.distinctOn)\n : undefined;\n this.groupBy =\n options.groupBy && options.groupBy.length > 0 ? frozenArrayCopy(options.groupBy) : undefined;\n this.having = options.having;\n this.limit = options.limit;\n this.offset = options.offset;\n this.selectAllIntent = frozenOptionalRecordCopy(options.selectAllIntent);\n this.freeze();\n }\n\n static from(from: AnyFromSource): SelectAst {\n return new SelectAst({\n from,\n joins: undefined,\n projection: [],\n where: undefined,\n orderBy: undefined,\n distinct: undefined,\n distinctOn: undefined,\n groupBy: undefined,\n having: undefined,\n limit: undefined,\n offset: undefined,\n selectAllIntent: undefined,\n });\n }\n\n withFrom(from: AnyFromSource): SelectAst {\n return new SelectAst({ ...this, from });\n }\n\n withJoins(joins: ReadonlyArray<JoinAst>): SelectAst {\n return new SelectAst({\n ...this,\n joins: joins.length > 0 ? joins : undefined,\n });\n }\n\n withProjection(projection: ReadonlyArray<ProjectionItem>): SelectAst {\n return new SelectAst({ ...this, projection });\n }\n\n addProjection(alias: string, expr: ProjectionExpr): SelectAst {\n return new SelectAst({\n ...this,\n projection: [...this.projection, new ProjectionItem(alias, expr)],\n });\n }\n\n withWhere(where: AnyExpression | undefined): SelectAst {\n return new SelectAst({ ...this, where });\n }\n\n withOrderBy(orderBy: ReadonlyArray<OrderByItem>): SelectAst {\n return new SelectAst({\n ...this,\n orderBy: orderBy.length > 0 ? orderBy : undefined,\n });\n }\n\n withDistinct(enabled = true): SelectAst {\n return new SelectAst({\n ...this,\n distinct: enabled ? true : undefined,\n });\n }\n\n withDistinctOn(distinctOn: ReadonlyArray<AnyExpression>): SelectAst {\n return new SelectAst({\n ...this,\n distinctOn: distinctOn.length > 0 ? distinctOn : undefined,\n });\n }\n\n withGroupBy(groupBy: ReadonlyArray<AnyExpression>): SelectAst {\n return new SelectAst({\n ...this,\n groupBy: groupBy.length > 0 ? groupBy : undefined,\n });\n }\n\n withHaving(having: AnyExpression | undefined): SelectAst {\n return new SelectAst({ ...this, having });\n }\n\n withLimit(limit: number | undefined): SelectAst {\n return new SelectAst({ ...this, limit });\n }\n\n withOffset(offset: number | undefined): SelectAst {\n return new SelectAst({ ...this, offset });\n }\n\n withSelectAllIntent(selectAllIntent: { readonly table?: string } | undefined): SelectAst {\n return new SelectAst({ ...this, selectAllIntent });\n }\n\n rewrite(rewriter: AstRewriter): SelectAst {\n const rewritten = new SelectAst({\n from: this.from.rewrite(rewriter),\n joins: this.joins?.map((join) => join.rewrite(rewriter)),\n projection: this.projection.map(\n (projection) =>\n new ProjectionItem(\n projection.alias,\n projection.expr.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(projection.expr)\n : projection.expr\n : projection.expr.rewrite(rewriter),\n ),\n ),\n where: this.where?.rewrite(rewriter),\n orderBy: this.orderBy?.map((orderItem) => orderItem.rewrite(rewriter)),\n distinct: this.distinct,\n distinctOn: this.distinctOn?.map((expr) => expr.rewrite(rewriter)),\n groupBy: this.groupBy?.map((expr) => expr.rewrite(rewriter)),\n having: this.having?.rewrite(rewriter),\n limit: this.limit,\n offset: this.offset,\n selectAllIntent: this.selectAllIntent,\n });\n\n return rewriter.select ? rewriter.select(rewritten) : rewritten;\n }\n\n override collectColumnRefs(): ColumnRef[] {\n const refs: ColumnRef[] = [];\n const pushRefs = (columns: ReadonlyArray<ColumnRef>) => {\n refs.push(...columns);\n };\n\n if (this.from.kind === 'derived-table-source') {\n pushRefs(this.from.query.collectColumnRefs());\n }\n\n for (const projection of this.projection) {\n if (!(projection.expr.kind === 'literal')) {\n pushRefs(projection.expr.collectColumnRefs());\n }\n }\n\n if (this.where) {\n pushRefs(this.where.collectColumnRefs());\n }\n if (this.having) {\n pushRefs(this.having.collectColumnRefs());\n }\n for (const orderItem of this.orderBy ?? []) {\n pushRefs(orderItem.expr.collectColumnRefs());\n }\n for (const expr of this.distinctOn ?? []) {\n pushRefs(expr.collectColumnRefs());\n }\n for (const expr of this.groupBy ?? []) {\n pushRefs(expr.collectColumnRefs());\n }\n for (const join of this.joins ?? []) {\n if (join.source.kind === 'derived-table-source') {\n pushRefs(join.source.query.collectColumnRefs());\n }\n if (join.on.kind === 'eq-col-join-on') {\n refs.push(join.on.left, join.on.right);\n } else {\n pushRefs(join.on.collectColumnRefs());\n }\n }\n\n return refs;\n }\n\n collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n const pushRefs = (params: ReadonlyArray<ParamRef>) => {\n refs.push(...params);\n };\n\n if (this.from.kind === 'derived-table-source') {\n pushRefs(this.from.query.collectParamRefs());\n }\n\n for (const projection of this.projection) {\n if (!(projection.expr.kind === 'literal')) {\n pushRefs(projection.expr.collectParamRefs());\n }\n }\n\n if (this.where) {\n pushRefs(this.where.collectParamRefs());\n }\n if (this.having) {\n pushRefs(this.having.collectParamRefs());\n }\n for (const orderItem of this.orderBy ?? []) {\n pushRefs(orderItem.expr.collectParamRefs());\n }\n for (const expr of this.distinctOn ?? []) {\n pushRefs(expr.collectParamRefs());\n }\n for (const expr of this.groupBy ?? []) {\n pushRefs(expr.collectParamRefs());\n }\n for (const join of this.joins ?? []) {\n if (join.source.kind === 'derived-table-source') {\n pushRefs(join.source.query.collectParamRefs());\n }\n if (!(join.on.kind === 'eq-col-join-on')) {\n pushRefs(join.on.collectParamRefs());\n }\n }\n\n return refs;\n }\n\n override collectRefs(): PlanRefs {\n const tables = new Set<string>();\n const columns = new Map<string, { table: string; column: string }>();\n\n const addSource = (source: AnyFromSource) => {\n mergeRefsInto(source.collectRefs(), tables, columns);\n };\n\n addSource(this.from);\n\n for (const join of this.joins ?? []) {\n addSource(join.source);\n if (join.on.kind === 'eq-col-join-on') {\n addColumnRefToRefSets(join.on.left, tables, columns);\n addColumnRefToRefSets(join.on.right, tables, columns);\n } else {\n for (const columnRef of join.on.collectColumnRefs()) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n }\n }\n\n for (const columnRef of this.collectColumnRefs()) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n return sortRefs(tables, columns);\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nabstract class InsertOnConflictAction extends AstNode {\n abstract toInsertOnConflictAction(): AnyInsertOnConflictAction;\n}\n\nexport class DoNothingConflictAction extends InsertOnConflictAction {\n readonly kind = 'do-nothing' as const;\n\n constructor() {\n super();\n this.freeze();\n }\n\n override toInsertOnConflictAction(): AnyInsertOnConflictAction {\n return this;\n }\n}\n\nexport class DoUpdateSetConflictAction extends InsertOnConflictAction {\n readonly kind = 'do-update-set' as const;\n readonly set: Readonly<Record<string, ColumnRef | ParamRef>>;\n\n constructor(set: Readonly<Record<string, ColumnRef | ParamRef>>) {\n super();\n this.set = frozenRecordCopy(set);\n this.freeze();\n }\n\n override toInsertOnConflictAction(): AnyInsertOnConflictAction {\n return this;\n }\n}\n\nexport class InsertOnConflict extends AstNode {\n readonly kind = 'insert-on-conflict' as const;\n readonly columns: ReadonlyArray<ColumnRef>;\n readonly action: AnyInsertOnConflictAction;\n\n constructor(columns: ReadonlyArray<ColumnRef>, action: AnyInsertOnConflictAction) {\n super();\n this.columns = frozenArrayCopy(columns);\n this.action = action;\n this.freeze();\n }\n\n static on(columns: ReadonlyArray<ColumnRef>): InsertOnConflict {\n return new InsertOnConflict(columns, new DoNothingConflictAction());\n }\n\n doNothing(): InsertOnConflict {\n return new InsertOnConflict(this.columns, new DoNothingConflictAction());\n }\n\n doUpdateSet(set: Readonly<Record<string, ColumnRef | ParamRef>>): InsertOnConflict {\n return new InsertOnConflict(this.columns, new DoUpdateSetConflictAction(set));\n }\n}\n\nexport class InsertAst extends QueryAst {\n readonly kind = 'insert' as const;\n readonly table: TableSource;\n readonly rows: ReadonlyArray<Readonly<Record<string, InsertValue>>>;\n readonly onConflict: InsertOnConflict | undefined;\n readonly returning: ReadonlyArray<ColumnRef> | undefined;\n\n constructor(\n table: TableSource,\n rows: ReadonlyArray<Record<string, InsertValue>> = [{}],\n onConflict?: InsertOnConflict,\n returning?: ReadonlyArray<ColumnRef>,\n ) {\n super();\n this.table = table;\n this.rows = freezeRows(rows);\n this.onConflict = onConflict;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static into(table: TableSource): InsertAst {\n return new InsertAst(table);\n }\n\n withValues(values: Record<string, InsertValue>): InsertAst {\n return new InsertAst(this.table, [{ ...values }], this.onConflict, this.returning);\n }\n\n withRows(rows: ReadonlyArray<Record<string, InsertValue>>): InsertAst {\n return new InsertAst(\n this.table,\n rows.map((row) => ({ ...row })),\n this.onConflict,\n this.returning,\n );\n }\n\n withReturning(returning: ReadonlyArray<ColumnRef> | undefined): InsertAst {\n return new InsertAst(\n this.table,\n this.rows.map((row) => ({ ...row })),\n this.onConflict,\n returning,\n );\n }\n\n withOnConflict(onConflict: InsertOnConflict | undefined): InsertAst {\n return new InsertAst(\n this.table,\n this.rows.map((row) => ({ ...row })),\n onConflict,\n this.returning,\n );\n }\n\n override collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n for (const row of this.rows) {\n for (const value of Object.values(row)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n }\n if (this.onConflict?.action.kind === 'do-update-set') {\n for (const value of Object.values(this.onConflict.action.set)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n }\n return refs;\n }\n\n override collectRefs(): PlanRefs {\n const tables = new Set<string>([this.table.name]);\n const columns = new Map<string, { table: string; column: string }>();\n\n const addColumn = (columnRef: ColumnRef) => addColumnRefToRefSets(columnRef, tables, columns);\n const addValue = (value: InsertValue) => {\n if (value.kind === 'column-ref') {\n addColumn(value);\n }\n };\n\n for (const row of this.rows) {\n for (const value of Object.values(row)) {\n addValue(value);\n }\n }\n\n for (const columnRef of this.returning ?? []) {\n addColumn(columnRef);\n }\n\n if (this.onConflict) {\n for (const columnRef of this.onConflict.columns) {\n addColumn(columnRef);\n }\n if (this.onConflict.action.kind === 'do-update-set') {\n for (const value of Object.values(this.onConflict.action.set)) {\n if (value.kind === 'column-ref') {\n addColumn(value);\n }\n }\n }\n }\n\n return sortRefs(tables, columns);\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport class UpdateAst extends QueryAst {\n readonly kind = 'update' as const;\n readonly table: TableSource;\n readonly set: Readonly<Record<string, ColumnRef | ParamRef>>;\n readonly where: AnyExpression | undefined;\n readonly returning: ReadonlyArray<ColumnRef> | undefined;\n\n constructor(\n table: TableSource,\n set: Readonly<Record<string, ColumnRef | ParamRef>> = {},\n where?: AnyExpression,\n returning?: ReadonlyArray<ColumnRef>,\n ) {\n super();\n this.table = table;\n this.set = frozenRecordCopy(set);\n this.where = where;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static table(table: TableSource): UpdateAst {\n return new UpdateAst(table);\n }\n\n withSet(set: Readonly<Record<string, ColumnRef | ParamRef>>): UpdateAst {\n return new UpdateAst(this.table, set, this.where, this.returning);\n }\n\n withWhere(where: AnyExpression | undefined): UpdateAst {\n return new UpdateAst(this.table, this.set, where, this.returning);\n }\n\n withReturning(returning: ReadonlyArray<ColumnRef> | undefined): UpdateAst {\n return new UpdateAst(this.table, this.set, this.where, returning);\n }\n\n override collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n for (const value of Object.values(this.set)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n if (this.where) {\n refs.push(...this.where.collectParamRefs());\n }\n return refs;\n }\n\n override collectRefs(): PlanRefs {\n const tables = new Set<string>([this.table.name]);\n const columns = new Map<string, { table: string; column: string }>();\n\n for (const value of Object.values(this.set)) {\n if (value.kind === 'column-ref') {\n addColumnRefToRefSets(value, tables, columns);\n }\n }\n\n for (const columnRef of this.where?.collectColumnRefs() ?? []) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n for (const columnRef of this.returning ?? []) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n return sortRefs(tables, columns);\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport class DeleteAst extends QueryAst {\n readonly kind = 'delete' as const;\n readonly table: TableSource;\n readonly where: AnyExpression | undefined;\n readonly returning: ReadonlyArray<ColumnRef> | undefined;\n\n constructor(table: TableSource, where?: AnyExpression, returning?: ReadonlyArray<ColumnRef>) {\n super();\n this.table = table;\n this.where = where;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static from(table: TableSource): DeleteAst {\n return new DeleteAst(table);\n }\n\n withWhere(where: AnyExpression | undefined): DeleteAst {\n return new DeleteAst(this.table, where, this.returning);\n }\n\n withReturning(returning: ReadonlyArray<ColumnRef> | undefined): DeleteAst {\n return new DeleteAst(this.table, this.where, returning);\n }\n\n override collectParamRefs(): ParamRef[] {\n return this.where?.collectParamRefs() ?? [];\n }\n\n override collectRefs(): PlanRefs {\n const tables = new Set<string>([this.table.name]);\n const columns = new Map<string, { table: string; column: string }>();\n\n for (const columnRef of this.where?.collectColumnRefs() ?? []) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n for (const columnRef of this.returning ?? []) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n return sortRefs(tables, columns);\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport type AnyQueryAst = SelectAst | InsertAst | UpdateAst | DeleteAst;\nexport type AnyFromSource = TableSource | DerivedTableSource;\nexport type AnyExpression =\n | ColumnRef\n | IdentifierRef\n | ParamRef\n | LiteralExpr\n | SubqueryExpr\n | OperationExpr\n | AggregateExpr\n | JsonObjectExpr\n | JsonArrayAggExpr\n | ListExpression\n | BinaryExpr\n | AndExpr\n | OrExpr\n | ExistsExpr\n | NullCheckExpr\n | NotExpr;\nexport type AnyInsertOnConflictAction = DoNothingConflictAction | DoUpdateSetConflictAction;\nexport type AnyInsertValue = ColumnRef | ParamRef | DefaultValueExpr;\nexport type AnyOperationArg = AnyExpression | ParamRef | LiteralExpr;\n\nexport const queryAstKinds: ReadonlySet<string> = new Set<AnyQueryAst['kind']>([\n 'select',\n 'insert',\n 'update',\n 'delete',\n]);\nexport const whereExprKinds: ReadonlySet<string> = new Set<AnyExpression['kind']>([\n 'binary',\n 'and',\n 'or',\n 'exists',\n 'null-check',\n 'not',\n]);\n\nexport function isQueryAst(value: unknown): value is AnyQueryAst {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n queryAstKinds.has((value as { kind: string }).kind)\n );\n}\n\nexport function isWhereExpr(value: unknown): value is AnyExpression {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n whereExprKinds.has((value as { kind: string }).kind)\n );\n}\n\nexport interface ToWhereExpr {\n toWhereExpr(): AnyExpression;\n}\n\nexport interface LoweredStatement {\n readonly sql: string;\n readonly params: readonly unknown[];\n readonly annotations?: Record<string, unknown>;\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ast.mjs","names":["codec","codecs","codecTypes: Record<\n string,\n { readonly input: unknown; readonly output: unknown; readonly traits: unknown }\n >","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 >","arktype","refs: ColumnRef[]","refs: ParamRef[]","queryAstKinds: ReadonlySet<string>","whereExprKinds: ReadonlySet<string>","out: Record<string, unknown>"],"sources":["../../src/ast/codec-types.ts","../../src/ast/sql-codecs.ts","../../src/ast/types.ts","../../src/ast/util.ts"],"sourcesContent":["import type { JsonValue } from '@prisma-next/contract/types';\nimport type { Codec as BaseCodec, CodecTrait } from '@prisma-next/framework-components/codec';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type { Type } from 'arktype';\nimport type { O } from 'ts-toolbelt';\n\nexport type { CodecTrait } from '@prisma-next/framework-components/codec';\n\n/**\n * Descriptor for parameterized codecs that require type parameter validation.\n * Shared between adapter (compile-time) and runtime layers to avoid duplication.\n *\n * @template TParams - The shape of the type parameters (e.g., `{ length: number }`)\n * @template THelper - The type returned by the optional `init` hook\n */\nexport interface CodecParamsDescriptor<TParams = Record<string, unknown>, THelper = unknown> {\n /** The codec ID this descriptor applies to (e.g., 'pg/vector@1') */\n readonly codecId: string;\n\n /**\n * Arktype schema for validating typeParams.\n * Used to validate both storage.types entries and inline column typeParams.\n */\n readonly paramsSchema: Type<TParams>;\n\n /**\n * Optional init hook called during runtime context creation.\n * Receives validated params and returns a helper object to be stored in context.types.\n * If not provided, the validated params are stored directly.\n */\n readonly init?: (params: TParams) => THelper;\n}\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 * SQL codec interface — extends the framework base with SQL-specific fields.\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 * and between JS values and contract JSON.\n */\nexport interface Codec<\n Id extends string = string,\n TTraits extends readonly CodecTrait[] = readonly CodecTrait[],\n TWire = unknown,\n TJs = unknown,\n TParams = Record<string, unknown>,\n THelper = unknown,\n> extends BaseCodec<Id, TTraits, TWire, TJs> {\n readonly meta?: CodecMeta;\n readonly paramsSchema?: Type<TParams>;\n readonly init?: (params: TParams) => THelper;\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 /** Returns true if the codec with this ID has the given trait. */\n hasTrait(codecId: string, trait: CodecTrait): boolean;\n /** Returns all traits for a codec, or an empty array if not found. */\n traitsOf(codecId: string): readonly CodecTrait[];\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 hasTrait(codecId: string, trait: CodecTrait): boolean {\n const codec = this._byId.get(codecId);\n return codec?.traits?.includes(trait) ?? false;\n }\n\n traitsOf(codecId: string): readonly CodecTrait[] {\n return this._byId.get(codecId)?.traits ?? [];\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 * Provides identity defaults for encodeJson/decodeJson when not supplied.\n */\nexport function codec<\n Id extends string,\n const TTraits extends readonly CodecTrait[],\n TWire,\n TJs,\n TParams = Record<string, unknown>,\n THelper = unknown,\n>(config: {\n typeId: Id;\n targetTypes: readonly string[];\n encode: (value: TJs) => TWire;\n decode: (wire: TWire) => TJs;\n encodeJson?: (value: TJs) => JsonValue;\n decodeJson?: (json: JsonValue) => TJs;\n meta?: CodecMeta;\n paramsSchema?: Type<TParams>;\n init?: (params: TParams) => THelper;\n traits?: TTraits;\n renderOutputType?: (typeParams: Record<string, unknown>) => string | undefined;\n}): Codec<Id, TTraits, TWire, TJs, TParams, THelper> {\n const identity = (v: unknown) => v;\n return {\n id: config.typeId,\n targetTypes: config.targetTypes,\n ...ifDefined('meta', config.meta),\n ...ifDefined('paramsSchema', config.paramsSchema),\n ...ifDefined('init', config.init),\n ...ifDefined(\n 'traits',\n config.traits ? (Object.freeze([...config.traits]) as TTraits) : undefined,\n ),\n ...ifDefined('renderOutputType', config.renderOutputType),\n encode: config.encode,\n decode: config.decode,\n encodeJson: (config.encodeJson ?? identity) as (value: TJs) => JsonValue,\n decodeJson: (config.decodeJson ?? identity) as (json: JsonValue) => TJs,\n };\n}\n\n/**\n * Type helpers to extract codec types.\n */\nexport type CodecId<T> =\n T extends Codec<infer Id> ? Id : T extends { readonly id: infer Id } ? Id : never;\nexport type CodecInput<T> =\n T extends Codec<string, readonly CodecTrait[], unknown, infer JsT> ? JsT : never;\nexport type CodecOutput<T> =\n T extends Codec<string, readonly CodecTrait[], unknown, infer JsT> ? JsT : never;\nexport type CodecTraits<T> =\n T extends Codec<string, infer TTraits> ? TTraits[number] & CodecTrait : 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> ? Id : never]: {\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly traits: CodecTraits<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> ? 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\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<\n string,\n { readonly input: unknown; readonly output: unknown; readonly traits: unknown }\n > = {};\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 traits: undefined as unknown as CodecTraits<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> ? 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> ? 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 }\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","import { type as arktype } from 'arktype';\nimport { codec, defineCodecs } from './codec-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\nconst lengthParamsSchema = arktype({\n length: 'number.integer > 0',\n});\n\nconst precisionParamsSchema = arktype({\n 'precision?': 'number.integer >= 0 & number.integer <= 6',\n});\n\ntype LengthTypeHelper = {\n readonly kind: 'fixed' | 'variable';\n readonly maxLength: number;\n};\n\nfunction createLengthTypeHelper(\n kind: LengthTypeHelper['kind'],\n): (params: Record<string, unknown>) => LengthTypeHelper {\n return (params) => ({\n kind,\n maxLength: params['length'] as number,\n });\n}\n\nconst sqlCharCodec = codec<\n typeof SQL_CHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n>({\n typeId: SQL_CHAR_CODEC_ID,\n targetTypes: ['char'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire.trimEnd(),\n paramsSchema: lengthParamsSchema,\n init: createLengthTypeHelper('fixed'),\n renderOutputType: (typeParams) => {\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});\n\nconst sqlVarcharCodec = codec<\n typeof SQL_VARCHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n>({\n typeId: SQL_VARCHAR_CODEC_ID,\n targetTypes: ['varchar'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n paramsSchema: lengthParamsSchema,\n init: createLengthTypeHelper('variable'),\n renderOutputType: (typeParams) => {\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});\n\nconst sqlIntCodec = codec({\n typeId: SQL_INT_CODEC_ID,\n targetTypes: ['int'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n});\n\nconst sqlFloatCodec = codec({\n typeId: SQL_FLOAT_CODEC_ID,\n targetTypes: ['float'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n});\n\nconst sqlTextCodec = codec({\n typeId: SQL_TEXT_CODEC_ID,\n targetTypes: ['text'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n});\n\nconst sqlTimestampCodec = codec({\n typeId: SQL_TIMESTAMP_CODEC_ID,\n targetTypes: ['timestamp'],\n traits: ['equality', 'order'],\n encode: (value: string | Date): string => (value instanceof Date ? value.toISOString() : value),\n decode: (wire: string | Date): string => (wire instanceof Date ? wire.toISOString() : wire),\n paramsSchema: precisionParamsSchema,\n renderOutputType: (typeParams) => {\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\nconst codecs = defineCodecs()\n .add('char', sqlCharCodec)\n .add('varchar', sqlVarcharCodec)\n .add('int', sqlIntCodec)\n .add('float', sqlFloatCodec)\n .add('text', sqlTextCodec)\n .add('timestamp', sqlTimestampCodec);\n\nexport const sqlCodecDefinitions = codecs.codecDefinitions;\nexport const sqlDataTypes = codecs.dataTypes;\nexport type SqlCodecTypes = typeof codecs.CodecTypes;\n","import type { PlanRefs } from '@prisma-next/contract/types';\nimport type { ParamSpec } from '@prisma-next/operations';\nimport type { SqlLoweringSpec } from '@prisma-next/sql-operations';\n\nexport type Direction = 'asc' | 'desc';\n\nexport type BinaryOp = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'like' | 'in' | 'notIn';\n\nexport type AggregateCountFn = 'count';\nexport type AggregateOpFn = 'sum' | 'avg' | 'min' | 'max';\nexport type AggregateFn = AggregateCountFn | AggregateOpFn;\n\nexport interface ExpressionSource {\n toExpr(): AnyExpression;\n}\n\nexport interface ExpressionRewriter {\n columnRef?(expr: ColumnRef): AnyExpression;\n identifierRef?(expr: IdentifierRef): AnyExpression;\n paramRef?(expr: ParamRef): ParamRef | LiteralExpr;\n literal?(expr: LiteralExpr): LiteralExpr;\n list?(expr: ListExpression): ListExpression | LiteralExpr;\n select?(ast: SelectAst): SelectAst;\n}\n\nexport interface AstRewriter extends ExpressionRewriter {\n tableSource?(source: TableSource): TableSource;\n eqColJoinOn?(on: EqColJoinOn): EqColJoinOn | AnyExpression;\n}\n\nexport interface ExprVisitor<R> {\n columnRef(expr: ColumnRef): R;\n identifierRef(expr: IdentifierRef): R;\n subquery(expr: SubqueryExpr): R;\n operation(expr: OperationExpr): R;\n aggregate(expr: AggregateExpr): R;\n jsonObject(expr: JsonObjectExpr): R;\n jsonArrayAgg(expr: JsonArrayAggExpr): R;\n binary(expr: BinaryExpr): R;\n and(expr: AndExpr): R;\n or(expr: OrExpr): R;\n exists(expr: ExistsExpr): R;\n nullCheck(expr: NullCheckExpr): R;\n not(expr: NotExpr): R;\n literal(expr: LiteralExpr): R;\n param(expr: ParamRef): R;\n list(expr: ListExpression): R;\n}\n\nexport interface ExpressionFolder<T> {\n empty: T;\n combine(a: T, b: T): T;\n isAbsorbing?(value: T): boolean;\n columnRef?(expr: ColumnRef): T;\n identifierRef?(expr: IdentifierRef): T;\n paramRef?(expr: ParamRef): T;\n literal?(expr: LiteralExpr): T;\n list?(expr: ListExpression): T;\n select?(ast: SelectAst): T;\n}\n\nexport type ProjectionExpr = AnyExpression;\nexport type InsertValue = ColumnRef | ParamRef | DefaultValueExpr;\nexport type JoinOnExpr = EqColJoinOn | AnyExpression;\nexport type WhereArg = AnyExpression | ToWhereExpr;\nexport type JsonObjectEntry = {\n readonly key: string;\n readonly value: ProjectionExpr;\n};\n\nfunction frozenArrayCopy<T>(values: readonly T[]): ReadonlyArray<T> {\n return Object.freeze([...values]);\n}\n\nfunction frozenOptionalRecordCopy<T extends Record<string, unknown>>(\n value: T | undefined,\n): Readonly<T> | undefined {\n return value === undefined ? undefined : Object.freeze({ ...value });\n}\n\nfunction frozenRecordCopy<T>(record: Readonly<Record<string, T>>): Readonly<Record<string, T>> {\n return Object.freeze({ ...record });\n}\n\nfunction freezeRows(\n rows: ReadonlyArray<Record<string, InsertValue>>,\n): ReadonlyArray<Readonly<Record<string, InsertValue>>> {\n return Object.freeze(rows.map((row) => Object.freeze({ ...row })));\n}\n\nfunction combineAll<T>(folder: ExpressionFolder<T>, thunks: Array<() => T>): T {\n let result = folder.empty;\n for (const thunk of thunks) {\n if (folder.isAbsorbing?.(result)) {\n return result;\n }\n result = folder.combine(result, thunk());\n }\n return result;\n}\n\nfunction rewriteComparable(value: AnyExpression, rewriter: ExpressionRewriter): AnyExpression {\n switch (value.kind) {\n case 'param-ref':\n return rewriter.paramRef ? rewriter.paramRef(value) : value;\n case 'literal':\n return rewriter.literal ? rewriter.literal(value) : value;\n case 'list':\n if (rewriter.list) {\n return rewriter.list(value);\n }\n return value.rewrite(rewriter);\n default:\n return value.rewrite(rewriter);\n }\n}\n\nfunction foldComparable<T>(value: AnyExpression, folder: ExpressionFolder<T>): T {\n switch (value.kind) {\n case 'param-ref':\n return folder.paramRef ? folder.paramRef(value) : folder.empty;\n case 'literal':\n return folder.literal ? folder.literal(value) : folder.empty;\n case 'list':\n return value.fold(folder);\n default:\n return value.fold(folder);\n }\n}\n\nfunction collectColumnRefsWith<TNode extends Expression>(node: TNode): ColumnRef[] {\n return node.fold<ColumnRef[]>({\n empty: [],\n combine: (a, b) => [...a, ...b],\n columnRef: (columnRef) => [columnRef],\n select: (ast) => ast.collectColumnRefs(),\n });\n}\n\nfunction collectParamRefsWith<TNode extends Expression>(node: TNode): ParamRef[] {\n return node.fold<ParamRef[]>({\n empty: [],\n combine: (a, b) => [...a, ...b],\n paramRef: (paramRef) => [paramRef],\n select: (ast) => ast.collectParamRefs(),\n });\n}\n\nfunction sortRefs(\n tables: ReadonlySet<string>,\n columns: ReadonlyMap<string, { table: string; column: string }>,\n): PlanRefs {\n const sortedTables = [...tables].sort((a, b) => a.localeCompare(b));\n const sortedColumns = [...columns.values()].sort((a, b) => {\n const tableCompare = a.table.localeCompare(b.table);\n if (tableCompare !== 0) {\n return tableCompare;\n }\n return a.column.localeCompare(b.column);\n });\n\n return {\n tables: sortedTables,\n columns: sortedColumns,\n };\n}\n\nfunction addColumnRefToRefSets(\n columnRef: ColumnRef,\n tables: Set<string>,\n columns: Map<string, { table: string; column: string }>,\n): void {\n if (columnRef.table === 'excluded') {\n return;\n }\n tables.add(columnRef.table);\n const key = `${columnRef.table}.${columnRef.column}`;\n if (!columns.has(key)) {\n columns.set(key, {\n table: columnRef.table,\n column: columnRef.column,\n });\n }\n}\n\nfunction mergeRefsInto(\n refs: PlanRefs,\n tables: Set<string>,\n columns: Map<string, { table: string; column: string }>,\n): void {\n for (const table of refs.tables ?? []) {\n tables.add(table);\n }\n for (const column of refs.columns ?? []) {\n addColumnRefToRefSets(new ColumnRef(column.table, column.column), tables, columns);\n }\n}\n\nabstract class AstNode {\n abstract readonly kind: string;\n\n protected freeze(): void {\n Object.freeze(this);\n }\n}\n\nabstract class QueryAst extends AstNode {\n abstract collectRefs(): PlanRefs;\n abstract collectParamRefs(): ParamRef[];\n abstract toQueryAst(): AnyQueryAst;\n\n collectColumnRefs(): ColumnRef[] {\n const refs = this.collectRefs().columns ?? [];\n return refs.map((ref) => new ColumnRef(ref.table, ref.column));\n }\n}\n\nabstract class FromSource extends AstNode {\n abstract collectRefs(): PlanRefs;\n abstract rewrite(rewriter: AstRewriter): AnyFromSource;\n abstract toFromSource(): AnyFromSource;\n}\n\nabstract class Expression extends AstNode implements ExpressionSource {\n abstract accept<R>(visitor: ExprVisitor<R>): R;\n abstract rewrite(rewriter: ExpressionRewriter): AnyExpression;\n abstract fold<T>(folder: ExpressionFolder<T>): T;\n\n collectColumnRefs(): ColumnRef[] {\n return collectColumnRefsWith(this);\n }\n\n collectParamRefs(): ParamRef[] {\n return collectParamRefsWith(this);\n }\n\n baseColumnRef(): ColumnRef {\n throw new Error(`${this.constructor.name} does not expose a base column reference`);\n }\n\n toExpr(): AnyExpression {\n return this as unknown as AnyExpression;\n }\n\n not(): NotExpr {\n return new NotExpr(this as unknown as AnyExpression);\n }\n}\n\nexport class TableSource extends FromSource {\n readonly kind = 'table-source' as const;\n readonly name: string;\n readonly alias: string | undefined;\n\n constructor(name: string, alias?: string) {\n super();\n this.name = name;\n this.alias = alias;\n this.freeze();\n }\n\n static named(name: string, alias?: string): TableSource {\n return new TableSource(name, alias);\n }\n\n override rewrite(rewriter: AstRewriter): AnyFromSource {\n return rewriter.tableSource ? rewriter.tableSource(this) : this;\n }\n\n override toFromSource(): AnyFromSource {\n return this;\n }\n\n override collectRefs(): PlanRefs {\n return {\n tables: [this.name],\n columns: [],\n };\n }\n}\n\nexport interface TableRef {\n readonly name: string;\n readonly alias?: string;\n}\n\nexport class DerivedTableSource extends FromSource {\n readonly kind = 'derived-table-source' as const;\n readonly alias: string;\n readonly query: SelectAst;\n\n constructor(alias: string, query: SelectAst) {\n super();\n this.alias = alias;\n this.query = query;\n this.freeze();\n }\n\n static as(alias: string, query: SelectAst): DerivedTableSource {\n return new DerivedTableSource(alias, query);\n }\n\n // Intentionally does not call rewriter.tableSource — derived tables are rewritten\n // via their inner query, not intercepted at the FromSource level. A future\n // fromSource?(source: AnyFromSource) callback would be needed for that.\n override rewrite(rewriter: AstRewriter): AnyFromSource {\n return new DerivedTableSource(this.alias, this.query.rewrite(rewriter));\n }\n\n override toFromSource(): AnyFromSource {\n return this;\n }\n\n override collectRefs(): PlanRefs {\n return this.query.collectRefs();\n }\n}\n\nexport class ColumnRef extends Expression {\n readonly kind = 'column-ref' as const;\n readonly table: string;\n readonly column: string;\n\n constructor(table: string, column: string) {\n super();\n this.table = table;\n this.column = column;\n this.freeze();\n }\n\n static of(table: string, column: string): ColumnRef {\n return new ColumnRef(table, column);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.columnRef(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.columnRef ? rewriter.columnRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.columnRef ? folder.columnRef(this) : folder.empty;\n }\n\n override baseColumnRef(): ColumnRef {\n return this;\n }\n}\n\nexport class IdentifierRef extends Expression {\n readonly kind = 'identifier-ref' as const;\n readonly name: string;\n\n constructor(name: string) {\n super();\n this.name = name;\n this.freeze();\n }\n\n static of(name: string): IdentifierRef {\n return new IdentifierRef(name);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.identifierRef(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.identifierRef ? rewriter.identifierRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.identifierRef ? folder.identifierRef(this) : folder.empty;\n }\n}\n\nexport class ParamRef extends Expression {\n readonly kind = 'param-ref' as const;\n readonly value: unknown;\n readonly name: string | undefined;\n readonly codecId: string | undefined;\n\n constructor(\n value: unknown,\n options?: {\n name?: string;\n codecId?: string;\n },\n ) {\n super();\n this.value = value;\n this.name = options?.name;\n this.codecId = options?.codecId;\n this.freeze();\n }\n\n static of(\n value: unknown,\n options?: {\n name?: string;\n codecId?: string;\n },\n ): ParamRef {\n return new ParamRef(value, options);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.param(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.paramRef ? rewriter.paramRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.paramRef ? folder.paramRef(this) : folder.empty;\n }\n}\n\nexport class DefaultValueExpr extends AstNode {\n readonly kind = 'default-value' as const;\n\n constructor() {\n super();\n this.freeze();\n }\n}\n\nexport class LiteralExpr extends Expression {\n readonly kind = 'literal' as const;\n readonly value: unknown;\n\n constructor(value: unknown) {\n super();\n this.value = value;\n this.freeze();\n }\n\n static of(value: unknown): LiteralExpr {\n return new LiteralExpr(value);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.literal(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.literal ? rewriter.literal(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.literal ? folder.literal(this) : folder.empty;\n }\n}\n\nexport class SubqueryExpr extends Expression {\n readonly kind = 'subquery' as const;\n readonly query: SelectAst;\n\n constructor(query: SelectAst) {\n super();\n this.query = query;\n this.freeze();\n }\n\n static of(query: SelectAst): SubqueryExpr {\n return new SubqueryExpr(query);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.subquery(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n const query = this.query.rewrite(rewriter);\n return new SubqueryExpr(query);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.select ? folder.select(this.query) : folder.empty;\n }\n}\n\nexport class OperationExpr extends Expression {\n readonly kind = 'operation' as const;\n readonly method: string;\n readonly self: AnyExpression;\n readonly args: ReadonlyArray<AnyExpression | ParamRef | LiteralExpr>;\n readonly returns: ParamSpec;\n readonly lowering: SqlLoweringSpec;\n\n constructor(options: {\n readonly method: string;\n readonly self: AnyExpression;\n readonly args: ReadonlyArray<AnyExpression | ParamRef | LiteralExpr> | undefined;\n readonly returns: ParamSpec;\n readonly lowering: SqlLoweringSpec;\n }) {\n super();\n this.method = options.method;\n this.self = options.self;\n this.args = frozenArrayCopy(options.args ?? []);\n this.returns = options.returns;\n this.lowering = options.lowering;\n this.freeze();\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.operation(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new OperationExpr({\n method: this.method,\n self: this.self.rewrite(rewriter),\n args: this.args.map((arg) => rewriteComparable(arg, rewriter)) as ReadonlyArray<\n AnyExpression | ParamRef | LiteralExpr\n >,\n returns: this.returns,\n lowering: this.lowering,\n });\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => this.self.fold(folder),\n ...this.args.map((arg) => () => foldComparable(arg, folder)),\n ]);\n }\n\n override baseColumnRef(): ColumnRef {\n return this.self.baseColumnRef();\n }\n}\n\nexport class AggregateExpr extends Expression {\n readonly kind = 'aggregate' as const;\n readonly fn: AggregateFn;\n readonly expr: AnyExpression | undefined;\n\n constructor(fn: AggregateFn, expr?: AnyExpression) {\n super();\n if (fn !== 'count' && expr === undefined) {\n throw new Error(`Aggregate function \"${fn}\" requires an expression`);\n }\n this.fn = fn;\n this.expr = expr;\n this.freeze();\n }\n\n static count(expr?: AnyExpression): AggregateExpr {\n return new AggregateExpr('count', expr);\n }\n\n static sum(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('sum', expr);\n }\n\n static avg(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('avg', expr);\n }\n\n static min(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('min', expr);\n }\n\n static max(expr: AnyExpression): AggregateExpr {\n return new AggregateExpr('max', expr);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.aggregate(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return this.expr === undefined ? this : new AggregateExpr(this.fn, this.expr.rewrite(rewriter));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr ? this.expr.fold(folder) : folder.empty;\n }\n}\n\nexport class JsonObjectExpr extends Expression {\n readonly kind = 'json-object' as const;\n readonly entries: ReadonlyArray<JsonObjectEntry>;\n\n constructor(entries: ReadonlyArray<JsonObjectEntry>) {\n super();\n this.entries = frozenArrayCopy(entries.map((entry) => Object.freeze({ ...entry })));\n this.freeze();\n }\n\n static entry(key: string, value: ProjectionExpr): JsonObjectEntry {\n return {\n key,\n value,\n };\n }\n\n static fromEntries(entries: ReadonlyArray<JsonObjectEntry>): JsonObjectExpr {\n return new JsonObjectExpr(entries);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.jsonObject(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new JsonObjectExpr(\n this.entries.map((entry) => ({\n key: entry.key,\n value:\n entry.value.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(entry.value)\n : entry.value\n : entry.value.rewrite(rewriter),\n })),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.entries.map(\n (entry) => () =>\n entry.value.kind === 'literal'\n ? folder.literal\n ? folder.literal(entry.value)\n : folder.empty\n : entry.value.fold(folder),\n ),\n );\n }\n}\n\nexport class OrderByItem extends AstNode {\n readonly kind = 'order-by-item' as const;\n readonly expr: AnyExpression;\n readonly dir: Direction;\n\n constructor(expr: AnyExpression, dir: Direction) {\n super();\n this.expr = expr;\n this.dir = dir;\n this.freeze();\n }\n\n static asc(expr: AnyExpression): OrderByItem {\n return new OrderByItem(expr, 'asc');\n }\n\n static desc(expr: AnyExpression): OrderByItem {\n return new OrderByItem(expr, 'desc');\n }\n\n rewrite(rewriter: ExpressionRewriter): OrderByItem {\n return new OrderByItem(this.expr.rewrite(rewriter), this.dir);\n }\n}\n\nexport class JsonArrayAggExpr extends Expression {\n readonly kind = 'json-array-agg' as const;\n readonly expr: AnyExpression;\n readonly onEmpty: 'null' | 'emptyArray';\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n\n constructor(\n expr: AnyExpression,\n onEmpty: 'null' | 'emptyArray' = 'null',\n orderBy?: ReadonlyArray<OrderByItem>,\n ) {\n super();\n this.expr = expr;\n this.onEmpty = onEmpty;\n this.orderBy = orderBy && orderBy.length > 0 ? frozenArrayCopy(orderBy) : undefined;\n this.freeze();\n }\n\n static of(\n expr: AnyExpression,\n onEmpty: 'null' | 'emptyArray' = 'null',\n orderBy?: ReadonlyArray<OrderByItem>,\n ): JsonArrayAggExpr {\n return new JsonArrayAggExpr(expr, onEmpty, orderBy);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.jsonArrayAgg(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new JsonArrayAggExpr(\n this.expr.rewrite(rewriter),\n this.onEmpty,\n this.orderBy?.map((orderItem) => orderItem.rewrite(rewriter)),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => this.expr.fold(folder),\n ...(this.orderBy ?? []).map((orderItem) => () => orderItem.expr.fold(folder)),\n ]);\n }\n}\n\nexport class ListExpression extends Expression {\n readonly kind = 'list' as const;\n readonly values: ReadonlyArray<AnyExpression>;\n\n constructor(values: ReadonlyArray<AnyExpression>) {\n super();\n this.values = frozenArrayCopy(values);\n this.freeze();\n }\n\n static of(values: ReadonlyArray<AnyExpression>): ListExpression {\n return new ListExpression(values);\n }\n\n static fromValues(values: ReadonlyArray<unknown>): ListExpression {\n return new ListExpression(values.map((value) => new LiteralExpr(value)));\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.list(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n if (rewriter.list) {\n return rewriter.list(this);\n }\n\n return new ListExpression(this.values.map((value) => value.rewrite(rewriter)));\n }\n\n fold<T>(folder: ExpressionFolder<T>): T {\n if (folder.list) {\n return folder.list(this);\n }\n return combineAll(\n folder,\n this.values.map((value) => () => value.fold(folder)),\n );\n }\n}\n\nexport class BinaryExpr extends Expression {\n readonly kind = 'binary' as const;\n readonly op: BinaryOp;\n readonly left: AnyExpression;\n readonly right: AnyExpression;\n\n constructor(op: BinaryOp, left: AnyExpression, right: AnyExpression) {\n super();\n this.op = op;\n this.left = left;\n this.right = right;\n this.freeze();\n }\n\n static eq(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('eq', left, right);\n }\n\n static neq(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('neq', left, right);\n }\n\n static gt(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('gt', left, right);\n }\n\n static lt(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('lt', left, right);\n }\n\n static gte(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('gte', left, right);\n }\n\n static lte(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('lte', left, right);\n }\n\n static like(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('like', left, right);\n }\n\n static in(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('in', left, right);\n }\n\n static notIn(left: AnyExpression, right: AnyExpression): BinaryExpr {\n return new BinaryExpr('notIn', left, right);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.binary(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new BinaryExpr(\n this.op,\n rewriteComparable(this.left, rewriter),\n rewriteComparable(this.right, rewriter),\n );\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(folder, [\n () => foldComparable(this.left, folder),\n () => foldComparable(this.right, folder),\n ]);\n }\n}\n\nexport class AndExpr extends Expression {\n readonly kind = 'and' as const;\n readonly exprs: ReadonlyArray<AnyExpression>;\n\n constructor(exprs: ReadonlyArray<AnyExpression>) {\n super();\n this.exprs = frozenArrayCopy(exprs);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<AnyExpression>): AndExpr {\n return new AndExpr(exprs);\n }\n\n static true(): AndExpr {\n return new AndExpr([]);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.and(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new AndExpr(this.exprs.map((expr) => expr.rewrite(rewriter)));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.exprs.map((expr) => () => expr.fold(folder)),\n );\n }\n}\n\nexport class OrExpr extends Expression {\n readonly kind = 'or' as const;\n readonly exprs: ReadonlyArray<AnyExpression>;\n\n constructor(exprs: ReadonlyArray<AnyExpression>) {\n super();\n this.exprs = frozenArrayCopy(exprs);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<AnyExpression>): OrExpr {\n return new OrExpr(exprs);\n }\n\n static false(): OrExpr {\n return new OrExpr([]);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.or(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new OrExpr(this.exprs.map((expr) => expr.rewrite(rewriter)));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return combineAll(\n folder,\n this.exprs.map((expr) => () => expr.fold(folder)),\n );\n }\n}\n\nexport class ExistsExpr extends Expression {\n readonly kind = 'exists' as const;\n readonly notExists: boolean;\n readonly subquery: SelectAst;\n\n constructor(subquery: SelectAst, notExists = false) {\n super();\n this.notExists = notExists;\n this.subquery = subquery;\n this.freeze();\n }\n\n static exists(subquery: SelectAst): ExistsExpr {\n return new ExistsExpr(subquery, false);\n }\n\n static notExists(subquery: SelectAst): ExistsExpr {\n return new ExistsExpr(subquery, true);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.exists(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new ExistsExpr(this.subquery.rewrite(rewriter), this.notExists);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.select ? folder.select(this.subquery) : folder.empty;\n }\n}\n\nexport class NullCheckExpr extends Expression {\n readonly kind = 'null-check' as const;\n readonly expr: AnyExpression;\n readonly isNull: boolean;\n\n constructor(expr: AnyExpression, isNull: boolean) {\n super();\n this.expr = expr;\n this.isNull = isNull;\n this.freeze();\n }\n\n static isNull(expr: AnyExpression): NullCheckExpr {\n return new NullCheckExpr(expr, true);\n }\n\n static isNotNull(expr: AnyExpression): NullCheckExpr {\n return new NullCheckExpr(expr, false);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.nullCheck(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new NullCheckExpr(this.expr.rewrite(rewriter), this.isNull);\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr.fold(folder);\n }\n}\n\nexport class NotExpr extends Expression {\n readonly kind = 'not' as const;\n readonly expr: AnyExpression;\n\n constructor(expr: AnyExpression) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n toWhereExpr(): AnyExpression {\n return this;\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.not(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return new NotExpr(this.expr.rewrite(rewriter));\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return this.expr.fold(folder);\n }\n}\n\nexport class EqColJoinOn extends AstNode {\n readonly kind = 'eq-col-join-on' as const;\n readonly left: ColumnRef;\n readonly right: ColumnRef;\n\n constructor(left: ColumnRef, right: ColumnRef) {\n super();\n this.left = left;\n this.right = right;\n this.freeze();\n }\n\n static of(left: ColumnRef, right: ColumnRef): EqColJoinOn {\n return new EqColJoinOn(left, right);\n }\n\n rewrite(rewriter: AstRewriter): EqColJoinOn | AnyExpression {\n return rewriter.eqColJoinOn ? rewriter.eqColJoinOn(this) : this;\n }\n}\n\nexport class JoinAst extends AstNode {\n readonly kind = 'join' as const;\n readonly joinType: 'inner' | 'left' | 'right' | 'full';\n readonly source: AnyFromSource;\n readonly lateral: boolean;\n readonly on: JoinOnExpr;\n\n constructor(\n joinType: 'inner' | 'left' | 'right' | 'full',\n source: AnyFromSource,\n on: JoinOnExpr,\n lateral = false,\n ) {\n super();\n this.joinType = joinType;\n this.source = source;\n this.lateral = lateral;\n this.on = on;\n this.freeze();\n }\n\n static inner(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('inner', source, on, lateral);\n }\n\n static left(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('left', source, on, lateral);\n }\n\n static right(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('right', source, on, lateral);\n }\n\n static full(source: AnyFromSource, on: JoinOnExpr, lateral = false): JoinAst {\n return new JoinAst('full', source, on, lateral);\n }\n\n rewrite(rewriter: AstRewriter): JoinAst {\n return new JoinAst(\n this.joinType,\n this.source.rewrite(rewriter),\n this.on.kind === 'eq-col-join-on' ? this.on.rewrite(rewriter) : this.on.rewrite(rewriter),\n this.lateral,\n );\n }\n}\n\nexport class ProjectionItem extends AstNode {\n readonly kind = 'projection-item' as const;\n readonly alias: string;\n readonly expr: ProjectionExpr;\n\n constructor(alias: string, expr: ProjectionExpr) {\n super();\n this.alias = alias;\n this.expr = expr;\n this.freeze();\n }\n\n static of(alias: string, expr: ProjectionExpr): ProjectionItem {\n return new ProjectionItem(alias, expr);\n }\n}\n\nexport interface SelectAstOptions {\n readonly from: AnyFromSource;\n readonly joins: ReadonlyArray<JoinAst> | undefined;\n readonly projection: ReadonlyArray<ProjectionItem>;\n readonly where: AnyExpression | undefined;\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n readonly distinct: true | undefined;\n readonly distinctOn: ReadonlyArray<AnyExpression> | undefined;\n readonly groupBy: ReadonlyArray<AnyExpression> | undefined;\n readonly having: AnyExpression | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n readonly selectAllIntent: { readonly table?: string } | undefined;\n}\n\nexport class SelectAst extends QueryAst {\n readonly kind = 'select' as const;\n readonly from: AnyFromSource;\n readonly joins: ReadonlyArray<JoinAst> | undefined;\n readonly projection: ReadonlyArray<ProjectionItem>;\n readonly where: AnyExpression | undefined;\n readonly orderBy: ReadonlyArray<OrderByItem> | undefined;\n readonly distinct: true | undefined;\n readonly distinctOn: ReadonlyArray<AnyExpression> | undefined;\n readonly groupBy: ReadonlyArray<AnyExpression> | undefined;\n readonly having: AnyExpression | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n readonly selectAllIntent: { readonly table?: string } | undefined;\n\n constructor(options: SelectAstOptions) {\n super();\n this.from = options.from;\n this.joins =\n options.joins && options.joins.length > 0 ? frozenArrayCopy(options.joins) : undefined;\n this.projection = frozenArrayCopy(options.projection);\n this.where = options.where;\n this.orderBy =\n options.orderBy && options.orderBy.length > 0 ? frozenArrayCopy(options.orderBy) : undefined;\n this.distinct = options.distinct;\n this.distinctOn =\n options.distinctOn && options.distinctOn.length > 0\n ? frozenArrayCopy(options.distinctOn)\n : undefined;\n this.groupBy =\n options.groupBy && options.groupBy.length > 0 ? frozenArrayCopy(options.groupBy) : undefined;\n this.having = options.having;\n this.limit = options.limit;\n this.offset = options.offset;\n this.selectAllIntent = frozenOptionalRecordCopy(options.selectAllIntent);\n this.freeze();\n }\n\n static from(from: AnyFromSource): SelectAst {\n return new SelectAst({\n from,\n joins: undefined,\n projection: [],\n where: undefined,\n orderBy: undefined,\n distinct: undefined,\n distinctOn: undefined,\n groupBy: undefined,\n having: undefined,\n limit: undefined,\n offset: undefined,\n selectAllIntent: undefined,\n });\n }\n\n withFrom(from: AnyFromSource): SelectAst {\n return new SelectAst({ ...this, from });\n }\n\n withJoins(joins: ReadonlyArray<JoinAst>): SelectAst {\n return new SelectAst({\n ...this,\n joins: joins.length > 0 ? joins : undefined,\n });\n }\n\n withProjection(projection: ReadonlyArray<ProjectionItem>): SelectAst {\n return new SelectAst({ ...this, projection });\n }\n\n addProjection(alias: string, expr: ProjectionExpr): SelectAst {\n return new SelectAst({\n ...this,\n projection: [...this.projection, new ProjectionItem(alias, expr)],\n });\n }\n\n withWhere(where: AnyExpression | undefined): SelectAst {\n return new SelectAst({ ...this, where });\n }\n\n withOrderBy(orderBy: ReadonlyArray<OrderByItem>): SelectAst {\n return new SelectAst({\n ...this,\n orderBy: orderBy.length > 0 ? orderBy : undefined,\n });\n }\n\n withDistinct(enabled = true): SelectAst {\n return new SelectAst({\n ...this,\n distinct: enabled ? true : undefined,\n });\n }\n\n withDistinctOn(distinctOn: ReadonlyArray<AnyExpression>): SelectAst {\n return new SelectAst({\n ...this,\n distinctOn: distinctOn.length > 0 ? distinctOn : undefined,\n });\n }\n\n withGroupBy(groupBy: ReadonlyArray<AnyExpression>): SelectAst {\n return new SelectAst({\n ...this,\n groupBy: groupBy.length > 0 ? groupBy : undefined,\n });\n }\n\n withHaving(having: AnyExpression | undefined): SelectAst {\n return new SelectAst({ ...this, having });\n }\n\n withLimit(limit: number | undefined): SelectAst {\n return new SelectAst({ ...this, limit });\n }\n\n withOffset(offset: number | undefined): SelectAst {\n return new SelectAst({ ...this, offset });\n }\n\n withSelectAllIntent(selectAllIntent: { readonly table?: string } | undefined): SelectAst {\n return new SelectAst({ ...this, selectAllIntent });\n }\n\n rewrite(rewriter: AstRewriter): SelectAst {\n const rewritten = new SelectAst({\n from: this.from.rewrite(rewriter),\n joins: this.joins?.map((join) => join.rewrite(rewriter)),\n projection: this.projection.map(\n (projection) =>\n new ProjectionItem(\n projection.alias,\n projection.expr.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(projection.expr)\n : projection.expr\n : projection.expr.rewrite(rewriter),\n ),\n ),\n where: this.where?.rewrite(rewriter),\n orderBy: this.orderBy?.map((orderItem) => orderItem.rewrite(rewriter)),\n distinct: this.distinct,\n distinctOn: this.distinctOn?.map((expr) => expr.rewrite(rewriter)),\n groupBy: this.groupBy?.map((expr) => expr.rewrite(rewriter)),\n having: this.having?.rewrite(rewriter),\n limit: this.limit,\n offset: this.offset,\n selectAllIntent: this.selectAllIntent,\n });\n\n return rewriter.select ? rewriter.select(rewritten) : rewritten;\n }\n\n override collectColumnRefs(): ColumnRef[] {\n const refs: ColumnRef[] = [];\n const pushRefs = (columns: ReadonlyArray<ColumnRef>) => {\n refs.push(...columns);\n };\n\n if (this.from.kind === 'derived-table-source') {\n pushRefs(this.from.query.collectColumnRefs());\n }\n\n for (const projection of this.projection) {\n if (!(projection.expr.kind === 'literal')) {\n pushRefs(projection.expr.collectColumnRefs());\n }\n }\n\n if (this.where) {\n pushRefs(this.where.collectColumnRefs());\n }\n if (this.having) {\n pushRefs(this.having.collectColumnRefs());\n }\n for (const orderItem of this.orderBy ?? []) {\n pushRefs(orderItem.expr.collectColumnRefs());\n }\n for (const expr of this.distinctOn ?? []) {\n pushRefs(expr.collectColumnRefs());\n }\n for (const expr of this.groupBy ?? []) {\n pushRefs(expr.collectColumnRefs());\n }\n for (const join of this.joins ?? []) {\n if (join.source.kind === 'derived-table-source') {\n pushRefs(join.source.query.collectColumnRefs());\n }\n if (join.on.kind === 'eq-col-join-on') {\n refs.push(join.on.left, join.on.right);\n } else {\n pushRefs(join.on.collectColumnRefs());\n }\n }\n\n return refs;\n }\n\n collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n const pushRefs = (params: ReadonlyArray<ParamRef>) => {\n refs.push(...params);\n };\n\n if (this.from.kind === 'derived-table-source') {\n pushRefs(this.from.query.collectParamRefs());\n }\n\n for (const projection of this.projection) {\n if (!(projection.expr.kind === 'literal')) {\n pushRefs(projection.expr.collectParamRefs());\n }\n }\n\n if (this.where) {\n pushRefs(this.where.collectParamRefs());\n }\n if (this.having) {\n pushRefs(this.having.collectParamRefs());\n }\n for (const orderItem of this.orderBy ?? []) {\n pushRefs(orderItem.expr.collectParamRefs());\n }\n for (const expr of this.distinctOn ?? []) {\n pushRefs(expr.collectParamRefs());\n }\n for (const expr of this.groupBy ?? []) {\n pushRefs(expr.collectParamRefs());\n }\n for (const join of this.joins ?? []) {\n if (join.source.kind === 'derived-table-source') {\n pushRefs(join.source.query.collectParamRefs());\n }\n if (!(join.on.kind === 'eq-col-join-on')) {\n pushRefs(join.on.collectParamRefs());\n }\n }\n\n return refs;\n }\n\n override collectRefs(): PlanRefs {\n const tables = new Set<string>();\n const columns = new Map<string, { table: string; column: string }>();\n\n const addSource = (source: AnyFromSource) => {\n mergeRefsInto(source.collectRefs(), tables, columns);\n };\n\n addSource(this.from);\n\n for (const join of this.joins ?? []) {\n addSource(join.source);\n if (join.on.kind === 'eq-col-join-on') {\n addColumnRefToRefSets(join.on.left, tables, columns);\n addColumnRefToRefSets(join.on.right, tables, columns);\n } else {\n for (const columnRef of join.on.collectColumnRefs()) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n }\n }\n\n for (const columnRef of this.collectColumnRefs()) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n return sortRefs(tables, columns);\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nabstract class InsertOnConflictAction extends AstNode {\n abstract toInsertOnConflictAction(): AnyInsertOnConflictAction;\n}\n\nexport class DoNothingConflictAction extends InsertOnConflictAction {\n readonly kind = 'do-nothing' as const;\n\n constructor() {\n super();\n this.freeze();\n }\n\n override toInsertOnConflictAction(): AnyInsertOnConflictAction {\n return this;\n }\n}\n\nexport class DoUpdateSetConflictAction extends InsertOnConflictAction {\n readonly kind = 'do-update-set' as const;\n readonly set: Readonly<Record<string, ColumnRef | ParamRef>>;\n\n constructor(set: Readonly<Record<string, ColumnRef | ParamRef>>) {\n super();\n this.set = frozenRecordCopy(set);\n this.freeze();\n }\n\n override toInsertOnConflictAction(): AnyInsertOnConflictAction {\n return this;\n }\n}\n\nexport class InsertOnConflict extends AstNode {\n readonly kind = 'insert-on-conflict' as const;\n readonly columns: ReadonlyArray<ColumnRef>;\n readonly action: AnyInsertOnConflictAction;\n\n constructor(columns: ReadonlyArray<ColumnRef>, action: AnyInsertOnConflictAction) {\n super();\n this.columns = frozenArrayCopy(columns);\n this.action = action;\n this.freeze();\n }\n\n static on(columns: ReadonlyArray<ColumnRef>): InsertOnConflict {\n return new InsertOnConflict(columns, new DoNothingConflictAction());\n }\n\n doNothing(): InsertOnConflict {\n return new InsertOnConflict(this.columns, new DoNothingConflictAction());\n }\n\n doUpdateSet(set: Readonly<Record<string, ColumnRef | ParamRef>>): InsertOnConflict {\n return new InsertOnConflict(this.columns, new DoUpdateSetConflictAction(set));\n }\n}\n\nexport class InsertAst extends QueryAst {\n readonly kind = 'insert' as const;\n readonly table: TableSource;\n readonly rows: ReadonlyArray<Readonly<Record<string, InsertValue>>>;\n readonly onConflict: InsertOnConflict | undefined;\n readonly returning: ReadonlyArray<ColumnRef> | undefined;\n\n constructor(\n table: TableSource,\n rows: ReadonlyArray<Record<string, InsertValue>> = [{}],\n onConflict?: InsertOnConflict,\n returning?: ReadonlyArray<ColumnRef>,\n ) {\n super();\n this.table = table;\n this.rows = freezeRows(rows);\n this.onConflict = onConflict;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static into(table: TableSource): InsertAst {\n return new InsertAst(table);\n }\n\n withValues(values: Record<string, InsertValue>): InsertAst {\n return new InsertAst(this.table, [{ ...values }], this.onConflict, this.returning);\n }\n\n withRows(rows: ReadonlyArray<Record<string, InsertValue>>): InsertAst {\n return new InsertAst(\n this.table,\n rows.map((row) => ({ ...row })),\n this.onConflict,\n this.returning,\n );\n }\n\n withReturning(returning: ReadonlyArray<ColumnRef> | undefined): InsertAst {\n return new InsertAst(\n this.table,\n this.rows.map((row) => ({ ...row })),\n this.onConflict,\n returning,\n );\n }\n\n withOnConflict(onConflict: InsertOnConflict | undefined): InsertAst {\n return new InsertAst(\n this.table,\n this.rows.map((row) => ({ ...row })),\n onConflict,\n this.returning,\n );\n }\n\n override collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n for (const row of this.rows) {\n for (const value of Object.values(row)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n }\n if (this.onConflict?.action.kind === 'do-update-set') {\n for (const value of Object.values(this.onConflict.action.set)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n }\n return refs;\n }\n\n override collectRefs(): PlanRefs {\n const tables = new Set<string>([this.table.name]);\n const columns = new Map<string, { table: string; column: string }>();\n\n const addColumn = (columnRef: ColumnRef) => addColumnRefToRefSets(columnRef, tables, columns);\n const addValue = (value: InsertValue) => {\n if (value.kind === 'column-ref') {\n addColumn(value);\n }\n };\n\n for (const row of this.rows) {\n for (const value of Object.values(row)) {\n addValue(value);\n }\n }\n\n for (const columnRef of this.returning ?? []) {\n addColumn(columnRef);\n }\n\n if (this.onConflict) {\n for (const columnRef of this.onConflict.columns) {\n addColumn(columnRef);\n }\n if (this.onConflict.action.kind === 'do-update-set') {\n for (const value of Object.values(this.onConflict.action.set)) {\n if (value.kind === 'column-ref') {\n addColumn(value);\n }\n }\n }\n }\n\n return sortRefs(tables, columns);\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport class UpdateAst extends QueryAst {\n readonly kind = 'update' as const;\n readonly table: TableSource;\n readonly set: Readonly<Record<string, ColumnRef | ParamRef>>;\n readonly where: AnyExpression | undefined;\n readonly returning: ReadonlyArray<ColumnRef> | undefined;\n\n constructor(\n table: TableSource,\n set: Readonly<Record<string, ColumnRef | ParamRef>> = {},\n where?: AnyExpression,\n returning?: ReadonlyArray<ColumnRef>,\n ) {\n super();\n this.table = table;\n this.set = frozenRecordCopy(set);\n this.where = where;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static table(table: TableSource): UpdateAst {\n return new UpdateAst(table);\n }\n\n withSet(set: Readonly<Record<string, ColumnRef | ParamRef>>): UpdateAst {\n return new UpdateAst(this.table, set, this.where, this.returning);\n }\n\n withWhere(where: AnyExpression | undefined): UpdateAst {\n return new UpdateAst(this.table, this.set, where, this.returning);\n }\n\n withReturning(returning: ReadonlyArray<ColumnRef> | undefined): UpdateAst {\n return new UpdateAst(this.table, this.set, this.where, returning);\n }\n\n override collectParamRefs(): ParamRef[] {\n const refs: ParamRef[] = [];\n for (const value of Object.values(this.set)) {\n if (value.kind === 'param-ref') {\n refs.push(value);\n }\n }\n if (this.where) {\n refs.push(...this.where.collectParamRefs());\n }\n return refs;\n }\n\n override collectRefs(): PlanRefs {\n const tables = new Set<string>([this.table.name]);\n const columns = new Map<string, { table: string; column: string }>();\n\n for (const value of Object.values(this.set)) {\n if (value.kind === 'column-ref') {\n addColumnRefToRefSets(value, tables, columns);\n }\n }\n\n for (const columnRef of this.where?.collectColumnRefs() ?? []) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n for (const columnRef of this.returning ?? []) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n return sortRefs(tables, columns);\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport class DeleteAst extends QueryAst {\n readonly kind = 'delete' as const;\n readonly table: TableSource;\n readonly where: AnyExpression | undefined;\n readonly returning: ReadonlyArray<ColumnRef> | undefined;\n\n constructor(table: TableSource, where?: AnyExpression, returning?: ReadonlyArray<ColumnRef>) {\n super();\n this.table = table;\n this.where = where;\n this.returning = returning && returning.length > 0 ? frozenArrayCopy(returning) : undefined;\n this.freeze();\n }\n\n static from(table: TableSource): DeleteAst {\n return new DeleteAst(table);\n }\n\n withWhere(where: AnyExpression | undefined): DeleteAst {\n return new DeleteAst(this.table, where, this.returning);\n }\n\n withReturning(returning: ReadonlyArray<ColumnRef> | undefined): DeleteAst {\n return new DeleteAst(this.table, this.where, returning);\n }\n\n override collectParamRefs(): ParamRef[] {\n return this.where?.collectParamRefs() ?? [];\n }\n\n override collectRefs(): PlanRefs {\n const tables = new Set<string>([this.table.name]);\n const columns = new Map<string, { table: string; column: string }>();\n\n for (const columnRef of this.where?.collectColumnRefs() ?? []) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n for (const columnRef of this.returning ?? []) {\n addColumnRefToRefSets(columnRef, tables, columns);\n }\n\n return sortRefs(tables, columns);\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport type AnyQueryAst = SelectAst | InsertAst | UpdateAst | DeleteAst;\nexport type AnyFromSource = TableSource | DerivedTableSource;\nexport type AnyExpression =\n | ColumnRef\n | IdentifierRef\n | ParamRef\n | LiteralExpr\n | SubqueryExpr\n | OperationExpr\n | AggregateExpr\n | JsonObjectExpr\n | JsonArrayAggExpr\n | ListExpression\n | BinaryExpr\n | AndExpr\n | OrExpr\n | ExistsExpr\n | NullCheckExpr\n | NotExpr;\nexport type AnyInsertOnConflictAction = DoNothingConflictAction | DoUpdateSetConflictAction;\nexport type AnyInsertValue = ColumnRef | ParamRef | DefaultValueExpr;\nexport type AnyOperationArg = AnyExpression | ParamRef | LiteralExpr;\n\nexport const queryAstKinds: ReadonlySet<string> = new Set<AnyQueryAst['kind']>([\n 'select',\n 'insert',\n 'update',\n 'delete',\n]);\nexport const whereExprKinds: ReadonlySet<string> = new Set<AnyExpression['kind']>([\n 'binary',\n 'and',\n 'or',\n 'exists',\n 'null-check',\n 'not',\n]);\n\nexport function isQueryAst(value: unknown): value is AnyQueryAst {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n queryAstKinds.has((value as { kind: string }).kind)\n );\n}\n\nexport function isWhereExpr(value: unknown): value is AnyExpression {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n whereExprKinds.has((value as { kind: string }).kind)\n );\n}\n\nexport interface ToWhereExpr {\n toWhereExpr(): AnyExpression;\n}\n\nexport interface LoweredStatement {\n readonly sql: string;\n readonly params: readonly unknown[];\n readonly annotations?: Record<string, unknown>;\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"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../codec-types-DcEITed4.mjs";
|
|
2
2
|
import "../query-lane-context-UlR8vOkd.mjs";
|
|
3
|
-
import "../types-
|
|
4
|
-
import { n as planUnsupported, t as planInvalid } from "../errors-
|
|
3
|
+
import "../types-k9pir8XY.mjs";
|
|
4
|
+
import { n as planUnsupported, t as planInvalid } from "../errors-ChY_dHam.mjs";
|
|
5
5
|
export { planInvalid, planUnsupported };
|
package/dist/exports/plan.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as augmentDescriptorWithColumnMeta, t as SqlQueryPlan } from "../plan-
|
|
1
|
+
import { n as augmentDescriptorWithColumnMeta, t as SqlQueryPlan } from "../plan-Cs65hb-E.mjs";
|
|
2
2
|
export { SqlQueryPlan, augmentDescriptorWithColumnMeta };
|
package/dist/exports/types.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import "../codec-types-DcEITed4.mjs";
|
|
2
2
|
import "../query-lane-context-UlR8vOkd.mjs";
|
|
3
|
-
import { C as TableDef, E as TablesOf, S as SqlPlan, T as TableMetadata, _ as RawTemplateFactory, a as ComputeColumnJsType, b as RuntimeError, 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 TableKey, x as SqlBuilderOptions, y as ResultType } from "../types-
|
|
3
|
+
import { C as TableDef, E as TablesOf, S as SqlPlan, T as TableMetadata, _ as RawTemplateFactory, a as ComputeColumnJsType, b as RuntimeError, 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 TableKey, x as SqlBuilderOptions, y as ResultType } from "../types-k9pir8XY.mjs";
|
|
4
4
|
export { BuildOptions, BuildParamsMap, CodecTypes, ColumnsOf, ComputeColumnJsType, Expr, HasIncludeManyCapabilities, META, Meta, ModelDef, ModelMetadata, OperationTypeSignature, OperationTypes, OperationsForTypeId, RawFactory, RawFunctionOptions, RawTemplateFactory, RawTemplateOptions, ResultType, RuntimeError, SqlBuilderOptions, SqlPlan, TableDef, TableKey, TableMetadata, TablesOf };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { a as CodecMeta, c as CodecRegistry, d as ExtractCodecTypes, f as ExtractDataTypes, h as defineCodecs, i as CodecInput, l as CodecTrait, m as createCodecRegistry, n as CodecDefBuilder, o as CodecOutput, p as codec, r as CodecId, s as CodecParamsDescriptor, t as Codec, u as CodecTraits } from "./codec-types-DcEITed4.mjs";
|
|
2
|
-
import { $ as ToWhereExpr, 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 SelectAst, K as ProjectionExpr, L as ListExpression, M as JoinAst, N as JoinOnExpr, O as IdentifierRef, P as JsonArrayAggExpr, Q as TableSource, R as LiteralExpr, S as EqColJoinOn, T as ExpressionFolder, U as OrExpr, V as NullCheckExpr, W as OrderByItem, X as SubqueryExpr, Y as SelectAstOptions, Z as TableRef, _ as DeleteAst, a as AndExpr, at as whereExprKinds, b as DoNothingConflictAction, c as AnyInsertOnConflictAction, d as AnyQueryAst, et as UpdateAst, f as AstRewriter, g as DefaultValueExpr, h as ColumnRef, i as AggregateOpFn, it as queryAstKinds, j as InsertValue, k as InsertAst, l as AnyInsertValue, m as BinaryOp, n as AggregateExpr, nt as isQueryAst, o as AnyExpression, p as BinaryExpr, q as ProjectionItem, r as AggregateFn, rt as isWhereExpr, s as AnyFromSource, t as AggregateCountFn, tt as WhereArg, u as AnyOperationArg, v as DerivedTableSource, w as ExprVisitor, x as DoUpdateSetConflictAction, y as Direction, z as LoweredStatement } from "./types-
|
|
2
|
+
import { $ as ToWhereExpr, 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 SelectAst, K as ProjectionExpr, L as ListExpression, M as JoinAst, N as JoinOnExpr, O as IdentifierRef, P as JsonArrayAggExpr, Q as TableSource, R as LiteralExpr, S as EqColJoinOn, T as ExpressionFolder, U as OrExpr, V as NullCheckExpr, W as OrderByItem, X as SubqueryExpr, Y as SelectAstOptions, Z as TableRef, _ as DeleteAst, a as AndExpr, at as whereExprKinds, b as DoNothingConflictAction, c as AnyInsertOnConflictAction, d as AnyQueryAst, et as UpdateAst, f as AstRewriter, g as DefaultValueExpr, h as ColumnRef, i as AggregateOpFn, it as queryAstKinds, j as InsertValue, k as InsertAst, l as AnyInsertValue, m as BinaryOp, n as AggregateExpr, nt as isQueryAst, o as AnyExpression, p as BinaryExpr, q as ProjectionItem, r as AggregateFn, rt as isWhereExpr, s as AnyFromSource, t as AggregateCountFn, tt as WhereArg, u as AnyOperationArg, v as DerivedTableSource, w as ExprVisitor, x as DoUpdateSetConflictAction, y as Direction, z as LoweredStatement } from "./types-C3Hg-CVz.mjs";
|
|
3
3
|
import { Adapter, AdapterProfile, AdapterTarget, LoweredPayload, 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, SqlCodecTypes, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExplainResult, SqlQueryResult, SqlQueryable, SqlTransaction, compact, sqlCodecDefinitions, sqlDataTypes } from "./exports/ast.mjs";
|
|
4
|
-
import { n as augmentDescriptorWithColumnMeta, t as SqlQueryPlan } from "./plan-
|
|
4
|
+
import { n as augmentDescriptorWithColumnMeta, t as SqlQueryPlan } from "./plan-Cs65hb-E.mjs";
|
|
5
5
|
import { a as JsonSchemaValidationResult, c as MutationDefaultsOptions, i as JsonSchemaValidationError, l as TypeHelperRegistry, n as ExecutionContext, o as JsonSchemaValidatorRegistry, r as JsonSchemaValidateFn, s as MutationDefaultsOp, t as AppliedMutationDefault } from "./query-lane-context-UlR8vOkd.mjs";
|
|
6
|
-
import { C as TableDef, E as TablesOf, S as SqlPlan, T as TableMetadata, _ as RawTemplateFactory, a as ComputeColumnJsType, b as RuntimeError, 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 TableKey, x as SqlBuilderOptions, y as ResultType } from "./types-
|
|
7
|
-
import { n as planUnsupported, t as planInvalid } from "./errors-
|
|
6
|
+
import { C as TableDef, E as TablesOf, S as SqlPlan, T as TableMetadata, _ as RawTemplateFactory, a as ComputeColumnJsType, b as RuntimeError, 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 TableKey, x as SqlBuilderOptions, y as ResultType } from "./types-k9pir8XY.mjs";
|
|
7
|
+
import { n as planUnsupported, t as planInvalid } from "./errors-ChY_dHam.mjs";
|
|
8
8
|
import "./exports/plan.mjs";
|
|
9
9
|
import "./exports/query-lane-context.mjs";
|
|
10
10
|
import "./exports/types.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as AnyQueryAst } from "./types-
|
|
1
|
+
import { d as AnyQueryAst } from "./types-C3Hg-CVz.mjs";
|
|
2
2
|
import { ExecutionPlan, ParamDescriptor } from "@prisma-next/contract/types";
|
|
3
3
|
import { StorageColumn } from "@prisma-next/sql-contract/types";
|
|
4
4
|
|
|
@@ -25,4 +25,4 @@ interface SqlQueryPlan<_Row = unknown> extends Pick<ExecutionPlan<_Row, AnyQuery
|
|
|
25
25
|
declare function augmentDescriptorWithColumnMeta(descriptors: ParamDescriptor[], columnMeta: StorageColumn | undefined): void;
|
|
26
26
|
//#endregion
|
|
27
27
|
export { augmentDescriptorWithColumnMeta as n, SqlQueryPlan as t };
|
|
28
|
-
//# sourceMappingURL=plan-
|
|
28
|
+
//# sourceMappingURL=plan-Cs65hb-E.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-
|
|
1
|
+
{"version":3,"file":"plan-Cs65hb-E.d.mts","names":[],"sources":["../src/plan.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAcA;;;;;;;;AAYgB,UAZC,YAYD,CAAA,OAAA,OAA+B,CAAA,SAXrC,IAYK,CAZA,aAaD,CAbe,IAaf,EAbqB,WAaR,CAAA,EAAA,QAAA,GAAA,MAAA,CAAA,CAAA;gBAZX;kBAGE;;;;;;iBAOF,+BAAA,cACD,+BACD"}
|
|
@@ -4,7 +4,7 @@ import { SqlLoweringSpec } from "@prisma-next/sql-operations";
|
|
|
4
4
|
|
|
5
5
|
//#region src/ast/types.d.ts
|
|
6
6
|
type Direction = 'asc' | 'desc';
|
|
7
|
-
type BinaryOp = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'like' | '
|
|
7
|
+
type BinaryOp = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'like' | 'in' | 'notIn';
|
|
8
8
|
type AggregateCountFn = 'count';
|
|
9
9
|
type AggregateOpFn = 'sum' | 'avg' | 'min' | 'max';
|
|
10
10
|
type AggregateFn = AggregateCountFn | AggregateOpFn;
|
|
@@ -254,7 +254,6 @@ declare class BinaryExpr extends Expression {
|
|
|
254
254
|
static gte(left: AnyExpression, right: AnyExpression): BinaryExpr;
|
|
255
255
|
static lte(left: AnyExpression, right: AnyExpression): BinaryExpr;
|
|
256
256
|
static like(left: AnyExpression, right: AnyExpression): BinaryExpr;
|
|
257
|
-
static ilike(left: AnyExpression, right: AnyExpression): BinaryExpr;
|
|
258
257
|
static in(left: AnyExpression, right: AnyExpression): BinaryExpr;
|
|
259
258
|
static notIn(left: AnyExpression, right: AnyExpression): BinaryExpr;
|
|
260
259
|
accept<R>(visitor: ExprVisitor<R>): R;
|
|
@@ -482,4 +481,4 @@ interface LoweredStatement {
|
|
|
482
481
|
}
|
|
483
482
|
//#endregion
|
|
484
483
|
export { ToWhereExpr as $, InsertOnConflict as A, NotExpr as B, ExistsExpr as C, ExpressionSource as D, ExpressionRewriter as E, JsonObjectEntry as F, ParamRef as G, OperationExpr as H, JsonObjectExpr as I, SelectAst as J, ProjectionExpr as K, ListExpression as L, JoinAst as M, JoinOnExpr as N, IdentifierRef as O, JsonArrayAggExpr as P, TableSource as Q, LiteralExpr as R, EqColJoinOn as S, ExpressionFolder as T, OrExpr as U, NullCheckExpr as V, OrderByItem as W, SubqueryExpr as X, SelectAstOptions as Y, TableRef as Z, DeleteAst as _, AndExpr as a, whereExprKinds as at, DoNothingConflictAction as b, AnyInsertOnConflictAction as c, AnyQueryAst as d, UpdateAst as et, AstRewriter as f, DefaultValueExpr as g, ColumnRef as h, AggregateOpFn as i, queryAstKinds as it, InsertValue as j, InsertAst as k, AnyInsertValue as l, BinaryOp as m, AggregateExpr as n, isQueryAst as nt, AnyExpression as o, BinaryExpr as p, ProjectionItem as q, AggregateFn as r, isWhereExpr as rt, AnyFromSource as s, AggregateCountFn as t, WhereArg as tt, AnyOperationArg as u, DerivedTableSource as v, ExprVisitor as w, DoUpdateSetConflictAction as x, Direction as y, LoweredStatement as z };
|
|
485
|
-
//# sourceMappingURL=types-
|
|
484
|
+
//# sourceMappingURL=types-C3Hg-CVz.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-C3Hg-CVz.d.mts","names":[],"sources":["../src/ast/types.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { G as ParamRef, d as AnyQueryAst, h as ColumnRef } from "./types-
|
|
2
|
-
import { t as SqlQueryPlan } from "./plan-
|
|
1
|
+
import { G as ParamRef, d as AnyQueryAst, h as ColumnRef } from "./types-C3Hg-CVz.mjs";
|
|
2
|
+
import { t as SqlQueryPlan } from "./plan-Cs65hb-E.mjs";
|
|
3
3
|
import { n as ExecutionContext } from "./query-lane-context-UlR8vOkd.mjs";
|
|
4
4
|
import { Contract, ExecutionPlan, PlanRefs, ResultType } from "@prisma-next/contract/types";
|
|
5
5
|
import { ParamSpec } from "@prisma-next/operations";
|
|
@@ -197,4 +197,4 @@ interface SqlBuilderOptions<TContract extends Contract<SqlStorage> = Contract<Sq
|
|
|
197
197
|
type ResultType$1<P> = P extends SqlQueryPlan<infer R> ? R : ResultType<P>;
|
|
198
198
|
//#endregion
|
|
199
199
|
export { TableDef as C, TablesOf as E, SqlPlan as S, TableMetadata as T, RawTemplateFactory as _, ComputeColumnJsType as a, RuntimeError as b, META as c, ModelMetadata as d, OperationTypeSignature as f, RawFunctionOptions as g, RawFactory as h, ColumnsOf as i, Meta as l, OperationsForTypeId as m, BuildParamsMap as n, Expr as o, OperationTypes as p, CodecTypes as r, HasIncludeManyCapabilities as s, BuildOptions as t, ModelDef as u, RawTemplateOptions as v, TableKey as w, SqlBuilderOptions as x, ResultType$1 as y };
|
|
200
|
-
//# sourceMappingURL=types-
|
|
200
|
+
//# sourceMappingURL=types-k9pir8XY.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-
|
|
1
|
+
{"version":3,"file":"types-k9pir8XY.d.mts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/sql-relational-core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "AST types, query lane context, and type utilities for Prisma Next SQL lanes",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"arktype": "^2.1.29",
|
|
9
9
|
"ts-toolbelt": "^9.6.0",
|
|
10
|
-
"@prisma-next/contract": "0.4.
|
|
11
|
-
"@prisma-next/framework-components": "0.4.
|
|
12
|
-
"@prisma-next/operations": "0.4.
|
|
13
|
-
"@prisma-next/sql-
|
|
14
|
-
"@prisma-next/
|
|
15
|
-
"@prisma-next/
|
|
10
|
+
"@prisma-next/contract": "0.4.1",
|
|
11
|
+
"@prisma-next/framework-components": "0.4.1",
|
|
12
|
+
"@prisma-next/operations": "0.4.1",
|
|
13
|
+
"@prisma-next/sql-contract": "0.4.1",
|
|
14
|
+
"@prisma-next/sql-operations": "0.4.1",
|
|
15
|
+
"@prisma-next/utils": "0.4.1"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"tsdown": "0.18.4",
|
|
19
19
|
"typescript": "5.9.3",
|
|
20
20
|
"vitest": "4.0.17",
|
|
21
|
-
"@prisma-next/sql-contract-ts": "0.4.0-dev.9",
|
|
22
21
|
"@prisma-next/test-utils": "0.0.1",
|
|
22
|
+
"@prisma-next/sql-contract-ts": "0.4.1",
|
|
23
23
|
"@prisma-next/tsconfig": "0.0.0",
|
|
24
24
|
"@prisma-next/tsdown": "0.0.0"
|
|
25
25
|
},
|
package/src/ast/driver-types.ts
CHANGED
|
@@ -24,7 +24,37 @@ export interface SqlDriver<TBinding = void> extends SqlQueryable {
|
|
|
24
24
|
|
|
25
25
|
export interface SqlConnection extends SqlQueryable {
|
|
26
26
|
beginTransaction(): Promise<SqlTransaction>;
|
|
27
|
+
/**
|
|
28
|
+
* Returns the connection to the pool for reuse. Must only be called when the
|
|
29
|
+
* connection is known to be in a clean, reusable state. If a transaction
|
|
30
|
+
* operation (commit/rollback) failed or the connection is otherwise suspect,
|
|
31
|
+
* call `destroy(reason)` instead.
|
|
32
|
+
*/
|
|
27
33
|
release(): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Evicts the connection so it is never reused. Call this when the
|
|
36
|
+
* connection may be in an indeterminate state (e.g. a failed rollback
|
|
37
|
+
* leaving an open transaction, or a broken socket).
|
|
38
|
+
*
|
|
39
|
+
* Implementations MUST:
|
|
40
|
+
* - Leave the connection retryable if teardown fails, so a follow-up
|
|
41
|
+
* call can actually dispose of the handle. Calling destroy() or
|
|
42
|
+
* release() more than once after a successful teardown is caller
|
|
43
|
+
* error and behaves as the underlying primitive dictates (typically
|
|
44
|
+
* a thrown error).
|
|
45
|
+
* - Treat `reason` as advisory context only. It may be surfaced to
|
|
46
|
+
* driver-level observability hooks (e.g. pg-pool's `'release'` event)
|
|
47
|
+
* but MUST NOT influence eviction behavior and MUST NOT be rethrown.
|
|
48
|
+
* - Dispose of any driver-wide state that depends on this single
|
|
49
|
+
* connection (e.g. a direct-client driver should close itself, since a
|
|
50
|
+
* destroyed connection means its one underlying socket is unusable).
|
|
51
|
+
* - Propagate errors raised while tearing down the underlying connection.
|
|
52
|
+
* The caller has context the driver does not (whether it is already
|
|
53
|
+
* about to throw a more informative error, whether it is shutting
|
|
54
|
+
* down, etc.) and is better positioned to decide whether to swallow
|
|
55
|
+
* or surface the failure.
|
|
56
|
+
*/
|
|
57
|
+
destroy(reason?: unknown): Promise<void>;
|
|
28
58
|
}
|
|
29
59
|
|
|
30
60
|
export interface SqlTransaction extends SqlQueryable {
|
package/src/ast/types.ts
CHANGED
|
@@ -4,17 +4,7 @@ import type { SqlLoweringSpec } from '@prisma-next/sql-operations';
|
|
|
4
4
|
|
|
5
5
|
export type Direction = 'asc' | 'desc';
|
|
6
6
|
|
|
7
|
-
export type BinaryOp =
|
|
8
|
-
| 'eq'
|
|
9
|
-
| 'neq'
|
|
10
|
-
| 'gt'
|
|
11
|
-
| 'lt'
|
|
12
|
-
| 'gte'
|
|
13
|
-
| 'lte'
|
|
14
|
-
| 'like'
|
|
15
|
-
| 'ilike'
|
|
16
|
-
| 'in'
|
|
17
|
-
| 'notIn';
|
|
7
|
+
export type BinaryOp = 'eq' | 'neq' | 'gt' | 'lt' | 'gte' | 'lte' | 'like' | 'in' | 'notIn';
|
|
18
8
|
|
|
19
9
|
export type AggregateCountFn = 'count';
|
|
20
10
|
export type AggregateOpFn = 'sum' | 'avg' | 'min' | 'max';
|
|
@@ -801,10 +791,6 @@ export class BinaryExpr extends Expression {
|
|
|
801
791
|
return new BinaryExpr('like', left, right);
|
|
802
792
|
}
|
|
803
793
|
|
|
804
|
-
static ilike(left: AnyExpression, right: AnyExpression): BinaryExpr {
|
|
805
|
-
return new BinaryExpr('ilike', left, right);
|
|
806
|
-
}
|
|
807
|
-
|
|
808
794
|
static in(left: AnyExpression, right: AnyExpression): BinaryExpr {
|
|
809
795
|
return new BinaryExpr('in', left, right);
|
|
810
796
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors-Cs52upp3.d.mts","names":[],"sources":["../src/errors.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,WAAA,4BAEJ,+EAGT;iBAkBa,eAAA,4BAEJ,+EAGT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-CLCtwVWx.d.mts","names":[],"sources":["../src/ast/types.ts"],"sourcesContent":[],"mappings":"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"}
|