@prisma-next/sql-relational-core 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/{errors-DxcMvEtE.d.mts → errors-Duz3ppqk.d.mts} +2 -2
  2. package/dist/{errors-DxcMvEtE.d.mts.map → errors-Duz3ppqk.d.mts.map} +1 -1
  3. package/dist/exports/ast.d.mts +1 -1
  4. package/dist/exports/ast.mjs +1 -1
  5. package/dist/exports/errors.d.mts +1 -1
  6. package/dist/exports/expression.d.mts +1 -1
  7. package/dist/exports/expression.mjs +1 -1
  8. package/dist/exports/middleware.d.mts +1 -1
  9. package/dist/exports/plan.d.mts +2 -2
  10. package/dist/exports/types.d.mts +2 -2
  11. package/dist/index.d.mts +7 -7
  12. package/dist/index.mjs +1 -1
  13. package/dist/{middleware-C-zEqqGe.d.mts → middleware-DI2DqOSg.d.mts} +2 -2
  14. package/dist/{middleware-C-zEqqGe.d.mts.map → middleware-DI2DqOSg.d.mts.map} +1 -1
  15. package/dist/{plan-DftTjAAl.d.mts → plan-D-Q5B-z_.d.mts} +2 -2
  16. package/dist/{plan-DftTjAAl.d.mts.map → plan-D-Q5B-z_.d.mts.map} +1 -1
  17. package/dist/{sql-execution-plan-CiR7ywhQ.d.mts → sql-execution-plan-B84vOmgK.d.mts} +2 -2
  18. package/dist/{sql-execution-plan-CiR7ywhQ.d.mts.map → sql-execution-plan-B84vOmgK.d.mts.map} +1 -1
  19. package/dist/{types-Pnz-IMuf.d.mts → types-BJHEQbci.d.mts} +3 -3
  20. package/dist/{types-Pnz-IMuf.d.mts.map → types-BJHEQbci.d.mts.map} +1 -1
  21. package/dist/{types-aCUlP-iI.mjs → types-CceENhhm.mjs} +3 -19
  22. package/dist/types-CceENhhm.mjs.map +1 -0
  23. package/dist/{types-aknEJe-3.d.mts → types-DNGyueh7.d.mts} +7 -8
  24. package/dist/{types-aknEJe-3.d.mts.map → types-DNGyueh7.d.mts.map} +1 -1
  25. package/dist/{types-DiHGXr6t.d.mts → types-DiV49xLs.d.mts} +3 -3
  26. package/dist/{types-DiHGXr6t.d.mts.map → types-DiV49xLs.d.mts.map} +1 -1
  27. package/package.json +11 -11
  28. package/src/ast/types.ts +11 -36
  29. package/dist/types-aCUlP-iI.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
- import { y as RuntimeError } from "./types-DiHGXr6t.mjs";
1
+ import { y as RuntimeError } from "./types-DiV49xLs.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-DxcMvEtE.d.mts.map
8
+ //# sourceMappingURL=errors-Duz3ppqk.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors-DxcMvEtE.d.mts","names":[],"sources":["../src/errors.ts"],"mappings":";;;iBAEgB,WAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAA;AAAA,iBAkBa,eAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAA"}
1
+ {"version":3,"file":"errors-Duz3ppqk.d.mts","names":[],"sources":["../src/errors.ts"],"mappings":";;;iBAEgB,WAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAA;AAAA,iBAkBa,eAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAA"}
@@ -1,5 +1,5 @@
1
1
  import { a as CodecMeta, c as ContractCodecRegistry, d as DescriptorCodecTraits, f as ExtractCodecTypes, h as SqlColumnRef, i as CodecDescriptor, l as DescriptorCodecId, m as SqlCodecInstanceContext, n as Codec, o as CodecRef, p as SqlCodecCallContext, r as CodecCallContext, s as CodecTrait, t as AnyCodecDescriptor, u as DescriptorCodecInput } from "../codec-types-Cezo7k-i.mjs";
2
- import { $ as SelectAst, A as InsertAst, B as LiteralExpr, C as EqColJoinOn, D as ExpressionRewriter, E as ExpressionFolder, F as JsonArrayAggExpr, G as OperationExpr, H as LoweredStatement, I as JsonObjectEntry, J as ParamRef, K as OrExpr, L as JsonObjectExpr, M as InsertValue, N as JoinAst, O as ExpressionSource, P as JoinOnExpr, Q as RawSqlExpr, R as LimitOffsetValue, S as DoUpdateSetConflictAction, T as ExprVisitor, U as NotExpr, V as LoweredParam, W as NullCheckExpr, X as ProjectionExpr, Y as PreparedParamRef, Z as ProjectionItem, _ as DefaultValueExpr, a as AndExpr, at as UpdateAst, b as Direction, c as AnyInsertOnConflictAction, ct as isWhereExpr, d as AnyParamRef, et as SelectAstOptions, f as AnyQueryAst, g as ColumnRef, h as BinaryOp, i as AggregateOpFn, it as ToWhereExpr, j as InsertOnConflict, k as IdentifierRef, l as AnyInsertValue, lt as queryAstKinds, m as BinaryExpr, n as AggregateExpr, nt as TableRef, o as AnyExpression, ot as WhereArg, p as AstRewriter, q as OrderByItem, r as AggregateFn, rt as TableSource, s as AnyFromSource, st as isQueryAst, t as AggregateCountFn, tt as SubqueryExpr, u as AnyOperationArg, ut as whereExprKinds, v as DeleteAst, w as ExistsExpr, x as DoNothingConflictAction, y as DerivedTableSource, z as ListExpression } from "../types-aknEJe-3.mjs";
2
+ import { $ as SelectAst, A as InsertAst, B as LiteralExpr, C as EqColJoinOn, D as ExpressionRewriter, E as ExpressionFolder, F as JsonArrayAggExpr, G as OperationExpr, H as LoweredStatement, I as JsonObjectEntry, J as ParamRef, K as OrExpr, L as JsonObjectExpr, M as InsertValue, N as JoinAst, O as ExpressionSource, P as JoinOnExpr, Q as RawSqlExpr, R as LimitOffsetValue, S as DoUpdateSetConflictAction, T as ExprVisitor, U as NotExpr, V as LoweredParam, W as NullCheckExpr, X as ProjectionExpr, Y as PreparedParamRef, Z as ProjectionItem, _ as DefaultValueExpr, a as AndExpr, at as UpdateAst, b as Direction, c as AnyInsertOnConflictAction, ct as isWhereExpr, d as AnyParamRef, et as SelectAstOptions, f as AnyQueryAst, g as ColumnRef, h as BinaryOp, i as AggregateOpFn, it as ToWhereExpr, j as InsertOnConflict, k as IdentifierRef, l as AnyInsertValue, lt as queryAstKinds, m as BinaryExpr, n as AggregateExpr, nt as TableRef, o as AnyExpression, ot as WhereArg, p as AstRewriter, q as OrderByItem, r as AggregateFn, rt as TableSource, s as AnyFromSource, st as isQueryAst, t as AggregateCountFn, tt as SubqueryExpr, u as AnyOperationArg, ut as whereExprKinds, v as DeleteAst, w as ExistsExpr, x as DoNothingConflictAction, y as DerivedTableSource, z as ListExpression } from "../types-DNGyueh7.mjs";
3
3
  import * as _$_prisma_next_framework_components_codec0 from "@prisma-next/framework-components/codec";
4
4
  import { CodecCallContext as CodecCallContext$1, CodecDescriptorImpl, CodecImpl, CodecInstanceContext } from "@prisma-next/framework-components/codec";
5
5
  import { ContractMarkerRecord, JsonValue } from "@prisma-next/contract/types";
@@ -1,4 +1,4 @@
1
- import { A as SubqueryExpr, C as OrExpr, D as ProjectionItem, E as PreparedParamRef, F as queryAstKinds, I as whereExprKinds, M as UpdateAst, N as isQueryAst, O as RawSqlExpr, P as isWhereExpr, S as OperationExpr, T as ParamRef, _ as JsonObjectExpr, a as DefaultValueExpr, b as NotExpr, c as DoNothingConflictAction, d as ExistsExpr, f as IdentifierRef, g as JsonArrayAggExpr, h as JoinAst, i as ColumnRef, j as TableSource, k as SelectAst, l as DoUpdateSetConflictAction, m as InsertOnConflict, n as AndExpr, o as DeleteAst, p as InsertAst, r as BinaryExpr, s as DerivedTableSource, t as AggregateExpr, u as EqColJoinOn, v as ListExpression, w as OrderByItem, x as NullCheckExpr, y as LiteralExpr } from "../types-aCUlP-iI.mjs";
1
+ import { A as SubqueryExpr, C as OrExpr, D as ProjectionItem, E as PreparedParamRef, F as queryAstKinds, I as whereExprKinds, M as UpdateAst, N as isQueryAst, O as RawSqlExpr, P as isWhereExpr, S as OperationExpr, T as ParamRef, _ as JsonObjectExpr, a as DefaultValueExpr, b as NotExpr, c as DoNothingConflictAction, d as ExistsExpr, f as IdentifierRef, g as JsonArrayAggExpr, h as JoinAst, i as ColumnRef, j as TableSource, k as SelectAst, l as DoUpdateSetConflictAction, m as InsertOnConflict, n as AndExpr, o as DeleteAst, p as InsertAst, r as BinaryExpr, s as DerivedTableSource, t as AggregateExpr, u as EqColJoinOn, v as ListExpression, w as OrderByItem, x as NullCheckExpr, y as LiteralExpr } from "../types-CceENhhm.mjs";
2
2
  import { n as compact, t as collectOrderedParamRefs } from "../util-DWmhUCEO.mjs";
3
3
  import { CodecDescriptorImpl, CodecImpl, column, voidParamsSchema } from "@prisma-next/framework-components/codec";
4
4
  import { type } from "arktype";
@@ -1,2 +1,2 @@
1
- import { n as planUnsupported, t as planInvalid } from "../errors-DxcMvEtE.mjs";
1
+ import { n as planUnsupported, t as planInvalid } from "../errors-Duz3ppqk.mjs";
2
2
  export { planInvalid, planUnsupported };
@@ -1,5 +1,5 @@
1
1
  import { o as CodecRef } from "../codec-types-Cezo7k-i.mjs";
2
- import { o as AnyExpression } from "../types-aknEJe-3.mjs";
2
+ import { o as AnyExpression } from "../types-DNGyueh7.mjs";
3
3
  import { QueryOperationReturn } from "@prisma-next/sql-contract/types";
4
4
  import { ParamSpec } from "@prisma-next/operations";
5
5
  import { SqlLoweringSpec } from "@prisma-next/sql-operations";
@@ -1,4 +1,4 @@
1
- import { S as OperationExpr, T as ParamRef } from "../types-aCUlP-iI.mjs";
1
+ import { S as OperationExpr, T as ParamRef } from "../types-CceENhhm.mjs";
2
2
  import { runtimeError } from "@prisma-next/framework-components/runtime";
3
3
  //#region src/expression.ts
