@prisma-next/sql-builder 0.5.0-dev.65 → 0.5.0-dev.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,9 +26,9 @@ type JoinSource<Row extends ScopeTable, Alias extends string> = {
26
26
  getJoinOuterScope(): Scope;
27
27
  buildAst(): AnyFromSource;
28
28
  };
29
- type DefaultScope<Name$1 extends string, Table extends StorageTable$1> = {
29
+ type DefaultScope<Name extends string, Table extends StorageTable$1> = {
30
30
  topLevel: StorageTableToScopeTable<Table>;
31
- namespaces: { [K in Name$1]: StorageTableToScopeTable<Table> };
31
+ namespaces: { [K in Name]: StorageTableToScopeTable<Table> };
32
32
  };
33
33
  type StorageTableToScopeTable<T extends StorageTable$1> = { [K in keyof T['columns']]: {
34
34
  codecId: T['columns'][K]['codecId'];
@@ -150,10 +150,10 @@ type AggregateOnlyFunctions = {
150
150
  type AggregateFunctions<QC extends QueryContext> = Functions<QC> & AggregateOnlyFunctions;
151
151
  //#endregion
152
152
  //#region src/resolve.d.ts
153
- type ResolveField<F$1 extends ScopeField, CodecTypes extends Record<string, {
153
+ type ResolveField<F extends ScopeField, CodecTypes extends Record<string, {
154
154
  readonly output: unknown;
155
- }>> = F$1['codecId'] extends keyof CodecTypes ? F$1['nullable'] extends true ? CodecTypes[F$1['codecId']]['output'] | null : CodecTypes[F$1['codecId']]['output'] : unknown;
156
- type ApplyNullable<T, F$1 extends ScopeField> = F$1['nullable'] extends true ? T | null : T;
155
+ }>> = F['codecId'] extends keyof CodecTypes ? F['nullable'] extends true ? CodecTypes[F['codecId']]['output'] | null : CodecTypes[F['codecId']]['output'] : unknown;
156
+ type ApplyNullable<T, F extends ScopeField> = F['nullable'] extends true ? T | null : T;
157
157
  type ResolveRow<Row extends Record<string, ScopeField>, CodecTypes extends Record<string, {
158
158
  readonly output: unknown;
159
159
  }>, PreResolved extends Record<string, unknown> = Record<string, never>> = Expand<{ -readonly [K in keyof Row]: string extends keyof PreResolved ? ResolveField<Row[K], CodecTypes> : K extends keyof PreResolved ? ApplyNullable<NonNullable<PreResolved[K & keyof PreResolved]>, Row[K]> : ResolveField<Row[K], CodecTypes> }>;
@@ -265,14 +265,14 @@ interface WithBuild<QC extends QueryContext, RowType extends Record<string, Scop
265
265
  }
266
266
  //#endregion
267
267
  //#region src/types/table-proxy.d.ts
268
- type FindModelForTable<C, TableName$1 extends string> = C extends {
268
+ type FindModelForTable<C, TableName extends string> = C extends {
269
269
  readonly models: infer Models extends Record<string, {
270
270
  readonly storage: {
271
271
  readonly table: string;
272
272
  };
273
273
  }>;
274
- } ? { [M in keyof Models & string]: Models[M]['storage']['table'] extends TableName$1 ? M : never }[keyof Models & string] : never;
275
- type FindFieldForColumn<C, ModelName$1 extends string, ColumnName extends string> = C extends {
274
+ } ? { [M in keyof Models & string]: Models[M]['storage']['table'] extends TableName ? M : never }[keyof Models & string] : never;
275
+ type FindFieldForColumn<C, ModelName extends string, ColumnName extends string> = C extends {
276
276
  readonly models: infer Models extends Record<string, {
277
277
  readonly storage: {
278
278
  readonly fields: Record<string, {
@@ -280,28 +280,28 @@ type FindFieldForColumn<C, ModelName$1 extends string, ColumnName extends string
280
280
  }>;
281
281
  };
282
282
  }>;
283
- } ? ModelName$1 extends keyof Models ? { [F in keyof Models[ModelName$1]['storage']['fields'] & string]: Models[ModelName$1]['storage']['fields'][F]['column'] extends ColumnName ? F : never }[keyof Models[ModelName$1]['storage']['fields'] & string] : never : never;
284
- type ResolvedColumnTypes<C, TableName$1 extends string, FieldTypes extends Record<string, Record<string, unknown>>> = string extends keyof FieldTypes ? Record<string, never> : FindModelForTable<C, TableName$1> extends infer ModelName extends string ? ModelName extends keyof FieldTypes ? C extends {
283
+ } ? ModelName extends keyof Models ? { [F in keyof Models[ModelName]['storage']['fields'] & string]: Models[ModelName]['storage']['fields'][F]['column'] extends ColumnName ? F : never }[keyof Models[ModelName]['storage']['fields'] & string] : never : never;
284
+ type ResolvedColumnTypes<C, TableName extends string, FieldTypes extends Record<string, Record<string, unknown>>> = string extends keyof FieldTypes ? Record<string, never> : FindModelForTable<C, TableName> extends infer ModelName extends string ? ModelName extends keyof FieldTypes ? C extends {
285
285
  readonly storage: {
286
286
  readonly tables: infer Tables extends Record<string, StorageTable>;
287
287
  };
288
- } ? TableName$1 extends keyof Tables ? { [ColName in keyof Tables[TableName$1]['columns'] & string]: FindFieldForColumn<C, ModelName, ColName> extends infer FieldName extends string ? FieldName extends keyof FieldTypes[ModelName] ? FieldTypes[ModelName][FieldName] : unknown : unknown } : Record<string, never> : Record<string, never> : Record<string, never> : Record<string, never>;
289
- type ResolvedInsertValues<C, Table extends StorageTable, TableName$1 extends string, CT extends Record<string, {
288
+ } ? TableName extends keyof Tables ? { [ColName in keyof Tables[TableName]['columns'] & string]: FindFieldForColumn<C, ModelName, ColName> extends infer FieldName extends string ? FieldName extends keyof FieldTypes[ModelName] ? FieldTypes[ModelName][FieldName] : unknown : unknown } : Record<string, never> : Record<string, never> : Record<string, never> : Record<string, never>;
289
+ type ResolvedInsertValues<C, Table extends StorageTable, TableName extends string, CT extends Record<string, {
290
290
  readonly input: unknown;
291
- }>, FieldInputs extends Record<string, Record<string, unknown>>> = string extends keyof FieldInputs ? InsertValues<Table, CT> : FindModelForTable<C, TableName$1> extends infer ModelName extends string ? ModelName extends keyof FieldInputs ? { [K in keyof Table['columns']]?: FindFieldForColumn<C, ModelName, K & string> extends infer FieldName extends string ? FieldName extends keyof FieldInputs[ModelName] ? Table['columns'][K]['nullable'] extends true ? NonNullable<FieldInputs[ModelName][FieldName]> | null : NonNullable<FieldInputs[ModelName][FieldName]> : Table['columns'][K]['codecId'] extends keyof CT ? CT[Table['columns'][K]['codecId']]['input'] : unknown : Table['columns'][K]['codecId'] extends keyof CT ? CT[Table['columns'][K]['codecId']]['input'] : unknown } : InsertValues<Table, CT> : InsertValues<Table, CT>;
292
- type ResolvedUpdateValues<C, Table extends StorageTable, TableName$1 extends string, CT extends Record<string, {
291
+ }>, FieldInputs extends Record<string, Record<string, unknown>>> = string extends keyof FieldInputs ? InsertValues<Table, CT> : FindModelForTable<C, TableName> extends infer ModelName extends string ? ModelName extends keyof FieldInputs ? { [K in keyof Table['columns']]?: FindFieldForColumn<C, ModelName, K & string> extends infer FieldName extends string ? FieldName extends keyof FieldInputs[ModelName] ? Table['columns'][K]['nullable'] extends true ? NonNullable<FieldInputs[ModelName][FieldName]> | null : NonNullable<FieldInputs[ModelName][FieldName]> : Table['columns'][K]['codecId'] extends keyof CT ? CT[Table['columns'][K]['codecId']]['input'] : unknown : Table['columns'][K]['codecId'] extends keyof CT ? CT[Table['columns'][K]['codecId']]['input'] : unknown } : InsertValues<Table, CT> : InsertValues<Table, CT>;
292
+ type ResolvedUpdateValues<C, Table extends StorageTable, TableName extends string, CT extends Record<string, {
293
293
  readonly input: unknown;
294
- }>, FieldInputs extends Record<string, Record<string, unknown>>> = ResolvedInsertValues<C, Table, TableName$1, CT, FieldInputs>;
295
- type ContractToQC<C extends TableProxyContract, Name$1 extends string = string> = {
294
+ }>, FieldInputs extends Record<string, Record<string, unknown>>> = ResolvedInsertValues<C, Table, TableName, CT, FieldInputs>;
295
+ type ContractToQC<C extends TableProxyContract, Name extends string = string> = {
296
296
  readonly codecTypes: ExtractCodecTypes<C>;
297
297
  readonly capabilities: C['capabilities'];
298
298
  readonly queryOperationTypes: ExtractQueryOperationTypes<C>;
299
- readonly resolvedColumnOutputTypes: ResolvedColumnTypes<C, Name$1, ExtractFieldOutputTypes<C>>;
299
+ readonly resolvedColumnOutputTypes: ResolvedColumnTypes<C, Name, ExtractFieldOutputTypes<C>>;
300
300
  };
301
- interface TableProxy<C extends TableProxyContract, Name$1 extends string & keyof C['storage']['tables'], Alias extends string = Name$1, AvailableScope extends Scope = DefaultScope<Name$1, C['storage']['tables'][Name$1]>, QC extends QueryContext = ContractToQC<C, Name$1>> extends JoinSource<StorageTableToScopeTable<C['storage']['tables'][Name$1]>, Alias>, WithSelect<QC, AvailableScope, EmptyRow>, WithJoin<QC, AvailableScope, C['capabilities']> {
302
- as<NewAlias extends string>(newAlias: NewAlias): TableProxy<C, Name$1, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>>;
303
- insert(values: ResolvedInsertValues<C, C['storage']['tables'][Name$1], Name$1, QC['codecTypes'], ExtractFieldInputTypes<C>>): InsertQuery<QC, AvailableScope, EmptyRow>;
304
- update(set: ResolvedUpdateValues<C, C['storage']['tables'][Name$1], Name$1, QC['codecTypes'], ExtractFieldInputTypes<C>>): UpdateQuery<QC, AvailableScope, EmptyRow>;
301
+ interface TableProxy<C extends TableProxyContract, Name extends string & keyof C['storage']['tables'], Alias extends string = Name, AvailableScope extends Scope = DefaultScope<Name, C['storage']['tables'][Name]>, QC extends QueryContext = ContractToQC<C, Name>> extends JoinSource<StorageTableToScopeTable<C['storage']['tables'][Name]>, Alias>, WithSelect<QC, AvailableScope, EmptyRow>, WithJoin<QC, AvailableScope, C['capabilities']> {
302
+ as<NewAlias extends string>(newAlias: NewAlias): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>>;
303
+ insert(values: ResolvedInsertValues<C, C['storage']['tables'][Name], Name, QC['codecTypes'], ExtractFieldInputTypes<C>>): InsertQuery<QC, AvailableScope, EmptyRow>;
304
+ update(set: ResolvedUpdateValues<C, C['storage']['tables'][Name], Name, QC['codecTypes'], ExtractFieldInputTypes<C>>): UpdateQuery<QC, AvailableScope, EmptyRow>;
305
305
  delete(): DeleteQuery<QC, AvailableScope, EmptyRow>;
306
306
  }
307
307
  //#endregion
@@ -316,4 +316,4 @@ type TableProxyContract = {
316
316
  type Db<C extends TableProxyContract> = { [Name in string & keyof C['storage']['tables']]: TableProxy<C, Name> };
317
317
  //#endregion
318
318
  export { ScopeField as _, GroupedQuery as a, UpdateQuery as c, Expression$1 as d, FieldProxy as f, Scope as g, QueryContext as h, SelectQuery as i, ResolveRow as l, GatedMethod as m, TableProxyContract as n, DeleteQuery as o, Functions as p, TableProxy as r, InsertQuery as s, Db as t, AggregateFunctions as u, Subquery as v };
319
- //# sourceMappingURL=db-T7YxA-v6.d.mts.map
319
+ //# sourceMappingURL=db-DkZcNekS.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-DkZcNekS.d.mts","names":[],"sources":["../src/scope.ts","../src/expression.ts","../src/resolve.ts","../src/types/mutation-query.ts","../src/types/joined-tables.ts","../src/types/grouped-query.ts","../src/types/select-query.ts","../src/types/shared.ts","../src/types/table-proxy.ts","../src/types/db.ts"],"mappings":";;;;;;KAMY,cAAA,GAAiB,MAAA;EAAA,SAA0B,KAAA;EAAA,SAAyB,MAAA;AAAA;AAAA,KAKpE,WAAA,mCAA8C,YAAA,SAAqB,QAAA,GAC3E,MAAA;AAAA,cAGiB,cAAA;AAAA,cACA,cAAA;AAAA,KAET,MAAA,oBAA0B,CAAA,GAAI,CAAA,CAAE,CAAA;AAAA,KAChC,QAAA,GAAW,MAAA,QAAc,UAAA;AAAA,KAEzB,UAAA,GAAa,MAAA,SAAe,UAAA;AAAA,KAE5B,KAAA;EACV,QAAA,EAAU,UAAA;EACV,UAAA,EAAY,MAAA,SAAe,UAAA;AAAA;AAAA,KAGjB,UAAA,aAAuB,UAAA;EAAA,UACvB,cAAA;IACR,QAAA,EAAU,GAAA;IACV,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,GAAA;EAAA;EAG5B,iBAAA,IAAqB,KAAA;EACrB,QAAA,IAAY,aAAA;AAAA;AAAA,KAGF,YAAA,oCAAgD,cAAA;EAC1D,QAAA,EAAU,wBAAA,CAAyB,KAAA;EACnC,UAAA,UACQ,IAAA,GAAO,wBAAA,CAAyB,KAAA;AAAA;AAAA,KAI9B,wBAAA,WAAmC,cAAA,kBACjC,CAAA;EACV,OAAA,EAAS,CAAA,YAAa,CAAA;EACtB,QAAA,EAAU,CAAA,YAAa,CAAA;AAAA;AAAA,KAIf,WAAA,WAAsB,KAAA,YAAiB,KAAA;EACjD,QAAA,EAAU,MAAA,CACR,IAAA,CAAK,CAAA,oBAAqB,CAAA,gBAAiB,IAAA,CAAK,CAAA,oBAAqB,CAAA;EAEvE,UAAA,EAAY,MAAA,CAAO,CAAA,iBAAkB,CAAA;AAAA;AAAA,KAG3B,WAAA,WAAsB,KAAA;EAChC,QAAA,EAAU,CAAA;EACV,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,CAAA,gBAAiB,MAAA,IAAU,MAAA,CAAO,MAAA,EAAQ,CAAA,eAAgB,MAAA;AAAA;AAAA,KAGxE,kBAAA,WAA6B,UAAA,kBAC3B,CAAA;EAAM,OAAA,EAAS,CAAA,CAAE,CAAA;EAAe,QAAA;AAAA;AAAA,KAGlC,aAAA,WAAwB,KAAA;EAClC,QAAA,EAAU,kBAAA,CAAmB,CAAA;EAC7B,UAAA,wBACsB,CAAA,iBAAkB,kBAAA,CAAmB,CAAA,eAAgB,SAAA;AAAA;AAAA,KAIjE,QAAA,iBAAyB,MAAA,SAAe,UAAA;EAAA,CACjD,cAAA,GAAiB,OAAA;EAClB,QAAA,IAAY,SAAA;EACZ,YAAA,IAAgB,MAAA,SAAe,UAAA;AAAA;AAAA,KAGrB,YAAA;EAAA,SACD,UAAA,EAAY,cAAA;EAAA,SACZ,YAAA,EAAc,MAAA,SAAe,MAAA;EAAA,SAC7B,mBAAA,EAAqB,uBAAA;EAAA,SACrB,yBAAA,EAA2B,MAAA;AAAA;;;KC3E1B,gBAAA;EAAqB,OAAA;EAAsB,QAAA;AAAA;AAAA,KAE3C,SAAA,uBAAgC,UAAA,0BAAoC,MAAA,CAC9E,MAAA,WAAiB,KAAA,GAAQ,KAAA;AAAA,KAGf,UAAA,2BAEQ,UAAA,kCACc,SAAA,OAC9B,MAAA,CAAO,MAAA,GAAS,IAAA,CAAK,SAAA,EAAW,OAAA;AAAA,KAExB,kBAAA,WAA6B,MAAA,SAAe,YAAA,CAAW,UAAA,oBACrD,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,YAAA,iBAA2B,UAAA,IAAc,CAAA;AAAA,KAG5D,UAAA,wBAAkC,KAAA,kBAChC,cAAA,eAA6B,YAAA,CAAW,cAAA,aAA2B,CAAA,6BAE3D,cAAA,+BACN,cAAA,eAA6B,SAAA,IAAa,YAAA,CACpD,cAAA,eAA6B,SAAA,EAAW,CAAA;AAAA,KAKlC,iBAAA,wBAAyC,KAAA,aAAkB,YAAA,KACrE,MAAA,EAAQ,UAAA,CAAW,cAAA,GACnB,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,gBAAA;AAAA,KAEJ,gBAAA;AAAA,KACA,YAAA;AAAA,KAEA,cAAA;EACV,SAAA,GAAY,gBAAA;EACZ,KAAA,GAAQ,YAAA;AAAA;AAAA,KAGE,YAAA,wBACa,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,QAAA,EAAU,MAAA,CAAO,cAAA,eAA6B,OAAA;EAC9C,UAAA,EAAY,cAAA;AAAA;AAAA,KAGT,kBAAA,YAA8B,uBAAA,kBACrB,EAAA,GAAK,EAAA,CAAG,CAAA;AAAA,KAGV,gBAAA,YAA4B,MAAA;EAAA,SAA0B,KAAA;AAAA;EAChE,EAAA,2BACE,CAAA,EAAG,eAAA,CAAgB,OAAA,WAAkB,EAAA,UACrC,CAAA,EAAG,eAAA,CAAgB,OAAA,WAAkB,EAAA,aAClC,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,UAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,aAC5B,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,EAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,8CACE,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,GAC/B,CAAA,EAAG,eAAA,CAAgB,OAAA,EAAS,CAAA,EAAG,EAAA,MAC5B,YAAA,CAAW,gBAAA;EAChB,GAAA,MAAS,IAAA,EAAM,eAAA,uBAAsC,EAAA,QAAU,YAAA,CAAW,gBAAA;EAC1E,EAAA,MAAQ,GAAA,EAAK,eAAA,uBAAsC,EAAA,QAAU,YAAA,CAAW,gBAAA;EAExE,MAAA,GAAS,QAAA,EAAU,QAAA,CAAS,MAAA,SAAe,UAAA,OAAiB,YAAA,CAAW,gBAAA;EACvE,SAAA,GAAY,QAAA,EAAU,QAAA,CAAS,MAAA,SAAe,UAAA,OAAiB,YAAA,CAAW,gBAAA;EAE1E,EAAA;IAAA,yBAEI,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,QAAA,EAAU,QAAA,CAAS,MAAA;MAAiB,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,MACrD,YAAA,CAAW,gBAAA;IAAA,yBAEZ,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,MAAA,EAAQ,KAAA,CAAM,eAAA,CAAgB,OAAA,WAAkB,EAAA,KAC/C,YAAA,CAAW,gBAAA;EAAA;EAGhB,KAAA;IAAA,yBAEI,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,QAAA,EAAU,QAAA,CAAS,MAAA;MAAiB,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,MACrD,YAAA,CAAW,gBAAA;IAAA,yBAEZ,IAAA,EAAM,YAAA;MAAa,OAAA,EAAS,OAAA;MAAS,QAAA;IAAA,IACrC,MAAA,EAAQ,KAAA,CAAM,eAAA,CAAgB,OAAA,WAAkB,EAAA,KAC/C,YAAA,CAAW,gBAAA;EAAA;AAAA;AAAA,KAIN,SAAA,YAAqB,YAAA,IAAgB,gBAAA,CAAiB,EAAA,kBAChE,kBAAA,CAAmB,EAAA;AAAA,KAET,UAAA;EAAe,OAAA;EAAsB,QAAA;AAAA;AAAA,KAErC,sBAAA;EACV,KAAA,GAAQ,IAAA,GAAO,YAAA,CAAW,UAAA,MAAgB,YAAA,CAAW,UAAA;EACrD,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;EACzC,GAAA,aAAgB,UAAA,EACd,IAAA,EAAM,YAAA,CAAW,CAAA,MACd,YAAA;IAAa,OAAA,EAAS,CAAA;IAAc,QAAA;EAAA;AAAA;AAAA,KAG/B,kBAAA,YAA8B,YAAA,IAAgB,SAAA,CAAU,EAAA,IAAM,sBAAA;;;KCtIrE,YAAA,WACO,UAAA,qBACS,MAAA;EAAA,SAA0B,MAAA;AAAA,MAC3C,CAAA,0BAA2B,UAAA,GAC3B,CAAA,4BACE,UAAA,CAAW,CAAA,gCACX,UAAA,CAAW,CAAA;AAAA,KAGZ,aAAA,cAA2B,UAAA,IAAc,CAAA,4BAA6B,CAAA,UAAW,CAAA;AAAA,KAE1E,UAAA,aACE,MAAA,SAAe,UAAA,sBACR,MAAA;EAAA,SAA0B,MAAA;AAAA,wBACzB,MAAA,oBAA0B,MAAA,mBAC5C,MAAA,yBACoB,GAAA,wBAA2B,WAAA,GAC7C,YAAA,CAAa,GAAA,CAAI,CAAA,GAAI,UAAA,IACrB,CAAA,eAAgB,WAAA,GACd,aAAA,CAAc,WAAA,CAAY,WAAA,CAAY,CAAA,SAAU,WAAA,IAAe,GAAA,CAAI,CAAA,KACnE,YAAA,CAAa,GAAA,CAAI,CAAA,GAAI,UAAA;;;KChBjB,mBAAA;EAAwB,GAAA;IAAO,SAAA;EAAA;AAAA;AAAA,KAG/B,YAAA,eACI,YAAA,aACH,MAAA;EAAA,SAA0B,KAAA;AAAA,oBAEzB,KAAA,eAAoB,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GACzE,EAAA,CAAG,KAAA,YAAiB,CAAA;AAAA,UAaT,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;AAAA,UAG7C,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACpF,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;AAAA,UAG7C,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA;EAE/B,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EACpF,SAAA,EAAW,WAAA,CACT,EAAA,kBACA,mBAAA,0BACwB,cAAA,6BACnB,OAAA,EAAS,OAAA,KACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,QAAA,EAAU,cAAA,cAA4B,OAAA;EAExF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;;;UCpE7C,YAAA,YAAwB,YAAA,yBAAqC,KAAA,UACpE,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,QAAA,GACrC,QAAA,CAAS,EAAA,EAAI,cAAA,EAAgB,EAAA;;;UCOhB,YAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,WACvB,QAAA,CAAS,OAAA,GACf,cAAA,EACA,YAAA,EACA,SAAA,CAAU,OAAA,GACV,SAAA,CAAU,EAAA,EAAI,OAAA;EAChB,OAAA,IACK,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,MAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,kBAAA,CAAmB,EAAA,MACrB,YAAA,CAAW,gBAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,KAAA,SAAc,OAAA,SAAgB,cAAA,wBAC9B,OAAA,GAAU,cAAA,GACT,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,kBAAA,CAAmB,EAAA,MACrB,YAAA,CAAW,UAAA,GAChB,OAAA,GAAU,cAAA,GACT,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,UAAA,EAAY,WAAA,CACV,EAAA;IACE,QAAA;MAAY,UAAA;IAAA;EAAA;IAAA,IAGP,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;IAAA,CAElC,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAAA;AAAA;;;UCpDzB,WAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,WACvB,QAAA,CAAS,OAAA,GACf,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,OAAA,GAC/B,cAAA,EACA,YAAA,EACA,SAAA,CAAU,OAAA,GACV,SAAA,CAAU,EAAA,EAAI,OAAA;EAChB,KAAA,CAAM,IAAA,EAAM,iBAAA,CAAkB,cAAA,EAAgB,EAAA,IAAM,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpF,OAAA,CACE,KAAA,SAAc,OAAA,SAAgB,cAAA,wBAC9B,OAAA,GAAU,cAAA,GACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEnC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,GAChB,OAAA,GAAU,cAAA,GACT,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEnC,OAAA,IACK,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,OAAA,CACE,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,YAAA,CAAa,EAAA,EAAI,cAAA,EAAgB,OAAA;EAEpC,UAAA,EAAY,WAAA,CACV,EAAA;IACE,QAAA;MAAY,UAAA;IAAA;EAAA;IAAA,IAGP,MAAA,UAAgB,OAAA,SAAgB,cAAA,4BAClC,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;IAAA,CAEjC,IAAA,GACE,MAAA,EAAQ,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,OAAA,IAChD,GAAA,EAAK,SAAA,CAAU,EAAA,MACZ,YAAA,CAAW,UAAA,IACf,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,OAAA;EAAA;AAAA;;;UChCxB,cAAA,YAA0B,YAAA,sBAAkC,KAAA;EAC3E,IAAA,eAAmB,UAAA,CAAW,UAAA,mBAC5B,KAAA,EAAO,KAAA,GACN,WAAA,CAAY,EAAA,EAAI,WAAA,CAAY,WAAA,EAAa,KAAA,QAAa,cAAA,IAAkB,QAAA;AAAA;AAAA,UAG5D,UAAA,YACJ,YAAA,yBACY,KAAA,kBACP,MAAA,SAAe,UAAA,IAAc,QAAA;EAE7C,MAAA,wBAA8B,cAAA,6BACzB,OAAA,EAAS,OAAA,GACX,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,UAAA,CAAW,OAAA,EAAS,cAAA,cAA4B,OAAA;EAEnF,MAAA,qCAA2C,UAAA,EACzC,KAAA,EAAO,KAAA,EACP,IAAA,GAAO,MAAA,EAAQ,UAAA,CAAW,cAAA,GAAiB,GAAA,EAAK,kBAAA,CAAmB,EAAA,MAAQ,YAAA,CAAW,KAAA,IACrF,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,SAAA,CAAU,OAAA,EAAS,KAAA,EAAO,KAAA;EAE7D,MAAA,gBAAsB,MAAA,SAAe,YAAA,CAAW,UAAA,IAC9C,QAAA,GAAW,MAAA,EAAQ,UAAA,CAAW,cAAA,GAAiB,GAAA,EAAK,kBAAA,CAAmB,EAAA,MAAQ,MAAA,GAC9E,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,MAAA,CAAO,OAAA,GAAU,kBAAA,CAAmB,MAAA;AAAA;AAAA,UAGxD,QAAA,YAAoB,YAAA,yBAAqC,KAAA;EACxE,SAAA,eAAwB,UAAA,CAAW,UAAA,mBACjC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA;EAE7D,aAAA,eAA4B,UAAA,CAAW,UAAA,mBACrC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,cAAA,EAAgB,aAAA,CAAc,KAAA,QAAa,cAAA;EAE3E,cAAA,eAA6B,UAAA,CAAW,UAAA,mBACtC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CAAa,EAAA,EAAI,WAAA,CAAY,aAAA,CAAc,cAAA,GAAiB,KAAA,QAAa,cAAA;EAE5E,aAAA,eAA4B,UAAA,CAAW,UAAA,mBACrC,KAAA,EAAO,KAAA,EACP,EAAA,EAAI,iBAAA,CAAkB,WAAA,CAAY,cAAA,EAAgB,KAAA,QAAa,cAAA,IAAkB,EAAA,IAChF,YAAA,CACD,EAAA,EACA,WAAA,CAAY,aAAA,CAAc,cAAA,GAAiB,aAAA,CAAc,KAAA,QAAa,cAAA;EAGxE,WAAA,EAAa,WAAA,CACX,YAAA;IACE,GAAA;MAAO,OAAA;IAAA;EAAA,6CACiC,MAAA,SAAe,UAAA,GACvD,KAAA,EAAO,KAAA,EACP,OAAA,GAAU,OAAA,EAAS,cAAA,CAAe,EAAA,EAAI,cAAA,MAAoB,QAAA,CAAS,UAAA,MAChE,YAAA,CACH,EAAA,EACA,WAAA,CAAY,cAAA;IAAkB,QAAA,EAAU,UAAA;IAAY,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,UAAA;EAAA;EAIlF,gBAAA,EAAkB,WAAA,CAChB,YAAA;IACE,GAAA;MAAO,OAAA;IAAA;EAAA,6CACiC,MAAA,SAAe,UAAA,GACvD,KAAA,EAAO,KAAA,EACP,OAAA,GAAU,OAAA,EAAS,cAAA,CAAe,EAAA,EAAI,cAAA,MAAoB,QAAA,CAAS,UAAA,MAChE,YAAA,CACH,EAAA,EACA,WAAA,CACE,cAAA,EACA,aAAA;IAAgB,QAAA,EAAU,UAAA;IAAY,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,UAAA;EAAA;AAAA;AAAA,UAMvD,cAAA;EACf,KAAA,CAAM,KAAA;EACN,MAAA,CAAO,KAAA;AAAA;AAAA,UAGQ,YAAA;EACf,QAAA;AAAA;AAAA,UAGe,SAAA,iBAA0B,MAAA,SAAe,UAAA;EACxD,EAAA,uBAAyB,QAAA,EAAU,KAAA,GAAQ,UAAA,CAAW,OAAA,EAAS,KAAA;AAAA;AAAA,UAGhD,SAAA,YAAqB,YAAA,kBAA8B,MAAA,SAAe,UAAA;EACjF,KAAA,IAAS,YAAA,CAAa,UAAA,CAAW,OAAA,EAAS,EAAA,gBAAkB,EAAA;AAAA;;;KCnGzD,iBAAA,gCAAiD,CAAA;EAAA,SAC3C,MAAA,uBAA6B,MAAA;IAAA,SAEzB,OAAA;MAAA,SAAoB,KAAA;IAAA;EAAA;AAAA,kBAIjB,MAAA,YAAkB,MAAA,CAAO,CAAA,8BAA+B,SAAA,GAAY,CAAA,iBAC1E,MAAA;AAAA,KAGP,kBAAA,2DAA6E,CAAA;EAAA,SACvE,MAAA,uBAA6B,MAAA;IAAA,SAEzB,OAAA;MAAA,SAAoB,MAAA,EAAQ,MAAA;QAAA,SAA0B,MAAA;MAAA;IAAA;EAAA;AAAA,IAGjE,SAAA,eAAwB,MAAA,iBAER,MAAA,CAAO,SAAA,kCACR,MAAA,CAAO,SAAA,uBAAgC,CAAA,oBAAqB,UAAA,GACnE,CAAA,iBAEE,MAAA,CAAO,SAAA;AAAA,KAIhB,mBAAA,iDAGgB,MAAA,SAAe,MAAA,2CACX,UAAA,GACrB,MAAA,kBACA,iBAAA,CAAkB,CAAA,EAAG,SAAA,2CACnB,SAAA,eAAwB,UAAA,GACtB,CAAA;EAAA,SACW,OAAA;IAAA,SAAoB,MAAA,uBAA6B,MAAA,SAAe,YAAA;EAAA;AAAA,IAEzE,SAAA,eAAwB,MAAA,uBAEF,MAAA,CAAO,SAAA,wBAAiC,kBAAA,CACxD,CAAA,EACA,SAAA,EACA,OAAA,2CAEE,SAAA,eAAwB,UAAA,CAAW,SAAA,IACjC,UAAA,CAAW,SAAA,EAAW,SAAA,0BAI9B,MAAA,kBACF,MAAA,kBACF,MAAA,kBACF,MAAA;AAAA,KAED,oBAAA,kBAEW,YAAA,uCAEH,MAAA;EAAA,SAA0B,KAAA;AAAA,wBACjB,MAAA,SAAe,MAAA,2CACZ,WAAA,GACrB,YAAA,CAAa,KAAA,EAAO,EAAA,IACpB,iBAAA,CAAkB,CAAA,EAAG,SAAA,2CACnB,SAAA,eAAwB,WAAA,iBAER,KAAA,eAAoB,kBAAA,CAC9B,CAAA,EACA,SAAA,EACA,CAAA,oDAEE,SAAA,eAAwB,WAAA,CAAY,SAAA,IAClC,KAAA,YAAiB,CAAA,6BACf,WAAA,CAAY,WAAA,CAAY,SAAA,EAAW,SAAA,YACnC,WAAA,CAAY,WAAA,CAAY,SAAA,EAAW,SAAA,KACrC,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GAC3C,EAAA,CAAG,KAAA,YAAiB,CAAA,mCAExB,KAAA,YAAiB,CAAA,2BAA4B,EAAA,GAC3C,EAAA,CAAG,KAAA,YAAiB,CAAA,qCAG5B,YAAA,CAAa,KAAA,EAAO,EAAA,IACtB,YAAA,CAAa,KAAA,EAAO,EAAA;AAAA,KAErB,oBAAA,kBAEW,YAAA,uCAEH,MAAA;EAAA,SAA0B,KAAA;AAAA,wBACjB,MAAA,SAAe,MAAA,sBACjC,oBAAA,CAAqB,CAAA,EAAG,KAAA,EAAO,SAAA,EAAW,EAAA,EAAI,WAAA;AAAA,KAE7C,YAAA,WAAuB,kBAAA;EAAA,SACjB,UAAA,EAAY,iBAAA,CAAkB,CAAA;EAAA,SAC9B,YAAA,EAAc,CAAA;EAAA,SACd,mBAAA,EAAqB,0BAAA,CAA2B,CAAA;EAAA,SAChD,yBAAA,EAA2B,mBAAA,CAAoB,CAAA,EAAG,IAAA,EAAM,uBAAA,CAAwB,CAAA;AAAA;AAAA,UAG1E,UAAA,WACL,kBAAA,8BACkB,CAAA,8CACL,IAAA,yBACA,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,CAAA,sBAAuB,IAAA,eAC9D,YAAA,GAAe,YAAA,CAAa,CAAA,EAAG,IAAA,WAClC,UAAA,CAAW,wBAAA,CAAyB,CAAA,sBAAuB,IAAA,IAAQ,KAAA,GACzE,UAAA,CAAW,EAAA,EAAI,cAAA,EAAgB,QAAA,GAC/B,QAAA,CAAS,EAAA,EAAI,cAAA,EAAgB,CAAA;EAC/B,EAAA,0BACE,QAAA,EAAU,QAAA,GACT,UAAA,CAAW,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,WAAA,CAAY,cAAA,EAAgB,KAAA,EAAO,QAAA;EAEpE,MAAA,CACE,MAAA,EAAQ,oBAAA,CACN,CAAA,EACA,CAAA,sBAAuB,IAAA,GACvB,IAAA,EACA,EAAA,gBACA,sBAAA,CAAuB,CAAA,KAExB,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;EAEnC,MAAA,CACE,GAAA,EAAK,oBAAA,CACH,CAAA,EACA,CAAA,sBAAuB,IAAA,GACvB,IAAA,EACA,EAAA,gBACA,sBAAA,CAAuB,CAAA,KAExB,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;EAEnC,MAAA,IAAU,WAAA,CAAY,EAAA,EAAI,cAAA,EAAgB,QAAA;AAAA;;;KCtJhC,gBAAA,GAAmB,MAAA,SAAe,MAAA;AAAA,KAElC,kBAAA;EAAA,SACD,OAAA;IAAA,SAAoB,MAAA,EAAQ,MAAA,SAAe,YAAA;EAAA;EAAA,SAC3C,YAAA,EAAc,gBAAA;AAAA;AAAA,KAGb,EAAA,WAAa,kBAAA,8BACC,CAAA,wBAAyB,UAAA,CAAW,CAAA,EAAG,IAAA"}
@@ -1,2 +1,2 @@
1
- import { _ as ScopeField, a as GroupedQuery, c as UpdateQuery, d as Expression, g as Scope, h as QueryContext, i as SelectQuery, l as ResolveRow, m as GatedMethod, n as TableProxyContract, o as DeleteQuery, p as Functions, r as TableProxy, s as InsertQuery, t as Db, u as AggregateFunctions, v as Subquery } from "../db-T7YxA-v6.mjs";
1
+ import { _ as ScopeField, a as GroupedQuery, c as UpdateQuery, d as Expression, g as Scope, h as QueryContext, i as SelectQuery, l as ResolveRow, m as GatedMethod, n as TableProxyContract, o as DeleteQuery, p as Functions, r as TableProxy, s as InsertQuery, t as Db, u as AggregateFunctions, v as Subquery } from "../db-DkZcNekS.mjs";
2
2
  export { type AggregateFunctions, type Db, type DeleteQuery, type Expression, type Functions, type GatedMethod, type GroupedQuery, type InsertQuery, type QueryContext, type ResolveRow, type Scope, type ScopeField, type SelectQuery, type Subquery, type TableProxy, type TableProxyContract, type UpdateQuery };
@@ -1 +1 @@
1
- export { };
1
+ export {};
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { _ as ScopeField, a as GroupedQuery, c as UpdateQuery, d as Expression, g as Scope, h as QueryContext, i as SelectQuery, l as ResolveRow, m as GatedMethod, o as DeleteQuery, p as Functions, r as TableProxy, s as InsertQuery, t as Db, u as AggregateFunctions, v as Subquery } from "./db-T7YxA-v6.mjs";
1
+ import { _ as ScopeField, a as GroupedQuery, c as UpdateQuery, d as Expression, g as Scope, h as QueryContext, i as SelectQuery, l as ResolveRow, m as GatedMethod, o as DeleteQuery, p as Functions, r as TableProxy, s as InsertQuery, t as Db, u as AggregateFunctions, v as Subquery } from "./db-DkZcNekS.mjs";
2
2
  export { type AggregateFunctions, type Db, type DeleteQuery, type Expression, type Functions, type GatedMethod, type GroupedQuery, type InsertQuery, type QueryContext, type ResolveRow, type Scope, type ScopeField, type SelectQuery, type Subquery, type TableProxy, type UpdateQuery };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export { };
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { _ as ScopeField, f as FieldProxy, g as Scope, h as QueryContext, p as Functions, t as Db, u as AggregateFunctions } from "../db-T7YxA-v6.mjs";
1
+ import { _ as ScopeField, f as FieldProxy, g as Scope, h as QueryContext, p as Functions, t as Db, u as AggregateFunctions } from "../db-DkZcNekS.mjs";
2
2
  import { AnyExpression } from "@prisma-next/sql-relational-core/ast";
3
3
  import { Expression } from "@prisma-next/sql-relational-core/expression";
4
4
  import { SqlStorage } from "@prisma-next/sql-contract/types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/runtime/expression-impl.ts","../../src/runtime/field-proxy.ts","../../src/runtime/functions.ts","../../src/runtime/sql.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;cASa,yBAAyB,aAAa,uBAAuB,WAAW;EAAxE,iBAAc,GAAA;EAAW,SAAA,UAAA,EAEf,CAFe;EAAa,SAAA,IAAA,EAAA;IAAkC,SAAA,KAAA,EAAA,MAAA;IAE9D,SAAA,MAAA,EAAA,MAAA;EAId,CAAA,GAAA,SAAA;EACO,WAAA,CAAA,GAAA,EADP,aACO,EAAA,UAAA,EAAA,CAAA,EAAA,IAPoE,CAOpE,EAAA;IAQF,SAAA,KAAA,EAAA,MAAA;IAf4D,SAAA,MAAA,EAAA,MAAA;EAAU,CAAA;cAetE;;;;iBCJE,2BAA2B,cAAc,IAAI,WAAW;;;iBC+KxD,2BAA2B,0BAC7B,SAAS,eAAe,sBACnC,UAAU;iBAeG,oCAAoC,0BACtC,SAAS,eAAe,sBACnC,mBAAmB;;;UC/ML,qBAAqB,SAAS;oBAC3B,iBAAiB;;iBAGrB,cAAc,SAAS,sBAAsB,WAAW,KAAK,GAAG"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/runtime/expression-impl.ts","../../src/runtime/field-proxy.ts","../../src/runtime/functions.ts","../../src/runtime/sql.ts"],"mappings":";;;;;;;;;;;;;;cASa,cAAA,WAAyB,UAAA,GAAa,UAAA,aAAuB,UAAA,CAAW,CAAA;EAAA,iBAClE,GAAA;EAAA,SACR,UAAA,EAAY,CAAA;EAAA,SACZ,IAAA;IAAA,SAAiB,KAAA;IAAA,SAAwB,MAAA;EAAA;cAGhD,GAAA,EAAK,aAAA,EACL,UAAA,EAAY,CAAA,EACZ,IAAA;IAAA,SAAkB,KAAA;IAAA,SAAwB,MAAA;EAAA;EAO5C,QAAA,CAAA,GAAY,aAAA;AAAA;;;iBCJE,gBAAA,WAA2B,KAAA,CAAA,CAAO,KAAA,EAAO,CAAA,GAAI,UAAA,CAAW,CAAA;;;iBC+KxD,eAAA,YAA2B,YAAA,CAAA,CACzC,UAAA,EAAY,QAAA,CAAS,MAAA,SAAe,iBAAA,KACnC,SAAA,CAAU,EAAA;AAAA,iBAeG,wBAAA,YAAoC,YAAA,CAAA,CAClD,UAAA,EAAY,QAAA,CAAS,MAAA,SAAe,iBAAA,KACnC,kBAAA,CAAmB,EAAA;;;UC/ML,UAAA,WAAqB,QAAA,CAAS,UAAA;EAAA,SACpC,OAAA,EAAS,gBAAA,CAAiB,CAAA;AAAA;AAAA,iBAGrB,GAAA,WAAc,QAAA,CAAS,UAAA,EAAA,CAAa,OAAA,EAAS,UAAA,CAAW,CAAA,IAAK,EAAA,CAAG,CAAA"}
@@ -1,6 +1,5 @@
1
1
  import { AggregateExpr, AndExpr, BinaryExpr, ColumnRef, DeleteAst, DerivedTableSource, ExistsExpr, IdentifierRef, InsertAst, JoinAst, ListExpression, LiteralExpr, NullCheckExpr, OrExpr, OrderByItem, ParamRef, ProjectionItem, SelectAst, SubqueryExpr, TableSource, UpdateAst, collectOrderedParamRefs } from "@prisma-next/sql-relational-core/ast";
2
2
  import { refsOf, toExpr } from "@prisma-next/sql-relational-core/expression";
3
-
4
3
  //#region src/runtime/expression-impl.ts
5
4
  /**
6
5
  * Runtime wrapper around a relational-core AST expression node. Carries ScopeField metadata (codecId, nullable) so aggregate-like combinators can propagate the input codec onto their result.
@@ -20,7 +19,6 @@ var ExpressionImpl = class {
20
19
  return this.ast;
21
20
  }
22
21
  };
23
-
24
22
  //#endregion
25
23
  //#region src/runtime/field-proxy.ts
26
24
  /**
@@ -62,7 +60,6 @@ function createNamespaceProxy(namespaceName, fields) {
62
60
  }
63
61
  } });
64
62
  }
65
-
66
63
  //#endregion
67
64
  //#region src/runtime/functions.ts
68
65
  const BOOL_FIELD = {
@@ -187,7 +184,6 @@ function createAggregateFunctions(operations) {
187
184
  return baseFns[prop];
188
185
  } });
189
186
  }
190
-
191
187
  //#endregion
192
188
  //#region src/runtime/builder-base.ts
193
189
  var BuilderBase = class {
@@ -410,9 +406,9 @@ function resolveGroupBy(args, scope, rowFields, ctx) {
410
406
  }
411
407
  function resolveDistinctOn(args, scope, rowFields, ctx) {
412
408
  if (args.length === 1 && typeof args[0] === "function") {
413
- const combined$1 = orderByScopeOf(scope, rowFields);
409
+ const combined = orderByScopeOf(scope, rowFields);
414
410
  const fns = createFunctions(ctx.queryOperationTypes);
415
- return [args[0](createFieldProxy(combined$1), fns).buildAst()];
411
+ return [args[0](createFieldProxy(combined), fns).buildAst()];
416
412
  }
417
413
  const combined = orderByScopeOf(scope, rowFields);
418
414
  return args.map((colName) => {
@@ -420,7 +416,6 @@ function resolveDistinctOn(args, scope, rowFields, ctx) {
420
416
  return IdentifierRef.of(colName);
421
417
  });
422
418
  }
423
-
424
419
  //#endregion
425
420
  //#region src/runtime/query-impl.ts
426
421
  var QueryBase = class extends BuilderBase {
@@ -506,7 +501,6 @@ var GroupedQueryImpl = class GroupedQueryImpl extends QueryBase {
506
501
  return this.clone(cloneState(this.state, { orderBy: [...this.state.orderBy, item] }));
507
502
  }
508
503
  };
509
-
510
504
  //#endregion
511
505
  //#region src/runtime/joined-tables-impl.ts
512
506
  var JoinedTablesImpl = class JoinedTablesImpl extends BuilderBase {
@@ -584,7 +578,6 @@ var JoinedTablesImpl = class JoinedTablesImpl extends BuilderBase {
584
578
  }), this.ctx);
585
579
  }
586
580
  };
587
-
588
581
  //#endregion
589
582
  //#region src/runtime/mutation-impl.ts
590
583
  function buildParamValues(values, table, tableName, op, ctx) {
@@ -724,7 +717,6 @@ var DeleteQueryImpl = class DeleteQueryImpl extends BuilderBase {
724
717
  return buildQueryPlan(ast, this.ctx);
725
718
  }
726
719
  };
727
-
728
720
  //#endregion
729
721
  //#region src/runtime/table-proxy-impl.ts
730
722
  var TableProxyImpl = class TableProxyImpl extends BuilderBase {
@@ -782,7 +774,6 @@ var TableProxyImpl = class TableProxyImpl extends BuilderBase {
782
774
  return new JoinedTablesImpl(emptyState(this.#fromSource, this.#scope), this.ctx);
783
775
  }
784
776
  };
785
-
786
777
  //#endregion
787
778
  //#region src/runtime/sql.ts
788
779
  function sql(options) {
@@ -792,7 +783,7 @@ function sql(options) {
792
783
  queryOperationTypes: context.queryOperations.entries(),
793
784
  target: context.contract.target ?? "unknown",
794
785
  storageHash: context.contract.storage.storageHash ?? "unknown",
795
- applyMutationDefaults: (options$1) => context.applyMutationDefaults(options$1)
786
+ applyMutationDefaults: (options) => context.applyMutationDefaults(options)
796
787
  };
797
788
  return new Proxy({}, { get(_target, prop) {
798
789
  const tables = context.contract.storage.tables;
@@ -800,7 +791,7 @@ function sql(options) {
800
791
  if (table) return new TableProxyImpl(prop, table, prop, ctx);
801
792
  } });
802
793
  }
803
-
804
794
  //#endregion
805
795
  export { ExpressionImpl, createAggregateFunctions, createFieldProxy, createFunctions, sql };
796
+
806
797
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["findUniqueNamespaceFor","found: string | undefined","BOOL_FIELD: BooleanCodecType","found: string | undefined","meta: PlanMeta","fields: ScopeTable","topLevel: ScopeTable","result: ScopeTable","namespaces: Record<string, ScopeTable>","projections: ProjectionItem[]","newRowFields: Record<string, ScopeField>","combined","#state","#buildLateral","#addLateralJoin","#addJoin","subqueryRowFields: ScopeTable","params: Record<string, ParamRef>","#tableName","#table","#scope","#values","#returningColumns","#rowFields","newRowFields: Record<string, ScopeField>","#setValues","#whereCallbacks","#tableName","#table","#fromSource","#scope","#toJoined","ctx: BuilderContext","options"],"sources":["../../src/runtime/expression-impl.ts","../../src/runtime/field-proxy.ts","../../src/runtime/functions.ts","../../src/runtime/builder-base.ts","../../src/runtime/query-impl.ts","../../src/runtime/joined-tables-impl.ts","../../src/runtime/mutation-impl.ts","../../src/runtime/table-proxy-impl.ts","../../src/runtime/sql.ts"],"sourcesContent":["import type { AnyExpression as AstExpression } from '@prisma-next/sql-relational-core/ast';\nimport type { Expression } from '@prisma-next/sql-relational-core/expression';\nimport type { ScopeField } from '../scope';\n\n/**\n * Runtime wrapper around a relational-core AST expression node. Carries ScopeField metadata (codecId, nullable) so aggregate-like combinators can propagate the input codec onto their result.\n *\n * `refs` records the column-bound binding (`{ table, column }`) when known — the field-proxy populates it for both the namespaced form (`f.user.email` → `ColumnRef`) and the top-level shortcut (`f.email` → `IdentifierRef` + refs metadata). Encode-side dispatch and the `validateParamRefRefs` pass read it via `refsOf(expression)`.\n */\nexport class ExpressionImpl<T extends ScopeField = ScopeField> implements Expression<T> {\n private readonly ast: AstExpression;\n readonly returnType: T;\n readonly refs: { readonly table: string; readonly column: string } | undefined;\n\n constructor(\n ast: AstExpression,\n returnType: T,\n refs?: { readonly table: string; readonly column: string },\n ) {\n this.ast = ast;\n this.returnType = returnType;\n this.refs = refs;\n }\n\n buildAst(): AstExpression {\n return this.ast;\n }\n}\n","import { ColumnRef, IdentifierRef } from '@prisma-next/sql-relational-core/ast';\nimport type { FieldProxy } from '../expression';\nimport type { Scope, ScopeTable } from '../scope';\nimport { ExpressionImpl } from './expression-impl';\n\n/**\n * For a top-level field name, find the namespace (table alias) that contributed it. When exactly one namespace owns the field, the top-level binding is unambiguously column-bound and we record that `(table, column)` pair on the `ExpressionImpl` so encode-side dispatch (`forColumn`) and the `validateParamRefRefs` pass can find it. The AST stays as `IdentifierRef` to preserve SQL rendering — adapters render top-level\n * identifiers without an explicit table qualifier — so this change is metadata-only and produces no SQL drift.\n */\nfunction findUniqueNamespaceFor(scope: Scope, fieldName: string): string | undefined {\n let found: string | undefined;\n for (const [namespace, fields] of Object.entries(scope.namespaces)) {\n if (Object.hasOwn(fields, fieldName)) {\n if (found !== undefined) return undefined;\n found = namespace;\n }\n }\n return found;\n}\n\nexport function createFieldProxy<S extends Scope>(scope: S): FieldProxy<S> {\n return new Proxy({} as FieldProxy<S>, {\n get(_target, prop: string) {\n if (Object.hasOwn(scope.topLevel, prop)) {\n const topField = scope.topLevel[prop];\n if (topField) {\n const namespace = findUniqueNamespaceFor(scope, prop);\n const refs = namespace ? { table: namespace, column: prop } : undefined;\n return new ExpressionImpl(IdentifierRef.of(prop), topField, refs);\n }\n }\n\n if (Object.hasOwn(scope.namespaces, prop)) {\n const nsFields = scope.namespaces[prop];\n if (nsFields) return createNamespaceProxy(prop, nsFields);\n }\n\n return undefined;\n },\n });\n}\n\nfunction createNamespaceProxy(\n namespaceName: string,\n fields: ScopeTable,\n): Record<string, ExpressionImpl> {\n return new Proxy({} as Record<string, ExpressionImpl>, {\n get(_target, prop: string) {\n if (Object.hasOwn(fields, prop)) {\n const field = fields[prop];\n if (field) return new ExpressionImpl(ColumnRef.of(namespaceName, prop), field);\n }\n return undefined;\n },\n });\n}\n","import type { SqlOperationEntry } from '@prisma-next/sql-operations';\nimport {\n AggregateExpr,\n AndExpr,\n type AnyExpression as AstExpression,\n BinaryExpr,\n type BinaryOp,\n ExistsExpr,\n ListExpression,\n LiteralExpr,\n NullCheckExpr,\n OrExpr,\n SubqueryExpr,\n} from '@prisma-next/sql-relational-core/ast';\nimport { refsOf, toExpr } from '@prisma-next/sql-relational-core/expression';\nimport type {\n AggregateFunctions,\n AggregateOnlyFunctions,\n BooleanCodecType,\n BuiltinFunctions,\n CodecExpression,\n Expression,\n Functions,\n} from '../expression';\nimport type { QueryContext, ScopeField, Subquery } from '../scope';\nimport { ExpressionImpl } from './expression-impl';\n\ntype CodecTypes = Record<string, { readonly input: unknown }>;\n// Runtime-level ExprOrVal — accepts any codec, any nullability. Concrete codec typing lives on the public BuiltinFunctions surface in `../expression`.\ntype ExprOrVal<CodecId extends string = string, N extends boolean = boolean> = CodecExpression<\n CodecId,\n N,\n CodecTypes\n>;\n\nconst BOOL_FIELD: BooleanCodecType = { codecId: 'pg/bool@1', nullable: false };\n\nconst resolve = toExpr;\n\n/**\n * Resolve a binary-comparison operand into an AST expression, threading the column-bound side's `codecId` + `refs` to the raw-value side.\n *\n * For `fns.eq(f.email, 'alice@example.com')`, `f.email` is the column-bound expression carrying a `ColumnRef` AST and a `returnType.codecId` (`pg/varchar@1`); the raw string operand has no codec context. By deriving the codec context from the column-bound side and forwarding it via `toExpr(value, codecId, refs)`, the resulting `ParamRef` carries the column refs that encode-side `forColumn` dispatch needs (and that the\n * validator pass requires for parameterized codec ids like `pg/varchar@1` with a length parameter).\n */\nfunction resolveOperand(\n operand: ExprOrVal,\n otherCodecId?: string,\n otherRefs?: { table: string; column: string },\n): AstExpression {\n if (isExpressionLike(operand)) return operand.buildAst();\n return toExpr(operand, otherCodecId, otherRefs);\n}\n\nfunction isExpressionLike(\n value: unknown,\n): value is { buildAst: () => AstExpression; returnType?: { codecId: string } } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'buildAst' in value &&\n typeof (value as { buildAst: unknown }).buildAst === 'function'\n );\n}\n\nfunction operandCodecId(operand: ExprOrVal): string | undefined {\n if (!isExpressionLike(operand)) return undefined;\n return (operand as { returnType?: { codecId: string } }).returnType?.codecId;\n}\n\nfunction operandRefs(operand: ExprOrVal): { table: string; column: string } | undefined {\n return refsOf(operand);\n}\n\n/**\n * Resolves an Expression via `buildAst()`, or wraps a raw value as a `LiteralExpr` — an SQL literal inlined into the query text, not a bound parameter.\n *\n * Used for `and` / `or` operands. The usual operand is an `Expression<bool>` (e.g. the result of `fns.eq`), which this function passes through by calling `buildAst()`. The only time the raw-value branch fires is when the caller writes `fns.and(true, x)` or similar — inlining `TRUE`/`FALSE` literals lets the SQL planner statically simplify `TRUE AND x` to `x`, which it cannot do for an opaque `ParamRef`.\n */\nfunction toLiteralExpr(value: unknown): AstExpression {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'buildAst' in value &&\n typeof (value as { buildAst: unknown }).buildAst === 'function'\n ) {\n return (value as { buildAst(): AstExpression }).buildAst();\n }\n return new LiteralExpr(value);\n}\n\nfunction boolExpr(astNode: AstExpression): ExpressionImpl<BooleanCodecType> {\n return new ExpressionImpl(astNode, BOOL_FIELD);\n}\n\nfunction binaryWithSharedCodec(\n a: ExprOrVal,\n b: ExprOrVal,\n build: (left: AstExpression, right: AstExpression) => AstExpression,\n): AstExpression {\n const aCodecId = operandCodecId(a);\n const bCodecId = operandCodecId(b);\n const aRefs = operandRefs(a);\n const bRefs = operandRefs(b);\n const left = resolveOperand(a, bCodecId, bRefs);\n const right = resolveOperand(b, aCodecId, aRefs);\n return build(left, right);\n}\n\nfunction eq(a: ExprOrVal, b: ExprOrVal): ExpressionImpl<BooleanCodecType> {\n if (b === null) return boolExpr(NullCheckExpr.isNull(resolve(a)));\n if (a === null) return boolExpr(NullCheckExpr.isNull(resolve(b)));\n return boolExpr(binaryWithSharedCodec(a, b, (l, r) => new BinaryExpr('eq', l, r)));\n}\n\nfunction ne(a: ExprOrVal, b: ExprOrVal): ExpressionImpl<BooleanCodecType> {\n if (b === null) return boolExpr(NullCheckExpr.isNotNull(resolve(a)));\n if (a === null) return boolExpr(NullCheckExpr.isNotNull(resolve(b)));\n return boolExpr(binaryWithSharedCodec(a, b, (l, r) => new BinaryExpr('neq', l, r)));\n}\n\nfunction comparison(a: ExprOrVal, b: ExprOrVal, op: BinaryOp): ExpressionImpl<BooleanCodecType> {\n return boolExpr(binaryWithSharedCodec(a, b, (l, r) => new BinaryExpr(op, l, r)));\n}\n\nfunction inOrNotIn(\n expr: Expression<ScopeField>,\n valuesOrSubquery: Subquery<Record<string, ScopeField>> | ExprOrVal[],\n op: 'in' | 'notIn',\n): ExpressionImpl<BooleanCodecType> {\n const left = expr.buildAst();\n const leftCodecId = expr.returnType.codecId;\n const leftRefs = refsOf(expr);\n const binaryFn = op === 'in' ? BinaryExpr.in : BinaryExpr.notIn;\n\n if (Array.isArray(valuesOrSubquery)) {\n const refs = valuesOrSubquery.map((v) => resolveOperand(v, leftCodecId, leftRefs));\n return boolExpr(binaryFn(left, ListExpression.of(refs)));\n }\n return boolExpr(binaryFn(left, SubqueryExpr.of(valuesOrSubquery.buildAst())));\n}\n\nfunction numericAgg(\n fn: 'sum' | 'avg' | 'min' | 'max',\n expr: Expression<ScopeField>,\n): ExpressionImpl<{ codecId: string; nullable: true }> {\n return new ExpressionImpl(AggregateExpr[fn](expr.buildAst()), {\n codecId: expr.returnType.codecId,\n nullable: true as const,\n });\n}\n\nfunction createBuiltinFunctions() {\n return {\n eq: (a: ExprOrVal, b: ExprOrVal) => eq(a, b),\n ne: (a: ExprOrVal, b: ExprOrVal) => ne(a, b),\n gt: (a: ExprOrVal, b: ExprOrVal) => comparison(a, b, 'gt'),\n gte: (a: ExprOrVal, b: ExprOrVal) => comparison(a, b, 'gte'),\n lt: (a: ExprOrVal, b: ExprOrVal) => comparison(a, b, 'lt'),\n lte: (a: ExprOrVal, b: ExprOrVal) => comparison(a, b, 'lte'),\n and: (...exprs: ExprOrVal<'pg/bool@1', boolean>[]) =>\n boolExpr(AndExpr.of(exprs.map(toLiteralExpr))),\n or: (...exprs: ExprOrVal<'pg/bool@1', boolean>[]) =>\n boolExpr(OrExpr.of(exprs.map(toLiteralExpr))),\n exists: (subquery: Subquery<Record<string, ScopeField>>) =>\n boolExpr(ExistsExpr.exists(subquery.buildAst())),\n notExists: (subquery: Subquery<Record<string, ScopeField>>) =>\n boolExpr(ExistsExpr.notExists(subquery.buildAst())),\n in: (\n expr: Expression<ScopeField>,\n valuesOrSubquery: Subquery<Record<string, ScopeField>> | ExprOrVal[],\n ) => inOrNotIn(expr, valuesOrSubquery, 'in'),\n notIn: (\n expr: Expression<ScopeField>,\n valuesOrSubquery: Subquery<Record<string, ScopeField>> | ExprOrVal[],\n ) => inOrNotIn(expr, valuesOrSubquery, 'notIn'),\n } satisfies BuiltinFunctions<CodecTypes>;\n}\n\nfunction createAggregateOnlyFunctions() {\n return {\n count: (expr?: Expression<ScopeField>) => {\n const astExpr = expr ? expr.buildAst() : undefined;\n return new ExpressionImpl(AggregateExpr.count(astExpr), {\n codecId: 'pg/int8@1',\n nullable: false,\n });\n },\n sum: (expr: Expression<ScopeField>) => numericAgg('sum', expr),\n avg: (expr: Expression<ScopeField>) => numericAgg('avg', expr),\n min: (expr: Expression<ScopeField>) => numericAgg('min', expr),\n max: (expr: Expression<ScopeField>) => numericAgg('max', expr),\n } satisfies AggregateOnlyFunctions;\n}\n\nexport function createFunctions<QC extends QueryContext>(\n operations: Readonly<Record<string, SqlOperationEntry>>,\n): Functions<QC> {\n const builtins = createBuiltinFunctions();\n\n return new Proxy({} as Functions<QC>, {\n get(_target, prop: string) {\n const builtin = (builtins as Record<string, unknown>)[prop];\n if (builtin) return builtin;\n\n const op = operations[prop];\n if (op) return op.impl;\n return undefined;\n },\n });\n}\n\nexport function createAggregateFunctions<QC extends QueryContext>(\n operations: Readonly<Record<string, SqlOperationEntry>>,\n): AggregateFunctions<QC> {\n const baseFns = createFunctions<QC>(operations);\n const aggregates = createAggregateOnlyFunctions();\n\n return new Proxy({} as AggregateFunctions<QC>, {\n get(_target, prop: string) {\n const agg = (aggregates as Record<string, unknown>)[prop];\n if (agg) return agg;\n\n return (baseFns as Record<string, unknown>)[prop];\n },\n });\n}\n","import type { PlanMeta } from '@prisma-next/contract/types';\nimport type { StorageTable } from '@prisma-next/sql-contract/types';\nimport type { SqlOperationEntry } from '@prisma-next/sql-operations';\nimport {\n AndExpr,\n type AnyExpression as AstExpression,\n collectOrderedParamRefs,\n IdentifierRef,\n OrderByItem,\n ProjectionItem,\n SelectAst,\n type TableSource,\n} from '@prisma-next/sql-relational-core/ast';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type {\n AppliedMutationDefault,\n MutationDefaultsOptions,\n} from '@prisma-next/sql-relational-core/query-lane-context';\nimport type {\n AggregateFunctions,\n Expression,\n FieldProxy,\n OrderByOptions,\n OrderByScope,\n} from '../expression';\nimport type {\n GatedMethod,\n MergeScopes,\n NullableScope,\n QueryContext,\n Scope,\n ScopeField,\n ScopeTable,\n} from '../scope';\nimport { createFieldProxy } from './field-proxy';\nimport { createAggregateFunctions, createFunctions } from './functions';\n\nexport type ExprCallback = (fields: FieldProxy<Scope>, fns: unknown) => Expression<ScopeField>;\n\nexport class BuilderBase<Capabilities = unknown> {\n protected readonly ctx: BuilderContext;\n\n constructor(ctx: BuilderContext) {\n this.ctx = ctx;\n }\n\n protected _gate<Req extends Record<string, Record<string, boolean>>, Args extends unknown[], R>(\n required: Req,\n methodName: string,\n method: (...args: Args) => R,\n ): GatedMethod<Capabilities, Req, (...args: Args) => R> {\n return ((...args: Args): R => {\n assertCapability(this.ctx, required, methodName);\n return method(...args);\n }) as GatedMethod<Capabilities, Req, (...args: Args) => R>;\n }\n}\n\nexport interface BuilderState {\n readonly from: TableSource;\n readonly joins: readonly import('@prisma-next/sql-relational-core/ast').JoinAst[];\n readonly projections: readonly ProjectionItem[];\n readonly where: readonly AstExpression[];\n readonly orderBy: readonly OrderByItem[];\n readonly groupBy: readonly AstExpression[];\n readonly having: AstExpression | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n readonly distinct: true | undefined;\n readonly distinctOn: readonly AstExpression[] | undefined;\n readonly scope: Scope;\n readonly rowFields: Record<string, ScopeField>;\n}\n\nexport interface BuilderContext {\n readonly capabilities: Record<string, Record<string, boolean>>;\n readonly queryOperationTypes: Readonly<Record<string, SqlOperationEntry>>;\n readonly target: string;\n readonly storageHash: string;\n readonly applyMutationDefaults: (\n options: MutationDefaultsOptions,\n ) => ReadonlyArray<AppliedMutationDefault>;\n}\n\nexport function emptyState(from: TableSource, scope: Scope): BuilderState {\n return {\n from,\n joins: [],\n projections: [],\n where: [],\n orderBy: [],\n groupBy: [],\n having: undefined,\n limit: undefined,\n offset: undefined,\n distinct: undefined,\n distinctOn: undefined,\n scope,\n rowFields: {},\n };\n}\n\nexport function cloneState(state: BuilderState, overrides: Partial<BuilderState>): BuilderState {\n return { ...state, ...overrides };\n}\n\nexport function combineWhereExprs(exprs: readonly AstExpression[]): AstExpression | undefined {\n if (exprs.length === 0) return undefined;\n if (exprs.length === 1) return exprs[0];\n return AndExpr.of(exprs);\n}\n\n/**\n * Same uniqueness rule as the field-proxy's `findUniqueNamespaceFor`: when exactly one namespace owns a top-level field, the binding is unambiguous. Used by `select('col', ...)` to attach `refs` metadata to the resulting `ProjectionItem` while keeping the AST as `IdentifierRef` (so SQL renders unchanged).\n */\nfunction findUniqueNamespaceFor(scope: Scope, fieldName: string): string | undefined {\n let found: string | undefined;\n for (const [namespace, fields] of Object.entries(scope.namespaces)) {\n if (Object.hasOwn(fields, fieldName)) {\n if (found !== undefined) return undefined;\n found = namespace;\n }\n }\n return found;\n}\n\nexport function buildSelectAst(state: BuilderState): SelectAst {\n const where = combineWhereExprs(state.where);\n return new SelectAst({\n from: state.from,\n joins: state.joins.length > 0 ? state.joins : undefined,\n projection: state.projections,\n where,\n orderBy: state.orderBy.length > 0 ? state.orderBy : undefined,\n distinct: state.distinct,\n distinctOn: state.distinctOn && state.distinctOn.length > 0 ? state.distinctOn : undefined,\n groupBy: state.groupBy.length > 0 ? state.groupBy : undefined,\n having: state.having,\n limit: state.limit,\n offset: state.offset,\n selectAllIntent: undefined,\n });\n}\n\nexport function buildQueryPlan<Row = unknown>(\n ast: import('@prisma-next/sql-relational-core/ast').AnyQueryAst,\n ctx: BuilderContext,\n): SqlQueryPlan<Row> {\n const paramValues = collectOrderedParamRefs(ast).map((r) => r.value);\n\n const meta: PlanMeta = Object.freeze({\n target: ctx.target,\n storageHash: ctx.storageHash,\n lane: 'dsl',\n });\n\n return Object.freeze({ ast, params: paramValues, meta });\n}\n\nexport function buildPlan<Row = unknown>(\n state: BuilderState,\n ctx: BuilderContext,\n): SqlQueryPlan<Row> {\n return buildQueryPlan<Row>(buildSelectAst(state), ctx);\n}\n\nexport function tableToScope(name: string, table: StorageTable): Scope {\n const fields: ScopeTable = {};\n for (const [colName, col] of Object.entries(table.columns)) {\n fields[colName] = { codecId: col.codecId, nullable: col.nullable };\n }\n return { topLevel: { ...fields }, namespaces: { [name]: fields } };\n}\n\nexport function mergeScopes<A extends Scope, B extends Scope>(a: A, b: B): MergeScopes<A, B> {\n const topLevel: ScopeTable = {};\n for (const [k, v] of Object.entries(a.topLevel)) {\n if (!(k in b.topLevel)) topLevel[k] = v;\n }\n for (const [k, v] of Object.entries(b.topLevel)) {\n if (!(k in a.topLevel)) topLevel[k] = v;\n }\n return {\n topLevel,\n namespaces: { ...a.namespaces, ...b.namespaces },\n } as MergeScopes<A, B>;\n}\n\nexport function nullableScope<S extends Scope>(scope: S): NullableScope<S> {\n const mkNullable = (tbl: ScopeTable): ScopeTable => {\n const result: ScopeTable = {};\n for (const [k, v] of Object.entries(tbl)) {\n result[k] = { codecId: v.codecId, nullable: true };\n }\n return result;\n };\n const namespaces: Record<string, ScopeTable> = {};\n for (const [k, v] of Object.entries(scope.namespaces)) {\n namespaces[k] = mkNullable(v);\n }\n return { topLevel: mkNullable(scope.topLevel), namespaces } as NullableScope<S>;\n}\n\nexport function orderByScopeOf<S extends Scope, R extends Record<string, ScopeField>>(\n scope: S,\n rowFields: R,\n): OrderByScope<S, R> {\n return {\n topLevel: { ...scope.topLevel, ...rowFields },\n namespaces: scope.namespaces,\n };\n}\n\nexport function assertCapability(\n ctx: BuilderContext,\n required: Record<string, Record<string, boolean>>,\n methodName: string,\n): void {\n for (const [ns, keys] of Object.entries(required)) {\n for (const key of Object.keys(keys)) {\n if (!ctx.capabilities[ns]?.[key]) {\n throw new Error(`${methodName}() requires capability ${ns}.${key}`);\n }\n }\n }\n}\n\nexport function resolveSelectArgs(\n args: unknown[],\n scope: Scope,\n ctx: BuilderContext,\n): { projections: ProjectionItem[]; newRowFields: Record<string, ScopeField> } {\n const projections: ProjectionItem[] = [];\n const newRowFields: Record<string, ScopeField> = {};\n\n if (args.length === 0) return { projections, newRowFields };\n\n if (typeof args[0] === 'string' && (args.length === 1 || typeof args[1] !== 'function')) {\n for (const colName of args as string[]) {\n const field = scope.topLevel[colName];\n if (!field) throw new Error(`Column \"${colName}\" not found in scope`);\n const namespace = findUniqueNamespaceFor(scope, colName);\n const refs = namespace ? { table: namespace, column: colName } : undefined;\n projections.push(ProjectionItem.of(colName, IdentifierRef.of(colName), field.codecId, refs));\n newRowFields[colName] = field;\n }\n return { projections, newRowFields };\n }\n\n if (typeof args[0] === 'string' && typeof args[1] === 'function') {\n const alias = args[0] as string;\n const exprFn = args[1] as (\n f: FieldProxy<Scope>,\n fns: AggregateFunctions<QueryContext>,\n ) => Expression<ScopeField>;\n const fns = createAggregateFunctions(ctx.queryOperationTypes);\n const result = exprFn(createFieldProxy(scope), fns);\n const field = result.returnType;\n projections.push(ProjectionItem.of(alias, result.buildAst(), field.codecId));\n newRowFields[alias] = field;\n return { projections, newRowFields };\n }\n\n if (typeof args[0] === 'function') {\n const callbackFn = args[0] as (\n f: FieldProxy<Scope>,\n fns: AggregateFunctions<QueryContext>,\n ) => Record<string, Expression<ScopeField>>;\n const fns = createAggregateFunctions(ctx.queryOperationTypes);\n const record = callbackFn(createFieldProxy(scope), fns);\n for (const [key, expr] of Object.entries(record)) {\n const field = expr.returnType;\n projections.push(ProjectionItem.of(key, expr.buildAst(), field.codecId));\n newRowFields[key] = field;\n }\n return { projections, newRowFields };\n }\n\n throw new Error('Invalid .select() arguments');\n}\n\nexport function resolveOrderBy(\n arg: unknown,\n options: OrderByOptions | undefined,\n scope: Scope,\n rowFields: Record<string, ScopeField>,\n ctx: BuilderContext,\n useAggregateFns: boolean,\n): OrderByItem {\n const dir = options?.direction ?? 'asc';\n\n if (typeof arg === 'string') {\n const combined = orderByScopeOf(scope, rowFields);\n if (!(arg in combined.topLevel))\n throw new Error(`Column \"${arg}\" not found in scope for orderBy`);\n const expr = IdentifierRef.of(arg);\n return dir === 'asc' ? OrderByItem.asc(expr) : OrderByItem.desc(expr);\n }\n\n if (typeof arg === 'function') {\n const combined = orderByScopeOf(scope, rowFields);\n const fns = useAggregateFns\n ? createAggregateFunctions(ctx.queryOperationTypes)\n : createFunctions(ctx.queryOperationTypes);\n const result = (arg as ExprCallback)(createFieldProxy(combined), fns);\n return dir === 'asc' ? OrderByItem.asc(result.buildAst()) : OrderByItem.desc(result.buildAst());\n }\n\n throw new Error('Invalid orderBy argument');\n}\n\nexport function resolveGroupBy(\n args: unknown[],\n scope: Scope,\n rowFields: Record<string, ScopeField>,\n ctx: BuilderContext,\n): AstExpression[] {\n if (typeof args[0] === 'string') {\n const combined = orderByScopeOf(scope, rowFields);\n return (args as string[]).map((colName) => {\n if (!(colName in combined.topLevel))\n throw new Error(`Column \"${colName}\" not found in scope for groupBy`);\n return IdentifierRef.of(colName);\n });\n }\n\n if (typeof args[0] === 'function') {\n const combined = orderByScopeOf(scope, rowFields);\n const fns = createFunctions(ctx.queryOperationTypes);\n const result = (args[0] as ExprCallback)(createFieldProxy(combined), fns);\n return [result.buildAst()];\n }\n\n throw new Error('Invalid groupBy arguments');\n}\n\nexport function resolveDistinctOn(\n args: unknown[],\n scope: Scope,\n rowFields: Record<string, ScopeField>,\n ctx: BuilderContext,\n): AstExpression[] {\n if (args.length === 1 && typeof args[0] === 'function') {\n const combined = orderByScopeOf(scope, rowFields);\n const fns = createFunctions(ctx.queryOperationTypes);\n const result = (args[0] as ExprCallback)(createFieldProxy(combined), fns);\n return [result.buildAst()];\n }\n const combined = orderByScopeOf(scope, rowFields);\n return (args as string[]).map((colName) => {\n if (!(colName in combined.topLevel))\n throw new Error(`Column \"${colName}\" not found in scope for distinctOn`);\n return IdentifierRef.of(colName);\n });\n}\n","import { DerivedTableSource, type SelectAst } from '@prisma-next/sql-relational-core/ast';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type {\n AggregateFunctions,\n BooleanCodecType,\n Expression,\n ExpressionBuilder,\n ExtractScopeFields,\n FieldProxy,\n Functions,\n OrderByOptions,\n OrderByScope,\n WithField,\n WithFields,\n} from '../expression';\nimport type { ResolveRow } from '../resolve';\nimport type {\n Expand,\n JoinOuterScope,\n JoinSource,\n QueryContext,\n Scope,\n ScopeField,\n // biome-ignore lint/correctness/noUnusedImports: used in `declare` property\n SubqueryMarker,\n} from '../scope';\nimport type { GroupedQuery } from '../types/grouped-query';\nimport type { SelectQuery } from '../types/select-query';\nimport {\n BuilderBase,\n type BuilderContext,\n type BuilderState,\n buildPlan,\n buildSelectAst,\n cloneState,\n orderByScopeOf,\n resolveDistinctOn,\n resolveGroupBy,\n resolveOrderBy,\n resolveSelectArgs,\n} from './builder-base';\nimport { createFieldProxy } from './field-proxy';\nimport { createAggregateFunctions, createFunctions } from './functions';\n\nabstract class QueryBase<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n> extends BuilderBase<QC['capabilities']> {\n protected readonly state: BuilderState;\n\n constructor(state: BuilderState, ctx: BuilderContext) {\n super(ctx);\n this.state = state;\n }\n\n protected abstract clone(state: BuilderState): this;\n\n distinctOn = this._gate(\n { postgres: { distinctOn: true } },\n 'distinctOn',\n (...args: unknown[]) => {\n const exprs = resolveDistinctOn(args, this.state.scope, this.state.rowFields, this.ctx);\n return this.clone(\n cloneState(this.state, {\n distinctOn: [...(this.state.distinctOn ?? []), ...exprs],\n }),\n );\n },\n );\n\n limit(count: number): this {\n return this.clone(cloneState(this.state, { limit: count }));\n }\n\n offset(count: number): this {\n return this.clone(cloneState(this.state, { offset: count }));\n }\n\n distinct(): this {\n return this.clone(cloneState(this.state, { distinct: true }));\n }\n\n groupBy(\n ...fields: ((keyof RowType | keyof AvailableScope['topLevel']) & string)[]\n ): GroupedQuery<QC, AvailableScope, RowType>;\n groupBy(\n expr: (\n fields: FieldProxy<OrderByScope<AvailableScope, RowType>>,\n fns: Functions<QC>,\n ) => Expression<ScopeField>,\n ): GroupedQuery<QC, AvailableScope, RowType>;\n groupBy(...args: unknown[]): unknown {\n const exprs = resolveGroupBy(args, this.state.scope, this.state.rowFields, this.ctx);\n return new GroupedQueryImpl<QC, AvailableScope, RowType>(\n cloneState(this.state, { groupBy: [...this.state.groupBy, ...exprs] }),\n this.ctx,\n );\n }\n\n as<Alias extends string>(alias: Alias): JoinSource<RowType, Alias> {\n const ast = buildSelectAst(this.state);\n const derivedSource = DerivedTableSource.as(alias, ast);\n const scope = {\n topLevel: this.state.rowFields as RowType,\n namespaces: { [alias]: this.state.rowFields } as Record<Alias, RowType>,\n };\n return {\n getJoinOuterScope: () => scope,\n buildAst: () => derivedSource,\n\n // `as unknown` is necessary, because JoinOuterScope is a phantom type-only property that does not exist at runtime\n } satisfies Omit<JoinSource<RowType, Alias>, typeof JoinOuterScope> as unknown as JoinSource<\n RowType,\n Alias\n >;\n }\n\n getRowFields(): Record<string, ScopeField> {\n return this.state.rowFields;\n }\n\n buildAst(): SelectAst {\n return buildSelectAst(this.state);\n }\n\n build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {\n return buildPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(\n this.state,\n this.ctx,\n );\n }\n}\n\nexport class SelectQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends QueryBase<QC, AvailableScope, RowType>\n implements SelectQuery<QC, AvailableScope, RowType>\n{\n declare readonly [SubqueryMarker]: RowType;\n\n protected clone(state: BuilderState): this {\n return new SelectQueryImpl<QC, AvailableScope, RowType>(state, this.ctx) as this;\n }\n\n select<Columns extends (keyof AvailableScope['topLevel'] & string)[]>(\n ...columns: Columns\n ): SelectQuery<QC, AvailableScope, WithFields<RowType, AvailableScope['topLevel'], Columns>>;\n select<Alias extends string, Field extends ScopeField>(\n alias: Alias,\n expr: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Expression<Field>,\n ): SelectQuery<QC, AvailableScope, WithField<RowType, Field, Alias>>;\n select<Result extends Record<string, Expression<ScopeField>>>(\n callback: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Result,\n ): SelectQuery<QC, AvailableScope, Expand<RowType & ExtractScopeFields<Result>>>;\n select(...args: unknown[]): unknown {\n const { projections, newRowFields } = resolveSelectArgs(args, this.state.scope, this.ctx);\n return new SelectQueryImpl(\n cloneState(this.state, {\n projections: [...this.state.projections, ...projections],\n rowFields: { ...this.state.rowFields, ...newRowFields },\n }),\n this.ctx,\n );\n }\n\n where(expr: ExpressionBuilder<AvailableScope, QC>): SelectQuery<QC, AvailableScope, RowType> {\n const fieldProxy = createFieldProxy(this.state.scope);\n const fns = createFunctions<QC>(this.ctx.queryOperationTypes);\n const result = (expr as ExpressionBuilder<Scope, QueryContext>)(fieldProxy, fns as never);\n return new SelectQueryImpl(\n cloneState(this.state, {\n where: [...this.state.where, result.buildAst()],\n }),\n this.ctx,\n );\n }\n\n orderBy(\n field: (keyof RowType | keyof AvailableScope['topLevel']) & string,\n options?: OrderByOptions,\n ): SelectQuery<QC, AvailableScope, RowType>;\n orderBy(\n expr: (\n fields: FieldProxy<OrderByScope<AvailableScope, RowType>>,\n fns: Functions<QC>,\n ) => Expression<ScopeField>,\n options?: OrderByOptions,\n ): SelectQuery<QC, AvailableScope, RowType>;\n orderBy(arg: unknown, options?: OrderByOptions): unknown {\n const item = resolveOrderBy(\n arg,\n options,\n this.state.scope,\n this.state.rowFields,\n this.ctx,\n false,\n );\n return this.clone(cloneState(this.state, { orderBy: [...this.state.orderBy, item] }));\n }\n}\n\nexport class GroupedQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends QueryBase<QC, AvailableScope, RowType>\n implements GroupedQuery<QC, AvailableScope, RowType>\n{\n declare readonly [SubqueryMarker]: RowType;\n\n protected clone(state: BuilderState): this {\n return new GroupedQueryImpl<QC, AvailableScope, RowType>(state, this.ctx) as this;\n }\n\n having(\n expr: (\n fields: FieldProxy<OrderByScope<AvailableScope, RowType>>,\n fns: AggregateFunctions<QC>,\n ) => Expression<BooleanCodecType>,\n ): GroupedQuery<QC, AvailableScope, RowType> {\n const combined = orderByScopeOf(\n this.state.scope as AvailableScope,\n this.state.rowFields as RowType,\n );\n const fns = createAggregateFunctions(this.ctx.queryOperationTypes);\n const result = expr(createFieldProxy(combined), fns);\n return new GroupedQueryImpl(cloneState(this.state, { having: result.buildAst() }), this.ctx);\n }\n\n orderBy(\n field: (keyof RowType | keyof AvailableScope['topLevel']) & string,\n options?: OrderByOptions,\n ): GroupedQuery<QC, AvailableScope, RowType>;\n orderBy(\n expr: (\n fields: FieldProxy<OrderByScope<AvailableScope, RowType>>,\n fns: AggregateFunctions<QC>,\n ) => Expression<ScopeField>,\n options?: OrderByOptions,\n ): GroupedQuery<QC, AvailableScope, RowType>;\n orderBy(arg: unknown, options?: OrderByOptions): unknown {\n const item = resolveOrderBy(\n arg,\n options,\n this.state.scope,\n this.state.rowFields,\n this.ctx,\n true,\n );\n return this.clone(cloneState(this.state, { orderBy: [...this.state.orderBy, item] }));\n }\n}\n","import {\n AndExpr,\n DerivedTableSource,\n JoinAst,\n type TableSource,\n} from '@prisma-next/sql-relational-core/ast';\nimport type {\n AggregateFunctions,\n Expression,\n ExpressionBuilder,\n ExtractScopeFields,\n FieldProxy,\n WithField,\n WithFields,\n} from '../expression';\nimport type {\n EmptyRow,\n Expand,\n JoinOuterScope,\n JoinSource,\n MergeScopes,\n NullableScope,\n QueryContext,\n Scope,\n ScopeField,\n ScopeTable,\n Subquery,\n} from '../scope';\nimport type { JoinedTables } from '../types/joined-tables';\nimport type { SelectQuery } from '../types/select-query';\nimport type { LateralBuilder } from '../types/shared';\nimport {\n BuilderBase,\n type BuilderContext,\n type BuilderState,\n cloneState,\n emptyState,\n mergeScopes,\n nullableScope,\n resolveSelectArgs,\n} from './builder-base';\nimport { createFieldProxy } from './field-proxy';\nimport { createFunctions } from './functions';\nimport { SelectQueryImpl } from './query-impl';\n\nexport class JoinedTablesImpl<QC extends QueryContext, AvailableScope extends Scope>\n extends BuilderBase<QC['capabilities']>\n implements JoinedTables<QC, AvailableScope>\n{\n readonly #state: BuilderState;\n\n constructor(state: BuilderState, ctx: BuilderContext) {\n super(ctx);\n this.#state = state;\n }\n\n lateralJoin = this._gate(\n { sql: { lateral: true } },\n 'lateralJoin',\n <Alias extends string, LateralRow extends Record<string, ScopeField>>(\n alias: Alias,\n builder: (lateral: LateralBuilder<QC, AvailableScope>) => Subquery<LateralRow>,\n ): JoinedTables<\n QC,\n MergeScopes<AvailableScope, { topLevel: LateralRow; namespaces: Record<Alias, LateralRow> }>\n > => {\n const { derivedSource, lateralScope } = this.#buildLateral(alias, builder);\n const resultScope = mergeScopes(\n this.#state.scope as AvailableScope,\n lateralScope as { topLevel: LateralRow; namespaces: Record<Alias, LateralRow> },\n );\n return this.#addLateralJoin('inner', resultScope, derivedSource);\n },\n ) as JoinedTables<QC, AvailableScope>['lateralJoin'];\n\n outerLateralJoin = this._gate(\n { sql: { lateral: true } },\n 'outerLateralJoin',\n <Alias extends string, LateralRow extends Record<string, ScopeField>>(\n alias: Alias,\n builder: (lateral: LateralBuilder<QC, AvailableScope>) => Subquery<LateralRow>,\n ): JoinedTables<\n QC,\n MergeScopes<\n AvailableScope,\n NullableScope<{ topLevel: LateralRow; namespaces: Record<Alias, LateralRow> }>\n >\n > => {\n const { derivedSource, lateralScope } = this.#buildLateral(alias, builder);\n const resultScope = mergeScopes(\n this.#state.scope as AvailableScope,\n nullableScope(\n lateralScope as { topLevel: LateralRow; namespaces: Record<Alias, LateralRow> },\n ),\n );\n return this.#addLateralJoin('left', resultScope, derivedSource);\n },\n ) as JoinedTables<QC, AvailableScope>['outerLateralJoin'];\n\n select<Columns extends (keyof AvailableScope['topLevel'] & string)[]>(\n ...columns: Columns\n ): SelectQuery<QC, AvailableScope, WithFields<EmptyRow, AvailableScope['topLevel'], Columns>>;\n select<Alias extends string, Field extends ScopeField>(\n alias: Alias,\n expr: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Expression<Field>,\n ): SelectQuery<QC, AvailableScope, WithField<EmptyRow, Field, Alias>>;\n select<Result extends Record<string, Expression<ScopeField>>>(\n callback: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Result,\n ): SelectQuery<QC, AvailableScope, Expand<ExtractScopeFields<Result>>>;\n select(...args: unknown[]): unknown {\n const { projections, newRowFields } = resolveSelectArgs(args, this.#state.scope, this.ctx);\n return new SelectQueryImpl<QC, AvailableScope>(\n cloneState(this.#state, {\n projections: [...this.#state.projections, ...projections],\n rowFields: { ...this.#state.rowFields, ...newRowFields },\n }),\n this.ctx,\n );\n }\n\n innerJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>> {\n const targetScope = mergeScopes(\n this.#state.scope as AvailableScope,\n other.getJoinOuterScope() as Other[typeof JoinOuterScope],\n );\n return this.#addJoin(other, 'inner', targetScope, on);\n }\n\n outerLeftJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<AvailableScope, NullableScope<Other[typeof JoinOuterScope]>>> {\n const targetScope = mergeScopes(\n this.#state.scope as AvailableScope,\n nullableScope(other.getJoinOuterScope() as Other[typeof JoinOuterScope]),\n );\n return this.#addJoin(other, 'left', targetScope, on);\n }\n\n outerRightJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<NullableScope<AvailableScope>, Other[typeof JoinOuterScope]>> {\n const targetScope = mergeScopes(\n nullableScope(this.#state.scope as AvailableScope),\n other.getJoinOuterScope() as Other[typeof JoinOuterScope],\n );\n return this.#addJoin(other, 'right', targetScope, on);\n }\n\n outerFullJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<\n QC,\n MergeScopes<NullableScope<AvailableScope>, NullableScope<Other[typeof JoinOuterScope]>>\n > {\n const targetScope = mergeScopes(\n nullableScope(this.#state.scope as AvailableScope),\n nullableScope(other.getJoinOuterScope() as Other[typeof JoinOuterScope]),\n );\n return this.#addJoin(other, 'full', targetScope, on);\n }\n\n #addJoin<Other extends JoinSource<ScopeTable, string | never>, ResultScope extends Scope>(\n other: Other,\n joinType: 'inner' | 'left' | 'right' | 'full',\n resultScope: ResultScope,\n onExpr: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, ResultScope> {\n const fieldProxy = createFieldProxy(\n mergeScopes(\n this.#state.scope as AvailableScope,\n other.getJoinOuterScope() as Other[typeof JoinOuterScope],\n ),\n ) as FieldProxy<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>>;\n const fns = createFunctions<QC>(this.ctx.queryOperationTypes);\n const onResult = onExpr(fieldProxy, fns);\n const joinAst = new JoinAst(joinType, other.buildAst(), onResult.buildAst());\n\n return new JoinedTablesImpl(\n cloneState(this.#state, {\n joins: [...this.#state.joins, joinAst],\n scope: resultScope,\n }),\n this.ctx,\n );\n }\n\n #buildLateral(\n alias: string,\n builderFn: (\n lateral: LateralBuilder<QC, AvailableScope>,\n ) => Subquery<Record<string, ScopeField>>,\n ) {\n const lateralBuilder: LateralBuilder<QC, AvailableScope> = {\n from: (other) => {\n const otherScope = other.getJoinOuterScope();\n const parentMerged = mergeScopes(this.#state.scope, otherScope);\n return new SelectQueryImpl(\n emptyState(other.buildAst() as TableSource, parentMerged),\n this.ctx,\n ) as unknown as SelectQuery<QC, AvailableScope, EmptyRow>;\n },\n };\n\n const subquery = builderFn(lateralBuilder);\n const subqueryAst = subquery.buildAst();\n const derivedSource = DerivedTableSource.as(alias, subqueryAst);\n const subqueryRowFields: ScopeTable = subquery.getRowFields();\n const lateralScope: Scope = {\n topLevel: subqueryRowFields,\n namespaces: { [alias]: subqueryRowFields },\n };\n\n return { derivedSource, lateralScope };\n }\n\n #addLateralJoin<ResultScope extends Scope>(\n joinType: 'inner' | 'left',\n resultScope: ResultScope,\n derivedSource: DerivedTableSource,\n ): JoinedTables<QC, ResultScope> {\n const onExpr = AndExpr.of([]);\n const joinAst = new JoinAst(joinType, derivedSource, onExpr, true);\n\n return new JoinedTablesImpl(\n cloneState(this.#state, {\n joins: [...this.#state.joins, joinAst],\n scope: resultScope,\n }),\n this.ctx,\n );\n }\n}\n","import type { StorageTable } from '@prisma-next/sql-contract/types';\nimport {\n type AnyExpression as AstExpression,\n ColumnRef,\n DeleteAst,\n InsertAst,\n ParamRef,\n ProjectionItem,\n TableSource,\n UpdateAst,\n} from '@prisma-next/sql-relational-core/ast';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type { MutationDefaultsOp } from '@prisma-next/sql-relational-core/query-lane-context';\nimport type { ExpressionBuilder } from '../expression';\nimport type { ResolveRow } from '../resolve';\nimport type { QueryContext, Scope, ScopeField } from '../scope';\nimport type {\n DeleteQuery,\n InsertQuery,\n ReturningCapability,\n UpdateQuery,\n} from '../types/mutation-query';\nimport {\n BuilderBase,\n type BuilderContext,\n buildQueryPlan,\n combineWhereExprs,\n} from './builder-base';\nimport { createFieldProxy } from './field-proxy';\nimport { createFunctions } from './functions';\n\ntype WhereCallback = ExpressionBuilder<Scope, QueryContext>;\n\nfunction buildParamValues(\n values: Record<string, unknown>,\n table: StorageTable,\n tableName: string,\n op: MutationDefaultsOp,\n ctx: BuilderContext,\n): Record<string, ParamRef> {\n const params: Record<string, ParamRef> = {};\n for (const [col, value] of Object.entries(values)) {\n const column = table.columns[col];\n params[col] = ParamRef.of(\n value,\n column ? { codecId: column.codecId, refs: { table: tableName, column: col } } : undefined,\n );\n }\n for (const def of ctx.applyMutationDefaults({ op, table: tableName, values })) {\n const column = table.columns[def.column];\n params[def.column] = ParamRef.of(\n def.value,\n column\n ? { codecId: column.codecId, refs: { table: tableName, column: def.column } }\n : undefined,\n );\n }\n return params;\n}\n\nfunction buildReturningProjections(\n tableName: string,\n columns: string[],\n rowFields: Record<string, ScopeField>,\n): ProjectionItem[] {\n return columns.map((col) =>\n ProjectionItem.of(col, ColumnRef.of(tableName, col), rowFields[col]?.codecId),\n );\n}\n\nfunction evaluateWhere(\n whereCallback: WhereCallback,\n scope: Scope,\n queryOperationTypes: BuilderContext['queryOperationTypes'],\n): AstExpression {\n const fieldProxy = createFieldProxy(scope);\n const fns = createFunctions(queryOperationTypes);\n const result = whereCallback(fieldProxy, fns as never);\n return result.buildAst();\n}\n\nexport class InsertQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends BuilderBase<QC['capabilities']>\n implements InsertQuery<QC, AvailableScope, RowType>\n{\n readonly #tableName: string;\n readonly #table: StorageTable;\n readonly #scope: Scope;\n readonly #values: Record<string, unknown>;\n readonly #returningColumns: string[];\n readonly #rowFields: Record<string, ScopeField>;\n\n constructor(\n tableName: string,\n table: StorageTable,\n scope: Scope,\n values: Record<string, unknown>,\n ctx: BuilderContext,\n returningColumns: string[] = [],\n rowFields: Record<string, ScopeField> = {},\n ) {\n super(ctx);\n this.#tableName = tableName;\n this.#table = table;\n this.#scope = scope;\n this.#values = values;\n this.#returningColumns = returningColumns;\n this.#rowFields = rowFields;\n }\n\n returning = this._gate<ReturningCapability, string[], InsertQuery<QC, AvailableScope, never>>(\n { sql: { returning: true } },\n 'returning',\n (...columns: string[]) => {\n const newRowFields: Record<string, ScopeField> = {};\n for (const col of columns) {\n const field = this.#scope.topLevel[col];\n if (!field) throw new Error(`Column \"${col}\" not found in scope`);\n newRowFields[col] = field;\n }\n return new InsertQueryImpl(\n this.#tableName,\n this.#table,\n this.#scope,\n this.#values,\n this.ctx,\n columns,\n newRowFields,\n ) as unknown as InsertQuery<QC, AvailableScope, never>;\n },\n );\n\n build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {\n const paramValues = buildParamValues(\n this.#values,\n this.#table,\n this.#tableName,\n 'create',\n this.ctx,\n );\n\n let ast = InsertAst.into(TableSource.named(this.#tableName)).withValues(paramValues);\n\n if (this.#returningColumns.length > 0) {\n ast = ast.withReturning(\n buildReturningProjections(this.#tableName, this.#returningColumns, this.#rowFields),\n );\n }\n\n return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(\n ast,\n this.ctx,\n );\n }\n}\n\nexport class UpdateQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends BuilderBase<QC['capabilities']>\n implements UpdateQuery<QC, AvailableScope, RowType>\n{\n readonly #tableName: string;\n readonly #table: StorageTable;\n readonly #scope: Scope;\n readonly #setValues: Record<string, unknown>;\n readonly #whereCallbacks: readonly WhereCallback[];\n readonly #returningColumns: string[];\n readonly #rowFields: Record<string, ScopeField>;\n\n constructor(\n tableName: string,\n table: StorageTable,\n scope: Scope,\n setValues: Record<string, unknown>,\n ctx: BuilderContext,\n whereCallbacks: readonly WhereCallback[] = [],\n returningColumns: string[] = [],\n rowFields: Record<string, ScopeField> = {},\n ) {\n super(ctx);\n this.#tableName = tableName;\n this.#table = table;\n this.#scope = scope;\n this.#setValues = setValues;\n this.#whereCallbacks = whereCallbacks;\n this.#returningColumns = returningColumns;\n this.#rowFields = rowFields;\n }\n\n where(expr: ExpressionBuilder<AvailableScope, QC>): UpdateQuery<QC, AvailableScope, RowType> {\n return new UpdateQueryImpl(\n this.#tableName,\n this.#table,\n this.#scope,\n this.#setValues,\n this.ctx,\n [...this.#whereCallbacks, expr as unknown as WhereCallback],\n this.#returningColumns,\n this.#rowFields,\n );\n }\n\n returning = this._gate<ReturningCapability, string[], UpdateQuery<QC, AvailableScope, never>>(\n { sql: { returning: true } },\n 'returning',\n (...columns: string[]) => {\n const newRowFields: Record<string, ScopeField> = {};\n for (const col of columns) {\n const field = this.#scope.topLevel[col];\n if (!field) throw new Error(`Column \"${col}\" not found in scope`);\n newRowFields[col] = field;\n }\n return new UpdateQueryImpl(\n this.#tableName,\n this.#table,\n this.#scope,\n this.#setValues,\n this.ctx,\n this.#whereCallbacks,\n columns,\n newRowFields,\n ) as unknown as UpdateQuery<QC, AvailableScope, never>;\n },\n );\n\n build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {\n const setParams = buildParamValues(\n this.#setValues,\n this.#table,\n this.#tableName,\n 'update',\n this.ctx,\n );\n\n const whereExpr = combineWhereExprs(\n this.#whereCallbacks.map((cb) =>\n evaluateWhere(cb, this.#scope, this.ctx.queryOperationTypes),\n ),\n );\n\n let ast = UpdateAst.table(TableSource.named(this.#tableName))\n .withSet(setParams)\n .withWhere(whereExpr);\n\n if (this.#returningColumns.length > 0) {\n ast = ast.withReturning(\n buildReturningProjections(this.#tableName, this.#returningColumns, this.#rowFields),\n );\n }\n\n return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(\n ast,\n this.ctx,\n );\n }\n}\n\nexport class DeleteQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends BuilderBase<QC['capabilities']>\n implements DeleteQuery<QC, AvailableScope, RowType>\n{\n readonly #tableName: string;\n readonly #scope: Scope;\n readonly #whereCallbacks: readonly WhereCallback[];\n readonly #returningColumns: string[];\n readonly #rowFields: Record<string, ScopeField>;\n\n constructor(\n tableName: string,\n scope: Scope,\n ctx: BuilderContext,\n whereCallbacks: readonly WhereCallback[] = [],\n returningColumns: string[] = [],\n rowFields: Record<string, ScopeField> = {},\n ) {\n super(ctx);\n this.#tableName = tableName;\n this.#scope = scope;\n this.#whereCallbacks = whereCallbacks;\n this.#returningColumns = returningColumns;\n this.#rowFields = rowFields;\n }\n\n where(expr: ExpressionBuilder<AvailableScope, QC>): DeleteQuery<QC, AvailableScope, RowType> {\n return new DeleteQueryImpl(\n this.#tableName,\n this.#scope,\n this.ctx,\n [...this.#whereCallbacks, expr as unknown as WhereCallback],\n this.#returningColumns,\n this.#rowFields,\n );\n }\n\n returning = this._gate<ReturningCapability, string[], DeleteQuery<QC, AvailableScope, never>>(\n { sql: { returning: true } },\n 'returning',\n (...columns: string[]) => {\n const newRowFields: Record<string, ScopeField> = {};\n for (const col of columns) {\n const field = this.#scope.topLevel[col];\n if (!field) throw new Error(`Column \"${col}\" not found in scope`);\n newRowFields[col] = field;\n }\n return new DeleteQueryImpl(\n this.#tableName,\n this.#scope,\n this.ctx,\n this.#whereCallbacks,\n columns,\n newRowFields,\n ) as unknown as DeleteQuery<QC, AvailableScope, never>;\n },\n );\n\n build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {\n const whereExpr = combineWhereExprs(\n this.#whereCallbacks.map((cb) =>\n evaluateWhere(cb, this.#scope, this.ctx.queryOperationTypes),\n ),\n );\n\n let ast = DeleteAst.from(TableSource.named(this.#tableName)).withWhere(whereExpr);\n\n if (this.#returningColumns.length > 0) {\n ast = ast.withReturning(\n buildReturningProjections(this.#tableName, this.#returningColumns, this.#rowFields),\n );\n }\n\n return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(\n ast,\n this.ctx,\n );\n }\n}\n","import type { StorageTable } from '@prisma-next/sql-contract/types';\nimport { type AnyFromSource, TableSource } from '@prisma-next/sql-relational-core/ast';\nimport type {\n AggregateFunctions,\n Expression,\n ExpressionBuilder,\n ExtractScopeFields,\n FieldProxy,\n WithField,\n WithFields,\n} from '../expression';\nimport type {\n EmptyRow,\n Expand,\n JoinOuterScope,\n JoinSource,\n MergeScopes,\n NullableScope,\n QueryContext,\n RebindScope,\n Scope,\n ScopeField,\n ScopeTable,\n StorageTableToScopeTable,\n Subquery,\n} from '../scope';\nimport type { TableProxyContract } from '../types/db';\nimport type { JoinedTables } from '../types/joined-tables';\nimport type { DeleteQuery, InsertQuery, UpdateQuery } from '../types/mutation-query';\nimport type { SelectQuery } from '../types/select-query';\nimport type { LateralBuilder } from '../types/shared';\nimport type { TableProxy } from '../types/table-proxy';\nimport { BuilderBase, type BuilderContext, emptyState, tableToScope } from './builder-base';\nimport { JoinedTablesImpl } from './joined-tables-impl';\nimport { DeleteQueryImpl, InsertQueryImpl, UpdateQueryImpl } from './mutation-impl';\nimport { SelectQueryImpl } from './query-impl';\n\nexport class TableProxyImpl<\n C extends TableProxyContract,\n Name extends string & keyof C['storage']['tables'],\n Alias extends string,\n AvailableScope extends Scope,\n QC extends QueryContext,\n >\n extends BuilderBase<C['capabilities']>\n implements TableProxy<C, Name, Alias, AvailableScope, QC>\n{\n declare readonly [JoinOuterScope]: JoinSource<\n StorageTableToScopeTable<C['storage']['tables'][Name]>,\n Alias\n >[typeof JoinOuterScope];\n\n readonly #tableName: string;\n readonly #table: StorageTable;\n readonly #fromSource: TableSource;\n readonly #scope: Scope;\n\n constructor(tableName: string, table: StorageTable, alias: string, ctx: BuilderContext) {\n super(ctx);\n this.#tableName = tableName;\n this.#table = table;\n this.#scope = tableToScope(alias, table);\n this.#fromSource = TableSource.named(tableName, alias !== tableName ? alias : undefined);\n }\n\n lateralJoin = this._gate(\n { sql: { lateral: true } },\n 'lateralJoin',\n <LAlias extends string, LateralRow extends Record<string, ScopeField>>(\n alias: LAlias,\n builder: (lateral: LateralBuilder<QC, AvailableScope>) => Subquery<LateralRow>,\n ): JoinedTables<\n QC,\n MergeScopes<AvailableScope, { topLevel: LateralRow; namespaces: Record<LAlias, LateralRow> }>\n > => {\n return this.#toJoined().lateralJoin(alias, builder);\n },\n ) as TableProxy<C, Name, Alias, AvailableScope, QC>['lateralJoin'];\n\n outerLateralJoin = this._gate(\n { sql: { lateral: true } },\n 'outerLateralJoin',\n <LAlias extends string, LateralRow extends Record<string, ScopeField>>(\n alias: LAlias,\n builder: (lateral: LateralBuilder<QC, AvailableScope>) => Subquery<LateralRow>,\n ): JoinedTables<\n QC,\n MergeScopes<\n AvailableScope,\n NullableScope<{ topLevel: LateralRow; namespaces: Record<LAlias, LateralRow> }>\n >\n > => {\n return this.#toJoined().outerLateralJoin(alias, builder);\n },\n ) as TableProxy<C, Name, Alias, AvailableScope, QC>['outerLateralJoin'];\n\n getJoinOuterScope(): Scope {\n return this.#scope;\n }\n\n buildAst(): AnyFromSource {\n return this.#fromSource;\n }\n\n as<NewAlias extends string>(\n newAlias: NewAlias,\n ): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>> {\n return new TableProxyImpl(this.#tableName, this.#table, newAlias, this.ctx);\n }\n\n select<Columns extends (keyof AvailableScope['topLevel'] & string)[]>(\n ...columns: Columns\n ): SelectQuery<QC, AvailableScope, WithFields<EmptyRow, AvailableScope['topLevel'], Columns>>;\n select<LAlias extends string, Field extends ScopeField>(\n alias: LAlias,\n expr: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Expression<Field>,\n ): SelectQuery<QC, AvailableScope, WithField<EmptyRow, Field, LAlias>>;\n select<Result extends Record<string, Expression<ScopeField>>>(\n callback: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Result,\n ): SelectQuery<QC, AvailableScope, Expand<ExtractScopeFields<Result>>>;\n select(...args: unknown[]): unknown {\n return new SelectQueryImpl(emptyState(this.#fromSource, this.#scope), this.ctx).select(\n ...(args as string[]),\n );\n }\n\n innerJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>> {\n return this.#toJoined().innerJoin(other, on);\n }\n\n outerLeftJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<AvailableScope, NullableScope<Other[typeof JoinOuterScope]>>> {\n return this.#toJoined().outerLeftJoin(other, on);\n }\n\n outerRightJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<NullableScope<AvailableScope>, Other[typeof JoinOuterScope]>> {\n return this.#toJoined().outerRightJoin(other, on);\n }\n\n outerFullJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<\n QC,\n MergeScopes<NullableScope<AvailableScope>, NullableScope<Other[typeof JoinOuterScope]>>\n > {\n return this.#toJoined().outerFullJoin(other, on);\n }\n\n insert(values: Record<string, unknown>): InsertQuery<QC, AvailableScope, EmptyRow> {\n return new InsertQueryImpl(this.#tableName, this.#table, this.#scope, values, this.ctx);\n }\n\n update(set: Record<string, unknown>): UpdateQuery<QC, AvailableScope, EmptyRow> {\n return new UpdateQueryImpl(this.#tableName, this.#table, this.#scope, set, this.ctx);\n }\n\n delete(): DeleteQuery<QC, AvailableScope, EmptyRow> {\n return new DeleteQueryImpl(this.#tableName, this.#scope, this.ctx);\n }\n\n #toJoined(): JoinedTables<QC, AvailableScope> {\n return new JoinedTablesImpl(emptyState(this.#fromSource, this.#scope), this.ctx);\n }\n}\n","import type { Contract } from '@prisma-next/contract/types';\nimport type { SqlStorage } from '@prisma-next/sql-contract/types';\nimport type { ExecutionContext } from '@prisma-next/sql-relational-core/query-lane-context';\nimport type { Db } from '../types/db';\nimport type { BuilderContext } from './builder-base';\nimport { TableProxyImpl } from './table-proxy-impl';\n\nexport interface SqlOptions<C extends Contract<SqlStorage>> {\n readonly context: ExecutionContext<C>;\n}\n\nexport function sql<C extends Contract<SqlStorage>>(options: SqlOptions<C>): Db<C> {\n const { context } = options;\n const ctx: BuilderContext = {\n capabilities: context.contract.capabilities,\n queryOperationTypes: context.queryOperations.entries(),\n target: context.contract.target ?? 'unknown',\n storageHash: context.contract.storage.storageHash ?? 'unknown',\n applyMutationDefaults: (options) => context.applyMutationDefaults(options),\n };\n\n return new Proxy({} as Db<C>, {\n get(_target, prop: string) {\n const tables = context.contract.storage.tables;\n const table = Object.hasOwn(tables, prop) ? tables[prop] : undefined;\n if (table) {\n return new TableProxyImpl(prop, table, prop, ctx);\n }\n return undefined;\n },\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["findUniqueNamespaceFor","#state","#buildLateral","#addLateralJoin","#addJoin","#tableName","#table","#scope","#values","#returningColumns","#rowFields","#setValues","#whereCallbacks","#tableName","#table","#fromSource","#scope","#toJoined"],"sources":["../../src/runtime/expression-impl.ts","../../src/runtime/field-proxy.ts","../../src/runtime/functions.ts","../../src/runtime/builder-base.ts","../../src/runtime/query-impl.ts","../../src/runtime/joined-tables-impl.ts","../../src/runtime/mutation-impl.ts","../../src/runtime/table-proxy-impl.ts","../../src/runtime/sql.ts"],"sourcesContent":["import type { AnyExpression as AstExpression } from '@prisma-next/sql-relational-core/ast';\nimport type { Expression } from '@prisma-next/sql-relational-core/expression';\nimport type { ScopeField } from '../scope';\n\n/**\n * Runtime wrapper around a relational-core AST expression node. Carries ScopeField metadata (codecId, nullable) so aggregate-like combinators can propagate the input codec onto their result.\n *\n * `refs` records the column-bound binding (`{ table, column }`) when known — the field-proxy populates it for both the namespaced form (`f.user.email` → `ColumnRef`) and the top-level shortcut (`f.email` → `IdentifierRef` + refs metadata). Encode-side dispatch and the `validateParamRefRefs` pass read it via `refsOf(expression)`.\n */\nexport class ExpressionImpl<T extends ScopeField = ScopeField> implements Expression<T> {\n private readonly ast: AstExpression;\n readonly returnType: T;\n readonly refs: { readonly table: string; readonly column: string } | undefined;\n\n constructor(\n ast: AstExpression,\n returnType: T,\n refs?: { readonly table: string; readonly column: string },\n ) {\n this.ast = ast;\n this.returnType = returnType;\n this.refs = refs;\n }\n\n buildAst(): AstExpression {\n return this.ast;\n }\n}\n","import { ColumnRef, IdentifierRef } from '@prisma-next/sql-relational-core/ast';\nimport type { FieldProxy } from '../expression';\nimport type { Scope, ScopeTable } from '../scope';\nimport { ExpressionImpl } from './expression-impl';\n\n/**\n * For a top-level field name, find the namespace (table alias) that contributed it. When exactly one namespace owns the field, the top-level binding is unambiguously column-bound and we record that `(table, column)` pair on the `ExpressionImpl` so encode-side dispatch (`forColumn`) and the `validateParamRefRefs` pass can find it. The AST stays as `IdentifierRef` to preserve SQL rendering — adapters render top-level\n * identifiers without an explicit table qualifier — so this change is metadata-only and produces no SQL drift.\n */\nfunction findUniqueNamespaceFor(scope: Scope, fieldName: string): string | undefined {\n let found: string | undefined;\n for (const [namespace, fields] of Object.entries(scope.namespaces)) {\n if (Object.hasOwn(fields, fieldName)) {\n if (found !== undefined) return undefined;\n found = namespace;\n }\n }\n return found;\n}\n\nexport function createFieldProxy<S extends Scope>(scope: S): FieldProxy<S> {\n return new Proxy({} as FieldProxy<S>, {\n get(_target, prop: string) {\n if (Object.hasOwn(scope.topLevel, prop)) {\n const topField = scope.topLevel[prop];\n if (topField) {\n const namespace = findUniqueNamespaceFor(scope, prop);\n const refs = namespace ? { table: namespace, column: prop } : undefined;\n return new ExpressionImpl(IdentifierRef.of(prop), topField, refs);\n }\n }\n\n if (Object.hasOwn(scope.namespaces, prop)) {\n const nsFields = scope.namespaces[prop];\n if (nsFields) return createNamespaceProxy(prop, nsFields);\n }\n\n return undefined;\n },\n });\n}\n\nfunction createNamespaceProxy(\n namespaceName: string,\n fields: ScopeTable,\n): Record<string, ExpressionImpl> {\n return new Proxy({} as Record<string, ExpressionImpl>, {\n get(_target, prop: string) {\n if (Object.hasOwn(fields, prop)) {\n const field = fields[prop];\n if (field) return new ExpressionImpl(ColumnRef.of(namespaceName, prop), field);\n }\n return undefined;\n },\n });\n}\n","import type { SqlOperationEntry } from '@prisma-next/sql-operations';\nimport {\n AggregateExpr,\n AndExpr,\n type AnyExpression as AstExpression,\n BinaryExpr,\n type BinaryOp,\n ExistsExpr,\n ListExpression,\n LiteralExpr,\n NullCheckExpr,\n OrExpr,\n SubqueryExpr,\n} from '@prisma-next/sql-relational-core/ast';\nimport { refsOf, toExpr } from '@prisma-next/sql-relational-core/expression';\nimport type {\n AggregateFunctions,\n AggregateOnlyFunctions,\n BooleanCodecType,\n BuiltinFunctions,\n CodecExpression,\n Expression,\n Functions,\n} from '../expression';\nimport type { QueryContext, ScopeField, Subquery } from '../scope';\nimport { ExpressionImpl } from './expression-impl';\n\ntype CodecTypes = Record<string, { readonly input: unknown }>;\n// Runtime-level ExprOrVal — accepts any codec, any nullability. Concrete codec typing lives on the public BuiltinFunctions surface in `../expression`.\ntype ExprOrVal<CodecId extends string = string, N extends boolean = boolean> = CodecExpression<\n CodecId,\n N,\n CodecTypes\n>;\n\nconst BOOL_FIELD: BooleanCodecType = { codecId: 'pg/bool@1', nullable: false };\n\nconst resolve = toExpr;\n\n/**\n * Resolve a binary-comparison operand into an AST expression, threading the column-bound side's `codecId` + `refs` to the raw-value side.\n *\n * For `fns.eq(f.email, 'alice@example.com')`, `f.email` is the column-bound expression carrying a `ColumnRef` AST and a `returnType.codecId` (`pg/varchar@1`); the raw string operand has no codec context. By deriving the codec context from the column-bound side and forwarding it via `toExpr(value, codecId, refs)`, the resulting `ParamRef` carries the column refs that encode-side `forColumn` dispatch needs (and that the\n * validator pass requires for parameterized codec ids like `pg/varchar@1` with a length parameter).\n */\nfunction resolveOperand(\n operand: ExprOrVal,\n otherCodecId?: string,\n otherRefs?: { table: string; column: string },\n): AstExpression {\n if (isExpressionLike(operand)) return operand.buildAst();\n return toExpr(operand, otherCodecId, otherRefs);\n}\n\nfunction isExpressionLike(\n value: unknown,\n): value is { buildAst: () => AstExpression; returnType?: { codecId: string } } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'buildAst' in value &&\n typeof (value as { buildAst: unknown }).buildAst === 'function'\n );\n}\n\nfunction operandCodecId(operand: ExprOrVal): string | undefined {\n if (!isExpressionLike(operand)) return undefined;\n return (operand as { returnType?: { codecId: string } }).returnType?.codecId;\n}\n\nfunction operandRefs(operand: ExprOrVal): { table: string; column: string } | undefined {\n return refsOf(operand);\n}\n\n/**\n * Resolves an Expression via `buildAst()`, or wraps a raw value as a `LiteralExpr` — an SQL literal inlined into the query text, not a bound parameter.\n *\n * Used for `and` / `or` operands. The usual operand is an `Expression<bool>` (e.g. the result of `fns.eq`), which this function passes through by calling `buildAst()`. The only time the raw-value branch fires is when the caller writes `fns.and(true, x)` or similar — inlining `TRUE`/`FALSE` literals lets the SQL planner statically simplify `TRUE AND x` to `x`, which it cannot do for an opaque `ParamRef`.\n */\nfunction toLiteralExpr(value: unknown): AstExpression {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'buildAst' in value &&\n typeof (value as { buildAst: unknown }).buildAst === 'function'\n ) {\n return (value as { buildAst(): AstExpression }).buildAst();\n }\n return new LiteralExpr(value);\n}\n\nfunction boolExpr(astNode: AstExpression): ExpressionImpl<BooleanCodecType> {\n return new ExpressionImpl(astNode, BOOL_FIELD);\n}\n\nfunction binaryWithSharedCodec(\n a: ExprOrVal,\n b: ExprOrVal,\n build: (left: AstExpression, right: AstExpression) => AstExpression,\n): AstExpression {\n const aCodecId = operandCodecId(a);\n const bCodecId = operandCodecId(b);\n const aRefs = operandRefs(a);\n const bRefs = operandRefs(b);\n const left = resolveOperand(a, bCodecId, bRefs);\n const right = resolveOperand(b, aCodecId, aRefs);\n return build(left, right);\n}\n\nfunction eq(a: ExprOrVal, b: ExprOrVal): ExpressionImpl<BooleanCodecType> {\n if (b === null) return boolExpr(NullCheckExpr.isNull(resolve(a)));\n if (a === null) return boolExpr(NullCheckExpr.isNull(resolve(b)));\n return boolExpr(binaryWithSharedCodec(a, b, (l, r) => new BinaryExpr('eq', l, r)));\n}\n\nfunction ne(a: ExprOrVal, b: ExprOrVal): ExpressionImpl<BooleanCodecType> {\n if (b === null) return boolExpr(NullCheckExpr.isNotNull(resolve(a)));\n if (a === null) return boolExpr(NullCheckExpr.isNotNull(resolve(b)));\n return boolExpr(binaryWithSharedCodec(a, b, (l, r) => new BinaryExpr('neq', l, r)));\n}\n\nfunction comparison(a: ExprOrVal, b: ExprOrVal, op: BinaryOp): ExpressionImpl<BooleanCodecType> {\n return boolExpr(binaryWithSharedCodec(a, b, (l, r) => new BinaryExpr(op, l, r)));\n}\n\nfunction inOrNotIn(\n expr: Expression<ScopeField>,\n valuesOrSubquery: Subquery<Record<string, ScopeField>> | ExprOrVal[],\n op: 'in' | 'notIn',\n): ExpressionImpl<BooleanCodecType> {\n const left = expr.buildAst();\n const leftCodecId = expr.returnType.codecId;\n const leftRefs = refsOf(expr);\n const binaryFn = op === 'in' ? BinaryExpr.in : BinaryExpr.notIn;\n\n if (Array.isArray(valuesOrSubquery)) {\n const refs = valuesOrSubquery.map((v) => resolveOperand(v, leftCodecId, leftRefs));\n return boolExpr(binaryFn(left, ListExpression.of(refs)));\n }\n return boolExpr(binaryFn(left, SubqueryExpr.of(valuesOrSubquery.buildAst())));\n}\n\nfunction numericAgg(\n fn: 'sum' | 'avg' | 'min' | 'max',\n expr: Expression<ScopeField>,\n): ExpressionImpl<{ codecId: string; nullable: true }> {\n return new ExpressionImpl(AggregateExpr[fn](expr.buildAst()), {\n codecId: expr.returnType.codecId,\n nullable: true as const,\n });\n}\n\nfunction createBuiltinFunctions() {\n return {\n eq: (a: ExprOrVal, b: ExprOrVal) => eq(a, b),\n ne: (a: ExprOrVal, b: ExprOrVal) => ne(a, b),\n gt: (a: ExprOrVal, b: ExprOrVal) => comparison(a, b, 'gt'),\n gte: (a: ExprOrVal, b: ExprOrVal) => comparison(a, b, 'gte'),\n lt: (a: ExprOrVal, b: ExprOrVal) => comparison(a, b, 'lt'),\n lte: (a: ExprOrVal, b: ExprOrVal) => comparison(a, b, 'lte'),\n and: (...exprs: ExprOrVal<'pg/bool@1', boolean>[]) =>\n boolExpr(AndExpr.of(exprs.map(toLiteralExpr))),\n or: (...exprs: ExprOrVal<'pg/bool@1', boolean>[]) =>\n boolExpr(OrExpr.of(exprs.map(toLiteralExpr))),\n exists: (subquery: Subquery<Record<string, ScopeField>>) =>\n boolExpr(ExistsExpr.exists(subquery.buildAst())),\n notExists: (subquery: Subquery<Record<string, ScopeField>>) =>\n boolExpr(ExistsExpr.notExists(subquery.buildAst())),\n in: (\n expr: Expression<ScopeField>,\n valuesOrSubquery: Subquery<Record<string, ScopeField>> | ExprOrVal[],\n ) => inOrNotIn(expr, valuesOrSubquery, 'in'),\n notIn: (\n expr: Expression<ScopeField>,\n valuesOrSubquery: Subquery<Record<string, ScopeField>> | ExprOrVal[],\n ) => inOrNotIn(expr, valuesOrSubquery, 'notIn'),\n } satisfies BuiltinFunctions<CodecTypes>;\n}\n\nfunction createAggregateOnlyFunctions() {\n return {\n count: (expr?: Expression<ScopeField>) => {\n const astExpr = expr ? expr.buildAst() : undefined;\n return new ExpressionImpl(AggregateExpr.count(astExpr), {\n codecId: 'pg/int8@1',\n nullable: false,\n });\n },\n sum: (expr: Expression<ScopeField>) => numericAgg('sum', expr),\n avg: (expr: Expression<ScopeField>) => numericAgg('avg', expr),\n min: (expr: Expression<ScopeField>) => numericAgg('min', expr),\n max: (expr: Expression<ScopeField>) => numericAgg('max', expr),\n } satisfies AggregateOnlyFunctions;\n}\n\nexport function createFunctions<QC extends QueryContext>(\n operations: Readonly<Record<string, SqlOperationEntry>>,\n): Functions<QC> {\n const builtins = createBuiltinFunctions();\n\n return new Proxy({} as Functions<QC>, {\n get(_target, prop: string) {\n const builtin = (builtins as Record<string, unknown>)[prop];\n if (builtin) return builtin;\n\n const op = operations[prop];\n if (op) return op.impl;\n return undefined;\n },\n });\n}\n\nexport function createAggregateFunctions<QC extends QueryContext>(\n operations: Readonly<Record<string, SqlOperationEntry>>,\n): AggregateFunctions<QC> {\n const baseFns = createFunctions<QC>(operations);\n const aggregates = createAggregateOnlyFunctions();\n\n return new Proxy({} as AggregateFunctions<QC>, {\n get(_target, prop: string) {\n const agg = (aggregates as Record<string, unknown>)[prop];\n if (agg) return agg;\n\n return (baseFns as Record<string, unknown>)[prop];\n },\n });\n}\n","import type { PlanMeta } from '@prisma-next/contract/types';\nimport type { StorageTable } from '@prisma-next/sql-contract/types';\nimport type { SqlOperationEntry } from '@prisma-next/sql-operations';\nimport {\n AndExpr,\n type AnyExpression as AstExpression,\n collectOrderedParamRefs,\n IdentifierRef,\n OrderByItem,\n ProjectionItem,\n SelectAst,\n type TableSource,\n} from '@prisma-next/sql-relational-core/ast';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type {\n AppliedMutationDefault,\n MutationDefaultsOptions,\n} from '@prisma-next/sql-relational-core/query-lane-context';\nimport type {\n AggregateFunctions,\n Expression,\n FieldProxy,\n OrderByOptions,\n OrderByScope,\n} from '../expression';\nimport type {\n GatedMethod,\n MergeScopes,\n NullableScope,\n QueryContext,\n Scope,\n ScopeField,\n ScopeTable,\n} from '../scope';\nimport { createFieldProxy } from './field-proxy';\nimport { createAggregateFunctions, createFunctions } from './functions';\n\nexport type ExprCallback = (fields: FieldProxy<Scope>, fns: unknown) => Expression<ScopeField>;\n\nexport class BuilderBase<Capabilities = unknown> {\n protected readonly ctx: BuilderContext;\n\n constructor(ctx: BuilderContext) {\n this.ctx = ctx;\n }\n\n protected _gate<Req extends Record<string, Record<string, boolean>>, Args extends unknown[], R>(\n required: Req,\n methodName: string,\n method: (...args: Args) => R,\n ): GatedMethod<Capabilities, Req, (...args: Args) => R> {\n return ((...args: Args): R => {\n assertCapability(this.ctx, required, methodName);\n return method(...args);\n }) as GatedMethod<Capabilities, Req, (...args: Args) => R>;\n }\n}\n\nexport interface BuilderState {\n readonly from: TableSource;\n readonly joins: readonly import('@prisma-next/sql-relational-core/ast').JoinAst[];\n readonly projections: readonly ProjectionItem[];\n readonly where: readonly AstExpression[];\n readonly orderBy: readonly OrderByItem[];\n readonly groupBy: readonly AstExpression[];\n readonly having: AstExpression | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n readonly distinct: true | undefined;\n readonly distinctOn: readonly AstExpression[] | undefined;\n readonly scope: Scope;\n readonly rowFields: Record<string, ScopeField>;\n}\n\nexport interface BuilderContext {\n readonly capabilities: Record<string, Record<string, boolean>>;\n readonly queryOperationTypes: Readonly<Record<string, SqlOperationEntry>>;\n readonly target: string;\n readonly storageHash: string;\n readonly applyMutationDefaults: (\n options: MutationDefaultsOptions,\n ) => ReadonlyArray<AppliedMutationDefault>;\n}\n\nexport function emptyState(from: TableSource, scope: Scope): BuilderState {\n return {\n from,\n joins: [],\n projections: [],\n where: [],\n orderBy: [],\n groupBy: [],\n having: undefined,\n limit: undefined,\n offset: undefined,\n distinct: undefined,\n distinctOn: undefined,\n scope,\n rowFields: {},\n };\n}\n\nexport function cloneState(state: BuilderState, overrides: Partial<BuilderState>): BuilderState {\n return { ...state, ...overrides };\n}\n\nexport function combineWhereExprs(exprs: readonly AstExpression[]): AstExpression | undefined {\n if (exprs.length === 0) return undefined;\n if (exprs.length === 1) return exprs[0];\n return AndExpr.of(exprs);\n}\n\n/**\n * Same uniqueness rule as the field-proxy's `findUniqueNamespaceFor`: when exactly one namespace owns a top-level field, the binding is unambiguous. Used by `select('col', ...)` to attach `refs` metadata to the resulting `ProjectionItem` while keeping the AST as `IdentifierRef` (so SQL renders unchanged).\n */\nfunction findUniqueNamespaceFor(scope: Scope, fieldName: string): string | undefined {\n let found: string | undefined;\n for (const [namespace, fields] of Object.entries(scope.namespaces)) {\n if (Object.hasOwn(fields, fieldName)) {\n if (found !== undefined) return undefined;\n found = namespace;\n }\n }\n return found;\n}\n\nexport function buildSelectAst(state: BuilderState): SelectAst {\n const where = combineWhereExprs(state.where);\n return new SelectAst({\n from: state.from,\n joins: state.joins.length > 0 ? state.joins : undefined,\n projection: state.projections,\n where,\n orderBy: state.orderBy.length > 0 ? state.orderBy : undefined,\n distinct: state.distinct,\n distinctOn: state.distinctOn && state.distinctOn.length > 0 ? state.distinctOn : undefined,\n groupBy: state.groupBy.length > 0 ? state.groupBy : undefined,\n having: state.having,\n limit: state.limit,\n offset: state.offset,\n selectAllIntent: undefined,\n });\n}\n\nexport function buildQueryPlan<Row = unknown>(\n ast: import('@prisma-next/sql-relational-core/ast').AnyQueryAst,\n ctx: BuilderContext,\n): SqlQueryPlan<Row> {\n const paramValues = collectOrderedParamRefs(ast).map((r) => r.value);\n\n const meta: PlanMeta = Object.freeze({\n target: ctx.target,\n storageHash: ctx.storageHash,\n lane: 'dsl',\n });\n\n return Object.freeze({ ast, params: paramValues, meta });\n}\n\nexport function buildPlan<Row = unknown>(\n state: BuilderState,\n ctx: BuilderContext,\n): SqlQueryPlan<Row> {\n return buildQueryPlan<Row>(buildSelectAst(state), ctx);\n}\n\nexport function tableToScope(name: string, table: StorageTable): Scope {\n const fields: ScopeTable = {};\n for (const [colName, col] of Object.entries(table.columns)) {\n fields[colName] = { codecId: col.codecId, nullable: col.nullable };\n }\n return { topLevel: { ...fields }, namespaces: { [name]: fields } };\n}\n\nexport function mergeScopes<A extends Scope, B extends Scope>(a: A, b: B): MergeScopes<A, B> {\n const topLevel: ScopeTable = {};\n for (const [k, v] of Object.entries(a.topLevel)) {\n if (!(k in b.topLevel)) topLevel[k] = v;\n }\n for (const [k, v] of Object.entries(b.topLevel)) {\n if (!(k in a.topLevel)) topLevel[k] = v;\n }\n return {\n topLevel,\n namespaces: { ...a.namespaces, ...b.namespaces },\n } as MergeScopes<A, B>;\n}\n\nexport function nullableScope<S extends Scope>(scope: S): NullableScope<S> {\n const mkNullable = (tbl: ScopeTable): ScopeTable => {\n const result: ScopeTable = {};\n for (const [k, v] of Object.entries(tbl)) {\n result[k] = { codecId: v.codecId, nullable: true };\n }\n return result;\n };\n const namespaces: Record<string, ScopeTable> = {};\n for (const [k, v] of Object.entries(scope.namespaces)) {\n namespaces[k] = mkNullable(v);\n }\n return { topLevel: mkNullable(scope.topLevel), namespaces } as NullableScope<S>;\n}\n\nexport function orderByScopeOf<S extends Scope, R extends Record<string, ScopeField>>(\n scope: S,\n rowFields: R,\n): OrderByScope<S, R> {\n return {\n topLevel: { ...scope.topLevel, ...rowFields },\n namespaces: scope.namespaces,\n };\n}\n\nexport function assertCapability(\n ctx: BuilderContext,\n required: Record<string, Record<string, boolean>>,\n methodName: string,\n): void {\n for (const [ns, keys] of Object.entries(required)) {\n for (const key of Object.keys(keys)) {\n if (!ctx.capabilities[ns]?.[key]) {\n throw new Error(`${methodName}() requires capability ${ns}.${key}`);\n }\n }\n }\n}\n\nexport function resolveSelectArgs(\n args: unknown[],\n scope: Scope,\n ctx: BuilderContext,\n): { projections: ProjectionItem[]; newRowFields: Record<string, ScopeField> } {\n const projections: ProjectionItem[] = [];\n const newRowFields: Record<string, ScopeField> = {};\n\n if (args.length === 0) return { projections, newRowFields };\n\n if (typeof args[0] === 'string' && (args.length === 1 || typeof args[1] !== 'function')) {\n for (const colName of args as string[]) {\n const field = scope.topLevel[colName];\n if (!field) throw new Error(`Column \"${colName}\" not found in scope`);\n const namespace = findUniqueNamespaceFor(scope, colName);\n const refs = namespace ? { table: namespace, column: colName } : undefined;\n projections.push(ProjectionItem.of(colName, IdentifierRef.of(colName), field.codecId, refs));\n newRowFields[colName] = field;\n }\n return { projections, newRowFields };\n }\n\n if (typeof args[0] === 'string' && typeof args[1] === 'function') {\n const alias = args[0] as string;\n const exprFn = args[1] as (\n f: FieldProxy<Scope>,\n fns: AggregateFunctions<QueryContext>,\n ) => Expression<ScopeField>;\n const fns = createAggregateFunctions(ctx.queryOperationTypes);\n const result = exprFn(createFieldProxy(scope), fns);\n const field = result.returnType;\n projections.push(ProjectionItem.of(alias, result.buildAst(), field.codecId));\n newRowFields[alias] = field;\n return { projections, newRowFields };\n }\n\n if (typeof args[0] === 'function') {\n const callbackFn = args[0] as (\n f: FieldProxy<Scope>,\n fns: AggregateFunctions<QueryContext>,\n ) => Record<string, Expression<ScopeField>>;\n const fns = createAggregateFunctions(ctx.queryOperationTypes);\n const record = callbackFn(createFieldProxy(scope), fns);\n for (const [key, expr] of Object.entries(record)) {\n const field = expr.returnType;\n projections.push(ProjectionItem.of(key, expr.buildAst(), field.codecId));\n newRowFields[key] = field;\n }\n return { projections, newRowFields };\n }\n\n throw new Error('Invalid .select() arguments');\n}\n\nexport function resolveOrderBy(\n arg: unknown,\n options: OrderByOptions | undefined,\n scope: Scope,\n rowFields: Record<string, ScopeField>,\n ctx: BuilderContext,\n useAggregateFns: boolean,\n): OrderByItem {\n const dir = options?.direction ?? 'asc';\n\n if (typeof arg === 'string') {\n const combined = orderByScopeOf(scope, rowFields);\n if (!(arg in combined.topLevel))\n throw new Error(`Column \"${arg}\" not found in scope for orderBy`);\n const expr = IdentifierRef.of(arg);\n return dir === 'asc' ? OrderByItem.asc(expr) : OrderByItem.desc(expr);\n }\n\n if (typeof arg === 'function') {\n const combined = orderByScopeOf(scope, rowFields);\n const fns = useAggregateFns\n ? createAggregateFunctions(ctx.queryOperationTypes)\n : createFunctions(ctx.queryOperationTypes);\n const result = (arg as ExprCallback)(createFieldProxy(combined), fns);\n return dir === 'asc' ? OrderByItem.asc(result.buildAst()) : OrderByItem.desc(result.buildAst());\n }\n\n throw new Error('Invalid orderBy argument');\n}\n\nexport function resolveGroupBy(\n args: unknown[],\n scope: Scope,\n rowFields: Record<string, ScopeField>,\n ctx: BuilderContext,\n): AstExpression[] {\n if (typeof args[0] === 'string') {\n const combined = orderByScopeOf(scope, rowFields);\n return (args as string[]).map((colName) => {\n if (!(colName in combined.topLevel))\n throw new Error(`Column \"${colName}\" not found in scope for groupBy`);\n return IdentifierRef.of(colName);\n });\n }\n\n if (typeof args[0] === 'function') {\n const combined = orderByScopeOf(scope, rowFields);\n const fns = createFunctions(ctx.queryOperationTypes);\n const result = (args[0] as ExprCallback)(createFieldProxy(combined), fns);\n return [result.buildAst()];\n }\n\n throw new Error('Invalid groupBy arguments');\n}\n\nexport function resolveDistinctOn(\n args: unknown[],\n scope: Scope,\n rowFields: Record<string, ScopeField>,\n ctx: BuilderContext,\n): AstExpression[] {\n if (args.length === 1 && typeof args[0] === 'function') {\n const combined = orderByScopeOf(scope, rowFields);\n const fns = createFunctions(ctx.queryOperationTypes);\n const result = (args[0] as ExprCallback)(createFieldProxy(combined), fns);\n return [result.buildAst()];\n }\n const combined = orderByScopeOf(scope, rowFields);\n return (args as string[]).map((colName) => {\n if (!(colName in combined.topLevel))\n throw new Error(`Column \"${colName}\" not found in scope for distinctOn`);\n return IdentifierRef.of(colName);\n });\n}\n","import { DerivedTableSource, type SelectAst } from '@prisma-next/sql-relational-core/ast';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type {\n AggregateFunctions,\n BooleanCodecType,\n Expression,\n ExpressionBuilder,\n ExtractScopeFields,\n FieldProxy,\n Functions,\n OrderByOptions,\n OrderByScope,\n WithField,\n WithFields,\n} from '../expression';\nimport type { ResolveRow } from '../resolve';\nimport type {\n Expand,\n JoinOuterScope,\n JoinSource,\n QueryContext,\n Scope,\n ScopeField,\n // biome-ignore lint/correctness/noUnusedImports: used in `declare` property\n SubqueryMarker,\n} from '../scope';\nimport type { GroupedQuery } from '../types/grouped-query';\nimport type { SelectQuery } from '../types/select-query';\nimport {\n BuilderBase,\n type BuilderContext,\n type BuilderState,\n buildPlan,\n buildSelectAst,\n cloneState,\n orderByScopeOf,\n resolveDistinctOn,\n resolveGroupBy,\n resolveOrderBy,\n resolveSelectArgs,\n} from './builder-base';\nimport { createFieldProxy } from './field-proxy';\nimport { createAggregateFunctions, createFunctions } from './functions';\n\nabstract class QueryBase<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n> extends BuilderBase<QC['capabilities']> {\n protected readonly state: BuilderState;\n\n constructor(state: BuilderState, ctx: BuilderContext) {\n super(ctx);\n this.state = state;\n }\n\n protected abstract clone(state: BuilderState): this;\n\n distinctOn = this._gate(\n { postgres: { distinctOn: true } },\n 'distinctOn',\n (...args: unknown[]) => {\n const exprs = resolveDistinctOn(args, this.state.scope, this.state.rowFields, this.ctx);\n return this.clone(\n cloneState(this.state, {\n distinctOn: [...(this.state.distinctOn ?? []), ...exprs],\n }),\n );\n },\n );\n\n limit(count: number): this {\n return this.clone(cloneState(this.state, { limit: count }));\n }\n\n offset(count: number): this {\n return this.clone(cloneState(this.state, { offset: count }));\n }\n\n distinct(): this {\n return this.clone(cloneState(this.state, { distinct: true }));\n }\n\n groupBy(\n ...fields: ((keyof RowType | keyof AvailableScope['topLevel']) & string)[]\n ): GroupedQuery<QC, AvailableScope, RowType>;\n groupBy(\n expr: (\n fields: FieldProxy<OrderByScope<AvailableScope, RowType>>,\n fns: Functions<QC>,\n ) => Expression<ScopeField>,\n ): GroupedQuery<QC, AvailableScope, RowType>;\n groupBy(...args: unknown[]): unknown {\n const exprs = resolveGroupBy(args, this.state.scope, this.state.rowFields, this.ctx);\n return new GroupedQueryImpl<QC, AvailableScope, RowType>(\n cloneState(this.state, { groupBy: [...this.state.groupBy, ...exprs] }),\n this.ctx,\n );\n }\n\n as<Alias extends string>(alias: Alias): JoinSource<RowType, Alias> {\n const ast = buildSelectAst(this.state);\n const derivedSource = DerivedTableSource.as(alias, ast);\n const scope = {\n topLevel: this.state.rowFields as RowType,\n namespaces: { [alias]: this.state.rowFields } as Record<Alias, RowType>,\n };\n return {\n getJoinOuterScope: () => scope,\n buildAst: () => derivedSource,\n\n // `as unknown` is necessary, because JoinOuterScope is a phantom type-only property that does not exist at runtime\n } satisfies Omit<JoinSource<RowType, Alias>, typeof JoinOuterScope> as unknown as JoinSource<\n RowType,\n Alias\n >;\n }\n\n getRowFields(): Record<string, ScopeField> {\n return this.state.rowFields;\n }\n\n buildAst(): SelectAst {\n return buildSelectAst(this.state);\n }\n\n build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {\n return buildPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(\n this.state,\n this.ctx,\n );\n }\n}\n\nexport class SelectQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends QueryBase<QC, AvailableScope, RowType>\n implements SelectQuery<QC, AvailableScope, RowType>\n{\n declare readonly [SubqueryMarker]: RowType;\n\n protected clone(state: BuilderState): this {\n return new SelectQueryImpl<QC, AvailableScope, RowType>(state, this.ctx) as this;\n }\n\n select<Columns extends (keyof AvailableScope['topLevel'] & string)[]>(\n ...columns: Columns\n ): SelectQuery<QC, AvailableScope, WithFields<RowType, AvailableScope['topLevel'], Columns>>;\n select<Alias extends string, Field extends ScopeField>(\n alias: Alias,\n expr: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Expression<Field>,\n ): SelectQuery<QC, AvailableScope, WithField<RowType, Field, Alias>>;\n select<Result extends Record<string, Expression<ScopeField>>>(\n callback: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Result,\n ): SelectQuery<QC, AvailableScope, Expand<RowType & ExtractScopeFields<Result>>>;\n select(...args: unknown[]): unknown {\n const { projections, newRowFields } = resolveSelectArgs(args, this.state.scope, this.ctx);\n return new SelectQueryImpl(\n cloneState(this.state, {\n projections: [...this.state.projections, ...projections],\n rowFields: { ...this.state.rowFields, ...newRowFields },\n }),\n this.ctx,\n );\n }\n\n where(expr: ExpressionBuilder<AvailableScope, QC>): SelectQuery<QC, AvailableScope, RowType> {\n const fieldProxy = createFieldProxy(this.state.scope);\n const fns = createFunctions<QC>(this.ctx.queryOperationTypes);\n const result = (expr as ExpressionBuilder<Scope, QueryContext>)(fieldProxy, fns as never);\n return new SelectQueryImpl(\n cloneState(this.state, {\n where: [...this.state.where, result.buildAst()],\n }),\n this.ctx,\n );\n }\n\n orderBy(\n field: (keyof RowType | keyof AvailableScope['topLevel']) & string,\n options?: OrderByOptions,\n ): SelectQuery<QC, AvailableScope, RowType>;\n orderBy(\n expr: (\n fields: FieldProxy<OrderByScope<AvailableScope, RowType>>,\n fns: Functions<QC>,\n ) => Expression<ScopeField>,\n options?: OrderByOptions,\n ): SelectQuery<QC, AvailableScope, RowType>;\n orderBy(arg: unknown, options?: OrderByOptions): unknown {\n const item = resolveOrderBy(\n arg,\n options,\n this.state.scope,\n this.state.rowFields,\n this.ctx,\n false,\n );\n return this.clone(cloneState(this.state, { orderBy: [...this.state.orderBy, item] }));\n }\n}\n\nexport class GroupedQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends QueryBase<QC, AvailableScope, RowType>\n implements GroupedQuery<QC, AvailableScope, RowType>\n{\n declare readonly [SubqueryMarker]: RowType;\n\n protected clone(state: BuilderState): this {\n return new GroupedQueryImpl<QC, AvailableScope, RowType>(state, this.ctx) as this;\n }\n\n having(\n expr: (\n fields: FieldProxy<OrderByScope<AvailableScope, RowType>>,\n fns: AggregateFunctions<QC>,\n ) => Expression<BooleanCodecType>,\n ): GroupedQuery<QC, AvailableScope, RowType> {\n const combined = orderByScopeOf(\n this.state.scope as AvailableScope,\n this.state.rowFields as RowType,\n );\n const fns = createAggregateFunctions(this.ctx.queryOperationTypes);\n const result = expr(createFieldProxy(combined), fns);\n return new GroupedQueryImpl(cloneState(this.state, { having: result.buildAst() }), this.ctx);\n }\n\n orderBy(\n field: (keyof RowType | keyof AvailableScope['topLevel']) & string,\n options?: OrderByOptions,\n ): GroupedQuery<QC, AvailableScope, RowType>;\n orderBy(\n expr: (\n fields: FieldProxy<OrderByScope<AvailableScope, RowType>>,\n fns: AggregateFunctions<QC>,\n ) => Expression<ScopeField>,\n options?: OrderByOptions,\n ): GroupedQuery<QC, AvailableScope, RowType>;\n orderBy(arg: unknown, options?: OrderByOptions): unknown {\n const item = resolveOrderBy(\n arg,\n options,\n this.state.scope,\n this.state.rowFields,\n this.ctx,\n true,\n );\n return this.clone(cloneState(this.state, { orderBy: [...this.state.orderBy, item] }));\n }\n}\n","import {\n AndExpr,\n DerivedTableSource,\n JoinAst,\n type TableSource,\n} from '@prisma-next/sql-relational-core/ast';\nimport type {\n AggregateFunctions,\n Expression,\n ExpressionBuilder,\n ExtractScopeFields,\n FieldProxy,\n WithField,\n WithFields,\n} from '../expression';\nimport type {\n EmptyRow,\n Expand,\n JoinOuterScope,\n JoinSource,\n MergeScopes,\n NullableScope,\n QueryContext,\n Scope,\n ScopeField,\n ScopeTable,\n Subquery,\n} from '../scope';\nimport type { JoinedTables } from '../types/joined-tables';\nimport type { SelectQuery } from '../types/select-query';\nimport type { LateralBuilder } from '../types/shared';\nimport {\n BuilderBase,\n type BuilderContext,\n type BuilderState,\n cloneState,\n emptyState,\n mergeScopes,\n nullableScope,\n resolveSelectArgs,\n} from './builder-base';\nimport { createFieldProxy } from './field-proxy';\nimport { createFunctions } from './functions';\nimport { SelectQueryImpl } from './query-impl';\n\nexport class JoinedTablesImpl<QC extends QueryContext, AvailableScope extends Scope>\n extends BuilderBase<QC['capabilities']>\n implements JoinedTables<QC, AvailableScope>\n{\n readonly #state: BuilderState;\n\n constructor(state: BuilderState, ctx: BuilderContext) {\n super(ctx);\n this.#state = state;\n }\n\n lateralJoin = this._gate(\n { sql: { lateral: true } },\n 'lateralJoin',\n <Alias extends string, LateralRow extends Record<string, ScopeField>>(\n alias: Alias,\n builder: (lateral: LateralBuilder<QC, AvailableScope>) => Subquery<LateralRow>,\n ): JoinedTables<\n QC,\n MergeScopes<AvailableScope, { topLevel: LateralRow; namespaces: Record<Alias, LateralRow> }>\n > => {\n const { derivedSource, lateralScope } = this.#buildLateral(alias, builder);\n const resultScope = mergeScopes(\n this.#state.scope as AvailableScope,\n lateralScope as { topLevel: LateralRow; namespaces: Record<Alias, LateralRow> },\n );\n return this.#addLateralJoin('inner', resultScope, derivedSource);\n },\n ) as JoinedTables<QC, AvailableScope>['lateralJoin'];\n\n outerLateralJoin = this._gate(\n { sql: { lateral: true } },\n 'outerLateralJoin',\n <Alias extends string, LateralRow extends Record<string, ScopeField>>(\n alias: Alias,\n builder: (lateral: LateralBuilder<QC, AvailableScope>) => Subquery<LateralRow>,\n ): JoinedTables<\n QC,\n MergeScopes<\n AvailableScope,\n NullableScope<{ topLevel: LateralRow; namespaces: Record<Alias, LateralRow> }>\n >\n > => {\n const { derivedSource, lateralScope } = this.#buildLateral(alias, builder);\n const resultScope = mergeScopes(\n this.#state.scope as AvailableScope,\n nullableScope(\n lateralScope as { topLevel: LateralRow; namespaces: Record<Alias, LateralRow> },\n ),\n );\n return this.#addLateralJoin('left', resultScope, derivedSource);\n },\n ) as JoinedTables<QC, AvailableScope>['outerLateralJoin'];\n\n select<Columns extends (keyof AvailableScope['topLevel'] & string)[]>(\n ...columns: Columns\n ): SelectQuery<QC, AvailableScope, WithFields<EmptyRow, AvailableScope['topLevel'], Columns>>;\n select<Alias extends string, Field extends ScopeField>(\n alias: Alias,\n expr: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Expression<Field>,\n ): SelectQuery<QC, AvailableScope, WithField<EmptyRow, Field, Alias>>;\n select<Result extends Record<string, Expression<ScopeField>>>(\n callback: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Result,\n ): SelectQuery<QC, AvailableScope, Expand<ExtractScopeFields<Result>>>;\n select(...args: unknown[]): unknown {\n const { projections, newRowFields } = resolveSelectArgs(args, this.#state.scope, this.ctx);\n return new SelectQueryImpl<QC, AvailableScope>(\n cloneState(this.#state, {\n projections: [...this.#state.projections, ...projections],\n rowFields: { ...this.#state.rowFields, ...newRowFields },\n }),\n this.ctx,\n );\n }\n\n innerJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>> {\n const targetScope = mergeScopes(\n this.#state.scope as AvailableScope,\n other.getJoinOuterScope() as Other[typeof JoinOuterScope],\n );\n return this.#addJoin(other, 'inner', targetScope, on);\n }\n\n outerLeftJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<AvailableScope, NullableScope<Other[typeof JoinOuterScope]>>> {\n const targetScope = mergeScopes(\n this.#state.scope as AvailableScope,\n nullableScope(other.getJoinOuterScope() as Other[typeof JoinOuterScope]),\n );\n return this.#addJoin(other, 'left', targetScope, on);\n }\n\n outerRightJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<NullableScope<AvailableScope>, Other[typeof JoinOuterScope]>> {\n const targetScope = mergeScopes(\n nullableScope(this.#state.scope as AvailableScope),\n other.getJoinOuterScope() as Other[typeof JoinOuterScope],\n );\n return this.#addJoin(other, 'right', targetScope, on);\n }\n\n outerFullJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<\n QC,\n MergeScopes<NullableScope<AvailableScope>, NullableScope<Other[typeof JoinOuterScope]>>\n > {\n const targetScope = mergeScopes(\n nullableScope(this.#state.scope as AvailableScope),\n nullableScope(other.getJoinOuterScope() as Other[typeof JoinOuterScope]),\n );\n return this.#addJoin(other, 'full', targetScope, on);\n }\n\n #addJoin<Other extends JoinSource<ScopeTable, string | never>, ResultScope extends Scope>(\n other: Other,\n joinType: 'inner' | 'left' | 'right' | 'full',\n resultScope: ResultScope,\n onExpr: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, ResultScope> {\n const fieldProxy = createFieldProxy(\n mergeScopes(\n this.#state.scope as AvailableScope,\n other.getJoinOuterScope() as Other[typeof JoinOuterScope],\n ),\n ) as FieldProxy<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>>;\n const fns = createFunctions<QC>(this.ctx.queryOperationTypes);\n const onResult = onExpr(fieldProxy, fns);\n const joinAst = new JoinAst(joinType, other.buildAst(), onResult.buildAst());\n\n return new JoinedTablesImpl(\n cloneState(this.#state, {\n joins: [...this.#state.joins, joinAst],\n scope: resultScope,\n }),\n this.ctx,\n );\n }\n\n #buildLateral(\n alias: string,\n builderFn: (\n lateral: LateralBuilder<QC, AvailableScope>,\n ) => Subquery<Record<string, ScopeField>>,\n ) {\n const lateralBuilder: LateralBuilder<QC, AvailableScope> = {\n from: (other) => {\n const otherScope = other.getJoinOuterScope();\n const parentMerged = mergeScopes(this.#state.scope, otherScope);\n return new SelectQueryImpl(\n emptyState(other.buildAst() as TableSource, parentMerged),\n this.ctx,\n ) as unknown as SelectQuery<QC, AvailableScope, EmptyRow>;\n },\n };\n\n const subquery = builderFn(lateralBuilder);\n const subqueryAst = subquery.buildAst();\n const derivedSource = DerivedTableSource.as(alias, subqueryAst);\n const subqueryRowFields: ScopeTable = subquery.getRowFields();\n const lateralScope: Scope = {\n topLevel: subqueryRowFields,\n namespaces: { [alias]: subqueryRowFields },\n };\n\n return { derivedSource, lateralScope };\n }\n\n #addLateralJoin<ResultScope extends Scope>(\n joinType: 'inner' | 'left',\n resultScope: ResultScope,\n derivedSource: DerivedTableSource,\n ): JoinedTables<QC, ResultScope> {\n const onExpr = AndExpr.of([]);\n const joinAst = new JoinAst(joinType, derivedSource, onExpr, true);\n\n return new JoinedTablesImpl(\n cloneState(this.#state, {\n joins: [...this.#state.joins, joinAst],\n scope: resultScope,\n }),\n this.ctx,\n );\n }\n}\n","import type { StorageTable } from '@prisma-next/sql-contract/types';\nimport {\n type AnyExpression as AstExpression,\n ColumnRef,\n DeleteAst,\n InsertAst,\n ParamRef,\n ProjectionItem,\n TableSource,\n UpdateAst,\n} from '@prisma-next/sql-relational-core/ast';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type { MutationDefaultsOp } from '@prisma-next/sql-relational-core/query-lane-context';\nimport type { ExpressionBuilder } from '../expression';\nimport type { ResolveRow } from '../resolve';\nimport type { QueryContext, Scope, ScopeField } from '../scope';\nimport type {\n DeleteQuery,\n InsertQuery,\n ReturningCapability,\n UpdateQuery,\n} from '../types/mutation-query';\nimport {\n BuilderBase,\n type BuilderContext,\n buildQueryPlan,\n combineWhereExprs,\n} from './builder-base';\nimport { createFieldProxy } from './field-proxy';\nimport { createFunctions } from './functions';\n\ntype WhereCallback = ExpressionBuilder<Scope, QueryContext>;\n\nfunction buildParamValues(\n values: Record<string, unknown>,\n table: StorageTable,\n tableName: string,\n op: MutationDefaultsOp,\n ctx: BuilderContext,\n): Record<string, ParamRef> {\n const params: Record<string, ParamRef> = {};\n for (const [col, value] of Object.entries(values)) {\n const column = table.columns[col];\n params[col] = ParamRef.of(\n value,\n column ? { codecId: column.codecId, refs: { table: tableName, column: col } } : undefined,\n );\n }\n for (const def of ctx.applyMutationDefaults({ op, table: tableName, values })) {\n const column = table.columns[def.column];\n params[def.column] = ParamRef.of(\n def.value,\n column\n ? { codecId: column.codecId, refs: { table: tableName, column: def.column } }\n : undefined,\n );\n }\n return params;\n}\n\nfunction buildReturningProjections(\n tableName: string,\n columns: string[],\n rowFields: Record<string, ScopeField>,\n): ProjectionItem[] {\n return columns.map((col) =>\n ProjectionItem.of(col, ColumnRef.of(tableName, col), rowFields[col]?.codecId),\n );\n}\n\nfunction evaluateWhere(\n whereCallback: WhereCallback,\n scope: Scope,\n queryOperationTypes: BuilderContext['queryOperationTypes'],\n): AstExpression {\n const fieldProxy = createFieldProxy(scope);\n const fns = createFunctions(queryOperationTypes);\n const result = whereCallback(fieldProxy, fns as never);\n return result.buildAst();\n}\n\nexport class InsertQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends BuilderBase<QC['capabilities']>\n implements InsertQuery<QC, AvailableScope, RowType>\n{\n readonly #tableName: string;\n readonly #table: StorageTable;\n readonly #scope: Scope;\n readonly #values: Record<string, unknown>;\n readonly #returningColumns: string[];\n readonly #rowFields: Record<string, ScopeField>;\n\n constructor(\n tableName: string,\n table: StorageTable,\n scope: Scope,\n values: Record<string, unknown>,\n ctx: BuilderContext,\n returningColumns: string[] = [],\n rowFields: Record<string, ScopeField> = {},\n ) {\n super(ctx);\n this.#tableName = tableName;\n this.#table = table;\n this.#scope = scope;\n this.#values = values;\n this.#returningColumns = returningColumns;\n this.#rowFields = rowFields;\n }\n\n returning = this._gate<ReturningCapability, string[], InsertQuery<QC, AvailableScope, never>>(\n { sql: { returning: true } },\n 'returning',\n (...columns: string[]) => {\n const newRowFields: Record<string, ScopeField> = {};\n for (const col of columns) {\n const field = this.#scope.topLevel[col];\n if (!field) throw new Error(`Column \"${col}\" not found in scope`);\n newRowFields[col] = field;\n }\n return new InsertQueryImpl(\n this.#tableName,\n this.#table,\n this.#scope,\n this.#values,\n this.ctx,\n columns,\n newRowFields,\n ) as unknown as InsertQuery<QC, AvailableScope, never>;\n },\n );\n\n build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {\n const paramValues = buildParamValues(\n this.#values,\n this.#table,\n this.#tableName,\n 'create',\n this.ctx,\n );\n\n let ast = InsertAst.into(TableSource.named(this.#tableName)).withValues(paramValues);\n\n if (this.#returningColumns.length > 0) {\n ast = ast.withReturning(\n buildReturningProjections(this.#tableName, this.#returningColumns, this.#rowFields),\n );\n }\n\n return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(\n ast,\n this.ctx,\n );\n }\n}\n\nexport class UpdateQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends BuilderBase<QC['capabilities']>\n implements UpdateQuery<QC, AvailableScope, RowType>\n{\n readonly #tableName: string;\n readonly #table: StorageTable;\n readonly #scope: Scope;\n readonly #setValues: Record<string, unknown>;\n readonly #whereCallbacks: readonly WhereCallback[];\n readonly #returningColumns: string[];\n readonly #rowFields: Record<string, ScopeField>;\n\n constructor(\n tableName: string,\n table: StorageTable,\n scope: Scope,\n setValues: Record<string, unknown>,\n ctx: BuilderContext,\n whereCallbacks: readonly WhereCallback[] = [],\n returningColumns: string[] = [],\n rowFields: Record<string, ScopeField> = {},\n ) {\n super(ctx);\n this.#tableName = tableName;\n this.#table = table;\n this.#scope = scope;\n this.#setValues = setValues;\n this.#whereCallbacks = whereCallbacks;\n this.#returningColumns = returningColumns;\n this.#rowFields = rowFields;\n }\n\n where(expr: ExpressionBuilder<AvailableScope, QC>): UpdateQuery<QC, AvailableScope, RowType> {\n return new UpdateQueryImpl(\n this.#tableName,\n this.#table,\n this.#scope,\n this.#setValues,\n this.ctx,\n [...this.#whereCallbacks, expr as unknown as WhereCallback],\n this.#returningColumns,\n this.#rowFields,\n );\n }\n\n returning = this._gate<ReturningCapability, string[], UpdateQuery<QC, AvailableScope, never>>(\n { sql: { returning: true } },\n 'returning',\n (...columns: string[]) => {\n const newRowFields: Record<string, ScopeField> = {};\n for (const col of columns) {\n const field = this.#scope.topLevel[col];\n if (!field) throw new Error(`Column \"${col}\" not found in scope`);\n newRowFields[col] = field;\n }\n return new UpdateQueryImpl(\n this.#tableName,\n this.#table,\n this.#scope,\n this.#setValues,\n this.ctx,\n this.#whereCallbacks,\n columns,\n newRowFields,\n ) as unknown as UpdateQuery<QC, AvailableScope, never>;\n },\n );\n\n build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {\n const setParams = buildParamValues(\n this.#setValues,\n this.#table,\n this.#tableName,\n 'update',\n this.ctx,\n );\n\n const whereExpr = combineWhereExprs(\n this.#whereCallbacks.map((cb) =>\n evaluateWhere(cb, this.#scope, this.ctx.queryOperationTypes),\n ),\n );\n\n let ast = UpdateAst.table(TableSource.named(this.#tableName))\n .withSet(setParams)\n .withWhere(whereExpr);\n\n if (this.#returningColumns.length > 0) {\n ast = ast.withReturning(\n buildReturningProjections(this.#tableName, this.#returningColumns, this.#rowFields),\n );\n }\n\n return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(\n ast,\n this.ctx,\n );\n }\n}\n\nexport class DeleteQueryImpl<\n QC extends QueryContext = QueryContext,\n AvailableScope extends Scope = Scope,\n RowType extends Record<string, ScopeField> = Record<string, ScopeField>,\n >\n extends BuilderBase<QC['capabilities']>\n implements DeleteQuery<QC, AvailableScope, RowType>\n{\n readonly #tableName: string;\n readonly #scope: Scope;\n readonly #whereCallbacks: readonly WhereCallback[];\n readonly #returningColumns: string[];\n readonly #rowFields: Record<string, ScopeField>;\n\n constructor(\n tableName: string,\n scope: Scope,\n ctx: BuilderContext,\n whereCallbacks: readonly WhereCallback[] = [],\n returningColumns: string[] = [],\n rowFields: Record<string, ScopeField> = {},\n ) {\n super(ctx);\n this.#tableName = tableName;\n this.#scope = scope;\n this.#whereCallbacks = whereCallbacks;\n this.#returningColumns = returningColumns;\n this.#rowFields = rowFields;\n }\n\n where(expr: ExpressionBuilder<AvailableScope, QC>): DeleteQuery<QC, AvailableScope, RowType> {\n return new DeleteQueryImpl(\n this.#tableName,\n this.#scope,\n this.ctx,\n [...this.#whereCallbacks, expr as unknown as WhereCallback],\n this.#returningColumns,\n this.#rowFields,\n );\n }\n\n returning = this._gate<ReturningCapability, string[], DeleteQuery<QC, AvailableScope, never>>(\n { sql: { returning: true } },\n 'returning',\n (...columns: string[]) => {\n const newRowFields: Record<string, ScopeField> = {};\n for (const col of columns) {\n const field = this.#scope.topLevel[col];\n if (!field) throw new Error(`Column \"${col}\" not found in scope`);\n newRowFields[col] = field;\n }\n return new DeleteQueryImpl(\n this.#tableName,\n this.#scope,\n this.ctx,\n this.#whereCallbacks,\n columns,\n newRowFields,\n ) as unknown as DeleteQuery<QC, AvailableScope, never>;\n },\n );\n\n build(): SqlQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>> {\n const whereExpr = combineWhereExprs(\n this.#whereCallbacks.map((cb) =>\n evaluateWhere(cb, this.#scope, this.ctx.queryOperationTypes),\n ),\n );\n\n let ast = DeleteAst.from(TableSource.named(this.#tableName)).withWhere(whereExpr);\n\n if (this.#returningColumns.length > 0) {\n ast = ast.withReturning(\n buildReturningProjections(this.#tableName, this.#returningColumns, this.#rowFields),\n );\n }\n\n return buildQueryPlan<ResolveRow<RowType, QC['codecTypes'], QC['resolvedColumnOutputTypes']>>(\n ast,\n this.ctx,\n );\n }\n}\n","import type { StorageTable } from '@prisma-next/sql-contract/types';\nimport { type AnyFromSource, TableSource } from '@prisma-next/sql-relational-core/ast';\nimport type {\n AggregateFunctions,\n Expression,\n ExpressionBuilder,\n ExtractScopeFields,\n FieldProxy,\n WithField,\n WithFields,\n} from '../expression';\nimport type {\n EmptyRow,\n Expand,\n JoinOuterScope,\n JoinSource,\n MergeScopes,\n NullableScope,\n QueryContext,\n RebindScope,\n Scope,\n ScopeField,\n ScopeTable,\n StorageTableToScopeTable,\n Subquery,\n} from '../scope';\nimport type { TableProxyContract } from '../types/db';\nimport type { JoinedTables } from '../types/joined-tables';\nimport type { DeleteQuery, InsertQuery, UpdateQuery } from '../types/mutation-query';\nimport type { SelectQuery } from '../types/select-query';\nimport type { LateralBuilder } from '../types/shared';\nimport type { TableProxy } from '../types/table-proxy';\nimport { BuilderBase, type BuilderContext, emptyState, tableToScope } from './builder-base';\nimport { JoinedTablesImpl } from './joined-tables-impl';\nimport { DeleteQueryImpl, InsertQueryImpl, UpdateQueryImpl } from './mutation-impl';\nimport { SelectQueryImpl } from './query-impl';\n\nexport class TableProxyImpl<\n C extends TableProxyContract,\n Name extends string & keyof C['storage']['tables'],\n Alias extends string,\n AvailableScope extends Scope,\n QC extends QueryContext,\n >\n extends BuilderBase<C['capabilities']>\n implements TableProxy<C, Name, Alias, AvailableScope, QC>\n{\n declare readonly [JoinOuterScope]: JoinSource<\n StorageTableToScopeTable<C['storage']['tables'][Name]>,\n Alias\n >[typeof JoinOuterScope];\n\n readonly #tableName: string;\n readonly #table: StorageTable;\n readonly #fromSource: TableSource;\n readonly #scope: Scope;\n\n constructor(tableName: string, table: StorageTable, alias: string, ctx: BuilderContext) {\n super(ctx);\n this.#tableName = tableName;\n this.#table = table;\n this.#scope = tableToScope(alias, table);\n this.#fromSource = TableSource.named(tableName, alias !== tableName ? alias : undefined);\n }\n\n lateralJoin = this._gate(\n { sql: { lateral: true } },\n 'lateralJoin',\n <LAlias extends string, LateralRow extends Record<string, ScopeField>>(\n alias: LAlias,\n builder: (lateral: LateralBuilder<QC, AvailableScope>) => Subquery<LateralRow>,\n ): JoinedTables<\n QC,\n MergeScopes<AvailableScope, { topLevel: LateralRow; namespaces: Record<LAlias, LateralRow> }>\n > => {\n return this.#toJoined().lateralJoin(alias, builder);\n },\n ) as TableProxy<C, Name, Alias, AvailableScope, QC>['lateralJoin'];\n\n outerLateralJoin = this._gate(\n { sql: { lateral: true } },\n 'outerLateralJoin',\n <LAlias extends string, LateralRow extends Record<string, ScopeField>>(\n alias: LAlias,\n builder: (lateral: LateralBuilder<QC, AvailableScope>) => Subquery<LateralRow>,\n ): JoinedTables<\n QC,\n MergeScopes<\n AvailableScope,\n NullableScope<{ topLevel: LateralRow; namespaces: Record<LAlias, LateralRow> }>\n >\n > => {\n return this.#toJoined().outerLateralJoin(alias, builder);\n },\n ) as TableProxy<C, Name, Alias, AvailableScope, QC>['outerLateralJoin'];\n\n getJoinOuterScope(): Scope {\n return this.#scope;\n }\n\n buildAst(): AnyFromSource {\n return this.#fromSource;\n }\n\n as<NewAlias extends string>(\n newAlias: NewAlias,\n ): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>> {\n return new TableProxyImpl(this.#tableName, this.#table, newAlias, this.ctx);\n }\n\n select<Columns extends (keyof AvailableScope['topLevel'] & string)[]>(\n ...columns: Columns\n ): SelectQuery<QC, AvailableScope, WithFields<EmptyRow, AvailableScope['topLevel'], Columns>>;\n select<LAlias extends string, Field extends ScopeField>(\n alias: LAlias,\n expr: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Expression<Field>,\n ): SelectQuery<QC, AvailableScope, WithField<EmptyRow, Field, LAlias>>;\n select<Result extends Record<string, Expression<ScopeField>>>(\n callback: (fields: FieldProxy<AvailableScope>, fns: AggregateFunctions<QC>) => Result,\n ): SelectQuery<QC, AvailableScope, Expand<ExtractScopeFields<Result>>>;\n select(...args: unknown[]): unknown {\n return new SelectQueryImpl(emptyState(this.#fromSource, this.#scope), this.ctx).select(\n ...(args as string[]),\n );\n }\n\n innerJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>> {\n return this.#toJoined().innerJoin(other, on);\n }\n\n outerLeftJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<AvailableScope, NullableScope<Other[typeof JoinOuterScope]>>> {\n return this.#toJoined().outerLeftJoin(other, on);\n }\n\n outerRightJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<QC, MergeScopes<NullableScope<AvailableScope>, Other[typeof JoinOuterScope]>> {\n return this.#toJoined().outerRightJoin(other, on);\n }\n\n outerFullJoin<Other extends JoinSource<ScopeTable, string | never>>(\n other: Other,\n on: ExpressionBuilder<MergeScopes<AvailableScope, Other[typeof JoinOuterScope]>, QC>,\n ): JoinedTables<\n QC,\n MergeScopes<NullableScope<AvailableScope>, NullableScope<Other[typeof JoinOuterScope]>>\n > {\n return this.#toJoined().outerFullJoin(other, on);\n }\n\n insert(values: Record<string, unknown>): InsertQuery<QC, AvailableScope, EmptyRow> {\n return new InsertQueryImpl(this.#tableName, this.#table, this.#scope, values, this.ctx);\n }\n\n update(set: Record<string, unknown>): UpdateQuery<QC, AvailableScope, EmptyRow> {\n return new UpdateQueryImpl(this.#tableName, this.#table, this.#scope, set, this.ctx);\n }\n\n delete(): DeleteQuery<QC, AvailableScope, EmptyRow> {\n return new DeleteQueryImpl(this.#tableName, this.#scope, this.ctx);\n }\n\n #toJoined(): JoinedTables<QC, AvailableScope> {\n return new JoinedTablesImpl(emptyState(this.#fromSource, this.#scope), this.ctx);\n }\n}\n","import type { Contract } from '@prisma-next/contract/types';\nimport type { SqlStorage } from '@prisma-next/sql-contract/types';\nimport type { ExecutionContext } from '@prisma-next/sql-relational-core/query-lane-context';\nimport type { Db } from '../types/db';\nimport type { BuilderContext } from './builder-base';\nimport { TableProxyImpl } from './table-proxy-impl';\n\nexport interface SqlOptions<C extends Contract<SqlStorage>> {\n readonly context: ExecutionContext<C>;\n}\n\nexport function sql<C extends Contract<SqlStorage>>(options: SqlOptions<C>): Db<C> {\n const { context } = options;\n const ctx: BuilderContext = {\n capabilities: context.contract.capabilities,\n queryOperationTypes: context.queryOperations.entries(),\n target: context.contract.target ?? 'unknown',\n storageHash: context.contract.storage.storageHash ?? 'unknown',\n applyMutationDefaults: (options) => context.applyMutationDefaults(options),\n };\n\n return new Proxy({} as Db<C>, {\n get(_target, prop: string) {\n const tables = context.contract.storage.tables;\n const table = Object.hasOwn(tables, prop) ? tables[prop] : undefined;\n if (table) {\n return new TableProxyImpl(prop, table, prop, ctx);\n }\n return undefined;\n },\n });\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
1
  {
2
2
  "name": "@prisma-next/sql-builder",
3
- "version": "0.5.0-dev.65",
3
+ "version": "0.5.0-dev.67",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "description": "SQL builder lane for Prisma Next",
8
8
  "dependencies": {
9
- "@prisma-next/framework-components": "0.5.0-dev.65",
10
- "@prisma-next/sql-operations": "0.5.0-dev.65",
11
- "@prisma-next/sql-relational-core": "0.5.0-dev.65"
9
+ "@prisma-next/sql-contract": "0.5.0-dev.67",
10
+ "@prisma-next/contract": "0.5.0-dev.67",
11
+ "@prisma-next/framework-components": "0.5.0-dev.67",
12
+ "@prisma-next/sql-operations": "0.5.0-dev.67",
13
+ "@prisma-next/sql-relational-core": "0.5.0-dev.67"
12
14
  },
13
15
  "devDependencies": {
14
- "tsdown": "0.18.4",
16
+ "tsdown": "0.22.0",
15
17
  "typescript": "5.9.3",
16
- "vitest": "4.0.17",
17
- "@prisma-next/adapter-postgres": "0.5.0-dev.65",
18
- "@prisma-next/extension-pgvector": "0.5.0-dev.65",
19
- "@prisma-next/ids": "0.5.0-dev.65",
20
- "@prisma-next/sql-contract": "0.5.0-dev.65",
21
- "@prisma-next/sql-contract-ts": "0.5.0-dev.65",
22
- "@prisma-next/target-postgres": "0.5.0-dev.65",
18
+ "vitest": "4.1.5",
19
+ "@prisma-next/adapter-postgres": "0.5.0-dev.67",
20
+ "@prisma-next/extension-pgvector": "0.5.0-dev.67",
21
+ "@prisma-next/ids": "0.5.0-dev.67",
22
+ "@prisma-next/sql-contract-ts": "0.5.0-dev.67",
23
+ "@prisma-next/target-postgres": "0.5.0-dev.67",
23
24
  "@prisma-next/test-utils": "0.0.1",
24
- "@prisma-next/utils": "0.5.0-dev.65",
25
+ "@prisma-next/utils": "0.5.0-dev.67",
25
26
  "@prisma-next/tsconfig": "0.0.0",
26
- "@prisma-next/contract": "0.5.0-dev.65",
27
27
  "@prisma-next/tsdown": "0.0.0"
28
28
  },
29
29
  "files": [
@@ -39,8 +39,6 @@
39
39
  "./runtime": "./dist/runtime/index.mjs",
40
40
  "./package.json": "./package.json"
41
41
  },
42
- "main": "./dist/index.mjs",
43
- "module": "./dist/index.mjs",
44
42
  "types": "./dist/index.d.mts",
45
43
  "repository": {
46
44
  "type": "git",
@@ -1 +0,0 @@
1
- {"version":3,"file":"db-T7YxA-v6.d.mts","names":[],"sources":["../src/scope.ts","../src/expression.ts","../src/resolve.ts","../src/types/mutation-query.ts","../src/types/joined-tables.ts","../src/types/grouped-query.ts","../src/types/select-query.ts","../src/types/shared.ts","../src/types/table-proxy.ts","../src/types/db.ts"],"sourcesContent":[],"mappings":"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,EAAA,uBGmBW,KHnBX,EAAA,gBGoBI,MHpBJ,CAAA,MAAA,EGoBmB,UHpBnB,CAAA,CAAA,CAAA;EAAM,KAAA,CAAA,IAAA,EGsBN,iBHtBM,CGsBY,cHtBZ,EGsB4B,EHtB5B,CAAA,CAAA,EGsBkC,WHtBlC,CGsB8C,EHtB9C,EGsBkD,cHtBlD,EGsBkE,OHtBlE,CAAA;EAGR,SAAA,EGoBC,WHpBS,CGqBlB,EHrBkB,CAAA,cAAA,CAAA,EGsBlB,mBHtBkB,EAAA,CAAA,gBAAA,CAAA,MGuBM,cHvBN,CAAA,UAAA,CAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,GAAA,OAAA,EGwBJ,OHxBI,EAAA,GGyBb,WHzBa,CGyBD,EHzBC,EGyBG,cHzBH,EGyBmB,UHzBnB,CGyB8B,QHzB9B,EGyBwC,cHzBxC,CAAA,UAAA,CAAA,EGyBoE,OHzBpE,CAAA,CAAA,CAAA;EAAa,KAAA,EAAA,EG2BxB,YH3BwB,CG2BX,UH3BW,CG2BA,OH3BA,EG2BS,EH3BT,CAAA,YAAA,CAAA,EG2B2B,EH3B3B,CAAA,2BAAA,CAAA,CAAA,CAAA;;AAGZ,UG2BN,WH3BM,CAAA,WG4BV,YH5BU,EAAA,uBG6BE,KH7BF,EAAA,gBG8BL,MH9BK,CAAA,MAAA,EG8BU,UH9BV,CAAA,CAAA,CAAA;EAAO,KAAA,CAAA,IAAA,EGgChB,iBHhCgB,CGgCE,cHhCF,EGgCkB,EHhClB,CAAA,CAAA,EGgCwB,WHhCxB,CGgCoC,EHhCpC,EGgCwC,cHhCxC,EGgCwD,OHhCxD,CAAA;EAAd,SAAA,EGiCH,WHjCG,CGkCZ,EHlCY,CAAA,cAAA,CAAA,EGmCZ,mBHnCY,EAAA,CAAA,gBAAA,CAAA,MGoCY,cHpCZ,CAAA,UAAA,CAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,GAAA,OAAA,EGqCE,OHrCF,EAAA,GGsCP,WHtCO,CGsCK,EHtCL,EGsCS,cHtCT,EGsCyB,UHtCzB,CGsCoC,QHtCpC,EGsC8C,cHtC9C,CAAA,UAAA,CAAA,EGsC0E,OHtC1E,CAAA,CAAA,CAAA;EAFJ,KAAA,EAAA,EG0CD,YH1CC,CG0CY,UH1CZ,CG0CuB,OH1CvB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A,EO4BY,OP5BZ,CAAA,EO6BC,WP7BD,CO6Ba,EP7Bb,EO6BiB,cP7BjB,EO6BiC,UP7BjC,CO6B4C,OP7B5C,EO6BqD,cP7BrD,CAAA,UAAA,CAAA,EO6BiF,OP7BjF,CAAA,CAAA;EAAM,MAAA,CAAA,cAAA,MAAA,EAAA,cO+BmC,UP/BnC,CAAA,CAAA,KAAA,EOgCC,KPhCD,EAAA,IAAA,EAAA,CAAA,MAAA,EOiCS,UPjCT,COiCoB,cPjCpB,CAAA,EAAA,GAAA,EOiC0C,kBPjC1C,COiC6D,EPjC7D,CAAA,EAAA,GOiCqE,YPjCrE,COiCgF,KPjChF,CAAA,CAAA,EOkCL,WPlCK,COkCO,EPlCP,EOkCW,cPlCX,EOkC2B,SPlC3B,COkCqC,OPlCrC,EOkC8C,KPlC9C,EOkCqD,KPlCrD,CAAA,CAAA;EAGW,MAAA,CAAA,eOiCG,MPjC0B,CAAA,MAAA,EOiCX,YPjCW,COiCA,UPjCA,CAAA,CAAA,CAAA,CAAA,QAAA,EAAA,CAAA,MAAA,EOkC3B,UPlC2B,COkChB,cPlCgB,CAAA,EAAA,GAAA,EOkCM,kBPlCN,COkCyB,EPlCzB,CAAA,EAAA,GOkCiC,MPlCjC,CAAA,EOmC7C,WPnC6C,COmCjC,EPnCiC,EOmC7B,cPnC6B,EOmCb,MPnCa,COmCN,OPnCM,GOmCI,kBPnCJ,COmCuB,MPnCvB,CAAA,CAAA,CAAA;AAClD;AAEY,UOmCK,QPnCC,CAAA,WOmCmB,YPnCnB,EAAA,uBOmCwD,KPnCxD,EAAA,YAAA,CAAA,CAAA;EAAoB,SAAA,CAAA,cOoCZ,UPpCY,COoCD,UPpCC,EAAA,MAAA,GAAA,KAAA,CAAA,CAAA,CAAA,KAAA,EOqC3B,KPrC2B,EAAA,EAAA,EOsC9B,iBPtC8B,COsCZ,WPtCY,COsCA,cPtCA,EOsCgB,KPtChB,CAAA,OOsC6B,cPtC7B,CAAA,CAAA,EOsC+C,EPtC/C,CAAA,CAAA,EOuCjC,YPvCiC,COuCpB,EPvCoB,EOuChB,WPvCgB,COuCJ,cPvCI,EOuCY,KPvCZ,CAAA,OOuCyB,cPvCzB,CAAA,CAAA,CAAA;EAAI,aAAA,CAAA,cOyCZ,UPzCY,COyCD,UPzCC,EAAA,MAAA,GAAA,KAAA,CAAA,CAAA,CAAA,KAAA,EO0C/B,KP1C+B,EAAA,EAAA,EO2ClC,iBP3CkC,CO2ChB,WP3CgB,CO2CJ,cP3CI,EO2CY,KP3CZ,CAAA,OO2CyB,cP3CzB,CAAA,CAAA,EO2C2C,EP3C3C,CAAA,CAAA,EO4CrC,YP5CqC,CO4CxB,EP5CwB,EO4CpB,WP5CoB,CO4CR,cP5CQ,EO4CQ,aP5CR,CO4CsB,KP5CtB,CAAA,OO4CmC,cP5CnC,CAAA,CAAA,CAAA,CAAA;EAAE,cAAA,CAAA,cO8Cb,UP9Ca,CO8CF,UP9CE,EAAA,MAAA,GAAA,KAAA,CAAA,CAAA,CAAA,KAAA,EO+CjC,KP/CiC,EAAA,EAAA,EOgDpC,iBPhDoC,COgDlB,WPhDkB,COgDN,cPhDM,EOgDU,KPhDV,CAAA,OOgDuB,cPhDvB,CAAA,CAAA,EOgDyC,EPhDzC,CAAA,CAAA,EOiDvC,YPjDuC,COiD1B,EPjD0B,EOiDtB,WPjDsB,COiDV,aPjDU,COiDI,cPjDJ,CAAA,EOiDqB,KPjDrB,CAAA,OOiDkC,cPjDlC,CAAA,CAAA,CAAA;EAAC,aAAA,CAAA,cOmDf,UPnDe,COmDJ,UPnDI,EAAA,MAAA,GAAA,KAAA,CAAA,CAAA,CAAA,KAAA,EOoDlC,KPpDkC,EAAA,EAAA,EOqDrC,iBPrDqC,COqDnB,WPrDmB,COqDP,cPrDO,EOqDS,KPrDT,CAAA,OOqDsB,cPrDtB,CAAA,CAAA,EOqDwC,EPrDxC,CAAA,CAAA,EOsDxC,YPtDwC,COuDzC,EPvDyC,EOwDzC,WPxDyC,COwD7B,aPxD6B,COwDf,cPxDe,CAAA,EOwDE,aPxDF,COwDgB,KPxDhB,CAAA,OOwD6B,cPxD7B,CAAA,CAAA,CAAA,CAAA;EACjC,WAAQ,EO0DL,WP1DsB,CO2DjC,YP3DmB,EAAA;IAEX,GAAA,EAAA;MAEK,OAAA,EAAA,IAAA;IACL,CAAA;EACiB,CAAA,EAAA,CAAA,cAAA,MAAA,EAAA,mBOuDiB,MPvDjB,CAAA,MAAA,EOuDgC,UPvDhC,CAAA,CAAA,CAAA,KAAA,EOwDhB,KPxDgB,EAAA,OAAA,EAAA,CAAA,OAAA,EOyDJ,cPzDI,COyDW,EP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AA;CAAW;AACjC,UQ0EG,UR1EH,CAAA,UQ2EF,kBR3EE,EAAA,eAAA,MAAA,GAAA,MQ4EgB,CR5EhB,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,EAAA,cAAA,MAAA,GQ6EW,MR7EX,EAAA,uBQ8EW,KR9EX,GQ8EmB,YR9EnB,CQ8EgC,MR9EhC,EQ8EsC,CR9EtC,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,CQ8E6D,MR9E7D,CAAA,CAAA,EAAA,WQ+ED,YR/EC,GQ+Ec,YR/Ed,CQ+E2B,CR/E3B,EQ+E8B,MR/E9B,CAAA,CAAA,SQgFJ,URhFI,CQgFO,wBRhFP,CQgFgC,CRhFhC,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,CQgFuD,MRhFvD,CAAA,CAAA,EQgF+D,KRhF/D,CAAA,EQiFV,URjFU,CQiFC,ERjFD,EQiFK,cRjFL,EQiFqB,QRjFrB,CAAA,EQkFV,QRlFU,CQkFD,ERlFC,EQkFG,cRlFH,EQkFmB,CRlFnB,CAAA,cAAA,CAAA,CAAA,CAAA;EACD,EAAA,CAAA,iBAAA,MAAA,CAAA,CAAA,QAAA,EQmFC,QRnFD,CAAA,EQoFR,URpFQ,CQoFG,CRpFH,EQoFM,MRpFN,EQoFY,QRpFZ,EQoFsB,WRpFtB,CQoFkC,cRpFlC,EQoFkD,KRpFlD,EQoFyD,QRpFzD,CAAA,CAAA;EAAa,MAAA,CAAA,MAAA,EQuFd,oBRvFc,CQwFpB,CRxFoB,EQyFpB,CRzFoB,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,CQyFG,MRzFH,CAAA,EQ0FpB,MR1FoB,EQ2FpB,ER3FoB,CAAA,YAAA,CAAA,EQ4FpB,sBR5FoB,CQ4FG,CR5FH,CAAA,CAAA,CAAA,EQ8FrB,WR9FqB,CQ8FT,ER9FS,EQ8FL,cR9FK,EQ8FW,QR9FX,CAAA;EACZ,MAAA,CAAA,GAAA,EQgGL,oBRhGK,CQiGR,CRjGQ,EQkGR,CRlGQ,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,CQkGe,MRlGf,CAAA,EQmGR,MRnGQ,EQoGR,ERpGQ,CAAA,YAAA,CAAA,EQqGR,sBRrGQ,CQqGe,CRrGf,CAAA,CAAA,CAAA,EQuGT,WRvGS,CQuGG,ERvGH,EQuGO,cRvGP,EQuGuB,QRvGvB,CAAA;EAAa,MAAA,EAAA,EQyGf,WRzGe,CQyGH,ERzGG,EQyGC,cRzGD,EQyGiB,QRzGjB,CAAA;;;;KS7Cf,gBAAA,GAAmB,eAAe;KAElC,kBAAA;;qBAC2B,eAAe;ETA1C,CAAA;EAKA,SAAA,YAAW,ESJE,gBTIF;CAAmC;AAAqB,KSDnE,ETCmE,CAAA,USDtD,kBTCsD,CAAA,GAAA,WAC3E,MAAA,GAAA,MSDsB,CTCtB,CAAA,SAAA,CAAA,CAAA,QAAA,CAAA,GSD+C,UTC/C,CSD0D,CTC1D,ESD6D,ITC7D,CAAA,EAAM"}