4
4
  /**
@@ -1,2 +1,2 @@
1
- import { a as SqlParamRefMutatorInternal, i as SqlParamRefMutator, n as ParamRefEntryUnion, o as createSqlParamRefMutator, r as ParamRefHandle, t as ParamRefEntry } from "../middleware-C-zEqqGe.mjs";
1
+ import { a as SqlParamRefMutatorInternal, i as SqlParamRefMutator, n as ParamRefEntryUnion, o as createSqlParamRefMutator, r as ParamRefHandle, t as ParamRefEntry } from "../middleware-DI2DqOSg.mjs";
2
2
  export { ParamRefEntry, ParamRefEntryUnion, ParamRefHandle, SqlParamRefMutator, SqlParamRefMutatorInternal, createSqlParamRefMutator };
@@ -1,3 +1,3 @@
1
- import { t as SqlExecutionPlan } from "../sql-execution-plan-CiR7ywhQ.mjs";
2
- import { n as planFromAst, t as SqlQueryPlan } from "../plan-DftTjAAl.mjs";
1
+ import { t as SqlExecutionPlan } from "../sql-execution-plan-B84vOmgK.mjs";
2
+ import { n as planFromAst, t as SqlQueryPlan } from "../plan-D-Q5B-z_.mjs";
3
3
  export { type SqlExecutionPlan, SqlQueryPlan, planFromAst };
@@ -1,3 +1,3 @@
1
- import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ComputeColumnJsType, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnsOf, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as Expr, p as OperationTypes, r as CodecTypes, s as HasIncludeManyCapabilities, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "../types-DiHGXr6t.mjs";
2
- import { n as SqlOrmPlan, t as RuntimeScope } from "../types-Pnz-IMuf.mjs";
1
+ import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ComputeColumnJsType, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnsOf, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as Expr, p as OperationTypes, r as CodecTypes, s as HasIncludeManyCapabilities, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "../types-DiV49xLs.mjs";
2
+ import { n as SqlOrmPlan, t as RuntimeScope } from "../types-BJHEQbci.mjs";
3
3
  export { BuildOptions, BuildParamsMap, CodecTypes, ColumnsOf, ComputeColumnJsType, Expr, HasIncludeManyCapabilities, META, Meta, ModelDef, ModelMetadata, OperationTypeSignature, OperationTypes, OperationsForTypeId, RawFactory, RawFunctionOptions, RawTemplateFactory, RawTemplateOptions, RuntimeError, RuntimeScope, SqlBuilderOptions, SqlOrmPlan, SqlPlan, TableDef, TableKey, TableMetadata, TablesOf };
package/dist/index.d.mts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { a as CodecMeta, c as ContractCodecRegistry, d as DescriptorCodecTraits, f as ExtractCodecTypes, h as SqlColumnRef, i as CodecDescriptor, l as DescriptorCodecId, m as SqlCodecInstanceContext, n as Codec, o as CodecRef, p as SqlCodecCallContext, r as CodecCallContext, s as CodecTrait, t as AnyCodecDescriptor, u as DescriptorCodecInput } from "./codec-types-Cezo7k-i.mjs";
2
- import { $ as SelectAst, A as InsertAst, B as LiteralExpr, C as EqColJoinOn, D as ExpressionRewriter, E as ExpressionFolder, F as JsonArrayAggExpr, G as OperationExpr, H as LoweredStatement, I as JsonObjectEntry, J as ParamRef, K as OrExpr, L as JsonObjectExpr, M as InsertValue, N as JoinAst, O as ExpressionSource, P as JoinOnExpr, Q as RawSqlExpr, R as LimitOffsetValue, S as DoUpdateSetConflictAction, T as ExprVisitor, U as NotExpr, V as LoweredParam, W as NullCheckExpr, X as ProjectionExpr, Y as PreparedParamRef, Z as ProjectionItem, _ as DefaultValueExpr, a as AndExpr, at as UpdateAst, b as Direction, c as AnyInsertOnConflictAction, ct as isWhereExpr, d as AnyParamRef, et as SelectAstOptions, f as AnyQueryAst, g as ColumnRef, h as BinaryOp, i as AggregateOpFn, it as ToWhereExpr, j as InsertOnConflict, k as IdentifierRef, l as AnyInsertValue, lt as queryAstKinds, m as BinaryExpr, n as AggregateExpr, nt as TableRef, o as AnyExpression, ot as WhereArg, p as AstRewriter, q as OrderByItem, r as AggregateFn, rt as TableSource, s as AnyFromSource, st as isQueryAst, t as AggregateCountFn, tt as SubqueryExpr, u as AnyOperationArg, ut as whereExprKinds, v as DeleteAst, w as ExistsExpr, x as DoNothingConflictAction, y as DerivedTableSource, z as ListExpression } from "./types-aknEJe-3.mjs";
2
+ import { $ as SelectAst, A as InsertAst, B as LiteralExpr, C as EqColJoinOn, D as ExpressionRewriter, E as ExpressionFolder, F as JsonArrayAggExpr, G as OperationExpr, H as LoweredStatement, I as JsonObjectEntry, J as ParamRef, K as OrExpr, L as JsonObjectExpr, M as InsertValue, N as JoinAst, O as ExpressionSource, P as JoinOnExpr, Q as RawSqlExpr, R as LimitOffsetValue, S as DoUpdateSetConflictAction, T as ExprVisitor, U as NotExpr, V as LoweredParam, W as NullCheckExpr, X as ProjectionExpr, Y as PreparedParamRef, Z as ProjectionItem, _ as DefaultValueExpr, a as AndExpr, at as UpdateAst, b as Direction, c as AnyInsertOnConflictAction, ct as isWhereExpr, d as AnyParamRef, et as SelectAstOptions, f as AnyQueryAst, g as ColumnRef, h as BinaryOp, i as AggregateOpFn, it as ToWhereExpr, j as InsertOnConflict, k as IdentifierRef, l as AnyInsertValue, lt as queryAstKinds, m as BinaryExpr, n as AggregateExpr, nt as TableRef, o as AnyExpression, ot as WhereArg, p as AstRewriter, q as OrderByItem, r as AggregateFn, rt as TableSource, s as AnyFromSource, st as isQueryAst, t as AggregateCountFn, tt as SubqueryExpr, u as AnyOperationArg, ut as whereExprKinds, v as DeleteAst, w as ExistsExpr, x as DoNothingConflictAction, y as DerivedTableSource, z as ListExpression } from "./types-DNGyueh7.mjs";
3
3
  import { Adapter, AdapterProfile, AdapterTarget, Lowerer, LowererContext, MarkerReadResult, MarkerStatement, PreparedExecuteRequest, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SqlCharCodec, SqlCharDescriptor, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, collectOrderedParamRefs, compact, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType } from "./exports/ast.mjs";
4
4
  import { a as MutationDefaultsOptions, i as MutationDefaultsOp, n as CodecDescriptorRegistry, o as TypeHelperRegistry, r as ExecutionContext, t as AppliedMutationDefault } from "./query-lane-context-Dw1Tz0kv.mjs";
5
- import { t as SqlExecutionPlan } from "./sql-execution-plan-CiR7ywhQ.mjs";
6
- import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ComputeColumnJsType, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnsOf, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as Expr, p as OperationTypes, r as CodecTypes, s as HasIncludeManyCapabilities, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "./types-DiHGXr6t.mjs";
7
- import { n as planUnsupported, t as planInvalid } from "./errors-DxcMvEtE.mjs";
5
+ import { t as SqlExecutionPlan } from "./sql-execution-plan-B84vOmgK.mjs";
6
+ import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ComputeColumnJsType, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnsOf, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as Expr, p as OperationTypes, r as CodecTypes, s as HasIncludeManyCapabilities, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "./types-DiV49xLs.mjs";
7
+ import { n as planUnsupported, t as planInvalid } from "./errors-Duz3ppqk.mjs";
8
8
  import { BuildOperationSpec, CodecExpression, CodecTypesBase, CodecValue, Expression, ScopeField, TraitExpression, buildOperation, codecOf, toExpr } from "./exports/expression.mjs";
9
- import { a as SqlParamRefMutatorInternal, i as SqlParamRefMutator, n as ParamRefEntryUnion, o as createSqlParamRefMutator, r as ParamRefHandle, t as ParamRefEntry } from "./middleware-C-zEqqGe.mjs";
10
- import { n as planFromAst, t as SqlQueryPlan } from "./plan-DftTjAAl.mjs";
11
- import { n as SqlOrmPlan, t as RuntimeScope } from "./types-Pnz-IMuf.mjs";
9
+ import { a as SqlParamRefMutatorInternal, i as SqlParamRefMutator, n as ParamRefEntryUnion, o as createSqlParamRefMutator, r as ParamRefHandle, t as ParamRefEntry } from "./middleware-DI2DqOSg.mjs";
10
+ import { n as planFromAst, t as SqlQueryPlan } from "./plan-D-Q5B-z_.mjs";
11
+ import { n as SqlOrmPlan, t as RuntimeScope } from "./types-BJHEQbci.mjs";
12
12
  export { Adapter, AdapterProfile, AdapterTarget, AggregateCountFn, AggregateExpr, AggregateFn, AggregateOpFn, AndExpr, AnyCodecDescriptor, AnyExpression, AnyFromSource, AnyInsertOnConflictAction, AnyInsertValue, AnyOperationArg, AnyParamRef, AnyQueryAst, AppliedMutationDefault, AstRewriter, BinaryExpr, BinaryOp, BuildOperationSpec, BuildOptions, BuildParamsMap, Codec, CodecCallContext, CodecDescriptor, CodecDescriptorRegistry, CodecExpression, CodecMeta, CodecRef, CodecTrait, CodecTypes, CodecTypesBase, CodecValue, ColumnRef, ColumnsOf, ComputeColumnJsType, ContractCodecRegistry, DefaultValueExpr, DeleteAst, DerivedTableSource, DescriptorCodecId, DescriptorCodecInput, DescriptorCodecTraits, Direction, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExecutionContext, ExistsExpr, Expr, ExprVisitor, Expression, ExpressionFolder, ExpressionRewriter, ExpressionSource, ExtractCodecTypes, HasIncludeManyCapabilities, IdentifierRef, InsertAst, InsertOnConflict, InsertValue, JoinAst, JoinOnExpr, JsonArrayAggExpr, JsonObjectEntry, JsonObjectExpr, LimitOffsetValue, ListExpression, LiteralExpr, LoweredParam, LoweredStatement, Lowerer, LowererContext, META, MarkerReadResult, MarkerStatement, Meta, ModelDef, ModelMetadata, MutationDefaultsOp, MutationDefaultsOptions, NotExpr, NullCheckExpr, OperationExpr, OperationTypeSignature, OperationTypes, OperationsForTypeId, OrExpr, OrderByItem, ParamRef, ParamRefEntry, ParamRefEntryUnion, ParamRefHandle, PreparedExecuteRequest, PreparedParamRef, ProjectionExpr, ProjectionItem, RawFactory, RawFunctionOptions, RawSqlExpr, RawTemplateFactory, RawTemplateOptions, RuntimeError, RuntimeScope, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, ScopeField, SelectAst, SelectAstOptions, SqlBuilderOptions, SqlCharCodec, SqlCharDescriptor, SqlCodecCallContext, SqlCodecInstanceContext, SqlColumnRef, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExecutionPlan, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlOrmPlan, SqlParamRefMutator, SqlParamRefMutatorInternal, SqlPlan, SqlQueryPlan, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableDef, TableKey, TableMetadata, TableRef, TableSource, TablesOf, ToWhereExpr, TraitExpression, TypeHelperRegistry, UpdateAst, WhereArg, buildOperation, codecOf, collectOrderedParamRefs, compact, createSqlParamRefMutator, isQueryAst, isWhereExpr, planFromAst, planInvalid, planUnsupported, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, toExpr, whereExprKinds };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { A as SubqueryExpr, C as OrExpr, D as ProjectionItem, E as PreparedParamRef, F as queryAstKinds, I as whereExprKinds, M as UpdateAst, N as isQueryAst, O as RawSqlExpr, P as isWhereExpr, S as OperationExpr, T as ParamRef, _ as JsonObjectExpr, a as DefaultValueExpr, b as NotExpr, c as DoNothingConflictAction, d as ExistsExpr, f as IdentifierRef, g as JsonArrayAggExpr, h as JoinAst, i as ColumnRef, j as TableSource, k as SelectAst, l as DoUpdateSetConflictAction, m as InsertOnConflict, n as AndExpr, o as DeleteAst, p as InsertAst, r as BinaryExpr, s as DerivedTableSource, t as AggregateExpr, u as EqColJoinOn, v as ListExpression, w as OrderByItem, x as NullCheckExpr, y as LiteralExpr } from "./types-aCUlP-iI.mjs";
1
+ import { A as SubqueryExpr, C as OrExpr, D as ProjectionItem, E as PreparedParamRef, F as queryAstKinds, I as whereExprKinds, M as UpdateAst, N as isQueryAst, O as RawSqlExpr, P as isWhereExpr, S as OperationExpr, T as ParamRef, _ as JsonObjectExpr, a as DefaultValueExpr, b as NotExpr, c as DoNothingConflictAction, d as ExistsExpr, f as IdentifierRef, g as JsonArrayAggExpr, h as JoinAst, i as ColumnRef, j as TableSource, k as SelectAst, l as DoUpdateSetConflictAction, m as InsertOnConflict, n as AndExpr, o as DeleteAst, p as InsertAst, r as BinaryExpr, s as DerivedTableSource, t as AggregateExpr, u as EqColJoinOn, v as ListExpression, w as OrderByItem, x as NullCheckExpr, y as LiteralExpr } from "./types-CceENhhm.mjs";
2
2
  import { n as compact, t as collectOrderedParamRefs } from "./util-DWmhUCEO.mjs";
3
3
  import { SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType } from "./exports/ast.mjs";
4
4
  import { n as planUnsupported, t as planInvalid } from "./errors-BF7W5uUd.mjs";
@@ -1,4 +1,4 @@
1
- import { t as SqlExecutionPlan } from "./sql-execution-plan-CiR7ywhQ.mjs";
1
+ import { t as SqlExecutionPlan } from "./sql-execution-plan-B84vOmgK.mjs";
2
2
  import { ParamRefMutator } from "@prisma-next/framework-components/runtime";
3
3
 
4
4
  //#region src/middleware/param-ref-mutator.d.ts
@@ -116,4 +116,4 @@ interface SqlParamRefMutatorInternal<TCodecMap extends Record<string, unknown> =
116
116
  declare function createSqlParamRefMutator<TCodecMap extends Record<string, unknown> = Record<string, unknown>>(plan: SqlExecutionPlan): SqlParamRefMutatorInternal<TCodecMap>;
117
117
  //#endregion
118
118
  export { SqlParamRefMutatorInternal as a, SqlParamRefMutator as i, ParamRefEntryUnion as n, createSqlParamRefMutator as o, ParamRefHandle as r, ParamRefEntry as t };
119
- //# sourceMappingURL=middleware-C-zEqqGe.d.mts.map
119
+ //# sourceMappingURL=middleware-DI2DqOSg.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-C-zEqqGe.d.mts","names":[],"sources":["../src/middleware/param-ref-mutator.ts"],"mappings":";;;;;;AAG8D;;;;;AAuB9D;;;cAXc,mBAAA;;;;;;AAoBd;;;;UATiB,cAAA;EAAA,UACL,mBAAA,GAAsB,QAAA;AAAA;;;;;;UAQjB,aAAA;EAAA,SACN,GAAA,EAAK,cAAA,CAAe,QAAA;EAAA,SACpB,KAAA;EAAA,SACA,OAAA,EAAS,QAAA;AAAA;AAWpB;;;;;;;;AAAA,KAAY,kBAAA,mBAAqC,MAAA,mCAC/B,SAAA,YAAqB,aAAA,CAAc,CAAA,UAAW,SAAA,aAC5D,aAAA;;;;;;;;;;;AA0BJ;;;;;;;;;;;;;;UAAiB,kBAAA,mBACG,MAAA,oBAA0B,MAAA,2BACpC,eAAA;EAmBU;EAjBlB,OAAA,IAAW,gBAAA,CAAiB,kBAAA,CAAmB,SAAA;EAFvC;;;;;;EAUR,YAAA,wBAAoC,SAAA,WAClC,GAAA,EAAK,cAAA,CAAe,QAAA,GACpB,QAAA,EAAU,SAAA,CAAU,QAAA;EAEtB,YAAA,CAAa,GAAA,EAAK,cAAA,aAA2B,QAAA;EAZlC;EAeX,aAAA,CACE,OAAA,EAAS,QAAA;IAAA,SACE,GAAA,EAAK,cAAA,QAAsB,SAAA;IAAA,SAC3B,QAAA;EAAA;AAAA;;;;;;;;;;;UAeE,0BAAA,mBACG,MAAA,oBAA0B,MAAA,2BACpC,kBAAA,CAAmB,SAAA;EAC3B,aAAA;AAAA;;;;;;;AAHF;;;;;;;;;iBAuBgB,wBAAA,mBACI,MAAA,oBAA0B,MAAA,kBAAA,CAC5C,IAAA,EAAM,gBAAA,GAAmB,0BAAA,CAA2B,SAAA"}
1
+ {"version":3,"file":"middleware-DI2DqOSg.d.mts","names":[],"sources":["../src/middleware/param-ref-mutator.ts"],"mappings":";;;;;;AAG8D;;;;;AAuB9D;;;cAXc,mBAAA;;;;;;AAoBd;;;;UATiB,cAAA;EAAA,UACL,mBAAA,GAAsB,QAAA;AAAA;;;;;;UAQjB,aAAA;EAAA,SACN,GAAA,EAAK,cAAA,CAAe,QAAA;EAAA,SACpB,KAAA;EAAA,SACA,OAAA,EAAS,QAAA;AAAA;AAWpB;;;;;;;;AAAA,KAAY,kBAAA,mBAAqC,MAAA,mCAC/B,SAAA,YAAqB,aAAA,CAAc,CAAA,UAAW,SAAA,aAC5D,aAAA;;;;;;;;;;;AA0BJ;;;;;;;;;;;;;;UAAiB,kBAAA,mBACG,MAAA,oBAA0B,MAAA,2BACpC,eAAA;EAmBU;EAjBlB,OAAA,IAAW,gBAAA,CAAiB,kBAAA,CAAmB,SAAA;EAFvC;;;;;;EAUR,YAAA,wBAAoC,SAAA,WAClC,GAAA,EAAK,cAAA,CAAe,QAAA,GACpB,QAAA,EAAU,SAAA,CAAU,QAAA;EAEtB,YAAA,CAAa,GAAA,EAAK,cAAA,aAA2B,QAAA;EAZlC;EAeX,aAAA,CACE,OAAA,EAAS,QAAA;IAAA,SACE,GAAA,EAAK,cAAA,QAAsB,SAAA;IAAA,SAC3B,QAAA;EAAA;AAAA;;;;;;;;;;;UAeE,0BAAA,mBACG,MAAA,oBAA0B,MAAA,2BACpC,kBAAA,CAAmB,SAAA;EAC3B,aAAA;AAAA;;;;;;;AAHF;;;;;;;;;iBAuBgB,wBAAA,mBACI,MAAA,oBAA0B,MAAA,kBAAA,CAC5C,IAAA,EAAM,gBAAA,GAAmB,0BAAA,CAA2B,SAAA"}
@@ -1,4 +1,4 @@
1
- import { f as AnyQueryAst } from "./types-aknEJe-3.mjs";
1
+ import { f as AnyQueryAst } from "./types-DNGyueh7.mjs";
2
2
  import { QueryPlan } from "@prisma-next/framework-components/runtime";
3
3
  import { SqlStorage } from "@prisma-next/sql-contract/types";
4
4
  import { Contract } from "@prisma-next/contract/types";
@@ -41,4 +41,4 @@ interface SqlQueryPlan<Row = unknown> extends QueryPlan<Row> {
41
41
  declare function planFromAst<Row = unknown>(ast: AnyQueryAst, contract: Contract<SqlStorage>, laneId?: string): SqlQueryPlan<Row>;
42
42
  //#endregion
43
43
  export { planFromAst as n, SqlQueryPlan as t };
44
- //# sourceMappingURL=plan-DftTjAAl.d.mts.map
44
+ //# sourceMappingURL=plan-D-Q5B-z_.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan-DftTjAAl.d.mts","names":[],"sources":["../src/plan.ts"],"mappings":";;;;;;;;AAkBA;;;;;;;;;;;UAAiB,YAAA,wBAAoC,SAAA,CAAU,GAAA;EAAA,SACpD,GAAA,EAAK,WAAA;EAAA,SACL,MAAA;AAAA;;AAoBX;;;;;;;;;;;;;;;;iBAAgB,WAAA,eAAA,CACd,GAAA,EAAK,WAAA,EACL,QAAA,EAAU,QAAA,CAAS,UAAA,GACnB,MAAA,YACC,YAAA,CAAa,GAAA"}
1
+ {"version":3,"file":"plan-D-Q5B-z_.d.mts","names":[],"sources":["../src/plan.ts"],"mappings":";;;;;;;;AAkBA;;;;;;;;;;;UAAiB,YAAA,wBAAoC,SAAA,CAAU,GAAA;EAAA,SACpD,GAAA,EAAK,WAAA;EAAA,SACL,MAAA;AAAA;;AAoBX;;;;;;;;;;;;;;;;iBAAgB,WAAA,eAAA,CACd,GAAA,EAAK,WAAA,EACL,QAAA,EAAU,QAAA,CAAS,UAAA,GACnB,MAAA,YACC,YAAA,CAAa,GAAA"}
@@ -1,4 +1,4 @@
1
- import { f as AnyQueryAst } from "./types-aknEJe-3.mjs";
1
+ import { f as AnyQueryAst } from "./types-DNGyueh7.mjs";
2
2
  import { ExecutionPlan } from "@prisma-next/framework-components/runtime";
3
3
 
4
4
  //#region src/sql-execution-plan.d.ts
@@ -29,4 +29,4 @@ interface SqlExecutionPlan<Row = unknown> extends ExecutionPlan<Row> {
29
29
  }
30
30
  //#endregion
31
31
  export { SqlExecutionPlan as t };
32
- //# sourceMappingURL=sql-execution-plan-CiR7ywhQ.d.mts.map
32
+ //# sourceMappingURL=sql-execution-plan-B84vOmgK.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql-execution-plan-CiR7ywhQ.d.mts","names":[],"sources":["../src/sql-execution-plan.ts"],"mappings":";;;;;;AAuBA;;;;;;;;;;;;;;;;;;UAAiB,gBAAA,wBAAwC,aAAA,CAAc,GAAA;EAAA,SAC5D,GAAA;EAAA,SACA,MAAA;EAAA,SACA,GAAA,EAAK,WAAA;AAAA"}
1
+ {"version":3,"file":"sql-execution-plan-B84vOmgK.d.mts","names":[],"sources":["../src/sql-execution-plan.ts"],"mappings":";;;;;;AAuBA;;;;;;;;;;;;;;;;;;UAAiB,gBAAA,wBAAwC,aAAA,CAAc,GAAA;EAAA,SAC5D,GAAA;EAAA,SACA,MAAA;EAAA,SACA,GAAA,EAAK,WAAA;AAAA"}
@@ -1,5 +1,5 @@
1
- import { t as SqlExecutionPlan } from "./sql-execution-plan-CiR7ywhQ.mjs";
2
- import { t as SqlQueryPlan } from "./plan-DftTjAAl.mjs";
1
+ import { t as SqlExecutionPlan } from "./sql-execution-plan-B84vOmgK.mjs";
2
+ import { t as SqlQueryPlan } from "./plan-D-Q5B-z_.mjs";
3
3
  import { RuntimeExecutor } from "@prisma-next/framework-components/runtime";
4
4
 
5
5
  //#region src/runtime-scope.d.ts
@@ -20,4 +20,4 @@ type SqlOrmPlan = SqlExecutionPlan | SqlQueryPlan;
20
20
  type RuntimeScope = Pick<RuntimeExecutor<SqlOrmPlan>, 'execute'>;
21
21
  //#endregion
22
22
  export { SqlOrmPlan as n, RuntimeScope as t };
23
- //# sourceMappingURL=types-Pnz-IMuf.d.mts.map
23
+ //# sourceMappingURL=types-BJHEQbci.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-Pnz-IMuf.d.mts","names":[],"sources":["../src/runtime-scope.ts"],"mappings":";;;;;;;;AASA;;KAAY,UAAA,GAAa,gBAAA,GAAmB,YAAA;;;AAU5C;;;;;;KAAY,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,UAAA"}
1
+ {"version":3,"file":"types-BJHEQbci.d.mts","names":[],"sources":["../src/runtime-scope.ts"],"mappings":";;;;;;;;AASA;;KAAY,UAAA,GAAa,gBAAA,GAAmB,YAAA;;;AAU5C;;;;;;KAAY,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,UAAA"}
@@ -91,22 +91,9 @@ function rewriteInsertRow(row, rewriter) {
91
91
  for (const [key, value] of Object.entries(row)) result[key] = rewriteInsertValue(value, rewriter);
92
92
  return result;
93
93
  }
94
- function rewriteUpdateSetValue(value, rewriter) {
95
- switch (value.kind) {
96
- case "column-ref": {
97
- const rewritten = rewriter.columnRef ? rewriter.columnRef(value) : value;
98
- return rewritten.kind === "column-ref" ? rewritten : value;
99
- }
100
- case "param-ref": {
101
- const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;
102
- return rewritten.kind === "param-ref" ? rewritten : value;
103
- }
104
- case "prepared-param-ref": return rewriter.preparedParamRef ? rewriter.preparedParamRef(value) : value;
105
- }
106
- }
107
94
  function rewriteUpdateSet(set, rewriter) {
108
95
  const result = {};
109
- for (const [key, value] of Object.entries(set)) result[key] = rewriteUpdateSetValue(value, rewriter);
96
+ for (const [key, value] of Object.entries(set)) result[key] = value.rewrite(rewriter);
110
97
  return result;
111
98
  }
112
99
  function rewriteLimitOffset(value, rewriter) {
@@ -999,9 +986,6 @@ var InsertAst = class InsertAst extends QueryAst {
999
986
  static into(table) {
1000
987
  return new InsertAst(table);
1001
988
  }
1002
- withValues(values) {
1003
- return new InsertAst(this.table, [{ ...values }], this.onConflict, this.returning);
1004
- }
1005
989
  withRows(rows) {
1006
990
  return new InsertAst(this.table, rows.map((row) => ({ ...row })), this.onConflict, this.returning);
1007
991
  }
@@ -1058,7 +1042,7 @@ var UpdateAst = class UpdateAst extends QueryAst {
1058
1042
  }
1059
1043
  collectParamRefs() {
1060
1044
  const refs = [];
1061
- for (const value of Object.values(this.set)) if (value.kind === "param-ref" || value.kind === "prepared-param-ref") refs.push(value);
1045
+ for (const value of Object.values(this.set)) refs.push(...value.collectParamRefs());
1062
1046
  if (this.where) refs.push(...this.where.collectParamRefs());
1063
1047
  for (const item of this.returning ?? []) if (item.expr.kind !== "literal") refs.push(...item.expr.collectParamRefs());
1064
1048
  return refs;
@@ -1164,4 +1148,4 @@ function isWhereExpr(value) {
1164
1148
  //#endregion
1165
1149
  export { SubqueryExpr as A, OrExpr as C, ProjectionItem as D, PreparedParamRef as E, queryAstKinds as F, whereExprKinds as I, UpdateAst as M, isQueryAst as N, RawSqlExpr as O, isWhereExpr as P, OperationExpr as S, ParamRef as T, JsonObjectExpr as _, DefaultValueExpr as a, NotExpr as b, DoNothingConflictAction as c, ExistsExpr as d, IdentifierRef as f, JsonArrayAggExpr as g, JoinAst as h, ColumnRef as i, TableSource as j, SelectAst as k, DoUpdateSetConflictAction as l, InsertOnConflict as m, AndExpr as n, DeleteAst as o, InsertAst as p, BinaryExpr as r, DerivedTableSource as s, AggregateExpr as t, EqColJoinOn as u, ListExpression as v, OrderByItem as w, NullCheckExpr as x, LiteralExpr as y };
1166
1150
 
1167
- //# sourceMappingURL=types-aCUlP-iI.mjs.map
1151
+ //# sourceMappingURL=types-CceENhhm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-CceENhhm.mjs","names":[],"sources":["../src/ast/types.ts"],"sourcesContent":["import type { ParamSpec } from '@prisma-next/operations';\nimport type { SqlLoweringSpec } from '@prisma-next/sql-operations';\nimport type { CodecRef } from './codec-types';\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 preparedParamRef?(expr: PreparedParamRef): PreparedParamRef;\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 preparedParam(expr: PreparedParamRef): 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 preparedParamRef?(expr: PreparedParamRef): 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 | PreparedParamRef | 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 frozenCodecRef(codec: CodecRef): CodecRef {\n const typeParams =\n codec.typeParams === undefined\n ? undefined\n : (structuredClone(codec.typeParams) as CodecRef['typeParams']);\n return Object.freeze(\n typeParams === undefined ? { codecId: codec.codecId } : { codecId: codec.codecId, typeParams },\n );\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 'prepared-param-ref':\n return rewriter.preparedParamRef ? rewriter.preparedParamRef(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 'prepared-param-ref':\n return folder.preparedParamRef ? folder.preparedParamRef(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): AnyParamRef[] {\n return node.fold<AnyParamRef[]>({\n empty: [],\n combine: (a, b) => [...a, ...b],\n paramRef: (paramRef) => [paramRef],\n preparedParamRef: (paramRef) => [paramRef],\n select: (ast) => ast.collectParamRefs(),\n });\n}\n\nfunction rewriteTableSource(table: TableSource, rewriter: AstRewriter): TableSource {\n return rewriter.tableSource ? rewriter.tableSource(table) : table;\n}\n\nfunction rewriteProjectionItem(item: ProjectionItem, rewriter: AstRewriter): ProjectionItem {\n const rewrittenExpr =\n item.expr.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(item.expr)\n : item.expr\n : item.expr.rewrite(rewriter);\n return new ProjectionItem(item.alias, rewrittenExpr, item.codec);\n}\n\nfunction rewriteInsertValue(value: InsertValue, rewriter: AstRewriter): InsertValue {\n switch (value.kind) {\n case 'param-ref':\n return rewriter.paramRef ? rewriteParamRefForInsert(value, rewriter) : value;\n case 'prepared-param-ref':\n return rewriter.preparedParamRef ? rewriter.preparedParamRef(value) : value;\n case 'column-ref':\n return rewriter.columnRef ? rewriteColumnRefForInsert(value, rewriter) : value;\n case 'default-value':\n return value;\n }\n}\n\nfunction rewriteParamRefForInsert(value: ParamRef, rewriter: AstRewriter): InsertValue {\n const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;\n return rewritten.kind === 'param-ref' ? rewritten : value;\n}\n\nfunction rewriteColumnRefForInsert(value: ColumnRef, rewriter: AstRewriter): InsertValue {\n const rewritten = rewriter.columnRef ? rewriter.columnRef(value) : value;\n return rewritten.kind === 'column-ref' ? rewritten : value;\n}\n\nfunction rewriteInsertRow(\n row: Readonly<Record<string, InsertValue>>,\n rewriter: AstRewriter,\n): Record<string, InsertValue> {\n const result: Record<string, InsertValue> = {};\n for (const [key, value] of Object.entries(row)) {\n result[key] = rewriteInsertValue(value, rewriter);\n }\n return result;\n}\n\nfunction rewriteUpdateSet(\n set: Readonly<Record<string, AnyExpression>>,\n rewriter: AstRewriter,\n): Record<string, AnyExpression> {\n const result: Record<string, AnyExpression> = {};\n for (const [key, value] of Object.entries(set)) {\n result[key] = value.rewrite(rewriter as ExpressionRewriter);\n }\n return result;\n}\n\nfunction rewriteLimitOffset<T extends number | AnyExpression | undefined>(\n value: T,\n rewriter: AstRewriter,\n): T {\n if (value === undefined || typeof value === 'number') return value;\n return value.rewrite(rewriter) as T;\n}\n\nfunction rewriteOnConflict(onConflict: InsertOnConflict, rewriter: AstRewriter): InsertOnConflict {\n const columns = onConflict.columns.map((columnRef) => {\n const rewritten = rewriter.columnRef ? rewriter.columnRef(columnRef) : columnRef;\n return rewritten.kind === 'column-ref' ? rewritten : columnRef;\n });\n\n if (onConflict.action.kind === 'do-nothing') {\n return new InsertOnConflict(columns, new DoNothingConflictAction());\n }\n\n return new InsertOnConflict(\n columns,\n new DoUpdateSetConflictAction(rewriteUpdateSet(onConflict.action.set, rewriter)),\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 collectParamRefs(): AnyParamRef[];\n abstract toQueryAst(): AnyQueryAst;\n}\n\nabstract class FromSource extends AstNode {\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(): AnyParamRef[] {\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\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 via their inner query, not intercepted at the FromSource level. A future 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\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 /**\n * Codec identity carried by every column-bound `ParamRef`. The encode-side dispatch path materialises the per-instance codec through `contractCodecs.forCodecRef(codec)` — content-keyed memoisation on `(codecId, canonicalize(typeParams))` keeps repeated lookups for the same logical column on one shared {@link Codec}.\n *\n * `codec` may be `undefined` for `ParamRef`s constructed without a column-bound site (literals, transient builder state); the runtime treats those as untyped passthroughs.\n */\n readonly codec: CodecRef | undefined;\n\n constructor(\n value: unknown,\n options?: {\n name?: string;\n codec?: CodecRef;\n },\n ) {\n super();\n this.value = value;\n this.name = options?.name;\n this.codec = options?.codec ? frozenCodecRef(options.codec) : undefined;\n this.freeze();\n }\n\n static of(\n value: unknown,\n options?: {\n name?: string;\n codec?: CodecRef;\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\n/**\n * Bind-site placeholder: occupies the same positions as `ParamRef` in the\n * AST, but carries no value — the value is supplied per-execute by the\n * `PreparedStatement.execute(params)` caller and matched to this node by\n * `name`.\n */\nexport class PreparedParamRef extends Expression {\n readonly kind = 'prepared-param-ref' as const;\n readonly name: string;\n readonly codec: CodecRef;\n\n constructor(name: string, codec: CodecRef) {\n super();\n this.name = name;\n this.codec = frozenCodecRef(codec);\n this.freeze();\n }\n\n static of(name: string, codec: CodecRef): PreparedParamRef {\n return new PreparedParamRef(name, codec);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.preparedParam(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.preparedParamRef ? rewriter.preparedParamRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.preparedParamRef ? folder.preparedParamRef(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 * Codec identity for the projected cell. Decode-side dispatch resolves the per-instance codec through `contractCodecs.forCodecRef(codec)` — content-keyed memoisation collapses repeated lookups for the same logical column onto one shared {@link Codec}.\n *\n * Stays `undefined` for non-column-bound projections (computed expressions, subqueries, raw aliases) whose decoded type the runtime cannot infer from a single contract column.\n */\n readonly codec: CodecRef | undefined;\n\n constructor(alias: string, expr: ProjectionExpr, codec?: CodecRef) {\n super();\n this.alias = alias;\n this.expr = expr;\n this.codec = codec ? frozenCodecRef(codec) : undefined;\n this.freeze();\n }\n\n static of(alias: string, expr: ProjectionExpr, codec?: CodecRef): ProjectionItem {\n return new ProjectionItem(alias, expr, codec);\n }\n\n withCodec(codec: CodecRef | undefined): ProjectionItem {\n return new ProjectionItem(this.alias, this.expr, codec);\n }\n}\n\nexport type LimitOffsetValue = number | AnyExpression;\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: LimitOffsetValue | undefined;\n readonly offset: LimitOffsetValue | 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: LimitOffsetValue | undefined;\n readonly offset: LimitOffsetValue | 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: LimitOffsetValue | undefined): SelectAst {\n return new SelectAst({ ...this, limit });\n }\n\n withOffset(offset: LimitOffsetValue | 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 projection.codec,\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: rewriteLimitOffset(this.limit, rewriter),\n offset: rewriteLimitOffset(this.offset, rewriter),\n selectAllIntent: this.selectAllIntent,\n });\n\n return rewriter.select ? rewriter.select(rewritten) : rewritten;\n }\n\n 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 if (typeof this.limit === 'object') {\n pushRefs(this.limit.collectColumnRefs());\n }\n if (typeof this.offset === 'object') {\n pushRefs(this.offset.collectColumnRefs());\n }\n\n return refs;\n }\n\n collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n const pushRefs = (params: ReadonlyArray<AnyParamRef>) => {\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 if (typeof this.limit === 'object') {\n pushRefs(this.limit.collectParamRefs());\n }\n if (typeof this.offset === 'object') {\n pushRefs(this.offset.collectParamRefs());\n }\n\n return refs;\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, AnyExpression>>;\n\n constructor(set: Readonly<Record<string, AnyExpression>>) {\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, AnyExpression>>): 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<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n rows: ReadonlyArray<Record<string, InsertValue>> = [{}],\n onConflict?: InsertOnConflict,\n returning?: ReadonlyArray<ProjectionItem>,\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 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<ProjectionItem> | 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 rewrite(rewriter: AstRewriter): InsertAst {\n return new InsertAst(\n rewriteTableSource(this.table, rewriter),\n this.rows.map((row) => rewriteInsertRow(row, rewriter)),\n this.onConflict ? rewriteOnConflict(this.onConflict, rewriter) : undefined,\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n for (const row of this.rows) {\n for (const value of Object.values(row)) {\n if (value.kind === 'param-ref' || value.kind === 'prepared-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' || value.kind === 'prepared-param-ref') {\n refs.push(value);\n }\n }\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\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, AnyExpression>>;\n readonly where: AnyExpression | undefined;\n readonly returning: ReadonlyArray<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n set: Readonly<Record<string, AnyExpression>> = {},\n where?: AnyExpression,\n returning?: ReadonlyArray<ProjectionItem>,\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, AnyExpression>>): 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<ProjectionItem> | undefined): UpdateAst {\n return new UpdateAst(this.table, this.set, this.where, returning);\n }\n\n rewrite(rewriter: AstRewriter): UpdateAst {\n return new UpdateAst(\n rewriteTableSource(this.table, rewriter),\n rewriteUpdateSet(this.set, rewriter),\n this.where?.rewrite(rewriter),\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n for (const value of Object.values(this.set)) {\n refs.push(...value.collectParamRefs());\n }\n if (this.where) {\n refs.push(...this.where.collectParamRefs());\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\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<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n where?: AnyExpression,\n returning?: ReadonlyArray<ProjectionItem>,\n ) {\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<ProjectionItem> | undefined): DeleteAst {\n return new DeleteAst(this.table, this.where, returning);\n }\n\n rewrite(rewriter: AstRewriter): DeleteAst {\n return new DeleteAst(\n rewriteTableSource(this.table, rewriter),\n this.where?.rewrite(rewriter),\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n if (this.where) {\n refs.push(...this.where.collectParamRefs());\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\n/**\n * Raw-SQL query AST node carrying interpolated parameter / expression nodes\n * embedded inside literal SQL fragments.\n *\n * `fragments` and `args` are interleaved during lowering:\n * `fragments[0] + lower(args[0]) + fragments[1] + ... + fragments[n]`.\n * Construction enforces `fragments.length === args.length + 1`.\n *\n * Extends {@link QueryAst} (whole-query AST, not a sub-expression).\n * Construction does not validate that each arg is a `ParamRef` /\n * `AnyExpression`: the type system already rejects bare values because\n * `args` is typed `readonly AnyExpression[]`. The user-facing `raw\\`...\\``\n * factory (separate `sql-raw-factory` component) layers stricter\n * type-level rejection on top of this AST node.\n */\nexport class RawSqlExpr extends QueryAst {\n readonly kind = 'raw-sql' as const;\n readonly fragments: readonly string[];\n readonly args: readonly AnyExpression[];\n\n constructor(fragments: readonly string[], args: readonly AnyExpression[]) {\n super();\n if (fragments.length !== args.length + 1) {\n throw new Error(\n `RawSqlExpr: fragments.length must equal args.length + 1 (got fragments=${fragments.length}, args=${args.length})`,\n );\n }\n this.fragments = Object.freeze([...fragments]);\n this.args = Object.freeze([...args]);\n this.freeze();\n }\n\n static of(fragments: readonly string[], args: readonly AnyExpression[]): RawSqlExpr {\n return new RawSqlExpr(fragments, args);\n }\n\n override collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n for (const arg of this.args) {\n if (arg.kind === 'param-ref') {\n refs.push(arg);\n } else {\n refs.push(...arg.collectParamRefs());\n }\n }\n return refs;\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport type AnyQueryAst = SelectAst | InsertAst | UpdateAst | DeleteAst | RawSqlExpr;\nexport type AnyFromSource = TableSource | DerivedTableSource;\nexport type AnyExpression =\n | ColumnRef\n | IdentifierRef\n | ParamRef\n | PreparedParamRef\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 AnyParamRef = ParamRef | PreparedParamRef;\nexport type AnyInsertOnConflictAction = DoNothingConflictAction | DoUpdateSetConflictAction;\nexport type AnyInsertValue = ColumnRef | ParamRef | PreparedParamRef | DefaultValueExpr;\nexport type AnyOperationArg = AnyExpression | ParamRef | PreparedParamRef | LiteralExpr;\n\nexport const queryAstKinds: ReadonlySet<string> = new Set<AnyQueryAst['kind']>([\n 'select',\n 'insert',\n 'update',\n 'delete',\n 'raw-sql',\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\n/**\n * One positional slot of a lowered SQL statement.\n *\n * - `literal` — a value baked into the AST; passes through to the driver.\n * - `bind` — a `PreparedParamRef` placeholder; the runtime resolves the\n * value from the per-execute `userParams[name]` before calling the driver.\n *\n * The same `name` may legitimately appear in multiple `bind` slots when a\n * renderer does not dedupe `PreparedParamRef` occurrences (e.g. SQLite's\n * positional `?` walker calls `ast.collectParamRefs()` directly rather than\n * `collectOrderedParamRefs`); resolution-by-name handles that case\n * correctly. See `collectOrderedParamRefs` in `./util` for the dedupe\n * contract used by Postgres' `$N` renderer.\n */\nexport type LoweredParam =\n | { readonly kind: 'literal'; readonly value: unknown }\n | { readonly kind: 'bind'; readonly name: string };\n\nexport interface LoweredStatement {\n readonly sql: string;\n readonly params: readonly LoweredParam[];\n readonly annotations?: Record<string, unknown>;\n}\n"],"mappings":";AAyEA,SAAS,gBAAmB,QAAwC;CAClE,OAAO,OAAO,OAAO,CAAC,GAAG,OAAO,CAAC;;AAGnC,SAAS,yBACP,OACyB;CACzB,OAAO,UAAU,KAAA,IAAY,KAAA,IAAY,OAAO,OAAO,EAAE,GAAG,OAAO,CAAC;;AAGtE,SAAS,iBAAoB,QAAkE;CAC7F,OAAO,OAAO,OAAO,EAAE,GAAG,QAAQ,CAAC;;AAGrC,SAAS,eAAe,OAA2B;CACjD,MAAM,aACJ,MAAM,eAAe,KAAA,IACjB,KAAA,IACC,gBAAgB,MAAM,WAAW;CACxC,OAAO,OAAO,OACZ,eAAe,KAAA,IAAY,EAAE,SAAS,MAAM,SAAS,GAAG;EAAE,SAAS,MAAM;EAAS;EAAY,CAC/F;;AAGH,SAAS,WACP,MACsD;CACtD,OAAO,OAAO,OAAO,KAAK,KAAK,QAAQ,OAAO,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;;AAGpE,SAAS,WAAc,QAA6B,QAA2B;CAC7E,IAAI,SAAS,OAAO;CACpB,KAAK,MAAM,SAAS,QAAQ;EAC1B,IAAI,OAAO,cAAc,OAAO,EAC9B,OAAO;EAET,SAAS,OAAO,QAAQ,QAAQ,OAAO,CAAC;;CAE1C,OAAO;;AAGT,SAAS,kBAAkB,OAAsB,UAA6C;CAC5F,QAAQ,MAAM,MAAd;EACE,KAAK,aACH,OAAO,SAAS,WAAW,SAAS,SAAS,MAAM,GAAG;EACxD,KAAK,sBACH,OAAO,SAAS,mBAAmB,SAAS,iBAAiB,MAAM,GAAG;EACxE,KAAK,WACH,OAAO,SAAS,UAAU,SAAS,QAAQ,MAAM,GAAG;EACtD,KAAK;GACH,IAAI,SAAS,MACX,OAAO,SAAS,KAAK,MAAM;GAE7B,OAAO,MAAM,QAAQ,SAAS;EAChC,SACE,OAAO,MAAM,QAAQ,SAAS;;;AAIpC,SAAS,eAAkB,OAAsB,QAAgC;CAC/E,QAAQ,MAAM,MAAd;EACE,KAAK,aACH,OAAO,OAAO,WAAW,OAAO,SAAS,MAAM,GAAG,OAAO;EAC3D,KAAK,sBACH,OAAO,OAAO,mBAAmB,OAAO,iBAAiB,MAAM,GAAG,OAAO;EAC3E,KAAK,WACH,OAAO,OAAO,UAAU,OAAO,QAAQ,MAAM,GAAG,OAAO;EACzD,KAAK,QACH,OAAO,MAAM,KAAK,OAAO;EAC3B,SACE,OAAO,MAAM,KAAK,OAAO;;;AAI/B,SAAS,sBAAgD,MAA0B;CACjF,OAAO,KAAK,KAAkB;EAC5B,OAAO,EAAE;EACT,UAAU,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;EAC/B,YAAY,cAAc,CAAC,UAAU;EACrC,SAAS,QAAQ,IAAI,mBAAmB;EACzC,CAAC;;AAGJ,SAAS,qBAA+C,MAA4B;CAClF,OAAO,KAAK,KAAoB;EAC9B,OAAO,EAAE;EACT,UAAU,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;EAC/B,WAAW,aAAa,CAAC,SAAS;EAClC,mBAAmB,aAAa,CAAC,SAAS;EAC1C,SAAS,QAAQ,IAAI,kBAAkB;EACxC,CAAC;;AAGJ,SAAS,mBAAmB,OAAoB,UAAoC;CAClF,OAAO,SAAS,cAAc,SAAS,YAAY,MAAM,GAAG;;AAG9D,SAAS,sBAAsB,MAAsB,UAAuC;CAC1F,MAAM,gBACJ,KAAK,KAAK,SAAS,YACf,SAAS,UACP,SAAS,QAAQ,KAAK,KAAK,GAC3B,KAAK,OACP,KAAK,KAAK,QAAQ,SAAS;CACjC,OAAO,IAAI,eAAe,KAAK,OAAO,eAAe,KAAK,MAAM;;AAGlE,SAAS,mBAAmB,OAAoB,UAAoC;CAClF,QAAQ,MAAM,MAAd;EACE,KAAK,aACH,OAAO,SAAS,WAAW,yBAAyB,OAAO,SAAS,GAAG;EACzE,KAAK,sBACH,OAAO,SAAS,mBAAmB,SAAS,iBAAiB,MAAM,GAAG;EACxE,KAAK,cACH,OAAO,SAAS,YAAY,0BAA0B,OAAO,SAAS,GAAG;EAC3E,KAAK,iBACH,OAAO;;;AAIb,SAAS,yBAAyB,OAAiB,UAAoC;CACrF,MAAM,YAAY,SAAS,WAAW,SAAS,SAAS,MAAM,GAAG;CACjE,OAAO,UAAU,SAAS,cAAc,YAAY;;AAGtD,SAAS,0BAA0B,OAAkB,UAAoC;CACvF,MAAM,YAAY,SAAS,YAAY,SAAS,UAAU,MAAM,GAAG;CACnE,OAAO,UAAU,SAAS,eAAe,YAAY;;AAGvD,SAAS,iBACP,KACA,UAC6B;CAC7B,MAAM,SAAsC,EAAE;CAC9C,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,EAC5C,OAAO,OAAO,mBAAmB,OAAO,SAAS;CAEnD,OAAO;;AAGT,SAAS,iBACP,KACA,UAC+B;CAC/B,MAAM,SAAwC,EAAE;CAChD,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,EAC5C,OAAO,OAAO,MAAM,QAAQ,SAA+B;CAE7D,OAAO;;AAGT,SAAS,mBACP,OACA,UACG;CACH,IAAI,UAAU,KAAA,KAAa,OAAO,UAAU,UAAU,OAAO;CAC7D,OAAO,MAAM,QAAQ,SAAS;;AAGhC,SAAS,kBAAkB,YAA8B,UAAyC;CAChG,MAAM,UAAU,WAAW,QAAQ,KAAK,cAAc;EACpD,MAAM,YAAY,SAAS,YAAY,SAAS,UAAU,UAAU,GAAG;EACvE,OAAO,UAAU,SAAS,eAAe,YAAY;GACrD;CAEF,IAAI,WAAW,OAAO,SAAS,cAC7B,OAAO,IAAI,iBAAiB,SAAS,IAAI,yBAAyB,CAAC;CAGrE,OAAO,IAAI,iBACT,SACA,IAAI,0BAA0B,iBAAiB,WAAW,OAAO,KAAK,SAAS,CAAC,CACjF;;AAGH,IAAe,UAAf,MAAuB;CAGrB,SAAyB;EACvB,OAAO,OAAO,KAAK;;;AAIvB,IAAe,WAAf,cAAgC,QAAQ;AAKxC,IAAe,aAAf,cAAkC,QAAQ;AAK1C,IAAe,aAAf,cAAkC,QAAoC;CAKpE,oBAAiC;EAC/B,OAAO,sBAAsB,KAAK;;CAGpC,mBAAkC;EAChC,OAAO,qBAAqB,KAAK;;CAGnC,gBAA2B;EACzB,MAAM,IAAI,MAAM,GAAG,KAAK,YAAY,KAAK,0CAA0C;;CAGrF,SAAwB;EACtB,OAAO;;CAGT,MAAe;EACb,OAAO,IAAI,QAAQ,KAAiC;;;AAIxD,IAAa,cAAb,MAAa,oBAAoB,WAAW;CAC1C,OAAgB;CAChB;CACA;CAEA,YAAY,MAAc,OAAgB;EACxC,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,QAAQ;;CAGf,OAAO,MAAM,MAAc,OAA6B;EACtD,OAAO,IAAI,YAAY,MAAM,MAAM;;CAGrC,QAAiB,UAAsC;EACrD,OAAO,SAAS,cAAc,SAAS,YAAY,KAAK,GAAG;;CAG7D,eAAuC;EACrC,OAAO;;;AASX,IAAa,qBAAb,MAAa,2BAA2B,WAAW;CACjD,OAAgB;CAChB;CACA;CAEA,YAAY,OAAe,OAAkB;EAC3C,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,QAAQ;EACb,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAAe,OAAsC;EAC7D,OAAO,IAAI,mBAAmB,OAAO,MAAM;;CAI7C,QAAiB,UAAsC;EACrD,OAAO,IAAI,mBAAmB,KAAK,OAAO,KAAK,MAAM,QAAQ,SAAS,CAAC;;CAGzE,eAAuC;EACrC,OAAO;;;AAIX,IAAa,YAAb,MAAa,kBAAkB,WAAW;CACxC,OAAgB;CAChB;CACA;CAEA,YAAY,OAAe,QAAgB;EACzC,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,SAAS;EACd,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAAe,QAA2B;EAClD,OAAO,IAAI,UAAU,OAAO,OAAO;;CAGrC,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,UAAU,KAAK;;CAGhC,QAAiB,UAA6C;EAC5D,OAAO,SAAS,YAAY,SAAS,UAAU,KAAK,GAAG;;CAGzD,KAAiB,QAAgC;EAC/C,OAAO,OAAO,YAAY,OAAO,UAAU,KAAK,GAAG,OAAO;;CAG5D,gBAAoC;EAClC,OAAO;;;AAIX,IAAa,gBAAb,MAAa,sBAAsB,WAAW;CAC5C,OAAgB;CAChB;CAEA,YAAY,MAAc;EACxB,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,QAAQ;;CAGf,OAAO,GAAG,MAA6B;EACrC,OAAO,IAAI,cAAc,KAAK;;CAGhC,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,cAAc,KAAK;;CAGpC,QAAiB,UAA6C;EAC5D,OAAO,SAAS,gBAAgB,SAAS,cAAc,KAAK,GAAG;;CAGjE,KAAiB,QAAgC;EAC/C,OAAO,OAAO,gBAAgB,OAAO,cAAc,KAAK,GAAG,OAAO;;;AAItE,IAAa,WAAb,MAAa,iBAAiB,WAAW;CACvC,OAAgB;CAChB;CACA;;;;;;CAMA;CAEA,YACE,OACA,SAIA;EACA,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,OAAO,SAAS;EACrB,KAAK,QAAQ,SAAS,QAAQ,eAAe,QAAQ,MAAM,GAAG,KAAA;EAC9D,KAAK,QAAQ;;CAGf,OAAO,GACL,OACA,SAIU;EACV,OAAO,IAAI,SAAS,OAAO,QAAQ;;CAGrC,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAiB,UAA6C;EAC5D,OAAO,SAAS,WAAW,SAAS,SAAS,KAAK,GAAG;;CAGvD,KAAiB,QAAgC;EAC/C,OAAO,OAAO,WAAW,OAAO,SAAS,KAAK,GAAG,OAAO;;;;;;;;;AAU5D,IAAa,mBAAb,MAAa,yBAAyB,WAAW;CAC/C,OAAgB;CAChB;CACA;CAEA,YAAY,MAAc,OAAiB;EACzC,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,QAAQ,eAAe,MAAM;EAClC,KAAK,QAAQ;;CAGf,OAAO,GAAG,MAAc,OAAmC;EACzD,OAAO,IAAI,iBAAiB,MAAM,MAAM;;CAG1C,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,cAAc,KAAK;;CAGpC,QAAiB,UAA6C;EAC5D,OAAO,SAAS,mBAAmB,SAAS,iBAAiB,KAAK,GAAG;;CAGvE,KAAiB,QAAgC;EAC/C,OAAO,OAAO,mBAAmB,OAAO,iBAAiB,KAAK,GAAG,OAAO;;;AAI5E,IAAa,mBAAb,cAAsC,QAAQ;CAC5C,OAAgB;CAEhB,cAAc;EACZ,OAAO;EACP,KAAK,QAAQ;;;AAIjB,IAAa,cAAb,MAAa,oBAAoB,WAAW;CAC1C,OAAgB;CAChB;CAEA,YAAY,OAAgB;EAC1B,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAA6B;EACrC,OAAO,IAAI,YAAY,MAAM;;CAG/B,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,QAAQ,KAAK;;CAG9B,QAAiB,UAA6C;EAC5D,OAAO,SAAS,UAAU,SAAS,QAAQ,KAAK,GAAG;;CAGrD,KAAiB,QAAgC;EAC/C,OAAO,OAAO,UAAU,OAAO,QAAQ,KAAK,GAAG,OAAO;;;AAI1D,IAAa,eAAb,MAAa,qBAAqB,WAAW;CAC3C,OAAgB;CAChB;CAEA,YAAY,OAAkB;EAC5B,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAAgC;EACxC,OAAO,IAAI,aAAa,MAAM;;CAGhC,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,SAAS,KAAK;;CAG/B,QAAiB,UAA6C;EAE5D,OAAO,IAAI,aADG,KAAK,MAAM,QAAQ,SACJ,CAAC;;CAGhC,KAAiB,QAAgC;EAC/C,OAAO,OAAO,SAAS,OAAO,OAAO,KAAK,MAAM,GAAG,OAAO;;;AAI9D,IAAa,gBAAb,MAAa,sBAAsB,WAAW;CAC5C,OAAgB;CAChB;CACA;CACA;CACA;CACA;CAEA,YAAY,SAMT;EACD,OAAO;EACP,KAAK,SAAS,QAAQ;EACtB,KAAK,OAAO,QAAQ;EACpB,KAAK,OAAO,gBAAgB,QAAQ,QAAQ,EAAE,CAAC;EAC/C,KAAK,UAAU,QAAQ;EACvB,KAAK,WAAW,QAAQ;EACxB,KAAK,QAAQ;;CAGf,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,UAAU,KAAK;;CAGhC,QAAiB,UAA6C;EAC5D,OAAO,IAAI,cAAc;GACvB,QAAQ,KAAK;GACb,MAAM,KAAK,KAAK,QAAQ,SAAS;GACjC,MAAM,KAAK,KAAK,KAAK,QAAQ,kBAAkB,KAAK,SAAS,CAAC;GAG9D,SAAS,KAAK;GACd,UAAU,KAAK;GAChB,CAAC;;CAGJ,KAAiB,QAAgC;EAC/C,OAAO,WAAW,QAAQ,OAClB,KAAK,KAAK,KAAK,OAAO,EAC5B,GAAG,KAAK,KAAK,KAAK,cAAc,eAAe,KAAK,OAAO,CAAC,CAC7D,CAAC;;CAGJ,gBAAoC;EAClC,OAAO,KAAK,KAAK,eAAe;;;AAIpC,IAAa,gBAAb,MAAa,sBAAsB,WAAW;CAC5C,OAAgB;CAChB;CACA;CAEA,YAAY,IAAiB,MAAsB;EACjD,OAAO;EACP,IAAI,OAAO,WAAW,SAAS,KAAA,GAC7B,MAAM,IAAI,MAAM,uBAAuB,GAAG,0BAA0B;EAEtE,KAAK,KAAK;EACV,KAAK,OAAO;EACZ,KAAK,QAAQ;;CAGf,OAAO,MAAM,MAAqC;EAChD,OAAO,IAAI,cAAc,SAAS,KAAK;;CAGzC,OAAO,IAAI,MAAoC;EAC7C,OAAO,IAAI,cAAc,OAAO,KAAK;;CAGvC,OAAO,IAAI,MAAoC;EAC7C,OAAO,IAAI,cAAc,OAAO,KAAK;;CAGvC,OAAO,IAAI,MAAoC;EAC7C,OAAO,IAAI,cAAc,OAAO,KAAK;;CAGvC,OAAO,IAAI,MAAoC;EAC7C,OAAO,IAAI,cAAc,OAAO,KAAK;;CAGvC,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,UAAU,KAAK;;CAGhC,QAAiB,UAA6C;EAC5D,OAAO,KAAK,SAAS,KAAA,IAAY,OAAO,IAAI,cAAc,KAAK,IAAI,KAAK,KAAK,QAAQ,SAAS,CAAC;;CAGjG,KAAiB,QAAgC;EAC/C,OAAO,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO,GAAG,OAAO;;;AAIvD,IAAa,iBAAb,MAAa,uBAAuB,WAAW;CAC7C,OAAgB;CAChB;CAEA,YAAY,SAAyC;EACnD,OAAO;EACP,KAAK,UAAU,gBAAgB,QAAQ,KAAK,UAAU,OAAO,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;EACnF,KAAK,QAAQ;;CAGf,OAAO,MAAM,KAAa,OAAwC;EAChE,OAAO;GACL;GACA;GACD;;CAGH,OAAO,YAAY,SAAyD;EAC1E,OAAO,IAAI,eAAe,QAAQ;;CAGpC,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,WAAW,KAAK;;CAGjC,QAAiB,UAA6C;EAC5D,OAAO,IAAI,eACT,KAAK,QAAQ,KAAK,WAAW;GAC3B,KAAK,MAAM;GACX,OACE,MAAM,MAAM,SAAS,YACjB,SAAS,UACP,SAAS,QAAQ,MAAM,MAAM,GAC7B,MAAM,QACR,MAAM,MAAM,QAAQ,SAAS;GACpC,EAAE,CACJ;;CAGH,KAAiB,QAAgC;EAC/C,OAAO,WACL,QACA,KAAK,QAAQ,KACV,gBACC,MAAM,MAAM,SAAS,YACjB,OAAO,UACL,OAAO,QAAQ,MAAM,MAAM,GAC3B,OAAO,QACT,MAAM,MAAM,KAAK,OAAO,CAC/B,CACF;;;AAIL,IAAa,cAAb,MAAa,oBAAoB,QAAQ;CACvC,OAAgB;CAChB;CACA;CAEA,YAAY,MAAqB,KAAgB;EAC/C,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,MAAM;EACX,KAAK,QAAQ;;CAGf,OAAO,IAAI,MAAkC;EAC3C,OAAO,IAAI,YAAY,MAAM,MAAM;;CAGrC,OAAO,KAAK,MAAkC;EAC5C,OAAO,IAAI,YAAY,MAAM,OAAO;;CAGtC,QAAQ,UAA2C;EACjD,OAAO,IAAI,YAAY,KAAK,KAAK,QAAQ,SAAS,EAAE,KAAK,IAAI;;;AAIjE,IAAa,mBAAb,MAAa,yBAAyB,WAAW;CAC/C,OAAgB;CAChB;CACA;CACA;CAEA,YACE,MACA,UAAiC,QACjC,SACA;EACA,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,UAAU;EACf,KAAK,UAAU,WAAW,QAAQ,SAAS,IAAI,gBAAgB,QAAQ,GAAG,KAAA;EAC1E,KAAK,QAAQ;;CAGf,OAAO,GACL,MACA,UAAiC,QACjC,SACkB;EAClB,OAAO,IAAI,iBAAiB,MAAM,SAAS,QAAQ;;CAGrD,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,aAAa,KAAK;;CAGnC,QAAiB,UAA6C;EAC5D,OAAO,IAAI,iBACT,KAAK,KAAK,QAAQ,SAAS,EAC3B,KAAK,SACL,KAAK,SAAS,KAAK,cAAc,UAAU,QAAQ,SAAS,CAAC,CAC9D;;CAGH,KAAiB,QAAgC;EAC/C,OAAO,WAAW,QAAQ,OAClB,KAAK,KAAK,KAAK,OAAO,EAC5B,IAAI,KAAK,WAAW,EAAE,EAAE,KAAK,oBAAoB,UAAU,KAAK,KAAK,OAAO,CAAC,CAC9E,CAAC;;;AAIN,IAAa,iBAAb,MAAa,uBAAuB,WAAW;CAC7C,OAAgB;CAChB;CAEA,YAAY,QAAsC;EAChD,OAAO;EACP,KAAK,SAAS,gBAAgB,OAAO;EACrC,KAAK,QAAQ;;CAGf,OAAO,GAAG,QAAsD;EAC9D,OAAO,IAAI,eAAe,OAAO;;CAGnC,OAAO,WAAW,QAAgD;EAChE,OAAO,IAAI,eAAe,OAAO,KAAK,UAAU,IAAI,YAAY,MAAM,CAAC,CAAC;;CAG1E,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,KAAK,KAAK;;CAG3B,QAAiB,UAA6C;EAC5D,IAAI,SAAS,MACX,OAAO,SAAS,KAAK,KAAK;EAG5B,OAAO,IAAI,eAAe,KAAK,OAAO,KAAK,UAAU,MAAM,QAAQ,SAAS,CAAC,CAAC;;CAGhF,KAAQ,QAAgC;EACtC,IAAI,OAAO,MACT,OAAO,OAAO,KAAK,KAAK;EAE1B,OAAO,WACL,QACA,KAAK,OAAO,KAAK,gBAAgB,MAAM,KAAK,OAAO,CAAC,CACrD;;;AAIL,IAAa,aAAb,MAAa,mBAAmB,WAAW;CACzC,OAAgB;CAChB;CACA;CACA;CAEA,YAAY,IAAc,MAAqB,OAAsB;EACnE,OAAO;EACP,KAAK,KAAK;EACV,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,QAAQ;;CAGf,OAAO,GAAG,MAAqB,OAAkC;EAC/D,OAAO,IAAI,WAAW,MAAM,MAAM,MAAM;;CAG1C,OAAO,IAAI,MAAqB,OAAkC;EAChE,OAAO,IAAI,WAAW,OAAO,MAAM,MAAM;;CAG3C,OAAO,GAAG,MAAqB,OAAkC;EAC/D,OAAO,IAAI,WAAW,MAAM,MAAM,MAAM;;CAG1C,OAAO,GAAG,MAAqB,OAAkC;EAC/D,OAAO,IAAI,WAAW,MAAM,MAAM,MAAM;;CAG1C,OAAO,IAAI,MAAqB,OAAkC;EAChE,OAAO,IAAI,WAAW,OAAO,MAAM,MAAM;;CAG3C,OAAO,IAAI,MAAqB,OAAkC;EAChE,OAAO,IAAI,WAAW,OAAO,MAAM,MAAM;;CAG3C,OAAO,KAAK,MAAqB,OAAkC;EACjE,OAAO,IAAI,WAAW,QAAQ,MAAM,MAAM;;CAG5C,OAAO,GAAG,MAAqB,OAAkC;EAC/D,OAAO,IAAI,WAAW,MAAM,MAAM,MAAM;;CAG1C,OAAO,MAAM,MAAqB,OAAkC;EAClE,OAAO,IAAI,WAAW,SAAS,MAAM,MAAM;;CAG7C,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAiB,UAA6C;EAC5D,OAAO,IAAI,WACT,KAAK,IACL,kBAAkB,KAAK,MAAM,SAAS,EACtC,kBAAkB,KAAK,OAAO,SAAS,CACxC;;CAGH,KAAiB,QAAgC;EAC/C,OAAO,WAAW,QAAQ,OAClB,eAAe,KAAK,MAAM,OAAO,QACjC,eAAe,KAAK,OAAO,OAAO,CACzC,CAAC;;;AAIN,IAAa,UAAb,MAAa,gBAAgB,WAAW;CACtC,OAAgB;CAChB;CAEA,YAAY,OAAqC;EAC/C,OAAO;EACP,KAAK,QAAQ,gBAAgB,MAAM;EACnC,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAA8C;EACtD,OAAO,IAAI,QAAQ,MAAM;;CAG3B,OAAO,OAAgB;EACrB,OAAO,IAAI,QAAQ,EAAE,CAAC;;CAGxB,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,IAAI,KAAK;;CAG1B,QAAiB,UAA6C;EAC5D,OAAO,IAAI,QAAQ,KAAK,MAAM,KAAK,SAAS,KAAK,QAAQ,SAAS,CAAC,CAAC;;CAGtE,KAAiB,QAAgC;EAC/C,OAAO,WACL,QACA,KAAK,MAAM,KAAK,eAAe,KAAK,KAAK,OAAO,CAAC,CAClD;;;AAIL,IAAa,SAAb,MAAa,eAAe,WAAW;CACrC,OAAgB;CAChB;CAEA,YAAY,OAAqC;EAC/C,OAAO;EACP,KAAK,QAAQ,gBAAgB,MAAM;EACnC,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAA6C;EACrD,OAAO,IAAI,OAAO,MAAM;;CAG1B,OAAO,QAAgB;EACrB,OAAO,IAAI,OAAO,EAAE,CAAC;;CAGvB,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,GAAG,KAAK;;CAGzB,QAAiB,UAA6C;EAC5D,OAAO,IAAI,OAAO,KAAK,MAAM,KAAK,SAAS,KAAK,QAAQ,SAAS,CAAC,CAAC;;CAGrE,KAAiB,QAAgC;EAC/C,OAAO,WACL,QACA,KAAK,MAAM,KAAK,eAAe,KAAK,KAAK,OAAO,CAAC,CAClD;;;AAIL,IAAa,aAAb,MAAa,mBAAmB,WAAW;CACzC,OAAgB;CAChB;CACA;CAEA,YAAY,UAAqB,YAAY,OAAO;EAClD,OAAO;EACP,KAAK,YAAY;EACjB,KAAK,WAAW;EAChB,KAAK,QAAQ;;CAGf,OAAO,OAAO,UAAiC;EAC7C,OAAO,IAAI,WAAW,UAAU,MAAM;;CAGxC,OAAO,UAAU,UAAiC;EAChD,OAAO,IAAI,WAAW,UAAU,KAAK;;CAGvC,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAiB,UAA6C;EAC5D,OAAO,IAAI,WAAW,KAAK,SAAS,QAAQ,SAAS,EAAE,KAAK,UAAU;;CAGxE,KAAiB,QAAgC;EAC/C,OAAO,OAAO,SAAS,OAAO,OAAO,KAAK,SAAS,GAAG,OAAO;;;AAIjE,IAAa,gBAAb,MAAa,sBAAsB,WAAW;CAC5C,OAAgB;CAChB;CACA;CAEA,YAAY,MAAqB,QAAiB;EAChD,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,KAAK,QAAQ;;CAGf,OAAO,OAAO,MAAoC;EAChD,OAAO,IAAI,cAAc,MAAM,KAAK;;CAGtC,OAAO,UAAU,MAAoC;EACnD,OAAO,IAAI,cAAc,MAAM,MAAM;;CAGvC,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,UAAU,KAAK;;CAGhC,QAAiB,UAA6C;EAC5D,OAAO,IAAI,cAAc,KAAK,KAAK,QAAQ,SAAS,EAAE,KAAK,OAAO;;CAGpE,KAAiB,QAAgC;EAC/C,OAAO,KAAK,KAAK,KAAK,OAAO;;;AAIjC,IAAa,UAAb,MAAa,gBAAgB,WAAW;CACtC,OAAgB;CAChB;CAEA,YAAY,MAAqB;EAC/B,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,QAAQ;;CAGf,cAA6B;EAC3B,OAAO;;CAGT,OAAmB,SAA4B;EAC7C,OAAO,QAAQ,IAAI,KAAK;;CAG1B,QAAiB,UAA6C;EAC5D,OAAO,IAAI,QAAQ,KAAK,KAAK,QAAQ,SAAS,CAAC;;CAGjD,KAAiB,QAAgC;EAC/C,OAAO,KAAK,KAAK,KAAK,OAAO;;;AAIjC,IAAa,cAAb,MAAa,oBAAoB,QAAQ;CACvC,OAAgB;CAChB;CACA;CAEA,YAAY,MAAiB,OAAkB;EAC7C,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,QAAQ;;CAGf,OAAO,GAAG,MAAiB,OAA+B;EACxD,OAAO,IAAI,YAAY,MAAM,MAAM;;CAGrC,QAAQ,UAAoD;EAC1D,OAAO,SAAS,cAAc,SAAS,YAAY,KAAK,GAAG;;;AAI/D,IAAa,UAAb,MAAa,gBAAgB,QAAQ;CACnC,OAAgB;CAChB;CACA;CACA;CACA;CAEA,YACE,UACA,QACA,IACA,UAAU,OACV;EACA,OAAO;EACP,KAAK,WAAW;EAChB,KAAK,SAAS;EACd,KAAK,UAAU;EACf,KAAK,KAAK;EACV,KAAK,QAAQ;;CAGf,OAAO,MAAM,QAAuB,IAAgB,UAAU,OAAgB;EAC5E,OAAO,IAAI,QAAQ,SAAS,QAAQ,IAAI,QAAQ;;CAGlD,OAAO,KAAK,QAAuB,IAAgB,UAAU,OAAgB;EAC3E,OAAO,IAAI,QAAQ,QAAQ,QAAQ,IAAI,QAAQ;;CAGjD,OAAO,MAAM,QAAuB,IAAgB,UAAU,OAAgB;EAC5E,OAAO,IAAI,QAAQ,SAAS,QAAQ,IAAI,QAAQ;;CAGlD,OAAO,KAAK,QAAuB,IAAgB,UAAU,OAAgB;EAC3E,OAAO,IAAI,QAAQ,QAAQ,QAAQ,IAAI,QAAQ;;CAGjD,QAAQ,UAAgC;EACtC,OAAO,IAAI,QACT,KAAK,UACL,KAAK,OAAO,QAAQ,SAAS,EAC7B,KAAK,GAAG,SAAS,mBAAmB,KAAK,GAAG,QAAQ,SAAS,GAAG,KAAK,GAAG,QAAQ,SAAS,EACzF,KAAK,QACN;;;AAIL,IAAa,iBAAb,MAAa,uBAAuB,QAAQ;CAC1C,OAAgB;CAChB;CACA;;;;;;CAMA;CAEA,YAAY,OAAe,MAAsB,OAAkB;EACjE,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,OAAO;EACZ,KAAK,QAAQ,QAAQ,eAAe,MAAM,GAAG,KAAA;EAC7C,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAAe,MAAsB,OAAkC;EAC/E,OAAO,IAAI,eAAe,OAAO,MAAM,MAAM;;CAG/C,UAAU,OAA6C;EACrD,OAAO,IAAI,eAAe,KAAK,OAAO,KAAK,MAAM,MAAM;;;AAqB3D,IAAa,YAAb,MAAa,kBAAkB,SAAS;CACtC,OAAgB;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,SAA2B;EACrC,OAAO;EACP,KAAK,OAAO,QAAQ;EACpB,KAAK,QACH,QAAQ,SAAS,QAAQ,MAAM,SAAS,IAAI,gBAAgB,QAAQ,MAAM,GAAG,KAAA;EAC/E,KAAK,aAAa,gBAAgB,QAAQ,WAAW;EACrD,KAAK,QAAQ,QAAQ;EACrB,KAAK,UACH,QAAQ,WAAW,QAAQ,QAAQ,SAAS,IAAI,gBAAgB,QAAQ,QAAQ,GAAG,KAAA;EACrF,KAAK,WAAW,QAAQ;EACxB,KAAK,aACH,QAAQ,cAAc,QAAQ,WAAW,SAAS,IAC9C,gBAAgB,QAAQ,WAAW,GACnC,KAAA;EACN,KAAK,UACH,QAAQ,WAAW,QAAQ,QAAQ,SAAS,IAAI,gBAAgB,QAAQ,QAAQ,GAAG,KAAA;EACrF,KAAK,SAAS,QAAQ;EACtB,KAAK,QAAQ,QAAQ;EACrB,KAAK,SAAS,QAAQ;EACtB,KAAK,kBAAkB,yBAAyB,QAAQ,gBAAgB;EACxE,KAAK,QAAQ;;CAGf,OAAO,KAAK,MAAgC;EAC1C,OAAO,IAAI,UAAU;GACnB;GACA,OAAO,KAAA;GACP,YAAY,EAAE;GACd,OAAO,KAAA;GACP,SAAS,KAAA;GACT,UAAU,KAAA;GACV,YAAY,KAAA;GACZ,SAAS,KAAA;GACT,QAAQ,KAAA;GACR,OAAO,KAAA;GACP,QAAQ,KAAA;GACR,iBAAiB,KAAA;GAClB,CAAC;;CAGJ,SAAS,MAAgC;EACvC,OAAO,IAAI,UAAU;GAAE,GAAG;GAAM;GAAM,CAAC;;CAGzC,UAAU,OAA0C;EAClD,OAAO,IAAI,UAAU;GACnB,GAAG;GACH,OAAO,MAAM,SAAS,IAAI,QAAQ,KAAA;GACnC,CAAC;;CAGJ,eAAe,YAAsD;EACnE,OAAO,IAAI,UAAU;GAAE,GAAG;GAAM;GAAY,CAAC;;CAG/C,cAAc,OAAe,MAAiC;EAC5D,OAAO,IAAI,UAAU;GACnB,GAAG;GACH,YAAY,CAAC,GAAG,KAAK,YAAY,IAAI,eAAe,OAAO,KAAK,CAAC;GAClE,CAAC;;CAGJ,UAAU,OAA6C;EACrD,OAAO,IAAI,UAAU;GAAE,GAAG;GAAM;GAAO,CAAC;;CAG1C,YAAY,SAAgD;EAC1D,OAAO,IAAI,UAAU;GACnB,GAAG;GACH,SAAS,QAAQ,SAAS,IAAI,UAAU,KAAA;GACzC,CAAC;;CAGJ,aAAa,UAAU,MAAiB;EACtC,OAAO,IAAI,UAAU;GACnB,GAAG;GACH,UAAU,UAAU,OAAO,KAAA;GAC5B,CAAC;;CAGJ,eAAe,YAAqD;EAClE,OAAO,IAAI,UAAU;GACnB,GAAG;GACH,YAAY,WAAW,SAAS,IAAI,aAAa,KAAA;GAClD,CAAC;;CAGJ,YAAY,SAAkD;EAC5D,OAAO,IAAI,UAAU;GACnB,GAAG;GACH,SAAS,QAAQ,SAAS,IAAI,UAAU,KAAA;GACzC,CAAC;;CAGJ,WAAW,QAA8C;EACvD,OAAO,IAAI,UAAU;GAAE,GAAG;GAAM;GAAQ,CAAC;;CAG3C,UAAU,OAAgD;EACxD,OAAO,IAAI,UAAU;GAAE,GAAG;GAAM;GAAO,CAAC;;CAG1C,WAAW,QAAiD;EAC1D,OAAO,IAAI,UAAU;GAAE,GAAG;GAAM;GAAQ,CAAC;;CAG3C,oBAAoB,iBAAqE;EACvF,OAAO,IAAI,UAAU;GAAE,GAAG;GAAM;GAAiB,CAAC;;CAGpD,QAAQ,UAAkC;EACxC,MAAM,YAAY,IAAI,UAAU;GAC9B,MAAM,KAAK,KAAK,QAAQ,SAAS;GACjC,OAAO,KAAK,OAAO,KAAK,SAAS,KAAK,QAAQ,SAAS,CAAC;GACxD,YAAY,KAAK,WAAW,KACzB,eACC,IAAI,eACF,WAAW,OACX,WAAW,KAAK,SAAS,YACrB,SAAS,UACP,SAAS,QAAQ,WAAW,KAAK,GACjC,WAAW,OACb,WAAW,KAAK,QAAQ,SAAS,EACrC,WAAW,MACZ,CACJ;GACD,OAAO,KAAK,OAAO,QAAQ,SAAS;GACpC,SAAS,KAAK,SAAS,KAAK,cAAc,UAAU,QAAQ,SAAS,CAAC;GACtE,UAAU,KAAK;GACf,YAAY,KAAK,YAAY,KAAK,SAAS,KAAK,QAAQ,SAAS,CAAC;GAClE,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,SAAS,CAAC;GAC5D,QAAQ,KAAK,QAAQ,QAAQ,SAAS;GACtC,OAAO,mBAAmB,KAAK,OAAO,SAAS;GAC/C,QAAQ,mBAAmB,KAAK,QAAQ,SAAS;GACjD,iBAAiB,KAAK;GACvB,CAAC;EAEF,OAAO,SAAS,SAAS,SAAS,OAAO,UAAU,GAAG;;CAGxD,oBAAiC;EAC/B,MAAM,OAAoB,EAAE;EAC5B,MAAM,YAAY,YAAsC;GACtD,KAAK,KAAK,GAAG,QAAQ;;EAGvB,IAAI,KAAK,KAAK,SAAS,wBACrB,SAAS,KAAK,KAAK,MAAM,mBAAmB,CAAC;EAG/C,KAAK,MAAM,cAAc,KAAK,YAC5B,IAAI,EAAE,WAAW,KAAK,SAAS,YAC7B,SAAS,WAAW,KAAK,mBAAmB,CAAC;EAIjD,IAAI,KAAK,OACP,SAAS,KAAK,MAAM,mBAAmB,CAAC;EAE1C,IAAI,KAAK,QACP,SAAS,KAAK,OAAO,mBAAmB,CAAC;EAE3C,KAAK,MAAM,aAAa,KAAK,WAAW,EAAE,EACxC,SAAS,UAAU,KAAK,mBAAmB,CAAC;EAE9C,KAAK,MAAM,QAAQ,KAAK,cAAc,EAAE,EACtC,SAAS,KAAK,mBAAmB,CAAC;EAEpC,KAAK,MAAM,QAAQ,KAAK,WAAW,EAAE,EACnC,SAAS,KAAK,mBAAmB,CAAC;EAEpC,KAAK,MAAM,QAAQ,KAAK,SAAS,EAAE,EAAE;GACnC,IAAI,KAAK,OAAO,SAAS,wBACvB,SAAS,KAAK,OAAO,MAAM,mBAAmB,CAAC;GAEjD,IAAI,KAAK,GAAG,SAAS,kBACnB,KAAK,KAAK,KAAK,GAAG,MAAM,KAAK,GAAG,MAAM;QAEtC,SAAS,KAAK,GAAG,mBAAmB,CAAC;;EAGzC,IAAI,OAAO,KAAK,UAAU,UACxB,SAAS,KAAK,MAAM,mBAAmB,CAAC;EAE1C,IAAI,OAAO,KAAK,WAAW,UACzB,SAAS,KAAK,OAAO,mBAAmB,CAAC;EAG3C,OAAO;;CAGT,mBAAkC;EAChC,MAAM,OAAsB,EAAE;EAC9B,MAAM,YAAY,WAAuC;GACvD,KAAK,KAAK,GAAG,OAAO;;EAGtB,IAAI,KAAK,KAAK,SAAS,wBACrB,SAAS,KAAK,KAAK,MAAM,kBAAkB,CAAC;EAG9C,KAAK,MAAM,cAAc,KAAK,YAC5B,IAAI,EAAE,WAAW,KAAK,SAAS,YAC7B,SAAS,WAAW,KAAK,kBAAkB,CAAC;EAIhD,IAAI,KAAK,OACP,SAAS,KAAK,MAAM,kBAAkB,CAAC;EAEzC,IAAI,KAAK,QACP,SAAS,KAAK,OAAO,kBAAkB,CAAC;EAE1C,KAAK,MAAM,aAAa,KAAK,WAAW,EAAE,EACxC,SAAS,UAAU,KAAK,kBAAkB,CAAC;EAE7C,KAAK,MAAM,QAAQ,KAAK,cAAc,EAAE,EACtC,SAAS,KAAK,kBAAkB,CAAC;EAEnC,KAAK,MAAM,QAAQ,KAAK,WAAW,EAAE,EACnC,SAAS,KAAK,kBAAkB,CAAC;EAEnC,KAAK,MAAM,QAAQ,KAAK,SAAS,EAAE,EAAE;GACnC,IAAI,KAAK,OAAO,SAAS,wBACvB,SAAS,KAAK,OAAO,MAAM,kBAAkB,CAAC;GAEhD,IAAI,EAAE,KAAK,GAAG,SAAS,mBACrB,SAAS,KAAK,GAAG,kBAAkB,CAAC;;EAGxC,IAAI,OAAO,KAAK,UAAU,UACxB,SAAS,KAAK,MAAM,kBAAkB,CAAC;EAEzC,IAAI,OAAO,KAAK,WAAW,UACzB,SAAS,KAAK,OAAO,kBAAkB,CAAC;EAG1C,OAAO;;CAGT,aAAmC;EACjC,OAAO;;;AAIX,IAAe,yBAAf,cAA8C,QAAQ;AAItD,IAAa,0BAAb,cAA6C,uBAAuB;CAClE,OAAgB;CAEhB,cAAc;EACZ,OAAO;EACP,KAAK,QAAQ;;CAGf,2BAA+D;EAC7D,OAAO;;;AAIX,IAAa,4BAAb,cAA+C,uBAAuB;CACpE,OAAgB;CAChB;CAEA,YAAY,KAA8C;EACxD,OAAO;EACP,KAAK,MAAM,iBAAiB,IAAI;EAChC,KAAK,QAAQ;;CAGf,2BAA+D;EAC7D,OAAO;;;AAIX,IAAa,mBAAb,MAAa,yBAAyB,QAAQ;CAC5C,OAAgB;CAChB;CACA;CAEA,YAAY,SAAmC,QAAmC;EAChF,OAAO;EACP,KAAK,UAAU,gBAAgB,QAAQ;EACvC,KAAK,SAAS;EACd,KAAK,QAAQ;;CAGf,OAAO,GAAG,SAAqD;EAC7D,OAAO,IAAI,iBAAiB,SAAS,IAAI,yBAAyB,CAAC;;CAGrE,YAA8B;EAC5B,OAAO,IAAI,iBAAiB,KAAK,SAAS,IAAI,yBAAyB,CAAC;;CAG1E,YAAY,KAAgE;EAC1E,OAAO,IAAI,iBAAiB,KAAK,SAAS,IAAI,0BAA0B,IAAI,CAAC;;;AAIjF,IAAa,YAAb,MAAa,kBAAkB,SAAS;CACtC,OAAgB;CAChB;CACA;CACA;CACA;CAEA,YACE,OACA,OAAmD,CAAC,EAAE,CAAC,EACvD,YACA,WACA;EACA,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,OAAO,WAAW,KAAK;EAC5B,KAAK,aAAa;EAClB,KAAK,YAAY,aAAa,UAAU,SAAS,IAAI,gBAAgB,UAAU,GAAG,KAAA;EAClF,KAAK,QAAQ;;CAGf,OAAO,KAAK,OAA+B;EACzC,OAAO,IAAI,UAAU,MAAM;;CAG7B,SAAS,MAA6D;EACpE,OAAO,IAAI,UACT,KAAK,OACL,KAAK,KAAK,SAAS,EAAE,GAAG,KAAK,EAAE,EAC/B,KAAK,YACL,KAAK,UACN;;CAGH,cAAc,WAAiE;EAC7E,OAAO,IAAI,UACT,KAAK,OACL,KAAK,KAAK,KAAK,SAAS,EAAE,GAAG,KAAK,EAAE,EACpC,KAAK,YACL,UACD;;CAGH,eAAe,YAAqD;EAClE,OAAO,IAAI,UACT,KAAK,OACL,KAAK,KAAK,KAAK,SAAS,EAAE,GAAG,KAAK,EAAE,EACpC,YACA,KAAK,UACN;;CAGH,QAAQ,UAAkC;EACxC,OAAO,IAAI,UACT,mBAAmB,KAAK,OAAO,SAAS,EACxC,KAAK,KAAK,KAAK,QAAQ,iBAAiB,KAAK,SAAS,CAAC,EACvD,KAAK,aAAa,kBAAkB,KAAK,YAAY,SAAS,GAAG,KAAA,GACjE,KAAK,WAAW,KAAK,SAAS,sBAAsB,MAAM,SAAS,CAAC,CACrE;;CAGH,mBAA2C;EACzC,MAAM,OAAsB,EAAE;EAC9B,KAAK,MAAM,OAAO,KAAK,MACrB,KAAK,MAAM,SAAS,OAAO,OAAO,IAAI,EACpC,IAAI,MAAM,SAAS,eAAe,MAAM,SAAS,sBAC/C,KAAK,KAAK,MAAM;EAItB,IAAI,KAAK,YAAY,OAAO,SAAS;QAC9B,MAAM,SAAS,OAAO,OAAO,KAAK,WAAW,OAAO,IAAI,EAC3D,IAAI,MAAM,SAAS,eAAe,MAAM,SAAS,sBAC/C,KAAK,KAAK,MAAM;;EAItB,KAAK,MAAM,QAAQ,KAAK,aAAa,EAAE,EACrC,IAAI,KAAK,KAAK,SAAS,WACrB,KAAK,KAAK,GAAG,KAAK,KAAK,kBAAkB,CAAC;EAG9C,OAAO;;CAGT,aAAmC;EACjC,OAAO;;;AAIX,IAAa,YAAb,MAAa,kBAAkB,SAAS;CACtC,OAAgB;CAChB;CACA;CACA;CACA;CAEA,YACE,OACA,MAA+C,EAAE,EACjD,OACA,WACA;EACA,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,MAAM,iBAAiB,IAAI;EAChC,KAAK,QAAQ;EACb,KAAK,YAAY,aAAa,UAAU,SAAS,IAAI,gBAAgB,UAAU,GAAG,KAAA;EAClF,KAAK,QAAQ;;CAGf,OAAO,MAAM,OAA+B;EAC1C,OAAO,IAAI,UAAU,MAAM;;CAG7B,QAAQ,KAAyD;EAC/D,OAAO,IAAI,UAAU,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,UAAU;;CAGnE,UAAU,OAA6C;EACrD,OAAO,IAAI,UAAU,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,UAAU;;CAGnE,cAAc,WAAiE;EAC7E,OAAO,IAAI,UAAU,KAAK,OAAO,KAAK,KAAK,KAAK,OAAO,UAAU;;CAGnE,QAAQ,UAAkC;EACxC,OAAO,IAAI,UACT,mBAAmB,KAAK,OAAO,SAAS,EACxC,iBAAiB,KAAK,KAAK,SAAS,EACpC,KAAK,OAAO,QAAQ,SAAS,EAC7B,KAAK,WAAW,KAAK,SAAS,sBAAsB,MAAM,SAAS,CAAC,CACrE;;CAGH,mBAA2C;EACzC,MAAM,OAAsB,EAAE;EAC9B,KAAK,MAAM,SAAS,OAAO,OAAO,KAAK,IAAI,EACzC,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;EAExC,IAAI,KAAK,OACP,KAAK,KAAK,GAAG,KAAK,MAAM,kBAAkB,CAAC;EAE7C,KAAK,MAAM,QAAQ,KAAK,aAAa,EAAE,EACrC,IAAI,KAAK,KAAK,SAAS,WACrB,KAAK,KAAK,GAAG,KAAK,KAAK,kBAAkB,CAAC;EAG9C,OAAO;;CAGT,aAAmC;EACjC,OAAO;;;AAIX,IAAa,YAAb,MAAa,kBAAkB,SAAS;CACtC,OAAgB;CAChB;CACA;CACA;CAEA,YACE,OACA,OACA,WACA;EACA,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,QAAQ;EACb,KAAK,YAAY,aAAa,UAAU,SAAS,IAAI,gBAAgB,UAAU,GAAG,KAAA;EAClF,KAAK,QAAQ;;CAGf,OAAO,KAAK,OAA+B;EACzC,OAAO,IAAI,UAAU,MAAM;;CAG7B,UAAU,OAA6C;EACrD,OAAO,IAAI,UAAU,KAAK,OAAO,OAAO,KAAK,UAAU;;CAGzD,cAAc,WAAiE;EAC7E,OAAO,IAAI,UAAU,KAAK,OAAO,KAAK,OAAO,UAAU;;CAGzD,QAAQ,UAAkC;EACxC,OAAO,IAAI,UACT,mBAAmB,KAAK,OAAO,SAAS,EACxC,KAAK,OAAO,QAAQ,SAAS,EAC7B,KAAK,WAAW,KAAK,SAAS,sBAAsB,MAAM,SAAS,CAAC,CACrE;;CAGH,mBAA2C;EACzC,MAAM,OAAsB,EAAE;EAC9B,IAAI,KAAK,OACP,KAAK,KAAK,GAAG,KAAK,MAAM,kBAAkB,CAAC;EAE7C,KAAK,MAAM,QAAQ,KAAK,aAAa,EAAE,EACrC,IAAI,KAAK,KAAK,SAAS,WACrB,KAAK,KAAK,GAAG,KAAK,KAAK,kBAAkB,CAAC;EAG9C,OAAO;;CAGT,aAAmC;EACjC,OAAO;;;;;;;;;;;;;;;;;;AAmBX,IAAa,aAAb,MAAa,mBAAmB,SAAS;CACvC,OAAgB;CAChB;CACA;CAEA,YAAY,WAA8B,MAAgC;EACxE,OAAO;EACP,IAAI,UAAU,WAAW,KAAK,SAAS,GACrC,MAAM,IAAI,MACR,0EAA0E,UAAU,OAAO,SAAS,KAAK,OAAO,GACjH;EAEH,KAAK,YAAY,OAAO,OAAO,CAAC,GAAG,UAAU,CAAC;EAC9C,KAAK,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;EACpC,KAAK,QAAQ;;CAGf,OAAO,GAAG,WAA8B,MAA4C;EAClF,OAAO,IAAI,WAAW,WAAW,KAAK;;CAGxC,mBAA2C;EACzC,MAAM,OAAsB,EAAE;EAC9B,KAAK,MAAM,OAAO,KAAK,MACrB,IAAI,IAAI,SAAS,aACf,KAAK,KAAK,IAAI;OAEd,KAAK,KAAK,GAAG,IAAI,kBAAkB,CAAC;EAGxC,OAAO;;CAGT,aAAmC;EACjC,OAAO;;;AA6BX,MAAa,gBAAqC,IAAI,IAAyB;CAC7E;CACA;CACA;CACA;CACA;CACD,CAAC;AACF,MAAa,iBAAsC,IAAI,IAA2B;CAChF;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAgB,WAAW,OAAsC;CAC/D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,cAAc,IAAK,MAA2B,KAAK;;AAIvD,SAAgB,YAAY,OAAwC;CAClE,OACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,eAAe,IAAK,MAA2B,KAAK"}
@@ -430,8 +430,8 @@ declare class DoNothingConflictAction extends InsertOnConflictAction {
430
430
  }
431
431
  declare class DoUpdateSetConflictAction extends InsertOnConflictAction {
432
432
  readonly kind: "do-update-set";
433
- readonly set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>;
434
- constructor(set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>);
433
+ readonly set: Readonly<Record<string, AnyExpression>>;
434
+ constructor(set: Readonly<Record<string, AnyExpression>>);
435
435
  toInsertOnConflictAction(): AnyInsertOnConflictAction;
436
436
  }
437
437
  declare class InsertOnConflict extends AstNode {
@@ -441,7 +441,7 @@ declare class InsertOnConflict extends AstNode {
441
441
  constructor(columns: ReadonlyArray<ColumnRef>, action: AnyInsertOnConflictAction);
442
442
  static on(columns: ReadonlyArray<ColumnRef>): InsertOnConflict;
443
443
  doNothing(): InsertOnConflict;
444
- doUpdateSet(set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>): InsertOnConflict;
444
+ doUpdateSet(set: Readonly<Record<string, AnyExpression>>): InsertOnConflict;
445
445
  }
446
446
  declare class InsertAst extends QueryAst {
447
447
  readonly kind: "insert";
@@ -451,7 +451,6 @@ declare class InsertAst extends QueryAst {
451
451
  readonly returning: ReadonlyArray<ProjectionItem> | undefined;
452
452
  constructor(table: TableSource, rows?: ReadonlyArray<Record<string, InsertValue>>, onConflict?: InsertOnConflict, returning?: ReadonlyArray<ProjectionItem>);
453
453
  static into(table: TableSource): InsertAst;
454
- withValues(values: Record<string, InsertValue>): InsertAst;
455
454
  withRows(rows: ReadonlyArray<Record<string, InsertValue>>): InsertAst;
456
455
  withReturning(returning: ReadonlyArray<ProjectionItem> | undefined): InsertAst;
457
456
  withOnConflict(onConflict: InsertOnConflict | undefined): InsertAst;
@@ -462,12 +461,12 @@ declare class InsertAst extends QueryAst {
462
461
  declare class UpdateAst extends QueryAst {
463
462
  readonly kind: "update";
464
463
  readonly table: TableSource;
465
- readonly set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>;
464
+ readonly set: Readonly<Record<string, AnyExpression>>;
466
465
  readonly where: AnyExpression | undefined;
467
466
  readonly returning: ReadonlyArray<ProjectionItem> | undefined;
468
- constructor(table: TableSource, set?: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>, where?: AnyExpression, returning?: ReadonlyArray<ProjectionItem>);
467
+ constructor(table: TableSource, set?: Readonly<Record<string, AnyExpression>>, where?: AnyExpression, returning?: ReadonlyArray<ProjectionItem>);
469
468
  static table(table: TableSource): UpdateAst;
470
- withSet(set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>): UpdateAst;
469
+ withSet(set: Readonly<Record<string, AnyExpression>>): UpdateAst;
471
470
  withWhere(where: AnyExpression | undefined): UpdateAst;
472
471
  withReturning(returning: ReadonlyArray<ProjectionItem> | undefined): UpdateAst;
473
472
  rewrite(rewriter: AstRewriter): UpdateAst;
@@ -553,4 +552,4 @@ interface LoweredStatement {
553
552
  }
554
553
  //#endregion
555
554
  export { SelectAst as $, InsertAst as A, LiteralExpr as B, EqColJoinOn as C, ExpressionRewriter as D, ExpressionFolder as E, JsonArrayAggExpr as F, OperationExpr as G, LoweredStatement as H, JsonObjectEntry as I, ParamRef as J, OrExpr as K, JsonObjectExpr as L, InsertValue as M, JoinAst as N, ExpressionSource as O, JoinOnExpr as P, RawSqlExpr as Q, LimitOffsetValue as R, DoUpdateSetConflictAction as S, ExprVisitor as T, NotExpr as U, LoweredParam as V, NullCheckExpr as W, ProjectionExpr as X, PreparedParamRef as Y, ProjectionItem as Z, DefaultValueExpr as _, AndExpr as a, UpdateAst as at, Direction as b, AnyInsertOnConflictAction as c, isWhereExpr as ct, AnyParamRef as d, SelectAstOptions as et, AnyQueryAst as f, ColumnRef as g, BinaryOp as h, AggregateOpFn as i, ToWhereExpr as it, InsertOnConflict as j, IdentifierRef as k, AnyInsertValue as l, queryAstKinds as lt, BinaryExpr as m, AggregateExpr as n, TableRef as nt, AnyExpression as o, WhereArg as ot, AstRewriter as p, OrderByItem as q, AggregateFn as r, TableSource as rt, AnyFromSource as s, isQueryAst as st, AggregateCountFn as t, SubqueryExpr as tt, AnyOperationArg as u, whereExprKinds as ut, DeleteAst as v, ExistsExpr as w, DoNothingConflictAction as x, DerivedTableSource as y, ListExpression as z };
556
- //# sourceMappingURL=types-aknEJe-3.d.mts.map
555
+ //# sourceMappingURL=types-DNGyueh7.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-aknEJe-3.d.mts","names":[],"sources":["../src/ast/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types-DNGyueh7.d.mts","names":[],"sources":["../src/ast/types.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { J as ParamRef, g as ColumnRef } from "./types-aknEJe-3.mjs";
1
+ import { J as ParamRef, g as ColumnRef } from "./types-DNGyueh7.mjs";
2
2
  import { r as ExecutionContext } from "./query-lane-context-Dw1Tz0kv.mjs";
3
- import { t as SqlExecutionPlan } from "./sql-execution-plan-CiR7ywhQ.mjs";
3
+ import { t as SqlExecutionPlan } from "./sql-execution-plan-B84vOmgK.mjs";
4
4
  import { ExtractFieldOutputTypes, SqlStorage, StorageColumn } from "@prisma-next/sql-contract/types";
5
5
  import { Contract } from "@prisma-next/contract/types";
6
6
  import { ParamSpec } from "@prisma-next/operations";
@@ -190,4 +190,4 @@ interface SqlBuilderOptions<TContract extends Contract<SqlStorage> = Contract<Sq
190
190
  }
191
191
  //#endregion
192
192
  export { TableKey as C, TableDef as S, TablesOf as T, RawTemplateFactory as _, ComputeColumnJsType as a, SqlBuilderOptions 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, TableMetadata as w, SqlPlan as x, RuntimeError as y };
193
- //# sourceMappingURL=types-DiHGXr6t.d.mts.map
193
+ //# sourceMappingURL=types-DiV49xLs.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-DiHGXr6t.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;;;;;KAYY,IAAA,GAAO,SAAA,GAAY,QAAA;;AAA/B;;;KAMK,mBAAA,mBACe,QAAA,CAAS,UAAA,+BAEzB,SAAA,wCAAiD,MAAA,kCAEnC,MAAA,YAAkB,MAAA,CAAO,CAAA;EAAA,SAC1B,OAAA;IAAA,SAAoB,KAAA,EAAO,SAAA;EAAA;AAAA,IAElC,CAAA,iBAEE,MAAA;;;;;KAOP,oBAAA,mBACe,QAAA,CAAS,UAAA,0DAI3B,mBAAA,CAAoB,SAAA,EAAW,SAAA,2CAC3B,SAAA,wCAAiD,MAAA,oBAC/C,SAAA,SAAkB,MAAA,qCAChB,MAAA,CAAO,IAAA;EAAA,SACI,OAAA;IAAA,SAAoB,MAAA,uBAA6B,MAAA;EAAA;AAAA,kBAG5C,MAAA,YAAkB,MAAA,CAAO,CAAA;EAAA,SAAsB,MAAA,EAAQ,UAAA;AAAA,IAC/D,CAAA,iBAEE,MAAA;AAAA,KAMf,mBAAA,oBACgB,aAAA,qBACA,MAAA;EAAA,SAA0B,MAAA;AAAA,MAC3C,UAAA;EAAqB,OAAA;AAAA,IACrB,OAAA,eAAsB,UAAA,GACpB,UAAA,CAAW,OAAA;EAAA,SAA4B,MAAA;AAAA,IACrC,UAAA;EAAqB,QAAA;AAAA,IACnB,CAAA,UACA,CAAA;;;;;KASE,sBAAA;EAAA,SACD,IAAA,EAAM,aAAA,CAAc,SAAA;EAAA,SACpB,OAAA,EAAS,SAAA;EAAA,SACT,QAAA,EAAU,eAAA;EAAA,SACV,YAAA,GAAe,aAAA;AAAA;;;;;;;;;;;;;;;;;;KAoBd,cAAA,GAAiB,MAAA,SAAe,MAAA,SAAe,sBAAA;;;;;;;;;;;;;KAc/C,UAAA,GAAa,MAAA;EAAA,SAA0B,MAAA;AAAA;;;;;;;;;;;KAYvC,mBAAA,2CAA8D,cAAA,IACxE,UAAA,SAAmB,MAAA,kBACf,MAAA,kBACA,MAAA,eAAqB,UAAA,GACnB,UAAA,CAAW,MAAA,IACX,MAAA;AAAA,KAEI,mBAAA,mBACQ,QAAA,CAAS,UAAA,2EAGR,aAAA,qBACA,MAAA;EAAA,SAA0B,MAAA;AAAA,MAE7C,mBAAA,CAAoB,SAAA,EAAW,SAAA,6BAC1B,SAAA,oBACC,mBAAA,CAAoB,UAAA,EAAY,UAAA,IAChC,SAAA,kBACE,oBAAA,CAAqB,SAAA,EAAW,SAAA,EAAW,UAAA,6BACxC,SAAA,oBACC,mBAAA,CAAoB,UAAA,EAAY,UAAA,IAChC,SAAA,kBACE,SAAA,eAAwB,uBAAA,CAAwB,SAAA,IAC9C,SAAA,eAAwB,uBAAA,CAAwB,SAAA,EAAW,SAAA,IACzD,uBAAA,CAAwB,SAAA,EAAW,SAAA,EAAW,SAAA;;;;AAjGxC;;KA8Gd,0BAAA,mBAA6C,QAAA,CAAS,UAAA,KAAe,SAAA;EAC/E,YAAA;EACA,MAAA;AAAA,IAEE,CAAA,kBACE,CAAA,SAAU,MAAA,SAAe,MAAA,qBACvB,CAAA,iBAAkB,CAAA,wBAChB,UAAA;EAAqB,OAAA;EAAe,OAAA;AAAA;;;;;;KAalC,OAAA,kBAAyB,gBAAA,CAAiB,GAAA;;;;KAK1C,QAAA,cAAsB,SAAA;EAChC,OAAA;IAAW,MAAA;EAAA;AAAA,IAET,CAAA;AAAA,KAGQ,QAAA,cAAsB,OAAA,OAAc,QAAA,CAAS,SAAA;;;;cAQpC,IAAA;;;;KAKT,IAAA;EAAA,CAAkB,IAAA;AAAA,KAAoB,CAAA,QAAS,IAAA;;;;UAK1C,aAAA;EACf,IAAA,EAAM,IAAA;AAAA;;;;UAMS,aAAA;EACf,IAAA,EAAM,IAAA;AAAA;;;;;UAOS,QAAA;EAAA,UACL,IAAA,GAAO,aAAA,CAAc,IAAA;AAAA;;;;;UAOhB,QAAA;EAAA,UACL,IAAA,GAAO,aAAA,CAAc,IAAA;AAAA;AAAA,KAGrB,SAAA,sBAEA,QAAA,CAAS,SAAA,KACjB,CAAA,eAAgB,QAAA,CAAS,SAAA,IACzB,QAAA,CAAS,SAAA,EAAW,CAAA;EAAa,OAAA;AAAA,IAC/B,CAAA;AAAA,UAIW,kBAAA;EAAA,SACN,WAAA,GAAc,MAAA;AAAA;AAAA,UAGR,kBAAA,SAA2B,kBAAA;EAAA,SACjC,MAAA,EAAQ,aAAA;AAAA;AAAA,KAGP,kBAAA,IACV,OAAA,EAAS,oBAAA,KACN,MAAA,yBACA,gBAAA;AAAA,UAEY,UAAA,SAAmB,kBAAA;EAAA,CACjC,IAAA,UAAc,OAAA,EAAS,kBAAA,GAAqB,gBAAA;EAC7C,IAAA,CAAK,OAAA,EAAS,kBAAA,GAAqB,kBAAA;AAAA;AAAA,UAGpB,YAAA,SAAqB,KAAA;EAAA,SAC3B,IAAA;EAAA,SACA,QAAA;EAAA,SACA,QAAA;EAAA,SACA,OAAA,GAAU,MAAA;EAAA,SACV,KAAA;EAAA,SACA,IAAA;AAAA;AAAA,UAGM,cAAA;EAAA,UACL,IAAA;AAAA;AAAA,UAGK,YAAA;EAAA,SACN,MAAA,GAAS,cAAA;AAAA;AAAA,UAGH,iBAAA,mBAAoC,QAAA,CAAS,UAAA,IAAc,QAAA,CAAS,UAAA;EAAA,SAC1E,OAAA,EAAS,gBAAA,CAAiB,SAAA;AAAA"}
1
+ {"version":3,"file":"types-DiV49xLs.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "name": "@prisma-next/sql-relational-core",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "description": "AST types, query lane context, and type utilities for Prisma Next SQL lanes",
8
8
  "dependencies": {
9
- "@prisma-next/contract": "0.10.0",
10
- "@prisma-next/framework-components": "0.10.0",
11
- "@prisma-next/operations": "0.10.0",
12
- "@prisma-next/sql-contract": "0.10.0",
13
- "@prisma-next/sql-operations": "0.10.0",
14
- "@prisma-next/utils": "0.10.0",
9
+ "@prisma-next/contract": "0.11.0",
10
+ "@prisma-next/framework-components": "0.11.0",
11
+ "@prisma-next/operations": "0.11.0",
12
+ "@prisma-next/sql-contract": "0.11.0",
13
+ "@prisma-next/sql-operations": "0.11.0",
14
+ "@prisma-next/utils": "0.11.0",
15
15
  "@standard-schema/spec": "^1.1.0",
16
16
  "arktype": "^2.2.0",
17
17
  "ts-toolbelt": "^9.6.0"
18
18
  },
19
19
  "devDependencies": {
20
- "@prisma-next/sql-contract-ts": "0.10.0",
21
- "@prisma-next/test-utils": "0.10.0",
22
- "@prisma-next/tsconfig": "0.10.0",
23
- "@prisma-next/tsdown": "0.10.0",
20
+ "@prisma-next/sql-contract-ts": "0.11.0",
21
+ "@prisma-next/test-utils": "0.11.0",
22
+ "@prisma-next/tsconfig": "0.11.0",
23
+ "@prisma-next/tsdown": "0.11.0",
24
24
  "tsdown": "0.22.0",
25
25
  "typescript": "5.9.3",
26
26
  "vitest": "4.1.6"
package/src/ast/types.ts CHANGED
@@ -212,30 +212,13 @@ function rewriteInsertRow(
212
212
  return result;
213
213
  }
214
214
 
215
- type UpdateSetValue = ColumnRef | ParamRef | PreparedParamRef;
216
-
217
- function rewriteUpdateSetValue(value: UpdateSetValue, rewriter: AstRewriter): UpdateSetValue {
218
- switch (value.kind) {
219
- case 'column-ref': {
220
- const rewritten = rewriter.columnRef ? rewriter.columnRef(value) : value;
221
- return rewritten.kind === 'column-ref' ? rewritten : value;
222
- }
223
- case 'param-ref': {
224
- const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;
225
- return rewritten.kind === 'param-ref' ? rewritten : value;
226
- }
227
- case 'prepared-param-ref':
228
- return rewriter.preparedParamRef ? rewriter.preparedParamRef(value) : value;
229
- }
230
- }
231
-
232
215
  function rewriteUpdateSet(
233
- set: Readonly<Record<string, UpdateSetValue>>,
216
+ set: Readonly<Record<string, AnyExpression>>,
234
217
  rewriter: AstRewriter,
235
- ): Record<string, UpdateSetValue> {
236
- const result: Record<string, UpdateSetValue> = {};
218
+ ): Record<string, AnyExpression> {
219
+ const result: Record<string, AnyExpression> = {};
237
220
  for (const [key, value] of Object.entries(set)) {
238
- result[key] = rewriteUpdateSetValue(value, rewriter);
221
+ result[key] = value.rewrite(rewriter as ExpressionRewriter);
239
222
  }
240
223
  return result;
241
224
  }
@@ -1460,9 +1443,9 @@ export class DoNothingConflictAction extends InsertOnConflictAction {
1460
1443
 
1461
1444
  export class DoUpdateSetConflictAction extends InsertOnConflictAction {
1462
1445
  readonly kind = 'do-update-set' as const;
1463
- readonly set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>;
1446
+ readonly set: Readonly<Record<string, AnyExpression>>;
1464
1447
 
1465
- constructor(set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>) {
1448
+ constructor(set: Readonly<Record<string, AnyExpression>>) {
1466
1449
  super();
1467
1450
  this.set = frozenRecordCopy(set);
1468
1451
  this.freeze();
@@ -1493,9 +1476,7 @@ export class InsertOnConflict extends AstNode {
1493
1476
  return new InsertOnConflict(this.columns, new DoNothingConflictAction());
1494
1477
  }
1495
1478
 
1496
- doUpdateSet(
1497
- set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>,
1498
- ): InsertOnConflict {
1479
+ doUpdateSet(set: Readonly<Record<string, AnyExpression>>): InsertOnConflict {
1499
1480
  return new InsertOnConflict(this.columns, new DoUpdateSetConflictAction(set));
1500
1481
  }
1501
1482
  }
@@ -1525,10 +1506,6 @@ export class InsertAst extends QueryAst {
1525
1506
  return new InsertAst(table);
1526
1507
  }
1527
1508
 
1528
- withValues(values: Record<string, InsertValue>): InsertAst {
1529
- return new InsertAst(this.table, [{ ...values }], this.onConflict, this.returning);
1530
- }
1531
-
1532
1509
  withRows(rows: ReadonlyArray<Record<string, InsertValue>>): InsertAst {
1533
1510
  return new InsertAst(
1534
1511
  this.table,
@@ -1597,13 +1574,13 @@ export class InsertAst extends QueryAst {
1597
1574
  export class UpdateAst extends QueryAst {
1598
1575
  readonly kind = 'update' as const;
1599
1576
  readonly table: TableSource;
1600
- readonly set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>;
1577
+ readonly set: Readonly<Record<string, AnyExpression>>;
1601
1578
  readonly where: AnyExpression | undefined;
1602
1579
  readonly returning: ReadonlyArray<ProjectionItem> | undefined;
1603
1580
 
1604
1581
  constructor(
1605
1582
  table: TableSource,
1606
- set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>> = {},
1583
+ set: Readonly<Record<string, AnyExpression>> = {},
1607
1584
  where?: AnyExpression,
1608
1585
  returning?: ReadonlyArray<ProjectionItem>,
1609
1586
  ) {
@@ -1619,7 +1596,7 @@ export class UpdateAst extends QueryAst {
1619
1596
  return new UpdateAst(table);
1620
1597
  }
1621
1598
 
1622
- withSet(set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>): UpdateAst {
1599
+ withSet(set: Readonly<Record<string, AnyExpression>>): UpdateAst {
1623
1600
  return new UpdateAst(this.table, set, this.where, this.returning);
1624
1601
  }
1625
1602
 
@@ -1643,9 +1620,7 @@ export class UpdateAst extends QueryAst {
1643
1620
  override collectParamRefs(): AnyParamRef[] {
1644
1621
  const refs: AnyParamRef[] = [];
1645
1622
  for (const value of Object.values(this.set)) {
1646
- if (value.kind === 'param-ref' || value.kind === 'prepared-param-ref') {
1647
- refs.push(value);
1648
- }
1623
+ refs.push(...value.collectParamRefs());
1649
1624
  }
1650
1625
  if (this.where) {
1651
1626
  refs.push(...this.where.collectParamRefs());
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-aCUlP-iI.mjs","names":[],"sources":["../src/ast/types.ts"],"sourcesContent":["import type { ParamSpec } from '@prisma-next/operations';\nimport type { SqlLoweringSpec } from '@prisma-next/sql-operations';\nimport type { CodecRef } from './codec-types';\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 preparedParamRef?(expr: PreparedParamRef): PreparedParamRef;\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 preparedParam(expr: PreparedParamRef): 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 preparedParamRef?(expr: PreparedParamRef): 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 | PreparedParamRef | 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 frozenCodecRef(codec: CodecRef): CodecRef {\n const typeParams =\n codec.typeParams === undefined\n ? undefined\n : (structuredClone(codec.typeParams) as CodecRef['typeParams']);\n return Object.freeze(\n typeParams === undefined ? { codecId: codec.codecId } : { codecId: codec.codecId, typeParams },\n );\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 'prepared-param-ref':\n return rewriter.preparedParamRef ? rewriter.preparedParamRef(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 'prepared-param-ref':\n return folder.preparedParamRef ? folder.preparedParamRef(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): AnyParamRef[] {\n return node.fold<AnyParamRef[]>({\n empty: [],\n combine: (a, b) => [...a, ...b],\n paramRef: (paramRef) => [paramRef],\n preparedParamRef: (paramRef) => [paramRef],\n select: (ast) => ast.collectParamRefs(),\n });\n}\n\nfunction rewriteTableSource(table: TableSource, rewriter: AstRewriter): TableSource {\n return rewriter.tableSource ? rewriter.tableSource(table) : table;\n}\n\nfunction rewriteProjectionItem(item: ProjectionItem, rewriter: AstRewriter): ProjectionItem {\n const rewrittenExpr =\n item.expr.kind === 'literal'\n ? rewriter.literal\n ? rewriter.literal(item.expr)\n : item.expr\n : item.expr.rewrite(rewriter);\n return new ProjectionItem(item.alias, rewrittenExpr, item.codec);\n}\n\nfunction rewriteInsertValue(value: InsertValue, rewriter: AstRewriter): InsertValue {\n switch (value.kind) {\n case 'param-ref':\n return rewriter.paramRef ? rewriteParamRefForInsert(value, rewriter) : value;\n case 'prepared-param-ref':\n return rewriter.preparedParamRef ? rewriter.preparedParamRef(value) : value;\n case 'column-ref':\n return rewriter.columnRef ? rewriteColumnRefForInsert(value, rewriter) : value;\n case 'default-value':\n return value;\n }\n}\n\nfunction rewriteParamRefForInsert(value: ParamRef, rewriter: AstRewriter): InsertValue {\n const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;\n return rewritten.kind === 'param-ref' ? rewritten : value;\n}\n\nfunction rewriteColumnRefForInsert(value: ColumnRef, rewriter: AstRewriter): InsertValue {\n const rewritten = rewriter.columnRef ? rewriter.columnRef(value) : value;\n return rewritten.kind === 'column-ref' ? rewritten : value;\n}\n\nfunction rewriteInsertRow(\n row: Readonly<Record<string, InsertValue>>,\n rewriter: AstRewriter,\n): Record<string, InsertValue> {\n const result: Record<string, InsertValue> = {};\n for (const [key, value] of Object.entries(row)) {\n result[key] = rewriteInsertValue(value, rewriter);\n }\n return result;\n}\n\ntype UpdateSetValue = ColumnRef | ParamRef | PreparedParamRef;\n\nfunction rewriteUpdateSetValue(value: UpdateSetValue, rewriter: AstRewriter): UpdateSetValue {\n switch (value.kind) {\n case 'column-ref': {\n const rewritten = rewriter.columnRef ? rewriter.columnRef(value) : value;\n return rewritten.kind === 'column-ref' ? rewritten : value;\n }\n case 'param-ref': {\n const rewritten = rewriter.paramRef ? rewriter.paramRef(value) : value;\n return rewritten.kind === 'param-ref' ? rewritten : value;\n }\n case 'prepared-param-ref':\n return rewriter.preparedParamRef ? rewriter.preparedParamRef(value) : value;\n }\n}\n\nfunction rewriteUpdateSet(\n set: Readonly<Record<string, UpdateSetValue>>,\n rewriter: AstRewriter,\n): Record<string, UpdateSetValue> {\n const result: Record<string, UpdateSetValue> = {};\n for (const [key, value] of Object.entries(set)) {\n result[key] = rewriteUpdateSetValue(value, rewriter);\n }\n return result;\n}\n\nfunction rewriteLimitOffset<T extends number | AnyExpression | undefined>(\n value: T,\n rewriter: AstRewriter,\n): T {\n if (value === undefined || typeof value === 'number') return value;\n return value.rewrite(rewriter) as T;\n}\n\nfunction rewriteOnConflict(onConflict: InsertOnConflict, rewriter: AstRewriter): InsertOnConflict {\n const columns = onConflict.columns.map((columnRef) => {\n const rewritten = rewriter.columnRef ? rewriter.columnRef(columnRef) : columnRef;\n return rewritten.kind === 'column-ref' ? rewritten : columnRef;\n });\n\n if (onConflict.action.kind === 'do-nothing') {\n return new InsertOnConflict(columns, new DoNothingConflictAction());\n }\n\n return new InsertOnConflict(\n columns,\n new DoUpdateSetConflictAction(rewriteUpdateSet(onConflict.action.set, rewriter)),\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 collectParamRefs(): AnyParamRef[];\n abstract toQueryAst(): AnyQueryAst;\n}\n\nabstract class FromSource extends AstNode {\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(): AnyParamRef[] {\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\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 via their inner query, not intercepted at the FromSource level. A future 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\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 /**\n * Codec identity carried by every column-bound `ParamRef`. The encode-side dispatch path materialises the per-instance codec through `contractCodecs.forCodecRef(codec)` — content-keyed memoisation on `(codecId, canonicalize(typeParams))` keeps repeated lookups for the same logical column on one shared {@link Codec}.\n *\n * `codec` may be `undefined` for `ParamRef`s constructed without a column-bound site (literals, transient builder state); the runtime treats those as untyped passthroughs.\n */\n readonly codec: CodecRef | undefined;\n\n constructor(\n value: unknown,\n options?: {\n name?: string;\n codec?: CodecRef;\n },\n ) {\n super();\n this.value = value;\n this.name = options?.name;\n this.codec = options?.codec ? frozenCodecRef(options.codec) : undefined;\n this.freeze();\n }\n\n static of(\n value: unknown,\n options?: {\n name?: string;\n codec?: CodecRef;\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\n/**\n * Bind-site placeholder: occupies the same positions as `ParamRef` in the\n * AST, but carries no value — the value is supplied per-execute by the\n * `PreparedStatement.execute(params)` caller and matched to this node by\n * `name`.\n */\nexport class PreparedParamRef extends Expression {\n readonly kind = 'prepared-param-ref' as const;\n readonly name: string;\n readonly codec: CodecRef;\n\n constructor(name: string, codec: CodecRef) {\n super();\n this.name = name;\n this.codec = frozenCodecRef(codec);\n this.freeze();\n }\n\n static of(name: string, codec: CodecRef): PreparedParamRef {\n return new PreparedParamRef(name, codec);\n }\n\n override accept<R>(visitor: ExprVisitor<R>): R {\n return visitor.preparedParam(this);\n }\n\n override rewrite(rewriter: ExpressionRewriter): AnyExpression {\n return rewriter.preparedParamRef ? rewriter.preparedParamRef(this) : this;\n }\n\n override fold<T>(folder: ExpressionFolder<T>): T {\n return folder.preparedParamRef ? folder.preparedParamRef(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 * Codec identity for the projected cell. Decode-side dispatch resolves the per-instance codec through `contractCodecs.forCodecRef(codec)` — content-keyed memoisation collapses repeated lookups for the same logical column onto one shared {@link Codec}.\n *\n * Stays `undefined` for non-column-bound projections (computed expressions, subqueries, raw aliases) whose decoded type the runtime cannot infer from a single contract column.\n */\n readonly codec: CodecRef | undefined;\n\n constructor(alias: string, expr: ProjectionExpr, codec?: CodecRef) {\n super();\n this.alias = alias;\n this.expr = expr;\n this.codec = codec ? frozenCodecRef(codec) : undefined;\n this.freeze();\n }\n\n static of(alias: string, expr: ProjectionExpr, codec?: CodecRef): ProjectionItem {\n return new ProjectionItem(alias, expr, codec);\n }\n\n withCodec(codec: CodecRef | undefined): ProjectionItem {\n return new ProjectionItem(this.alias, this.expr, codec);\n }\n}\n\nexport type LimitOffsetValue = number | AnyExpression;\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: LimitOffsetValue | undefined;\n readonly offset: LimitOffsetValue | 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: LimitOffsetValue | undefined;\n readonly offset: LimitOffsetValue | 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: LimitOffsetValue | undefined): SelectAst {\n return new SelectAst({ ...this, limit });\n }\n\n withOffset(offset: LimitOffsetValue | 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 projection.codec,\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: rewriteLimitOffset(this.limit, rewriter),\n offset: rewriteLimitOffset(this.offset, rewriter),\n selectAllIntent: this.selectAllIntent,\n });\n\n return rewriter.select ? rewriter.select(rewritten) : rewritten;\n }\n\n 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 if (typeof this.limit === 'object') {\n pushRefs(this.limit.collectColumnRefs());\n }\n if (typeof this.offset === 'object') {\n pushRefs(this.offset.collectColumnRefs());\n }\n\n return refs;\n }\n\n collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n const pushRefs = (params: ReadonlyArray<AnyParamRef>) => {\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 if (typeof this.limit === 'object') {\n pushRefs(this.limit.collectParamRefs());\n }\n if (typeof this.offset === 'object') {\n pushRefs(this.offset.collectParamRefs());\n }\n\n return refs;\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 | PreparedParamRef>>;\n\n constructor(set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>) {\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(\n set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>>,\n ): 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<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n rows: ReadonlyArray<Record<string, InsertValue>> = [{}],\n onConflict?: InsertOnConflict,\n returning?: ReadonlyArray<ProjectionItem>,\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<ProjectionItem> | 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 rewrite(rewriter: AstRewriter): InsertAst {\n return new InsertAst(\n rewriteTableSource(this.table, rewriter),\n this.rows.map((row) => rewriteInsertRow(row, rewriter)),\n this.onConflict ? rewriteOnConflict(this.onConflict, rewriter) : undefined,\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n for (const row of this.rows) {\n for (const value of Object.values(row)) {\n if (value.kind === 'param-ref' || value.kind === 'prepared-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' || value.kind === 'prepared-param-ref') {\n refs.push(value);\n }\n }\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\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 | PreparedParamRef>>;\n readonly where: AnyExpression | undefined;\n readonly returning: ReadonlyArray<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n set: Readonly<Record<string, ColumnRef | ParamRef | PreparedParamRef>> = {},\n where?: AnyExpression,\n returning?: ReadonlyArray<ProjectionItem>,\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 | PreparedParamRef>>): 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<ProjectionItem> | undefined): UpdateAst {\n return new UpdateAst(this.table, this.set, this.where, returning);\n }\n\n rewrite(rewriter: AstRewriter): UpdateAst {\n return new UpdateAst(\n rewriteTableSource(this.table, rewriter),\n rewriteUpdateSet(this.set, rewriter),\n this.where?.rewrite(rewriter),\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n for (const value of Object.values(this.set)) {\n if (value.kind === 'param-ref' || value.kind === 'prepared-param-ref') {\n refs.push(value);\n }\n }\n if (this.where) {\n refs.push(...this.where.collectParamRefs());\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\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<ProjectionItem> | undefined;\n\n constructor(\n table: TableSource,\n where?: AnyExpression,\n returning?: ReadonlyArray<ProjectionItem>,\n ) {\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<ProjectionItem> | undefined): DeleteAst {\n return new DeleteAst(this.table, this.where, returning);\n }\n\n rewrite(rewriter: AstRewriter): DeleteAst {\n return new DeleteAst(\n rewriteTableSource(this.table, rewriter),\n this.where?.rewrite(rewriter),\n this.returning?.map((item) => rewriteProjectionItem(item, rewriter)),\n );\n }\n\n override collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n if (this.where) {\n refs.push(...this.where.collectParamRefs());\n }\n for (const item of this.returning ?? []) {\n if (item.expr.kind !== 'literal') {\n refs.push(...item.expr.collectParamRefs());\n }\n }\n return refs;\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\n/**\n * Raw-SQL query AST node carrying interpolated parameter / expression nodes\n * embedded inside literal SQL fragments.\n *\n * `fragments` and `args` are interleaved during lowering:\n * `fragments[0] + lower(args[0]) + fragments[1] + ... + fragments[n]`.\n * Construction enforces `fragments.length === args.length + 1`.\n *\n * Extends {@link QueryAst} (whole-query AST, not a sub-expression).\n * Construction does not validate that each arg is a `ParamRef` /\n * `AnyExpression`: the type system already rejects bare values because\n * `args` is typed `readonly AnyExpression[]`. The user-facing `raw\\`...\\``\n * factory (separate `sql-raw-factory` component) layers stricter\n * type-level rejection on top of this AST node.\n */\nexport class RawSqlExpr extends QueryAst {\n readonly kind = 'raw-sql' as const;\n readonly fragments: readonly string[];\n readonly args: readonly AnyExpression[];\n\n constructor(fragments: readonly string[], args: readonly AnyExpression[]) {\n super();\n if (fragments.length !== args.length + 1) {\n throw new Error(\n `RawSqlExpr: fragments.length must equal args.length + 1 (got fragments=${fragments.length}, args=${args.length})`,\n );\n }\n this.fragments = Object.freeze([...fragments]);\n this.args = Object.freeze([...args]);\n this.freeze();\n }\n\n static of(fragments: readonly string[], args: readonly AnyExpression[]): RawSqlExpr {\n return new RawSqlExpr(fragments, args);\n }\n\n override collectParamRefs(): AnyParamRef[] {\n const refs: AnyParamRef[] = [];\n for (const arg of this.args) {\n if (arg.kind === 'param-ref') {\n refs.push(arg);\n } else {\n refs.push(...arg.collectParamRefs());\n }\n }\n return refs;\n }\n\n override toQueryAst(): AnyQueryAst {\n return this;\n }\n}\n\nexport type AnyQueryAst = SelectAst | InsertAst | UpdateAst | DeleteAst | RawSqlExpr;\nexport type AnyFromSource = TableSource | DerivedTableSource;\nexport type AnyExpression =\n | ColumnRef\n | IdentifierRef\n | ParamRef\n | PreparedParamRef\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 AnyParamRef = ParamRef | PreparedParamRef;\nexport type AnyInsertOnConflictAction = DoNothingConflictAction | DoUpdateSetConflictAction;\nexport type AnyInsertValue = ColumnRef | ParamRef | PreparedParamRef | DefaultValueExpr;\nexport type AnyOperationArg = AnyExpression | ParamRef | PreparedParamRef | LiteralExpr;\n\nexport const queryAstKinds: ReadonlySet<string> = new Set<AnyQueryAst['kind']>([\n 'select',\n 'insert',\n 'update',\n 'delete',\n 'raw-sql',\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\n/**\n * One positional slot of a lowered SQL statement.\n *\n * - `literal` — a value baked into the AST; passes through to the driver.\n * - `bind` — a `PreparedParamRef` placeholder; the runtime resolves the\n * value from the per-execute `userParams[name]` before calling the driver.\n *\n * The same `name` may legitimately appear in multiple `bind` slots when a\n * renderer does not dedupe `PreparedParamRef` occurrences (e.g. SQLite's\n * positional `?` walker calls `ast.collectParamRefs()` directly rather than\n * `collectOrderedParamRefs`); resolution-by-name handles that case\n * correctly. See `collectOrderedParamRefs` in `./util` for the dedupe\n * contract used by Postgres' `$N` renderer.\n */\nexport type LoweredParam =\n | { readonly kind: 'literal'; readonly value: unknown }\n | { readonly kind: 'bind'; readonly name: string };\n\nexport interface LoweredStatement {\n readonly sql: string;\n readonly params: readonly LoweredParam[];\n readonly annotations?: Record<string, unknown>;\n}\n"],"mappings":"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"}