@prisma-next/mongo-query-ast 0.4.0-dev.9 → 0.5.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/control.d.mts +1 -1
- package/dist/exports/control.mjs +1 -1
- package/dist/exports/execution.d.mts +49 -2
- package/dist/exports/execution.d.mts.map +1 -0
- package/dist/exports/execution.mjs +38 -7
- package/dist/exports/execution.mjs.map +1 -1
- package/dist/{filter-expressions-CddUFy1m.mjs → filter-expressions-BSKn8EyU.mjs} +4 -1
- package/dist/filter-expressions-BSKn8EyU.mjs.map +1 -0
- package/dist/{query-plan-DwmFTXux.d.mts → query-plan-BIzWNgTH.d.mts} +33 -9
- package/dist/{query-plan-DwmFTXux.d.mts.map → query-plan-BIzWNgTH.d.mts.map} +1 -1
- package/package.json +5 -5
- package/src/commands.ts +36 -4
- package/src/exports/execution.ts +10 -0
- package/src/filter-expressions.ts +4 -0
- package/src/query-plan.ts +2 -2
- package/src/raw-commands.ts +15 -2
- package/src/result-types.ts +50 -0
- package/dist/filter-expressions-CddUFy1m.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as MongoAndExpr, D as MongoFilterExpr, E as MongoFieldFilter, O as MongoNotExpr, Pt as MongoAstNode, T as MongoExprFilter, X as MongoFilterVisitor, k as MongoOrExpr, t as MongoQueryPlan, w as MongoExistsExpr } from "../query-plan-
|
|
1
|
+
import { C as MongoAndExpr, D as MongoFilterExpr, E as MongoFieldFilter, O as MongoNotExpr, Pt as MongoAstNode, T as MongoExprFilter, X as MongoFilterVisitor, k as MongoOrExpr, t as MongoQueryPlan, w as MongoExistsExpr } from "../query-plan-BIzWNgTH.mjs";
|
|
2
2
|
import { MongoIndexKey, MongoIndexKey as MongoIndexKey$1, MongoIndexKeyDirection } from "@prisma-next/mongo-contract";
|
|
3
3
|
import { MigrationPlanOperation } from "@prisma-next/framework-components/control";
|
|
4
4
|
|
package/dist/exports/control.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as MongoNotExpr, c as MongoAstNode, i as MongoFieldFilter, n as MongoExistsExpr, o as MongoOrExpr, r as MongoExprFilter, t as MongoAndExpr } from "../filter-expressions-
|
|
1
|
+
import { a as MongoNotExpr, c as MongoAstNode, i as MongoFieldFilter, n as MongoExistsExpr, o as MongoOrExpr, r as MongoExprFilter, t as MongoAndExpr } from "../filter-expressions-BSKn8EyU.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/ddl-commands.ts
|
|
4
4
|
var CreateIndexCommand = class extends MongoAstNode {
|
|
@@ -1,2 +1,49 @@
|
|
|
1
|
-
import { $ as MongoAddFieldsStage, A as isMongoFilterExpr, At as MongoUnwindStage, B as MongoAggMergeObjects, C as MongoAndExpr, Ct as MongoSearchMetaStage, D as MongoFilterExpr, Dt as MongoSortByCountStage, E as MongoFieldFilter, Et as MongoSkipStage, F as MongoAggExpr, G as isExprArray, H as MongoAggReduce, I as MongoAggFieldRef, J as MongoAggExprVisitor, K as isRecordArgs, L as MongoAggLet, M as MongoAggAccumulator, Mt as MongoVectorSearchStage, N as MongoAggArrayFilter, Nt as MongoWindowField, O as MongoNotExpr, Ot as MongoSortStage, P as MongoAggCond, Q as MongoStageVisitor, R as MongoAggLiteral, S as RawUpdateOneCommand, St as MongoSampleStage, T as MongoExprFilter, Tt as MongoSetWindowFieldsStage, U as MongoAggSwitch, V as MongoAggOperator, W as MongoAggSwitchBranch, X as MongoFilterVisitor, Y as MongoFilterRewriter, Z as MongoStageRewriterContext, _ as RawFindOneAndUpdateCommand, _t as MongoPipelineStage, a as DeleteOneCommand, at as MongoFacetStage, b as RawMongoCommand, bt as MongoRedactStage, c as InsertManyCommand, ct as MongoGeoNearStage, d as UpdateManyCommand, dt as MongoGroupStage, et as MongoBucketAutoStage, f as UpdateOneCommand, ft as MongoLimitStage, g as RawFindOneAndDeleteCommand, gt as MongoOutStage, h as RawDeleteOneCommand, ht as MongoMergeStage, i as DeleteManyCommand, it as MongoDensifyStage, j as AggRecordArgs, jt as MongoUpdatePipelineStage, k as MongoOrExpr, kt as MongoUnionWithStage, l as InsertOneCommand, lt as MongoGraphLookupStage, m as RawDeleteManyCommand, mt as MongoMatchStage, n as AggregateCommand, nt as MongoCountStage, o as FindOneAndDeleteCommand, ot as MongoFillOutput, p as RawAggregateCommand, pt as MongoLookupStage, q as MongoAggExprRewriter, r as AnyMongoCommand, rt as MongoDensifyRange, s as FindOneAndUpdateCommand, st as MongoFillStage, t as MongoQueryPlan, tt as MongoBucketStage, u as MongoUpdateSpec, ut as MongoGroupId, v as RawInsertManyCommand, vt as MongoProjectStage, w as MongoExistsExpr, wt as MongoSearchStage, x as RawUpdateManyCommand, xt as MongoReplaceRootStage, y as RawInsertOneCommand, yt as MongoProjectionValue, z as MongoAggMap } from "../query-plan-
|
|
2
|
-
|
|
1
|
+
import { $ as MongoAddFieldsStage, A as isMongoFilterExpr, At as MongoUnwindStage, B as MongoAggMergeObjects, C as MongoAndExpr, Ct as MongoSearchMetaStage, D as MongoFilterExpr, Dt as MongoSortByCountStage, E as MongoFieldFilter, Et as MongoSkipStage, F as MongoAggExpr, G as isExprArray, H as MongoAggReduce, I as MongoAggFieldRef, J as MongoAggExprVisitor, K as isRecordArgs, L as MongoAggLet, M as MongoAggAccumulator, Mt as MongoVectorSearchStage, N as MongoAggArrayFilter, Nt as MongoWindowField, O as MongoNotExpr, Ot as MongoSortStage, P as MongoAggCond, Q as MongoStageVisitor, R as MongoAggLiteral, S as RawUpdateOneCommand, St as MongoSampleStage, T as MongoExprFilter, Tt as MongoSetWindowFieldsStage, U as MongoAggSwitch, V as MongoAggOperator, W as MongoAggSwitchBranch, X as MongoFilterVisitor, Y as MongoFilterRewriter, Z as MongoStageRewriterContext, _ as RawFindOneAndUpdateCommand, _t as MongoPipelineStage, a as DeleteOneCommand, at as MongoFacetStage, b as RawMongoCommand, bt as MongoRedactStage, c as InsertManyCommand, ct as MongoGeoNearStage, d as UpdateManyCommand, dt as MongoGroupStage, et as MongoBucketAutoStage, f as UpdateOneCommand, ft as MongoLimitStage, g as RawFindOneAndDeleteCommand, gt as MongoOutStage, h as RawDeleteOneCommand, ht as MongoMergeStage, i as DeleteManyCommand, it as MongoDensifyStage, j as AggRecordArgs, jt as MongoUpdatePipelineStage, k as MongoOrExpr, kt as MongoUnionWithStage, l as InsertOneCommand, lt as MongoGraphLookupStage, m as RawDeleteManyCommand, mt as MongoMatchStage, n as AggregateCommand, nt as MongoCountStage, o as FindOneAndDeleteCommand, ot as MongoFillOutput, p as RawAggregateCommand, pt as MongoLookupStage, q as MongoAggExprRewriter, r as AnyMongoCommand, rt as MongoDensifyRange, s as FindOneAndUpdateCommand, st as MongoFillStage, t as MongoQueryPlan, tt as MongoBucketStage, u as MongoUpdateSpec, ut as MongoGroupId, v as RawInsertManyCommand, vt as MongoProjectStage, w as MongoExistsExpr, wt as MongoSearchStage, x as RawUpdateManyCommand, xt as MongoReplaceRootStage, y as RawInsertOneCommand, yt as MongoProjectionValue, z as MongoAggMap } from "../query-plan-BIzWNgTH.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/result-types.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Canonical command result types for the MongoDB primitive language.
|
|
7
|
+
*
|
|
8
|
+
* These interfaces describe the shape of the result document yielded by
|
|
9
|
+
* each write command. They live in the query layer (co-located with
|
|
10
|
+
* command AST nodes) because they are part of the language definition —
|
|
11
|
+
* transport layers (wire, HTTP, etc.) satisfy these interfaces, they do
|
|
12
|
+
* not define them.
|
|
13
|
+
*/
|
|
14
|
+
interface InsertOneResult {
|
|
15
|
+
readonly insertedId: unknown;
|
|
16
|
+
}
|
|
17
|
+
interface InsertManyResult {
|
|
18
|
+
readonly insertedIds: ReadonlyArray<unknown>;
|
|
19
|
+
readonly insertedCount: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Shared result shape for `updateOne`, `updateMany`, and `upsertOne`
|
|
23
|
+
* commands. The `upsertedCount` / `upsertedId` fields are present only
|
|
24
|
+
* when the command was issued with `upsert: true` and a new document
|
|
25
|
+
* was inserted.
|
|
26
|
+
*/
|
|
27
|
+
interface UpdateResult {
|
|
28
|
+
readonly matchedCount: number;
|
|
29
|
+
readonly modifiedCount: number;
|
|
30
|
+
readonly upsertedCount?: number;
|
|
31
|
+
readonly upsertedId?: unknown;
|
|
32
|
+
}
|
|
33
|
+
/** Alias — `updateOne` yields the same shape as `updateMany`. */
|
|
34
|
+
type UpdateOneResult = UpdateResult;
|
|
35
|
+
/** Alias — `updateMany` yields the same shape as `updateOne`. */
|
|
36
|
+
type UpdateManyResult = UpdateResult;
|
|
37
|
+
/**
|
|
38
|
+
* Shared result shape for `deleteOne` and `deleteMany` commands.
|
|
39
|
+
*/
|
|
40
|
+
interface DeleteResult {
|
|
41
|
+
readonly deletedCount: number;
|
|
42
|
+
}
|
|
43
|
+
/** Alias — `deleteOne` yields the same shape as `deleteMany`. */
|
|
44
|
+
type DeleteOneResult = DeleteResult;
|
|
45
|
+
/** Alias — `deleteMany` yields the same shape as `deleteOne`. */
|
|
46
|
+
type DeleteManyResult = DeleteResult;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { type AggRecordArgs, AggregateCommand, type AnyMongoCommand, DeleteManyCommand, type DeleteManyResult, DeleteOneCommand, type DeleteOneResult, type DeleteResult, FindOneAndDeleteCommand, FindOneAndUpdateCommand, InsertManyCommand, type InsertManyResult, InsertOneCommand, type InsertOneResult, MongoAddFieldsStage, MongoAggAccumulator, MongoAggArrayFilter, MongoAggCond, type MongoAggExpr, type MongoAggExprRewriter, type MongoAggExprVisitor, MongoAggFieldRef, MongoAggLet, MongoAggLiteral, MongoAggMap, MongoAggMergeObjects, MongoAggOperator, MongoAggReduce, MongoAggSwitch, type MongoAggSwitchBranch, MongoAndExpr, MongoBucketAutoStage, MongoBucketStage, MongoCountStage, type MongoDensifyRange, MongoDensifyStage, MongoExistsExpr, MongoExprFilter, MongoFacetStage, MongoFieldFilter, type MongoFillOutput, MongoFillStage, type MongoFilterExpr, type MongoFilterRewriter, type MongoFilterVisitor, MongoGeoNearStage, MongoGraphLookupStage, type MongoGroupId, MongoGroupStage, MongoLimitStage, MongoLookupStage, MongoMatchStage, MongoMergeStage, MongoNotExpr, MongoOrExpr, MongoOutStage, type MongoPipelineStage, MongoProjectStage, type MongoProjectionValue, type MongoQueryPlan, MongoRedactStage, MongoReplaceRootStage, MongoSampleStage, MongoSearchMetaStage, MongoSearchStage, MongoSetWindowFieldsStage, MongoSkipStage, MongoSortByCountStage, MongoSortStage, type MongoStageRewriterContext, type MongoStageVisitor, MongoUnionWithStage, MongoUnwindStage, type MongoUpdatePipelineStage, type MongoUpdateSpec, MongoVectorSearchStage, type MongoWindowField, RawAggregateCommand, RawDeleteManyCommand, RawDeleteOneCommand, RawFindOneAndDeleteCommand, RawFindOneAndUpdateCommand, RawInsertManyCommand, RawInsertOneCommand, type RawMongoCommand, RawUpdateManyCommand, RawUpdateOneCommand, UpdateManyCommand, type UpdateManyResult, UpdateOneCommand, type UpdateOneResult, type UpdateResult, isExprArray, isMongoFilterExpr, isRecordArgs };
|
|
49
|
+
//# sourceMappingURL=execution.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.mts","names":[],"sources":["../../src/result-types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAUA;AAIA;AAWA;AAQA;AAGA;AAKA;AAKY,UApCK,eAAA,CAoCU;EAGf,SAAA,UAAgB,EAAA,OAAA;;UAnCX,gBAAA;wBACO;;;;;;;;;UAUP,YAAA;;;;;;;KAQL,eAAA,GAAkB;;KAGlB,gBAAA,GAAmB;;;;UAKd,YAAA;;;;KAKL,eAAA,GAAkB;;KAGlB,gBAAA,GAAmB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as MongoNotExpr, c as MongoAstNode, i as MongoFieldFilter, n as MongoExistsExpr, o as MongoOrExpr, r as MongoExprFilter, s as isMongoFilterExpr, t as MongoAndExpr } from "../filter-expressions-
|
|
1
|
+
import { a as MongoNotExpr, c as MongoAstNode, i as MongoFieldFilter, n as MongoExistsExpr, o as MongoOrExpr, r as MongoExprFilter, s as isMongoFilterExpr, t as MongoAndExpr } from "../filter-expressions-BSKn8EyU.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/aggregation-expressions.ts
|
|
4
4
|
function isExprArray(args) {
|
|
@@ -347,11 +347,18 @@ var UpdateOneCommand = class extends MongoAstNode {
|
|
|
347
347
|
collection;
|
|
348
348
|
filter;
|
|
349
349
|
update;
|
|
350
|
-
|
|
350
|
+
/**
|
|
351
|
+
* When true, the wire command becomes an upsert: if no document matches
|
|
352
|
+
* `filter`, a new document is inserted, derived from the filter's
|
|
353
|
+
* equality fields plus the update spec. Defaults to false.
|
|
354
|
+
*/
|
|
355
|
+
upsert;
|
|
356
|
+
constructor(collection, filter, update, upsert = false) {
|
|
351
357
|
super();
|
|
352
358
|
this.collection = collection;
|
|
353
359
|
this.filter = filter;
|
|
354
360
|
this.update = update;
|
|
361
|
+
this.upsert = upsert;
|
|
355
362
|
this.freeze();
|
|
356
363
|
}
|
|
357
364
|
};
|
|
@@ -382,11 +389,18 @@ var UpdateManyCommand = class extends MongoAstNode {
|
|
|
382
389
|
collection;
|
|
383
390
|
filter;
|
|
384
391
|
update;
|
|
385
|
-
|
|
392
|
+
/**
|
|
393
|
+
* Upsert flag — see `UpdateOneCommand.upsert`. For `updateMany`, Mongo
|
|
394
|
+
* inserts at most one document when no match exists (driver-side
|
|
395
|
+
* constraint).
|
|
396
|
+
*/
|
|
397
|
+
upsert;
|
|
398
|
+
constructor(collection, filter, update, upsert = false) {
|
|
386
399
|
super();
|
|
387
400
|
this.collection = collection;
|
|
388
401
|
this.filter = filter;
|
|
389
402
|
this.update = update;
|
|
403
|
+
this.upsert = upsert;
|
|
390
404
|
this.freeze();
|
|
391
405
|
}
|
|
392
406
|
};
|
|
@@ -407,12 +421,16 @@ var FindOneAndUpdateCommand = class extends MongoAstNode {
|
|
|
407
421
|
filter;
|
|
408
422
|
update;
|
|
409
423
|
upsert;
|
|
410
|
-
|
|
424
|
+
sort;
|
|
425
|
+
returnDocument;
|
|
426
|
+
constructor(collection, filter, update, upsert = false, sort, returnDocument = "after") {
|
|
411
427
|
super();
|
|
412
428
|
this.collection = collection;
|
|
413
429
|
this.filter = filter;
|
|
414
430
|
this.update = update;
|
|
415
431
|
this.upsert = upsert;
|
|
432
|
+
this.sort = sort;
|
|
433
|
+
this.returnDocument = returnDocument;
|
|
416
434
|
this.freeze();
|
|
417
435
|
}
|
|
418
436
|
};
|
|
@@ -420,10 +438,12 @@ var FindOneAndDeleteCommand = class extends MongoAstNode {
|
|
|
420
438
|
kind = "findOneAndDelete";
|
|
421
439
|
collection;
|
|
422
440
|
filter;
|
|
423
|
-
|
|
441
|
+
sort;
|
|
442
|
+
constructor(collection, filter, sort) {
|
|
424
443
|
super();
|
|
425
444
|
this.collection = collection;
|
|
426
445
|
this.filter = filter;
|
|
446
|
+
this.sort = sort;
|
|
427
447
|
this.freeze();
|
|
428
448
|
}
|
|
429
449
|
};
|
|
@@ -528,12 +548,21 @@ var RawFindOneAndUpdateCommand = class extends MongoAstNode {
|
|
|
528
548
|
filter;
|
|
529
549
|
update;
|
|
530
550
|
upsert;
|
|
531
|
-
|
|
551
|
+
sort;
|
|
552
|
+
/**
|
|
553
|
+
* When `undefined`, the option is omitted from the wire command and the
|
|
554
|
+
* MongoDB driver applies its documented default (return the pre-image
|
|
555
|
+
* document). Set explicitly to `'before'` or `'after'` to override.
|
|
556
|
+
*/
|
|
557
|
+
returnDocument;
|
|
558
|
+
constructor(collection, filter, update, upsert = false, sort, returnDocument) {
|
|
532
559
|
super();
|
|
533
560
|
this.collection = collection;
|
|
534
561
|
this.filter = filter;
|
|
535
562
|
this.update = update;
|
|
536
563
|
this.upsert = upsert;
|
|
564
|
+
this.sort = sort;
|
|
565
|
+
this.returnDocument = returnDocument;
|
|
537
566
|
this.freeze();
|
|
538
567
|
}
|
|
539
568
|
};
|
|
@@ -541,10 +570,12 @@ var RawFindOneAndDeleteCommand = class extends MongoAstNode {
|
|
|
541
570
|
kind = "rawFindOneAndDelete";
|
|
542
571
|
collection;
|
|
543
572
|
filter;
|
|
544
|
-
|
|
573
|
+
sort;
|
|
574
|
+
constructor(collection, filter, sort) {
|
|
545
575
|
super();
|
|
546
576
|
this.collection = collection;
|
|
547
577
|
this.filter = filter;
|
|
578
|
+
this.sort = sort;
|
|
548
579
|
this.freeze();
|
|
549
580
|
}
|
|
550
581
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.mjs","names":["frozen: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>>","result: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>>","rewrittenArgs: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs","rewrittenArg: MongoAggExpr | AggRecordArgs | null","rewrittenVars: Record<string, MongoAggExpr>","result: Record<string, MongoAggExpr>","result: Record<string, MongoAggAccumulator>","newProjection: Record<string, MongoProjectionValue>","options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n }","newAccumulators: Record<string, MongoAggAccumulator>","opts: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n }","opts: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n }","opts: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n }","frozen: Record<string, ReadonlyArray<MongoPipelineStage>>","newFacets: Record<string, ReadonlyArray<MongoPipelineStage>>","opts: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n }","opts: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n }","newOutput: Record<string, MongoWindowField>","opts: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n }","newOutput: Record<string, MongoFillOutput>","opts: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n }"],"sources":["../../src/aggregation-expressions.ts","../../src/commands.ts","../../src/raw-commands.ts","../../src/stages.ts"],"sourcesContent":["import { MongoAstNode } from './ast-node';\nimport type { MongoAggExprRewriter, MongoAggExprVisitor } from './visitors';\n\nexport type AggRecordArgs = Readonly<Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>>>;\n\nexport function isExprArray(\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n): args is ReadonlyArray<MongoAggExpr> {\n return Array.isArray(args);\n}\n\nexport function isRecordArgs(\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n): args is AggRecordArgs {\n return !Array.isArray(args) && typeof args === 'object' && !('accept' in args);\n}\n\nfunction freezeRecordArgs(record: AggRecordArgs): AggRecordArgs {\n const frozen: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>> = {};\n for (const [key, val] of Object.entries(record)) {\n frozen[key] = Array.isArray(val) ? Object.freeze([...val]) : val;\n }\n return Object.freeze(frozen);\n}\n\nfunction rewriteRecordArgs(record: AggRecordArgs, rewriter: MongoAggExprRewriter): AggRecordArgs {\n const result: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>> = {};\n for (const [key, val] of Object.entries(record)) {\n if (Array.isArray(val)) {\n result[key] = val.map((v: MongoAggExpr) => v.rewrite(rewriter));\n } else {\n result[key] = (val as MongoAggExpr).rewrite(rewriter);\n }\n }\n return result;\n}\n\nabstract class MongoAggExprNode extends MongoAstNode {\n abstract accept<R>(visitor: MongoAggExprVisitor<R>): R;\n abstract rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr;\n}\n\nexport class MongoAggFieldRef extends MongoAggExprNode {\n readonly kind = 'fieldRef' as const;\n readonly path: string;\n\n constructor(path: string) {\n super();\n if (!path) {\n throw new Error('Field path must not be empty');\n }\n this.path = path;\n this.freeze();\n }\n\n static of(path: string): MongoAggFieldRef {\n return new MongoAggFieldRef(path);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.fieldRef(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n return rewriter.fieldRef ? rewriter.fieldRef(this) : this;\n }\n}\n\nexport class MongoAggLiteral extends MongoAggExprNode {\n readonly kind = 'literal' as const;\n readonly value: unknown;\n\n constructor(value: unknown) {\n super();\n this.value = value;\n this.freeze();\n }\n\n static of(value: unknown): MongoAggLiteral {\n return new MongoAggLiteral(value);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.literal(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n return rewriter.literal ? rewriter.literal(this) : this;\n }\n}\n\nexport class MongoAggOperator extends MongoAggExprNode {\n readonly kind = 'operator' as const;\n readonly op: string;\n readonly args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs;\n\n constructor(op: string, args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs) {\n super();\n this.op = op;\n if (Array.isArray(args)) {\n this.args = Object.freeze([...args]);\n } else if (isRecordArgs(args)) {\n this.args = freezeRecordArgs(args);\n } else {\n this.args = args;\n }\n this.freeze();\n }\n\n static of(\n op: string,\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n ): MongoAggOperator {\n return new MongoAggOperator(op, args);\n }\n\n static add(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$add', args);\n }\n\n static subtract(left: MongoAggExpr, right: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$subtract', [left, right]);\n }\n\n static multiply(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$multiply', args);\n }\n\n static divide(dividend: MongoAggExpr, divisor: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$divide', [dividend, divisor]);\n }\n\n static concat(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$concat', args);\n }\n\n static toLower(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$toLower', expr);\n }\n\n static toUpper(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$toUpper', expr);\n }\n\n static size(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$size', expr);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.operator(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const { args } = this;\n let rewrittenArgs: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs;\n if (isExprArray(args)) {\n rewrittenArgs = args.map((a) => a.rewrite(rewriter));\n } else if (isRecordArgs(args)) {\n rewrittenArgs = rewriteRecordArgs(args, rewriter);\n } else {\n rewrittenArgs = args.rewrite(rewriter);\n }\n const rebuilt = new MongoAggOperator(this.op, rewrittenArgs);\n return rewriter.operator ? rewriter.operator(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggAccumulator extends MongoAggExprNode {\n readonly kind = 'accumulator' as const;\n readonly op: string;\n readonly arg: MongoAggExpr | AggRecordArgs | null;\n\n constructor(op: string, arg: MongoAggExpr | AggRecordArgs | null) {\n super();\n this.op = op;\n if (arg !== null && isRecordArgs(arg)) {\n this.arg = freezeRecordArgs(arg);\n } else {\n this.arg = arg;\n }\n this.freeze();\n }\n\n static of(op: string, arg: MongoAggExpr | AggRecordArgs | null): MongoAggAccumulator {\n return new MongoAggAccumulator(op, arg);\n }\n\n static sum(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$sum', expr);\n }\n\n static avg(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$avg', expr);\n }\n\n static min(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$min', expr);\n }\n\n static max(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$max', expr);\n }\n\n static first(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$first', expr);\n }\n\n static last(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$last', expr);\n }\n\n static push(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$push', expr);\n }\n\n static addToSet(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$addToSet', expr);\n }\n\n static count(): MongoAggAccumulator {\n return new MongoAggAccumulator('$count', null);\n }\n\n static stdDevPop(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$stdDevPop', expr);\n }\n\n static stdDevSamp(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$stdDevSamp', expr);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.accumulator(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n let rewrittenArg: MongoAggExpr | AggRecordArgs | null;\n if (this.arg === null) {\n rewrittenArg = null;\n } else if (isRecordArgs(this.arg)) {\n rewrittenArg = rewriteRecordArgs(this.arg, rewriter);\n } else {\n rewrittenArg = this.arg.rewrite(rewriter);\n }\n const rebuilt = new MongoAggAccumulator(this.op, rewrittenArg);\n return rewriter.accumulator ? rewriter.accumulator(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggCond extends MongoAggExprNode {\n readonly kind = 'cond' as const;\n readonly condition: MongoAggExpr;\n readonly then_: MongoAggExpr;\n readonly else_: MongoAggExpr;\n\n constructor(condition: MongoAggExpr, then_: MongoAggExpr, else_: MongoAggExpr) {\n super();\n this.condition = condition;\n this.then_ = then_;\n this.else_ = else_;\n this.freeze();\n }\n\n static of(condition: MongoAggExpr, then_: MongoAggExpr, else_: MongoAggExpr): MongoAggCond {\n return new MongoAggCond(condition, then_, else_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.cond(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggCond(\n this.condition.rewrite(rewriter),\n this.then_.rewrite(rewriter),\n this.else_.rewrite(rewriter),\n );\n return rewriter.cond ? rewriter.cond(rebuilt) : rebuilt;\n }\n}\n\nexport interface MongoAggSwitchBranch {\n readonly case_: MongoAggExpr;\n readonly then_: MongoAggExpr;\n}\n\nexport class MongoAggSwitch extends MongoAggExprNode {\n readonly kind = 'switch' as const;\n readonly branches: ReadonlyArray<MongoAggSwitchBranch>;\n readonly default_: MongoAggExpr;\n\n constructor(branches: ReadonlyArray<MongoAggSwitchBranch>, default_: MongoAggExpr) {\n super();\n this.branches = Object.freeze(\n branches.map((b) => Object.freeze({ case_: b.case_, then_: b.then_ })),\n );\n this.default_ = default_;\n this.freeze();\n }\n\n static of(branches: ReadonlyArray<MongoAggSwitchBranch>, default_: MongoAggExpr): MongoAggSwitch {\n return new MongoAggSwitch(branches, default_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.switch_(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggSwitch(\n this.branches.map((b) => ({\n case_: b.case_.rewrite(rewriter),\n then_: b.then_.rewrite(rewriter),\n })),\n this.default_.rewrite(rewriter),\n );\n return rewriter.switch_ ? rewriter.switch_(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggArrayFilter extends MongoAggExprNode {\n readonly kind = 'filter' as const;\n readonly input: MongoAggExpr;\n readonly cond: MongoAggExpr;\n readonly as: string;\n\n constructor(input: MongoAggExpr, cond: MongoAggExpr, as: string) {\n super();\n this.input = input;\n this.cond = cond;\n this.as = as;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, cond: MongoAggExpr, as: string): MongoAggArrayFilter {\n return new MongoAggArrayFilter(input, cond, as);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.filter(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggArrayFilter(\n this.input.rewrite(rewriter),\n this.cond.rewrite(rewriter),\n this.as,\n );\n return rewriter.filter ? rewriter.filter(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggMap extends MongoAggExprNode {\n readonly kind = 'map' as const;\n readonly input: MongoAggExpr;\n readonly in_: MongoAggExpr;\n readonly as: string;\n\n constructor(input: MongoAggExpr, in_: MongoAggExpr, as: string) {\n super();\n this.input = input;\n this.in_ = in_;\n this.as = as;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, in_: MongoAggExpr, as: string): MongoAggMap {\n return new MongoAggMap(input, in_, as);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.map(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggMap(\n this.input.rewrite(rewriter),\n this.in_.rewrite(rewriter),\n this.as,\n );\n return rewriter.map ? rewriter.map(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggReduce extends MongoAggExprNode {\n readonly kind = 'reduce' as const;\n readonly input: MongoAggExpr;\n readonly initialValue: MongoAggExpr;\n readonly in_: MongoAggExpr;\n\n constructor(input: MongoAggExpr, initialValue: MongoAggExpr, in_: MongoAggExpr) {\n super();\n this.input = input;\n this.initialValue = initialValue;\n this.in_ = in_;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, initialValue: MongoAggExpr, in_: MongoAggExpr): MongoAggReduce {\n return new MongoAggReduce(input, initialValue, in_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.reduce(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggReduce(\n this.input.rewrite(rewriter),\n this.initialValue.rewrite(rewriter),\n this.in_.rewrite(rewriter),\n );\n return rewriter.reduce ? rewriter.reduce(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggLet extends MongoAggExprNode {\n readonly kind = 'let' as const;\n readonly vars: Readonly<Record<string, MongoAggExpr>>;\n readonly in_: MongoAggExpr;\n\n constructor(vars: Record<string, MongoAggExpr>, in_: MongoAggExpr) {\n super();\n this.vars = Object.freeze({ ...vars });\n this.in_ = in_;\n this.freeze();\n }\n\n static of(vars: Record<string, MongoAggExpr>, in_: MongoAggExpr): MongoAggLet {\n return new MongoAggLet(vars, in_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.let_(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rewrittenVars: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(this.vars)) {\n rewrittenVars[key] = val.rewrite(rewriter);\n }\n const rebuilt = new MongoAggLet(rewrittenVars, this.in_.rewrite(rewriter));\n return rewriter.let_ ? rewriter.let_(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggMergeObjects extends MongoAggExprNode {\n readonly kind = 'mergeObjects' as const;\n readonly exprs: ReadonlyArray<MongoAggExpr>;\n\n constructor(exprs: ReadonlyArray<MongoAggExpr>) {\n super();\n this.exprs = Object.freeze([...exprs]);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<MongoAggExpr>): MongoAggMergeObjects {\n return new MongoAggMergeObjects(exprs);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.mergeObjects(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggMergeObjects(this.exprs.map((e) => e.rewrite(rewriter)));\n return rewriter.mergeObjects ? rewriter.mergeObjects(rebuilt) : rebuilt;\n }\n}\n\nexport type MongoAggExpr =\n | MongoAggFieldRef\n | MongoAggLiteral\n | MongoAggOperator\n | MongoAggAccumulator\n | MongoAggCond\n | MongoAggSwitch\n | MongoAggArrayFilter\n | MongoAggMap\n | MongoAggReduce\n | MongoAggLet\n | MongoAggMergeObjects;\n","import type { MongoValue } from '@prisma-next/mongo-value';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoFilterExpr } from './filter-expressions';\nimport type { RawMongoCommand } from './raw-commands';\nimport type { MongoPipelineStage, MongoUpdatePipelineStage } from './stages';\nexport type MongoUpdateSpec = Record<string, MongoValue> | ReadonlyArray<MongoUpdatePipelineStage>;\n\nexport class InsertOneCommand extends MongoAstNode {\n readonly kind = 'insertOne' as const;\n readonly collection: string;\n readonly document: Record<string, MongoValue>;\n\n constructor(collection: string, document: Record<string, MongoValue>) {\n super();\n this.collection = collection;\n this.document = document;\n this.freeze();\n }\n}\n\nexport class UpdateOneCommand extends MongoAstNode {\n readonly kind = 'updateOne' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n\n constructor(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.freeze();\n }\n}\n\nexport class DeleteOneCommand extends MongoAstNode {\n readonly kind = 'deleteOne' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n\n constructor(collection: string, filter: MongoFilterExpr) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class InsertManyCommand extends MongoAstNode {\n readonly kind = 'insertMany' as const;\n readonly collection: string;\n readonly documents: ReadonlyArray<Record<string, MongoValue>>;\n\n constructor(collection: string, documents: ReadonlyArray<Record<string, MongoValue>>) {\n super();\n this.collection = collection;\n this.documents = documents;\n this.freeze();\n }\n}\n\nexport class UpdateManyCommand extends MongoAstNode {\n readonly kind = 'updateMany' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n\n constructor(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.freeze();\n }\n}\n\nexport class DeleteManyCommand extends MongoAstNode {\n readonly kind = 'deleteMany' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n\n constructor(collection: string, filter: MongoFilterExpr) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class FindOneAndUpdateCommand extends MongoAstNode {\n readonly kind = 'findOneAndUpdate' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n readonly upsert: boolean;\n\n constructor(\n collection: string,\n filter: MongoFilterExpr,\n update: MongoUpdateSpec,\n upsert: boolean,\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.freeze();\n }\n}\n\nexport class FindOneAndDeleteCommand extends MongoAstNode {\n readonly kind = 'findOneAndDelete' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n\n constructor(collection: string, filter: MongoFilterExpr) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class AggregateCommand extends MongoAstNode {\n readonly kind = 'aggregate' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage>;\n\n constructor(collection: string, pipeline: ReadonlyArray<MongoPipelineStage>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline;\n this.freeze();\n }\n}\n\nexport type AnyMongoCommand =\n | InsertOneCommand\n | InsertManyCommand\n | UpdateOneCommand\n | UpdateManyCommand\n | DeleteOneCommand\n | DeleteManyCommand\n | FindOneAndUpdateCommand\n | FindOneAndDeleteCommand\n | AggregateCommand\n | RawMongoCommand;\n","import type { Document } from '@prisma-next/mongo-value';\nimport { MongoAstNode } from './ast-node';\n\nexport class RawAggregateCommand extends MongoAstNode {\n readonly kind = 'rawAggregate' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<Document>;\n\n constructor(collection: string, pipeline: ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline;\n this.freeze();\n }\n}\n\nexport class RawInsertOneCommand extends MongoAstNode {\n readonly kind = 'rawInsertOne' as const;\n readonly collection: string;\n readonly document: Document;\n\n constructor(collection: string, document: Document) {\n super();\n this.collection = collection;\n this.document = document;\n this.freeze();\n }\n}\n\nexport class RawInsertManyCommand extends MongoAstNode {\n readonly kind = 'rawInsertMany' as const;\n readonly collection: string;\n readonly documents: ReadonlyArray<Document>;\n\n constructor(collection: string, documents: ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.documents = documents;\n this.freeze();\n }\n}\n\nexport class RawUpdateOneCommand extends MongoAstNode {\n readonly kind = 'rawUpdateOne' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n\n constructor(collection: string, filter: Document, update: Document | ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.freeze();\n }\n}\n\nexport class RawUpdateManyCommand extends MongoAstNode {\n readonly kind = 'rawUpdateMany' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n\n constructor(collection: string, filter: Document, update: Document | ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.freeze();\n }\n}\n\nexport class RawDeleteOneCommand extends MongoAstNode {\n readonly kind = 'rawDeleteOne' as const;\n readonly collection: string;\n readonly filter: Document;\n\n constructor(collection: string, filter: Document) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class RawDeleteManyCommand extends MongoAstNode {\n readonly kind = 'rawDeleteMany' as const;\n readonly collection: string;\n readonly filter: Document;\n\n constructor(collection: string, filter: Document) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class RawFindOneAndUpdateCommand extends MongoAstNode {\n readonly kind = 'rawFindOneAndUpdate' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n readonly upsert: boolean;\n\n constructor(\n collection: string,\n filter: Document,\n update: Document | ReadonlyArray<Document>,\n upsert: boolean,\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.freeze();\n }\n}\n\nexport class RawFindOneAndDeleteCommand extends MongoAstNode {\n readonly kind = 'rawFindOneAndDelete' as const;\n readonly collection: string;\n readonly filter: Document;\n\n constructor(collection: string, filter: Document) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport type RawMongoCommand =\n | RawAggregateCommand\n | RawInsertOneCommand\n | RawInsertManyCommand\n | RawUpdateOneCommand\n | RawUpdateManyCommand\n | RawDeleteOneCommand\n | RawDeleteManyCommand\n | RawFindOneAndUpdateCommand\n | RawFindOneAndDeleteCommand;\n","import type { MongoAggAccumulator, MongoAggExpr } from './aggregation-expressions';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoFilterExpr } from './filter-expressions';\nimport type {\n MongoAggExprRewriter,\n MongoStageRewriterContext,\n MongoStageVisitor,\n} from './visitors';\n\nexport type MongoGroupId = null | MongoAggExpr | Readonly<Record<string, MongoAggExpr>>;\nexport type MongoProjectionValue = 0 | 1 | MongoAggExpr;\n\n// Structural guard: MongoAggExpr nodes always carry a `kind` string discriminant,\n// while scalar projection values (0 | 1) are numbers. This convention holds for all\n// current AST node types. If non-node objects with `kind` are introduced in the future,\n// consider a shared branded isAggExprNode() guard.\nfunction isAggExpr(value: MongoProjectionValue): value is MongoAggExpr {\n return typeof value === 'object' && value !== null && 'kind' in value;\n}\n\n// Discriminate MongoAggExpr from Record<string, MongoAggExpr> via the accept() method\n// that all AST nodes inherit from MongoAstNode. A plain record won't have accept(),\n// so this is robust even if a compound _id contains a key named \"kind\".\nfunction isAggExprNode(value: object): value is MongoAggExpr {\n return 'accept' in value && typeof value.accept === 'function';\n}\n\nfunction rewriteGroupId(groupId: MongoGroupId, rewriter: MongoAggExprRewriter): MongoGroupId {\n if (groupId === null) return null;\n if (isAggExprNode(groupId)) return groupId.rewrite(rewriter);\n const result: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(groupId)) {\n result[key] = val.rewrite(rewriter);\n }\n return result;\n}\n\nfunction rewriteExprRecord(\n fields: Readonly<Record<string, MongoAggExpr>>,\n rewriter: MongoAggExprRewriter,\n): Record<string, MongoAggExpr> {\n const result: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(fields)) {\n result[key] = val.rewrite(rewriter);\n }\n return result;\n}\n\nfunction rewriteAccumulatorRecord(\n accumulators: Readonly<Record<string, MongoAggAccumulator>>,\n rewriter: MongoAggExprRewriter,\n): Record<string, MongoAggAccumulator> {\n const result: Record<string, MongoAggAccumulator> = {};\n for (const [key, acc] of Object.entries(accumulators)) {\n result[key] = acc.rewrite(rewriter) as MongoAggAccumulator;\n }\n return result;\n}\n\nabstract class MongoStageNode extends MongoAstNode {\n abstract accept<R>(visitor: MongoStageVisitor<R>): R;\n abstract rewrite(context: MongoStageRewriterContext): MongoPipelineStage;\n}\n\nexport class MongoMatchStage extends MongoStageNode {\n readonly kind = 'match' as const;\n readonly filter: MongoFilterExpr;\n\n constructor(filter: MongoFilterExpr) {\n super();\n this.filter = filter;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.match(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n return new MongoMatchStage(this.filter.rewrite(context.filter ?? {}));\n }\n}\n\nexport class MongoProjectStage extends MongoStageNode {\n readonly kind = 'project' as const;\n readonly projection: Readonly<Record<string, MongoProjectionValue>>;\n\n constructor(projection: Record<string, MongoProjectionValue>) {\n super();\n this.projection = Object.freeze({ ...projection });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.project(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n let hasExpr = false;\n for (const val of Object.values(this.projection)) {\n if (isAggExpr(val)) {\n hasExpr = true;\n break;\n }\n }\n if (!hasExpr) return this;\n const newProjection: Record<string, MongoProjectionValue> = {};\n for (const [key, val] of Object.entries(this.projection)) {\n newProjection[key] = isAggExpr(val) ? val.rewrite(rewriter) : val;\n }\n return new MongoProjectStage(newProjection);\n }\n}\n\nexport class MongoSortStage extends MongoStageNode {\n readonly kind = 'sort' as const;\n readonly sort: Readonly<Record<string, 1 | -1>>;\n\n constructor(sort: Record<string, 1 | -1>) {\n super();\n this.sort = Object.freeze({ ...sort });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sort(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoLimitStage extends MongoStageNode {\n readonly kind = 'limit' as const;\n readonly limit: number;\n\n constructor(limit: number) {\n super();\n if (!Number.isInteger(limit) || limit < 0) {\n throw new RangeError('limit must be a non-negative integer');\n }\n this.limit = limit;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.limit(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSkipStage extends MongoStageNode {\n readonly kind = 'skip' as const;\n readonly skip: number;\n\n constructor(skip: number) {\n super();\n if (!Number.isInteger(skip) || skip < 0) {\n throw new RangeError('skip must be a non-negative integer');\n }\n this.skip = skip;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.skip(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoLookupStage extends MongoStageNode {\n readonly kind = 'lookup' as const;\n readonly from: string;\n readonly localField: string | undefined;\n readonly foreignField: string | undefined;\n readonly as: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage> | undefined;\n readonly let_: Readonly<Record<string, MongoAggExpr>> | undefined;\n\n constructor(options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n }) {\n super();\n const hasLocalField = options.localField !== undefined;\n const hasForeignField = options.foreignField !== undefined;\n const hasPipeline = !!options.pipeline;\n if (hasLocalField !== hasForeignField) {\n throw new Error('MongoLookupStage requires both localField and foreignField together');\n }\n if (!hasLocalField && !hasPipeline) {\n throw new Error(\n 'MongoLookupStage requires either equality fields (localField/foreignField) or a pipeline',\n );\n }\n if (options.let_ && !hasPipeline) {\n throw new Error('MongoLookupStage let_ requires a pipeline');\n }\n this.from = options.from;\n this.localField = options.localField;\n this.foreignField = options.foreignField;\n this.as = options.as;\n this.pipeline = options.pipeline ? Object.freeze([...options.pipeline]) : undefined;\n this.let_ = options.let_ ? Object.freeze({ ...options.let_ }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.lookup(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.pipeline && !this.let_) return this;\n const rewrittenLet =\n this.let_ && context.aggExpr ? rewriteExprRecord(this.let_, context.aggExpr) : this.let_;\n const options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n } = { from: this.from, as: this.as };\n if (this.localField !== undefined) options.localField = this.localField;\n if (this.foreignField !== undefined) options.foreignField = this.foreignField;\n if (this.pipeline) options.pipeline = this.pipeline.map((stage) => stage.rewrite(context));\n if (rewrittenLet) options.let_ = { ...rewrittenLet };\n return new MongoLookupStage(options);\n }\n}\n\nexport class MongoUnwindStage extends MongoStageNode {\n readonly kind = 'unwind' as const;\n readonly path: string;\n readonly preserveNullAndEmptyArrays: boolean;\n readonly includeArrayIndex: string | undefined;\n\n constructor(path: string, preserveNullAndEmptyArrays: boolean, includeArrayIndex?: string) {\n super();\n this.path = path;\n this.preserveNullAndEmptyArrays = preserveNullAndEmptyArrays;\n this.includeArrayIndex = includeArrayIndex;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.unwind(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoGroupStage extends MongoStageNode {\n readonly kind = 'group' as const;\n readonly groupId: MongoGroupId;\n readonly accumulators: Readonly<Record<string, MongoAggAccumulator>>;\n\n constructor(groupId: MongoGroupId, accumulators: Record<string, MongoAggAccumulator>) {\n super();\n this.groupId = groupId;\n this.accumulators = Object.freeze({ ...accumulators });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.group(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newAccumulators: Record<string, MongoAggAccumulator> = {};\n for (const [key, acc] of Object.entries(this.accumulators)) {\n // MongoAggAccumulator.rewrite() returns MongoAggExpr (the base union). The cast is safe\n // because the default rewriter rebuilds an accumulator from its rewritten arg. A custom\n // accumulator() hook could technically return a non-accumulator — narrowing the return type\n // on MongoAggAccumulator.rewrite() is tracked as a follow-up for the agg expression AST.\n newAccumulators[key] = acc.rewrite(rewriter) as MongoAggAccumulator;\n }\n return new MongoGroupStage(rewriteGroupId(this.groupId, rewriter), newAccumulators);\n }\n}\n\nexport class MongoAddFieldsStage extends MongoStageNode {\n readonly kind = 'addFields' as const;\n readonly fields: Readonly<Record<string, MongoAggExpr>>;\n\n constructor(fields: Record<string, MongoAggExpr>) {\n super();\n this.fields = Object.freeze({ ...fields });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.addFields(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoAddFieldsStage(rewriteExprRecord(this.fields, rewriter));\n }\n}\n\nexport class MongoReplaceRootStage extends MongoStageNode {\n readonly kind = 'replaceRoot' as const;\n readonly newRoot: MongoAggExpr;\n\n constructor(newRoot: MongoAggExpr) {\n super();\n this.newRoot = newRoot;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.replaceRoot(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoReplaceRootStage(this.newRoot.rewrite(rewriter));\n }\n}\n\nexport class MongoCountStage extends MongoStageNode {\n readonly kind = 'count' as const;\n readonly field: string;\n\n constructor(field: string) {\n super();\n this.field = field;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.count(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSortByCountStage extends MongoStageNode {\n readonly kind = 'sortByCount' as const;\n readonly expr: MongoAggExpr;\n\n constructor(expr: MongoAggExpr) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sortByCount(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoSortByCountStage(this.expr.rewrite(rewriter));\n }\n}\n\nexport class MongoSampleStage extends MongoStageNode {\n readonly kind = 'sample' as const;\n readonly size: number;\n\n constructor(size: number) {\n super();\n if (!Number.isInteger(size) || size < 0) {\n throw new RangeError('size must be a non-negative integer');\n }\n this.size = size;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sample(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoRedactStage extends MongoStageNode {\n readonly kind = 'redact' as const;\n readonly expr: MongoAggExpr;\n\n constructor(expr: MongoAggExpr) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.redact(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoRedactStage(this.expr.rewrite(rewriter));\n }\n}\n\nexport class MongoOutStage extends MongoStageNode {\n readonly kind = 'out' as const;\n readonly collection: string;\n readonly db: string | undefined;\n\n constructor(collection: string, db?: string) {\n super();\n this.collection = collection;\n this.db = db;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.out(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoUnionWithStage extends MongoStageNode {\n readonly kind = 'unionWith' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage> | undefined;\n\n constructor(collection: string, pipeline?: ReadonlyArray<MongoPipelineStage>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline ? Object.freeze([...pipeline]) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.unionWith(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.pipeline) return this;\n return new MongoUnionWithStage(\n this.collection,\n this.pipeline.map((stage) => stage.rewrite(context)),\n );\n }\n}\n\nexport class MongoBucketStage extends MongoStageNode {\n readonly kind = 'bucket' as const;\n readonly groupBy: MongoAggExpr;\n readonly boundaries: ReadonlyArray<unknown>;\n readonly default_: unknown;\n readonly output: Readonly<Record<string, MongoAggAccumulator>> | undefined;\n\n constructor(options: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n }) {\n super();\n if (options.boundaries.length < 2) {\n throw new RangeError('boundaries must contain at least 2 values');\n }\n this.groupBy = options.groupBy;\n this.boundaries = Object.freeze([...options.boundaries]);\n this.default_ = options.default_;\n this.output = options.output ? Object.freeze({ ...options.output }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.bucket(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const opts: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n } = { groupBy: this.groupBy.rewrite(rewriter), boundaries: this.boundaries };\n if (this.default_ !== undefined) opts.default_ = this.default_;\n if (this.output) opts.output = rewriteAccumulatorRecord(this.output, rewriter);\n return new MongoBucketStage(opts);\n }\n}\n\nexport class MongoBucketAutoStage extends MongoStageNode {\n readonly kind = 'bucketAuto' as const;\n readonly groupBy: MongoAggExpr;\n readonly buckets: number;\n readonly output: Readonly<Record<string, MongoAggAccumulator>> | undefined;\n readonly granularity: string | undefined;\n\n constructor(options: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n }) {\n super();\n if (!Number.isInteger(options.buckets) || options.buckets < 1) {\n throw new RangeError('buckets must be a positive integer');\n }\n this.groupBy = options.groupBy;\n this.buckets = options.buckets;\n this.output = options.output ? Object.freeze({ ...options.output }) : undefined;\n this.granularity = options.granularity;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.bucketAuto(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const opts: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n } = { groupBy: this.groupBy.rewrite(rewriter), buckets: this.buckets };\n if (this.output) opts.output = rewriteAccumulatorRecord(this.output, rewriter);\n if (this.granularity !== undefined) opts.granularity = this.granularity;\n return new MongoBucketAutoStage(opts);\n }\n}\n\nexport class MongoGeoNearStage extends MongoStageNode {\n readonly kind = 'geoNear' as const;\n readonly near: unknown;\n readonly distanceField: string;\n readonly spherical: boolean | undefined;\n readonly maxDistance: number | undefined;\n readonly minDistance: number | undefined;\n readonly query: MongoFilterExpr | undefined;\n readonly key: string | undefined;\n readonly distanceMultiplier: number | undefined;\n readonly includeLocs: string | undefined;\n\n constructor(options: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n }) {\n super();\n this.near = options.near;\n this.distanceField = options.distanceField;\n this.spherical = options.spherical;\n this.maxDistance = options.maxDistance;\n this.minDistance = options.minDistance;\n this.query = options.query;\n this.key = options.key;\n this.distanceMultiplier = options.distanceMultiplier;\n this.includeLocs = options.includeLocs;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.geoNear(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.query || !context.filter) return this;\n const opts: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n } = { near: this.near, distanceField: this.distanceField };\n if (this.spherical !== undefined) opts.spherical = this.spherical;\n if (this.maxDistance !== undefined) opts.maxDistance = this.maxDistance;\n if (this.minDistance !== undefined) opts.minDistance = this.minDistance;\n opts.query = this.query.rewrite(context.filter);\n if (this.key !== undefined) opts.key = this.key;\n if (this.distanceMultiplier !== undefined) opts.distanceMultiplier = this.distanceMultiplier;\n if (this.includeLocs !== undefined) opts.includeLocs = this.includeLocs;\n return new MongoGeoNearStage(opts);\n }\n}\n\nexport class MongoFacetStage extends MongoStageNode {\n readonly kind = 'facet' as const;\n readonly facets: Readonly<Record<string, ReadonlyArray<MongoPipelineStage>>>;\n\n constructor(facets: Record<string, ReadonlyArray<MongoPipelineStage>>) {\n super();\n const frozen: Record<string, ReadonlyArray<MongoPipelineStage>> = {};\n for (const [key, pipeline] of Object.entries(facets)) {\n frozen[key] = Object.freeze([...pipeline]);\n }\n this.facets = Object.freeze(frozen);\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.facet(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const newFacets: Record<string, ReadonlyArray<MongoPipelineStage>> = {};\n for (const [key, pipeline] of Object.entries(this.facets)) {\n newFacets[key] = pipeline.map((stage) => stage.rewrite(context));\n }\n return new MongoFacetStage(newFacets);\n }\n}\n\nexport class MongoGraphLookupStage extends MongoStageNode {\n readonly kind = 'graphLookup' as const;\n readonly from: string;\n readonly startWith: MongoAggExpr;\n readonly connectFromField: string;\n readonly connectToField: string;\n readonly as: string;\n readonly maxDepth: number | undefined;\n readonly depthField: string | undefined;\n readonly restrictSearchWithMatch: MongoFilterExpr | undefined;\n\n constructor(options: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n }) {\n super();\n this.from = options.from;\n this.startWith = options.startWith;\n this.connectFromField = options.connectFromField;\n this.connectToField = options.connectToField;\n this.as = options.as;\n this.maxDepth = options.maxDepth;\n this.depthField = options.depthField;\n this.restrictSearchWithMatch = options.restrictSearchWithMatch;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.graphLookup(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewrittenStartWith = context.aggExpr\n ? this.startWith.rewrite(context.aggExpr)\n : this.startWith;\n const rewrittenMatch =\n this.restrictSearchWithMatch && context.filter\n ? this.restrictSearchWithMatch.rewrite(context.filter)\n : this.restrictSearchWithMatch;\n if (rewrittenStartWith === this.startWith && rewrittenMatch === this.restrictSearchWithMatch) {\n return this;\n }\n const opts: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n } = {\n from: this.from,\n startWith: rewrittenStartWith,\n connectFromField: this.connectFromField,\n connectToField: this.connectToField,\n as: this.as,\n };\n if (this.maxDepth !== undefined) opts.maxDepth = this.maxDepth;\n if (this.depthField !== undefined) opts.depthField = this.depthField;\n if (rewrittenMatch) opts.restrictSearchWithMatch = rewrittenMatch;\n return new MongoGraphLookupStage(opts);\n }\n}\n\nexport class MongoMergeStage extends MongoStageNode {\n readonly kind = 'merge' as const;\n readonly into: string | { readonly db: string; readonly coll: string };\n readonly on: string | ReadonlyArray<string> | undefined;\n readonly whenMatched: string | ReadonlyArray<MongoUpdatePipelineStage> | undefined;\n readonly whenNotMatched: string | undefined;\n\n constructor(options: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n }) {\n super();\n this.into =\n typeof options.into === 'string' ? options.into : Object.freeze({ ...options.into });\n this.on =\n options.on === undefined\n ? undefined\n : typeof options.on === 'string'\n ? options.on\n : Object.freeze([...options.on]);\n this.whenMatched =\n options.whenMatched === undefined\n ? undefined\n : typeof options.whenMatched === 'string'\n ? options.whenMatched\n : Object.freeze([...options.whenMatched]);\n this.whenNotMatched = options.whenNotMatched;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.merge(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!Array.isArray(this.whenMatched)) return this;\n const opts: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n } = { into: this.into };\n if (this.on !== undefined) opts.on = this.on;\n // rewrite() preserves the concrete stage type at runtime\n opts.whenMatched = this.whenMatched.map(\n (stage) => stage.rewrite(context) as MongoUpdatePipelineStage,\n );\n if (this.whenNotMatched !== undefined) opts.whenNotMatched = this.whenNotMatched;\n return new MongoMergeStage(opts);\n }\n}\n\nexport interface MongoWindowField {\n readonly operator: MongoAggExpr;\n readonly window?: {\n readonly documents?: readonly [number, number];\n readonly range?: { readonly start: unknown; readonly end: unknown; readonly unit?: string };\n };\n}\n\nexport class MongoSetWindowFieldsStage extends MongoStageNode {\n readonly kind = 'setWindowFields' as const;\n readonly partitionBy: MongoAggExpr | undefined;\n readonly sortBy: Readonly<Record<string, 1 | -1>> | undefined;\n readonly output: Readonly<Record<string, MongoWindowField>>;\n\n constructor(options: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n }) {\n super();\n this.partitionBy = options.partitionBy;\n this.sortBy = options.sortBy ? Object.freeze({ ...options.sortBy }) : undefined;\n this.output = Object.freeze({ ...options.output });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.setWindowFields(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newOutput: Record<string, MongoWindowField> = {};\n for (const [key, wf] of Object.entries(this.output)) {\n newOutput[key] = { ...wf, operator: wf.operator.rewrite(rewriter) };\n }\n const opts: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n } = { output: newOutput };\n if (this.partitionBy) opts.partitionBy = this.partitionBy.rewrite(rewriter);\n if (this.sortBy) opts.sortBy = { ...this.sortBy };\n return new MongoSetWindowFieldsStage(opts);\n }\n}\n\nexport interface MongoDensifyRange {\n readonly step: number;\n readonly unit?: string;\n readonly bounds: 'full' | 'partition' | readonly [unknown, unknown];\n}\n\nexport class MongoDensifyStage extends MongoStageNode {\n readonly kind = 'densify' as const;\n readonly field: string;\n readonly partitionByFields: ReadonlyArray<string> | undefined;\n readonly range: MongoDensifyRange;\n\n constructor(options: {\n field: string;\n partitionByFields?: ReadonlyArray<string>;\n range: MongoDensifyRange;\n }) {\n super();\n this.field = options.field;\n this.partitionByFields = options.partitionByFields\n ? Object.freeze([...options.partitionByFields])\n : undefined;\n this.range = Object.freeze({ ...options.range });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.densify(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport interface MongoFillOutput {\n readonly method?: string;\n readonly value?: MongoAggExpr;\n}\n\nexport class MongoFillStage extends MongoStageNode {\n readonly kind = 'fill' as const;\n readonly partitionBy: MongoAggExpr | undefined;\n readonly partitionByFields: ReadonlyArray<string> | undefined;\n readonly sortBy: Readonly<Record<string, 1 | -1>> | undefined;\n readonly output: Readonly<Record<string, MongoFillOutput>>;\n\n constructor(options: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n }) {\n super();\n this.partitionBy = options.partitionBy;\n this.partitionByFields = options.partitionByFields\n ? Object.freeze([...options.partitionByFields])\n : undefined;\n this.sortBy = options.sortBy ? Object.freeze({ ...options.sortBy }) : undefined;\n this.output = Object.freeze({ ...options.output });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.fill(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newOutput: Record<string, MongoFillOutput> = {};\n for (const [key, fo] of Object.entries(this.output)) {\n newOutput[key] = fo.value ? { ...fo, value: fo.value.rewrite(rewriter) } : fo;\n }\n const opts: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n } = { output: newOutput };\n if (this.partitionBy) opts.partitionBy = this.partitionBy.rewrite(rewriter);\n if (this.partitionByFields) opts.partitionByFields = [...this.partitionByFields];\n if (this.sortBy) opts.sortBy = { ...this.sortBy };\n return new MongoFillStage(opts);\n }\n}\n\nexport class MongoSearchStage extends MongoStageNode {\n readonly kind = 'search' as const;\n readonly index: string | undefined;\n readonly config: Readonly<Record<string, unknown>>;\n\n constructor(config: Record<string, unknown>, index?: string) {\n super();\n this.config = Object.freeze({ ...config });\n this.index = index;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.search(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSearchMetaStage extends MongoStageNode {\n readonly kind = 'searchMeta' as const;\n readonly index: string | undefined;\n readonly config: Readonly<Record<string, unknown>>;\n\n constructor(config: Record<string, unknown>, index?: string) {\n super();\n this.config = Object.freeze({ ...config });\n this.index = index;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.searchMeta(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoVectorSearchStage extends MongoStageNode {\n readonly kind = 'vectorSearch' as const;\n readonly index: string;\n readonly path: string;\n readonly queryVector: ReadonlyArray<number>;\n readonly numCandidates: number;\n readonly limit: number;\n readonly filter: Readonly<Record<string, unknown>> | undefined;\n\n constructor(options: {\n index: string;\n path: string;\n queryVector: ReadonlyArray<number>;\n numCandidates: number;\n limit: number;\n filter?: Record<string, unknown>;\n }) {\n super();\n if (!Number.isInteger(options.limit) || options.limit < 1) {\n throw new RangeError('limit must be a positive integer');\n }\n if (!Number.isInteger(options.numCandidates) || options.numCandidates < options.limit) {\n throw new RangeError('numCandidates must be an integer >= limit');\n }\n this.index = options.index;\n this.path = options.path;\n this.queryVector = Object.freeze([...options.queryVector]);\n this.numCandidates = options.numCandidates;\n this.limit = options.limit;\n this.filter = options.filter ? Object.freeze({ ...options.filter }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.vectorSearch(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport type MongoUpdatePipelineStage =\n | MongoAddFieldsStage\n | MongoProjectStage\n | MongoReplaceRootStage;\n\nexport type MongoPipelineStage =\n | MongoMatchStage\n | MongoProjectStage\n | MongoSortStage\n | MongoLimitStage\n | MongoSkipStage\n | MongoLookupStage\n | MongoUnwindStage\n | MongoGroupStage\n | MongoAddFieldsStage\n | MongoReplaceRootStage\n | MongoCountStage\n | MongoSortByCountStage\n | MongoSampleStage\n | MongoRedactStage\n | MongoOutStage\n | MongoUnionWithStage\n | MongoBucketStage\n | MongoBucketAutoStage\n | MongoGeoNearStage\n | MongoFacetStage\n | MongoGraphLookupStage\n | MongoMergeStage\n | MongoSetWindowFieldsStage\n | MongoDensifyStage\n | MongoFillStage\n | MongoSearchStage\n | MongoSearchMetaStage\n | MongoVectorSearchStage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execution.mjs","names":["frozen: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>>","result: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>>","rewrittenArgs: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs","rewrittenArg: MongoAggExpr | AggRecordArgs | null","rewrittenVars: Record<string, MongoAggExpr>","result: Record<string, MongoAggExpr>","result: Record<string, MongoAggAccumulator>","newProjection: Record<string, MongoProjectionValue>","options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n }","newAccumulators: Record<string, MongoAggAccumulator>","opts: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n }","opts: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n }","opts: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n }","frozen: Record<string, ReadonlyArray<MongoPipelineStage>>","newFacets: Record<string, ReadonlyArray<MongoPipelineStage>>","opts: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n }","opts: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n }","newOutput: Record<string, MongoWindowField>","opts: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n }","newOutput: Record<string, MongoFillOutput>","opts: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n }"],"sources":["../../src/aggregation-expressions.ts","../../src/commands.ts","../../src/raw-commands.ts","../../src/stages.ts"],"sourcesContent":["import { MongoAstNode } from './ast-node';\nimport type { MongoAggExprRewriter, MongoAggExprVisitor } from './visitors';\n\nexport type AggRecordArgs = Readonly<Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>>>;\n\nexport function isExprArray(\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n): args is ReadonlyArray<MongoAggExpr> {\n return Array.isArray(args);\n}\n\nexport function isRecordArgs(\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n): args is AggRecordArgs {\n return !Array.isArray(args) && typeof args === 'object' && !('accept' in args);\n}\n\nfunction freezeRecordArgs(record: AggRecordArgs): AggRecordArgs {\n const frozen: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>> = {};\n for (const [key, val] of Object.entries(record)) {\n frozen[key] = Array.isArray(val) ? Object.freeze([...val]) : val;\n }\n return Object.freeze(frozen);\n}\n\nfunction rewriteRecordArgs(record: AggRecordArgs, rewriter: MongoAggExprRewriter): AggRecordArgs {\n const result: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>> = {};\n for (const [key, val] of Object.entries(record)) {\n if (Array.isArray(val)) {\n result[key] = val.map((v: MongoAggExpr) => v.rewrite(rewriter));\n } else {\n result[key] = (val as MongoAggExpr).rewrite(rewriter);\n }\n }\n return result;\n}\n\nabstract class MongoAggExprNode extends MongoAstNode {\n abstract accept<R>(visitor: MongoAggExprVisitor<R>): R;\n abstract rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr;\n}\n\nexport class MongoAggFieldRef extends MongoAggExprNode {\n readonly kind = 'fieldRef' as const;\n readonly path: string;\n\n constructor(path: string) {\n super();\n if (!path) {\n throw new Error('Field path must not be empty');\n }\n this.path = path;\n this.freeze();\n }\n\n static of(path: string): MongoAggFieldRef {\n return new MongoAggFieldRef(path);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.fieldRef(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n return rewriter.fieldRef ? rewriter.fieldRef(this) : this;\n }\n}\n\nexport class MongoAggLiteral extends MongoAggExprNode {\n readonly kind = 'literal' as const;\n readonly value: unknown;\n\n constructor(value: unknown) {\n super();\n this.value = value;\n this.freeze();\n }\n\n static of(value: unknown): MongoAggLiteral {\n return new MongoAggLiteral(value);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.literal(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n return rewriter.literal ? rewriter.literal(this) : this;\n }\n}\n\nexport class MongoAggOperator extends MongoAggExprNode {\n readonly kind = 'operator' as const;\n readonly op: string;\n readonly args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs;\n\n constructor(op: string, args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs) {\n super();\n this.op = op;\n if (Array.isArray(args)) {\n this.args = Object.freeze([...args]);\n } else if (isRecordArgs(args)) {\n this.args = freezeRecordArgs(args);\n } else {\n this.args = args;\n }\n this.freeze();\n }\n\n static of(\n op: string,\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n ): MongoAggOperator {\n return new MongoAggOperator(op, args);\n }\n\n static add(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$add', args);\n }\n\n static subtract(left: MongoAggExpr, right: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$subtract', [left, right]);\n }\n\n static multiply(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$multiply', args);\n }\n\n static divide(dividend: MongoAggExpr, divisor: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$divide', [dividend, divisor]);\n }\n\n static concat(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$concat', args);\n }\n\n static toLower(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$toLower', expr);\n }\n\n static toUpper(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$toUpper', expr);\n }\n\n static size(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$size', expr);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.operator(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const { args } = this;\n let rewrittenArgs: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs;\n if (isExprArray(args)) {\n rewrittenArgs = args.map((a) => a.rewrite(rewriter));\n } else if (isRecordArgs(args)) {\n rewrittenArgs = rewriteRecordArgs(args, rewriter);\n } else {\n rewrittenArgs = args.rewrite(rewriter);\n }\n const rebuilt = new MongoAggOperator(this.op, rewrittenArgs);\n return rewriter.operator ? rewriter.operator(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggAccumulator extends MongoAggExprNode {\n readonly kind = 'accumulator' as const;\n readonly op: string;\n readonly arg: MongoAggExpr | AggRecordArgs | null;\n\n constructor(op: string, arg: MongoAggExpr | AggRecordArgs | null) {\n super();\n this.op = op;\n if (arg !== null && isRecordArgs(arg)) {\n this.arg = freezeRecordArgs(arg);\n } else {\n this.arg = arg;\n }\n this.freeze();\n }\n\n static of(op: string, arg: MongoAggExpr | AggRecordArgs | null): MongoAggAccumulator {\n return new MongoAggAccumulator(op, arg);\n }\n\n static sum(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$sum', expr);\n }\n\n static avg(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$avg', expr);\n }\n\n static min(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$min', expr);\n }\n\n static max(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$max', expr);\n }\n\n static first(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$first', expr);\n }\n\n static last(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$last', expr);\n }\n\n static push(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$push', expr);\n }\n\n static addToSet(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$addToSet', expr);\n }\n\n static count(): MongoAggAccumulator {\n return new MongoAggAccumulator('$count', null);\n }\n\n static stdDevPop(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$stdDevPop', expr);\n }\n\n static stdDevSamp(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$stdDevSamp', expr);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.accumulator(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n let rewrittenArg: MongoAggExpr | AggRecordArgs | null;\n if (this.arg === null) {\n rewrittenArg = null;\n } else if (isRecordArgs(this.arg)) {\n rewrittenArg = rewriteRecordArgs(this.arg, rewriter);\n } else {\n rewrittenArg = this.arg.rewrite(rewriter);\n }\n const rebuilt = new MongoAggAccumulator(this.op, rewrittenArg);\n return rewriter.accumulator ? rewriter.accumulator(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggCond extends MongoAggExprNode {\n readonly kind = 'cond' as const;\n readonly condition: MongoAggExpr;\n readonly then_: MongoAggExpr;\n readonly else_: MongoAggExpr;\n\n constructor(condition: MongoAggExpr, then_: MongoAggExpr, else_: MongoAggExpr) {\n super();\n this.condition = condition;\n this.then_ = then_;\n this.else_ = else_;\n this.freeze();\n }\n\n static of(condition: MongoAggExpr, then_: MongoAggExpr, else_: MongoAggExpr): MongoAggCond {\n return new MongoAggCond(condition, then_, else_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.cond(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggCond(\n this.condition.rewrite(rewriter),\n this.then_.rewrite(rewriter),\n this.else_.rewrite(rewriter),\n );\n return rewriter.cond ? rewriter.cond(rebuilt) : rebuilt;\n }\n}\n\nexport interface MongoAggSwitchBranch {\n readonly case_: MongoAggExpr;\n readonly then_: MongoAggExpr;\n}\n\nexport class MongoAggSwitch extends MongoAggExprNode {\n readonly kind = 'switch' as const;\n readonly branches: ReadonlyArray<MongoAggSwitchBranch>;\n readonly default_: MongoAggExpr;\n\n constructor(branches: ReadonlyArray<MongoAggSwitchBranch>, default_: MongoAggExpr) {\n super();\n this.branches = Object.freeze(\n branches.map((b) => Object.freeze({ case_: b.case_, then_: b.then_ })),\n );\n this.default_ = default_;\n this.freeze();\n }\n\n static of(branches: ReadonlyArray<MongoAggSwitchBranch>, default_: MongoAggExpr): MongoAggSwitch {\n return new MongoAggSwitch(branches, default_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.switch_(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggSwitch(\n this.branches.map((b) => ({\n case_: b.case_.rewrite(rewriter),\n then_: b.then_.rewrite(rewriter),\n })),\n this.default_.rewrite(rewriter),\n );\n return rewriter.switch_ ? rewriter.switch_(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggArrayFilter extends MongoAggExprNode {\n readonly kind = 'filter' as const;\n readonly input: MongoAggExpr;\n readonly cond: MongoAggExpr;\n readonly as: string;\n\n constructor(input: MongoAggExpr, cond: MongoAggExpr, as: string) {\n super();\n this.input = input;\n this.cond = cond;\n this.as = as;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, cond: MongoAggExpr, as: string): MongoAggArrayFilter {\n return new MongoAggArrayFilter(input, cond, as);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.filter(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggArrayFilter(\n this.input.rewrite(rewriter),\n this.cond.rewrite(rewriter),\n this.as,\n );\n return rewriter.filter ? rewriter.filter(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggMap extends MongoAggExprNode {\n readonly kind = 'map' as const;\n readonly input: MongoAggExpr;\n readonly in_: MongoAggExpr;\n readonly as: string;\n\n constructor(input: MongoAggExpr, in_: MongoAggExpr, as: string) {\n super();\n this.input = input;\n this.in_ = in_;\n this.as = as;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, in_: MongoAggExpr, as: string): MongoAggMap {\n return new MongoAggMap(input, in_, as);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.map(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggMap(\n this.input.rewrite(rewriter),\n this.in_.rewrite(rewriter),\n this.as,\n );\n return rewriter.map ? rewriter.map(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggReduce extends MongoAggExprNode {\n readonly kind = 'reduce' as const;\n readonly input: MongoAggExpr;\n readonly initialValue: MongoAggExpr;\n readonly in_: MongoAggExpr;\n\n constructor(input: MongoAggExpr, initialValue: MongoAggExpr, in_: MongoAggExpr) {\n super();\n this.input = input;\n this.initialValue = initialValue;\n this.in_ = in_;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, initialValue: MongoAggExpr, in_: MongoAggExpr): MongoAggReduce {\n return new MongoAggReduce(input, initialValue, in_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.reduce(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggReduce(\n this.input.rewrite(rewriter),\n this.initialValue.rewrite(rewriter),\n this.in_.rewrite(rewriter),\n );\n return rewriter.reduce ? rewriter.reduce(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggLet extends MongoAggExprNode {\n readonly kind = 'let' as const;\n readonly vars: Readonly<Record<string, MongoAggExpr>>;\n readonly in_: MongoAggExpr;\n\n constructor(vars: Record<string, MongoAggExpr>, in_: MongoAggExpr) {\n super();\n this.vars = Object.freeze({ ...vars });\n this.in_ = in_;\n this.freeze();\n }\n\n static of(vars: Record<string, MongoAggExpr>, in_: MongoAggExpr): MongoAggLet {\n return new MongoAggLet(vars, in_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.let_(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rewrittenVars: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(this.vars)) {\n rewrittenVars[key] = val.rewrite(rewriter);\n }\n const rebuilt = new MongoAggLet(rewrittenVars, this.in_.rewrite(rewriter));\n return rewriter.let_ ? rewriter.let_(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggMergeObjects extends MongoAggExprNode {\n readonly kind = 'mergeObjects' as const;\n readonly exprs: ReadonlyArray<MongoAggExpr>;\n\n constructor(exprs: ReadonlyArray<MongoAggExpr>) {\n super();\n this.exprs = Object.freeze([...exprs]);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<MongoAggExpr>): MongoAggMergeObjects {\n return new MongoAggMergeObjects(exprs);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.mergeObjects(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggMergeObjects(this.exprs.map((e) => e.rewrite(rewriter)));\n return rewriter.mergeObjects ? rewriter.mergeObjects(rebuilt) : rebuilt;\n }\n}\n\nexport type MongoAggExpr =\n | MongoAggFieldRef\n | MongoAggLiteral\n | MongoAggOperator\n | MongoAggAccumulator\n | MongoAggCond\n | MongoAggSwitch\n | MongoAggArrayFilter\n | MongoAggMap\n | MongoAggReduce\n | MongoAggLet\n | MongoAggMergeObjects;\n","import type { MongoValue } from '@prisma-next/mongo-value';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoFilterExpr } from './filter-expressions';\nimport type { RawMongoCommand } from './raw-commands';\nimport type { MongoPipelineStage, MongoUpdatePipelineStage } from './stages';\nexport type MongoUpdateSpec = Record<string, MongoValue> | ReadonlyArray<MongoUpdatePipelineStage>;\n\nexport class InsertOneCommand extends MongoAstNode {\n readonly kind = 'insertOne' as const;\n readonly collection: string;\n readonly document: Record<string, MongoValue>;\n\n constructor(collection: string, document: Record<string, MongoValue>) {\n super();\n this.collection = collection;\n this.document = document;\n this.freeze();\n }\n}\n\nexport class UpdateOneCommand extends MongoAstNode {\n readonly kind = 'updateOne' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n /**\n * When true, the wire command becomes an upsert: if no document matches\n * `filter`, a new document is inserted, derived from the filter's\n * equality fields plus the update spec. Defaults to false.\n */\n readonly upsert: boolean;\n\n constructor(\n collection: string,\n filter: MongoFilterExpr,\n update: MongoUpdateSpec,\n upsert = false,\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.freeze();\n }\n}\n\nexport class DeleteOneCommand extends MongoAstNode {\n readonly kind = 'deleteOne' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n\n constructor(collection: string, filter: MongoFilterExpr) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class InsertManyCommand extends MongoAstNode {\n readonly kind = 'insertMany' as const;\n readonly collection: string;\n readonly documents: ReadonlyArray<Record<string, MongoValue>>;\n\n constructor(collection: string, documents: ReadonlyArray<Record<string, MongoValue>>) {\n super();\n this.collection = collection;\n this.documents = documents;\n this.freeze();\n }\n}\n\nexport class UpdateManyCommand extends MongoAstNode {\n readonly kind = 'updateMany' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n /**\n * Upsert flag — see `UpdateOneCommand.upsert`. For `updateMany`, Mongo\n * inserts at most one document when no match exists (driver-side\n * constraint).\n */\n readonly upsert: boolean;\n\n constructor(\n collection: string,\n filter: MongoFilterExpr,\n update: MongoUpdateSpec,\n upsert = false,\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.freeze();\n }\n}\n\nexport class DeleteManyCommand extends MongoAstNode {\n readonly kind = 'deleteMany' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n\n constructor(collection: string, filter: MongoFilterExpr) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class FindOneAndUpdateCommand extends MongoAstNode {\n readonly kind = 'findOneAndUpdate' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n readonly upsert: boolean;\n readonly sort: Record<string, 1 | -1> | undefined;\n readonly returnDocument: 'before' | 'after';\n\n constructor(\n collection: string,\n filter: MongoFilterExpr,\n update: MongoUpdateSpec,\n upsert = false,\n sort?: Record<string, 1 | -1>,\n returnDocument: 'before' | 'after' = 'after',\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.sort = sort;\n this.returnDocument = returnDocument;\n this.freeze();\n }\n}\n\nexport class FindOneAndDeleteCommand extends MongoAstNode {\n readonly kind = 'findOneAndDelete' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly sort: Record<string, 1 | -1> | undefined;\n\n constructor(collection: string, filter: MongoFilterExpr, sort?: Record<string, 1 | -1>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.sort = sort;\n this.freeze();\n }\n}\n\nexport class AggregateCommand extends MongoAstNode {\n readonly kind = 'aggregate' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage>;\n\n constructor(collection: string, pipeline: ReadonlyArray<MongoPipelineStage>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline;\n this.freeze();\n }\n}\n\nexport type AnyMongoCommand =\n | InsertOneCommand\n | InsertManyCommand\n | UpdateOneCommand\n | UpdateManyCommand\n | DeleteOneCommand\n | DeleteManyCommand\n | FindOneAndUpdateCommand\n | FindOneAndDeleteCommand\n | AggregateCommand\n | RawMongoCommand;\n","import type { Document } from '@prisma-next/mongo-value';\nimport { MongoAstNode } from './ast-node';\n\nexport class RawAggregateCommand extends MongoAstNode {\n readonly kind = 'rawAggregate' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<Document>;\n\n constructor(collection: string, pipeline: ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline;\n this.freeze();\n }\n}\n\nexport class RawInsertOneCommand extends MongoAstNode {\n readonly kind = 'rawInsertOne' as const;\n readonly collection: string;\n readonly document: Document;\n\n constructor(collection: string, document: Document) {\n super();\n this.collection = collection;\n this.document = document;\n this.freeze();\n }\n}\n\nexport class RawInsertManyCommand extends MongoAstNode {\n readonly kind = 'rawInsertMany' as const;\n readonly collection: string;\n readonly documents: ReadonlyArray<Document>;\n\n constructor(collection: string, documents: ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.documents = documents;\n this.freeze();\n }\n}\n\nexport class RawUpdateOneCommand extends MongoAstNode {\n readonly kind = 'rawUpdateOne' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n\n constructor(collection: string, filter: Document, update: Document | ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.freeze();\n }\n}\n\nexport class RawUpdateManyCommand extends MongoAstNode {\n readonly kind = 'rawUpdateMany' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n\n constructor(collection: string, filter: Document, update: Document | ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.freeze();\n }\n}\n\nexport class RawDeleteOneCommand extends MongoAstNode {\n readonly kind = 'rawDeleteOne' as const;\n readonly collection: string;\n readonly filter: Document;\n\n constructor(collection: string, filter: Document) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class RawDeleteManyCommand extends MongoAstNode {\n readonly kind = 'rawDeleteMany' as const;\n readonly collection: string;\n readonly filter: Document;\n\n constructor(collection: string, filter: Document) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class RawFindOneAndUpdateCommand extends MongoAstNode {\n readonly kind = 'rawFindOneAndUpdate' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n readonly upsert: boolean;\n readonly sort: Record<string, 1 | -1> | undefined;\n /**\n * When `undefined`, the option is omitted from the wire command and the\n * MongoDB driver applies its documented default (return the pre-image\n * document). Set explicitly to `'before'` or `'after'` to override.\n */\n readonly returnDocument: 'before' | 'after' | undefined;\n\n constructor(\n collection: string,\n filter: Document,\n update: Document | ReadonlyArray<Document>,\n upsert = false,\n sort?: Record<string, 1 | -1>,\n returnDocument?: 'before' | 'after',\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.sort = sort;\n this.returnDocument = returnDocument;\n this.freeze();\n }\n}\n\nexport class RawFindOneAndDeleteCommand extends MongoAstNode {\n readonly kind = 'rawFindOneAndDelete' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly sort: Record<string, 1 | -1> | undefined;\n\n constructor(collection: string, filter: Document, sort?: Record<string, 1 | -1>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.sort = sort;\n this.freeze();\n }\n}\n\nexport type RawMongoCommand =\n | RawAggregateCommand\n | RawInsertOneCommand\n | RawInsertManyCommand\n | RawUpdateOneCommand\n | RawUpdateManyCommand\n | RawDeleteOneCommand\n | RawDeleteManyCommand\n | RawFindOneAndUpdateCommand\n | RawFindOneAndDeleteCommand;\n","import type { MongoAggAccumulator, MongoAggExpr } from './aggregation-expressions';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoFilterExpr } from './filter-expressions';\nimport type {\n MongoAggExprRewriter,\n MongoStageRewriterContext,\n MongoStageVisitor,\n} from './visitors';\n\nexport type MongoGroupId = null | MongoAggExpr | Readonly<Record<string, MongoAggExpr>>;\nexport type MongoProjectionValue = 0 | 1 | MongoAggExpr;\n\n// Structural guard: MongoAggExpr nodes always carry a `kind` string discriminant,\n// while scalar projection values (0 | 1) are numbers. This convention holds for all\n// current AST node types. If non-node objects with `kind` are introduced in the future,\n// consider a shared branded isAggExprNode() guard.\nfunction isAggExpr(value: MongoProjectionValue): value is MongoAggExpr {\n return typeof value === 'object' && value !== null && 'kind' in value;\n}\n\n// Discriminate MongoAggExpr from Record<string, MongoAggExpr> via the accept() method\n// that all AST nodes inherit from MongoAstNode. A plain record won't have accept(),\n// so this is robust even if a compound _id contains a key named \"kind\".\nfunction isAggExprNode(value: object): value is MongoAggExpr {\n return 'accept' in value && typeof value.accept === 'function';\n}\n\nfunction rewriteGroupId(groupId: MongoGroupId, rewriter: MongoAggExprRewriter): MongoGroupId {\n if (groupId === null) return null;\n if (isAggExprNode(groupId)) return groupId.rewrite(rewriter);\n const result: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(groupId)) {\n result[key] = val.rewrite(rewriter);\n }\n return result;\n}\n\nfunction rewriteExprRecord(\n fields: Readonly<Record<string, MongoAggExpr>>,\n rewriter: MongoAggExprRewriter,\n): Record<string, MongoAggExpr> {\n const result: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(fields)) {\n result[key] = val.rewrite(rewriter);\n }\n return result;\n}\n\nfunction rewriteAccumulatorRecord(\n accumulators: Readonly<Record<string, MongoAggAccumulator>>,\n rewriter: MongoAggExprRewriter,\n): Record<string, MongoAggAccumulator> {\n const result: Record<string, MongoAggAccumulator> = {};\n for (const [key, acc] of Object.entries(accumulators)) {\n result[key] = acc.rewrite(rewriter) as MongoAggAccumulator;\n }\n return result;\n}\n\nabstract class MongoStageNode extends MongoAstNode {\n abstract accept<R>(visitor: MongoStageVisitor<R>): R;\n abstract rewrite(context: MongoStageRewriterContext): MongoPipelineStage;\n}\n\nexport class MongoMatchStage extends MongoStageNode {\n readonly kind = 'match' as const;\n readonly filter: MongoFilterExpr;\n\n constructor(filter: MongoFilterExpr) {\n super();\n this.filter = filter;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.match(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n return new MongoMatchStage(this.filter.rewrite(context.filter ?? {}));\n }\n}\n\nexport class MongoProjectStage extends MongoStageNode {\n readonly kind = 'project' as const;\n readonly projection: Readonly<Record<string, MongoProjectionValue>>;\n\n constructor(projection: Record<string, MongoProjectionValue>) {\n super();\n this.projection = Object.freeze({ ...projection });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.project(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n let hasExpr = false;\n for (const val of Object.values(this.projection)) {\n if (isAggExpr(val)) {\n hasExpr = true;\n break;\n }\n }\n if (!hasExpr) return this;\n const newProjection: Record<string, MongoProjectionValue> = {};\n for (const [key, val] of Object.entries(this.projection)) {\n newProjection[key] = isAggExpr(val) ? val.rewrite(rewriter) : val;\n }\n return new MongoProjectStage(newProjection);\n }\n}\n\nexport class MongoSortStage extends MongoStageNode {\n readonly kind = 'sort' as const;\n readonly sort: Readonly<Record<string, 1 | -1>>;\n\n constructor(sort: Record<string, 1 | -1>) {\n super();\n this.sort = Object.freeze({ ...sort });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sort(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoLimitStage extends MongoStageNode {\n readonly kind = 'limit' as const;\n readonly limit: number;\n\n constructor(limit: number) {\n super();\n if (!Number.isInteger(limit) || limit < 0) {\n throw new RangeError('limit must be a non-negative integer');\n }\n this.limit = limit;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.limit(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSkipStage extends MongoStageNode {\n readonly kind = 'skip' as const;\n readonly skip: number;\n\n constructor(skip: number) {\n super();\n if (!Number.isInteger(skip) || skip < 0) {\n throw new RangeError('skip must be a non-negative integer');\n }\n this.skip = skip;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.skip(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoLookupStage extends MongoStageNode {\n readonly kind = 'lookup' as const;\n readonly from: string;\n readonly localField: string | undefined;\n readonly foreignField: string | undefined;\n readonly as: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage> | undefined;\n readonly let_: Readonly<Record<string, MongoAggExpr>> | undefined;\n\n constructor(options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n }) {\n super();\n const hasLocalField = options.localField !== undefined;\n const hasForeignField = options.foreignField !== undefined;\n const hasPipeline = !!options.pipeline;\n if (hasLocalField !== hasForeignField) {\n throw new Error('MongoLookupStage requires both localField and foreignField together');\n }\n if (!hasLocalField && !hasPipeline) {\n throw new Error(\n 'MongoLookupStage requires either equality fields (localField/foreignField) or a pipeline',\n );\n }\n if (options.let_ && !hasPipeline) {\n throw new Error('MongoLookupStage let_ requires a pipeline');\n }\n this.from = options.from;\n this.localField = options.localField;\n this.foreignField = options.foreignField;\n this.as = options.as;\n this.pipeline = options.pipeline ? Object.freeze([...options.pipeline]) : undefined;\n this.let_ = options.let_ ? Object.freeze({ ...options.let_ }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.lookup(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.pipeline && !this.let_) return this;\n const rewrittenLet =\n this.let_ && context.aggExpr ? rewriteExprRecord(this.let_, context.aggExpr) : this.let_;\n const options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n } = { from: this.from, as: this.as };\n if (this.localField !== undefined) options.localField = this.localField;\n if (this.foreignField !== undefined) options.foreignField = this.foreignField;\n if (this.pipeline) options.pipeline = this.pipeline.map((stage) => stage.rewrite(context));\n if (rewrittenLet) options.let_ = { ...rewrittenLet };\n return new MongoLookupStage(options);\n }\n}\n\nexport class MongoUnwindStage extends MongoStageNode {\n readonly kind = 'unwind' as const;\n readonly path: string;\n readonly preserveNullAndEmptyArrays: boolean;\n readonly includeArrayIndex: string | undefined;\n\n constructor(path: string, preserveNullAndEmptyArrays: boolean, includeArrayIndex?: string) {\n super();\n this.path = path;\n this.preserveNullAndEmptyArrays = preserveNullAndEmptyArrays;\n this.includeArrayIndex = includeArrayIndex;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.unwind(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoGroupStage extends MongoStageNode {\n readonly kind = 'group' as const;\n readonly groupId: MongoGroupId;\n readonly accumulators: Readonly<Record<string, MongoAggAccumulator>>;\n\n constructor(groupId: MongoGroupId, accumulators: Record<string, MongoAggAccumulator>) {\n super();\n this.groupId = groupId;\n this.accumulators = Object.freeze({ ...accumulators });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.group(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newAccumulators: Record<string, MongoAggAccumulator> = {};\n for (const [key, acc] of Object.entries(this.accumulators)) {\n // MongoAggAccumulator.rewrite() returns MongoAggExpr (the base union). The cast is safe\n // because the default rewriter rebuilds an accumulator from its rewritten arg. A custom\n // accumulator() hook could technically return a non-accumulator — narrowing the return type\n // on MongoAggAccumulator.rewrite() is tracked as a follow-up for the agg expression AST.\n newAccumulators[key] = acc.rewrite(rewriter) as MongoAggAccumulator;\n }\n return new MongoGroupStage(rewriteGroupId(this.groupId, rewriter), newAccumulators);\n }\n}\n\nexport class MongoAddFieldsStage extends MongoStageNode {\n readonly kind = 'addFields' as const;\n readonly fields: Readonly<Record<string, MongoAggExpr>>;\n\n constructor(fields: Record<string, MongoAggExpr>) {\n super();\n this.fields = Object.freeze({ ...fields });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.addFields(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoAddFieldsStage(rewriteExprRecord(this.fields, rewriter));\n }\n}\n\nexport class MongoReplaceRootStage extends MongoStageNode {\n readonly kind = 'replaceRoot' as const;\n readonly newRoot: MongoAggExpr;\n\n constructor(newRoot: MongoAggExpr) {\n super();\n this.newRoot = newRoot;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.replaceRoot(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoReplaceRootStage(this.newRoot.rewrite(rewriter));\n }\n}\n\nexport class MongoCountStage extends MongoStageNode {\n readonly kind = 'count' as const;\n readonly field: string;\n\n constructor(field: string) {\n super();\n this.field = field;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.count(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSortByCountStage extends MongoStageNode {\n readonly kind = 'sortByCount' as const;\n readonly expr: MongoAggExpr;\n\n constructor(expr: MongoAggExpr) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sortByCount(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoSortByCountStage(this.expr.rewrite(rewriter));\n }\n}\n\nexport class MongoSampleStage extends MongoStageNode {\n readonly kind = 'sample' as const;\n readonly size: number;\n\n constructor(size: number) {\n super();\n if (!Number.isInteger(size) || size < 0) {\n throw new RangeError('size must be a non-negative integer');\n }\n this.size = size;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sample(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoRedactStage extends MongoStageNode {\n readonly kind = 'redact' as const;\n readonly expr: MongoAggExpr;\n\n constructor(expr: MongoAggExpr) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.redact(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoRedactStage(this.expr.rewrite(rewriter));\n }\n}\n\nexport class MongoOutStage extends MongoStageNode {\n readonly kind = 'out' as const;\n readonly collection: string;\n readonly db: string | undefined;\n\n constructor(collection: string, db?: string) {\n super();\n this.collection = collection;\n this.db = db;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.out(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoUnionWithStage extends MongoStageNode {\n readonly kind = 'unionWith' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage> | undefined;\n\n constructor(collection: string, pipeline?: ReadonlyArray<MongoPipelineStage>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline ? Object.freeze([...pipeline]) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.unionWith(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.pipeline) return this;\n return new MongoUnionWithStage(\n this.collection,\n this.pipeline.map((stage) => stage.rewrite(context)),\n );\n }\n}\n\nexport class MongoBucketStage extends MongoStageNode {\n readonly kind = 'bucket' as const;\n readonly groupBy: MongoAggExpr;\n readonly boundaries: ReadonlyArray<unknown>;\n readonly default_: unknown;\n readonly output: Readonly<Record<string, MongoAggAccumulator>> | undefined;\n\n constructor(options: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n }) {\n super();\n if (options.boundaries.length < 2) {\n throw new RangeError('boundaries must contain at least 2 values');\n }\n this.groupBy = options.groupBy;\n this.boundaries = Object.freeze([...options.boundaries]);\n this.default_ = options.default_;\n this.output = options.output ? Object.freeze({ ...options.output }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.bucket(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const opts: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n } = { groupBy: this.groupBy.rewrite(rewriter), boundaries: this.boundaries };\n if (this.default_ !== undefined) opts.default_ = this.default_;\n if (this.output) opts.output = rewriteAccumulatorRecord(this.output, rewriter);\n return new MongoBucketStage(opts);\n }\n}\n\nexport class MongoBucketAutoStage extends MongoStageNode {\n readonly kind = 'bucketAuto' as const;\n readonly groupBy: MongoAggExpr;\n readonly buckets: number;\n readonly output: Readonly<Record<string, MongoAggAccumulator>> | undefined;\n readonly granularity: string | undefined;\n\n constructor(options: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n }) {\n super();\n if (!Number.isInteger(options.buckets) || options.buckets < 1) {\n throw new RangeError('buckets must be a positive integer');\n }\n this.groupBy = options.groupBy;\n this.buckets = options.buckets;\n this.output = options.output ? Object.freeze({ ...options.output }) : undefined;\n this.granularity = options.granularity;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.bucketAuto(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const opts: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n } = { groupBy: this.groupBy.rewrite(rewriter), buckets: this.buckets };\n if (this.output) opts.output = rewriteAccumulatorRecord(this.output, rewriter);\n if (this.granularity !== undefined) opts.granularity = this.granularity;\n return new MongoBucketAutoStage(opts);\n }\n}\n\nexport class MongoGeoNearStage extends MongoStageNode {\n readonly kind = 'geoNear' as const;\n readonly near: unknown;\n readonly distanceField: string;\n readonly spherical: boolean | undefined;\n readonly maxDistance: number | undefined;\n readonly minDistance: number | undefined;\n readonly query: MongoFilterExpr | undefined;\n readonly key: string | undefined;\n readonly distanceMultiplier: number | undefined;\n readonly includeLocs: string | undefined;\n\n constructor(options: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n }) {\n super();\n this.near = options.near;\n this.distanceField = options.distanceField;\n this.spherical = options.spherical;\n this.maxDistance = options.maxDistance;\n this.minDistance = options.minDistance;\n this.query = options.query;\n this.key = options.key;\n this.distanceMultiplier = options.distanceMultiplier;\n this.includeLocs = options.includeLocs;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.geoNear(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.query || !context.filter) return this;\n const opts: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n } = { near: this.near, distanceField: this.distanceField };\n if (this.spherical !== undefined) opts.spherical = this.spherical;\n if (this.maxDistance !== undefined) opts.maxDistance = this.maxDistance;\n if (this.minDistance !== undefined) opts.minDistance = this.minDistance;\n opts.query = this.query.rewrite(context.filter);\n if (this.key !== undefined) opts.key = this.key;\n if (this.distanceMultiplier !== undefined) opts.distanceMultiplier = this.distanceMultiplier;\n if (this.includeLocs !== undefined) opts.includeLocs = this.includeLocs;\n return new MongoGeoNearStage(opts);\n }\n}\n\nexport class MongoFacetStage extends MongoStageNode {\n readonly kind = 'facet' as const;\n readonly facets: Readonly<Record<string, ReadonlyArray<MongoPipelineStage>>>;\n\n constructor(facets: Record<string, ReadonlyArray<MongoPipelineStage>>) {\n super();\n const frozen: Record<string, ReadonlyArray<MongoPipelineStage>> = {};\n for (const [key, pipeline] of Object.entries(facets)) {\n frozen[key] = Object.freeze([...pipeline]);\n }\n this.facets = Object.freeze(frozen);\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.facet(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const newFacets: Record<string, ReadonlyArray<MongoPipelineStage>> = {};\n for (const [key, pipeline] of Object.entries(this.facets)) {\n newFacets[key] = pipeline.map((stage) => stage.rewrite(context));\n }\n return new MongoFacetStage(newFacets);\n }\n}\n\nexport class MongoGraphLookupStage extends MongoStageNode {\n readonly kind = 'graphLookup' as const;\n readonly from: string;\n readonly startWith: MongoAggExpr;\n readonly connectFromField: string;\n readonly connectToField: string;\n readonly as: string;\n readonly maxDepth: number | undefined;\n readonly depthField: string | undefined;\n readonly restrictSearchWithMatch: MongoFilterExpr | undefined;\n\n constructor(options: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n }) {\n super();\n this.from = options.from;\n this.startWith = options.startWith;\n this.connectFromField = options.connectFromField;\n this.connectToField = options.connectToField;\n this.as = options.as;\n this.maxDepth = options.maxDepth;\n this.depthField = options.depthField;\n this.restrictSearchWithMatch = options.restrictSearchWithMatch;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.graphLookup(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewrittenStartWith = context.aggExpr\n ? this.startWith.rewrite(context.aggExpr)\n : this.startWith;\n const rewrittenMatch =\n this.restrictSearchWithMatch && context.filter\n ? this.restrictSearchWithMatch.rewrite(context.filter)\n : this.restrictSearchWithMatch;\n if (rewrittenStartWith === this.startWith && rewrittenMatch === this.restrictSearchWithMatch) {\n return this;\n }\n const opts: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n } = {\n from: this.from,\n startWith: rewrittenStartWith,\n connectFromField: this.connectFromField,\n connectToField: this.connectToField,\n as: this.as,\n };\n if (this.maxDepth !== undefined) opts.maxDepth = this.maxDepth;\n if (this.depthField !== undefined) opts.depthField = this.depthField;\n if (rewrittenMatch) opts.restrictSearchWithMatch = rewrittenMatch;\n return new MongoGraphLookupStage(opts);\n }\n}\n\nexport class MongoMergeStage extends MongoStageNode {\n readonly kind = 'merge' as const;\n readonly into: string | { readonly db: string; readonly coll: string };\n readonly on: string | ReadonlyArray<string> | undefined;\n readonly whenMatched: string | ReadonlyArray<MongoUpdatePipelineStage> | undefined;\n readonly whenNotMatched: string | undefined;\n\n constructor(options: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n }) {\n super();\n this.into =\n typeof options.into === 'string' ? options.into : Object.freeze({ ...options.into });\n this.on =\n options.on === undefined\n ? undefined\n : typeof options.on === 'string'\n ? options.on\n : Object.freeze([...options.on]);\n this.whenMatched =\n options.whenMatched === undefined\n ? undefined\n : typeof options.whenMatched === 'string'\n ? options.whenMatched\n : Object.freeze([...options.whenMatched]);\n this.whenNotMatched = options.whenNotMatched;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.merge(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!Array.isArray(this.whenMatched)) return this;\n const opts: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n } = { into: this.into };\n if (this.on !== undefined) opts.on = this.on;\n // rewrite() preserves the concrete stage type at runtime\n opts.whenMatched = this.whenMatched.map(\n (stage) => stage.rewrite(context) as MongoUpdatePipelineStage,\n );\n if (this.whenNotMatched !== undefined) opts.whenNotMatched = this.whenNotMatched;\n return new MongoMergeStage(opts);\n }\n}\n\nexport interface MongoWindowField {\n readonly operator: MongoAggExpr;\n readonly window?: {\n readonly documents?: readonly [number, number];\n readonly range?: { readonly start: unknown; readonly end: unknown; readonly unit?: string };\n };\n}\n\nexport class MongoSetWindowFieldsStage extends MongoStageNode {\n readonly kind = 'setWindowFields' as const;\n readonly partitionBy: MongoAggExpr | undefined;\n readonly sortBy: Readonly<Record<string, 1 | -1>> | undefined;\n readonly output: Readonly<Record<string, MongoWindowField>>;\n\n constructor(options: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n }) {\n super();\n this.partitionBy = options.partitionBy;\n this.sortBy = options.sortBy ? Object.freeze({ ...options.sortBy }) : undefined;\n this.output = Object.freeze({ ...options.output });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.setWindowFields(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newOutput: Record<string, MongoWindowField> = {};\n for (const [key, wf] of Object.entries(this.output)) {\n newOutput[key] = { ...wf, operator: wf.operator.rewrite(rewriter) };\n }\n const opts: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n } = { output: newOutput };\n if (this.partitionBy) opts.partitionBy = this.partitionBy.rewrite(rewriter);\n if (this.sortBy) opts.sortBy = { ...this.sortBy };\n return new MongoSetWindowFieldsStage(opts);\n }\n}\n\nexport interface MongoDensifyRange {\n readonly step: number;\n readonly unit?: string;\n readonly bounds: 'full' | 'partition' | readonly [unknown, unknown];\n}\n\nexport class MongoDensifyStage extends MongoStageNode {\n readonly kind = 'densify' as const;\n readonly field: string;\n readonly partitionByFields: ReadonlyArray<string> | undefined;\n readonly range: MongoDensifyRange;\n\n constructor(options: {\n field: string;\n partitionByFields?: ReadonlyArray<string>;\n range: MongoDensifyRange;\n }) {\n super();\n this.field = options.field;\n this.partitionByFields = options.partitionByFields\n ? Object.freeze([...options.partitionByFields])\n : undefined;\n this.range = Object.freeze({ ...options.range });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.densify(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport interface MongoFillOutput {\n readonly method?: string;\n readonly value?: MongoAggExpr;\n}\n\nexport class MongoFillStage extends MongoStageNode {\n readonly kind = 'fill' as const;\n readonly partitionBy: MongoAggExpr | undefined;\n readonly partitionByFields: ReadonlyArray<string> | undefined;\n readonly sortBy: Readonly<Record<string, 1 | -1>> | undefined;\n readonly output: Readonly<Record<string, MongoFillOutput>>;\n\n constructor(options: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n }) {\n super();\n this.partitionBy = options.partitionBy;\n this.partitionByFields = options.partitionByFields\n ? Object.freeze([...options.partitionByFields])\n : undefined;\n this.sortBy = options.sortBy ? Object.freeze({ ...options.sortBy }) : undefined;\n this.output = Object.freeze({ ...options.output });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.fill(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newOutput: Record<string, MongoFillOutput> = {};\n for (const [key, fo] of Object.entries(this.output)) {\n newOutput[key] = fo.value ? { ...fo, value: fo.value.rewrite(rewriter) } : fo;\n }\n const opts: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n } = { output: newOutput };\n if (this.partitionBy) opts.partitionBy = this.partitionBy.rewrite(rewriter);\n if (this.partitionByFields) opts.partitionByFields = [...this.partitionByFields];\n if (this.sortBy) opts.sortBy = { ...this.sortBy };\n return new MongoFillStage(opts);\n }\n}\n\nexport class MongoSearchStage extends MongoStageNode {\n readonly kind = 'search' as const;\n readonly index: string | undefined;\n readonly config: Readonly<Record<string, unknown>>;\n\n constructor(config: Record<string, unknown>, index?: string) {\n super();\n this.config = Object.freeze({ ...config });\n this.index = index;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.search(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSearchMetaStage extends MongoStageNode {\n readonly kind = 'searchMeta' as const;\n readonly index: string | undefined;\n readonly config: Readonly<Record<string, unknown>>;\n\n constructor(config: Record<string, unknown>, index?: string) {\n super();\n this.config = Object.freeze({ ...config });\n this.index = index;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.searchMeta(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoVectorSearchStage extends MongoStageNode {\n readonly kind = 'vectorSearch' as const;\n readonly index: string;\n readonly path: string;\n readonly queryVector: ReadonlyArray<number>;\n readonly numCandidates: number;\n readonly limit: number;\n readonly filter: Readonly<Record<string, unknown>> | undefined;\n\n constructor(options: {\n index: string;\n path: string;\n queryVector: ReadonlyArray<number>;\n numCandidates: number;\n limit: number;\n filter?: Record<string, unknown>;\n }) {\n super();\n if (!Number.isInteger(options.limit) || options.limit < 1) {\n throw new RangeError('limit must be a positive integer');\n }\n if (!Number.isInteger(options.numCandidates) || options.numCandidates < options.limit) {\n throw new RangeError('numCandidates must be an integer >= limit');\n }\n this.index = options.index;\n this.path = options.path;\n this.queryVector = Object.freeze([...options.queryVector]);\n this.numCandidates = options.numCandidates;\n this.limit = options.limit;\n this.filter = options.filter ? Object.freeze({ ...options.filter }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.vectorSearch(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport type MongoUpdatePipelineStage =\n | MongoAddFieldsStage\n | MongoProjectStage\n | MongoReplaceRootStage;\n\nexport type MongoPipelineStage =\n | MongoMatchStage\n | MongoProjectStage\n | MongoSortStage\n | MongoLimitStage\n | MongoSkipStage\n | MongoLookupStage\n | MongoUnwindStage\n | MongoGroupStage\n | MongoAddFieldsStage\n | MongoReplaceRootStage\n | MongoCountStage\n | MongoSortByCountStage\n | MongoSampleStage\n | MongoRedactStage\n | MongoOutStage\n | MongoUnionWithStage\n | MongoBucketStage\n | MongoBucketAutoStage\n | MongoGeoNearStage\n | MongoFacetStage\n | MongoGraphLookupStage\n | MongoMergeStage\n | MongoSetWindowFieldsStage\n | MongoDensifyStage\n | MongoFillStage\n | MongoSearchStage\n | MongoSearchMetaStage\n | MongoVectorSearchStage;\n"],"mappings":"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"}
|
|
@@ -58,6 +58,9 @@ var MongoFieldFilter = class MongoFieldFilter extends MongoFilterExpression {
|
|
|
58
58
|
static in(field, values) {
|
|
59
59
|
return new MongoFieldFilter(field, "$in", values);
|
|
60
60
|
}
|
|
61
|
+
static nin(field, values) {
|
|
62
|
+
return new MongoFieldFilter(field, "$nin", values);
|
|
63
|
+
}
|
|
61
64
|
static isNull(field) {
|
|
62
65
|
return new MongoFieldFilter(field, "$eq", null);
|
|
63
66
|
}
|
|
@@ -171,4 +174,4 @@ var MongoExprFilter = class MongoExprFilter extends MongoFilterExpression {
|
|
|
171
174
|
|
|
172
175
|
//#endregion
|
|
173
176
|
export { MongoNotExpr as a, MongoAstNode as c, MongoFieldFilter as i, MongoExistsExpr as n, MongoOrExpr as o, MongoExprFilter as r, isMongoFilterExpr as s, MongoAndExpr as t };
|
|
174
|
-
//# sourceMappingURL=filter-expressions-
|
|
177
|
+
//# sourceMappingURL=filter-expressions-BSKn8EyU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-expressions-BSKn8EyU.mjs","names":[],"sources":["../src/ast-node.ts","../src/filter-expressions.ts"],"sourcesContent":["export abstract class MongoAstNode {\n abstract readonly kind: string;\n\n protected freeze(): void {\n Object.freeze(this);\n }\n}\n","import type { MongoValue } from '@prisma-next/mongo-value';\nimport type { MongoAggExpr } from './aggregation-expressions';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoFilterRewriter, MongoFilterVisitor } from './visitors';\n\nconst FILTER_EXPR_BRAND = '__prismaNextMongoFilter__';\n\nexport function isMongoFilterExpr(value: unknown): value is MongoFilterExpr {\n return typeof value === 'object' && value !== null && FILTER_EXPR_BRAND in value;\n}\n\nabstract class MongoFilterExpression extends MongoAstNode {\n abstract accept<R>(visitor: MongoFilterVisitor<R>): R;\n abstract rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr;\n\n not(this: MongoFilterExpr): MongoNotExpr {\n return new MongoNotExpr(this);\n }\n}\n\nObject.defineProperty(MongoFilterExpression.prototype, FILTER_EXPR_BRAND, {\n value: true,\n writable: false,\n enumerable: false,\n configurable: false,\n});\n\nexport class MongoFieldFilter extends MongoFilterExpression {\n readonly kind = 'field' as const;\n readonly field: string;\n readonly op: string;\n readonly value: MongoValue;\n\n constructor(field: string, op: string, value: MongoValue) {\n super();\n this.field = field;\n this.op = op;\n this.value = value;\n this.freeze();\n }\n\n static of(field: string, op: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, op, value);\n }\n\n static eq(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$eq', value);\n }\n\n static neq(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$ne', value);\n }\n\n static gt(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$gt', value);\n }\n\n static lt(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$lt', value);\n }\n\n static gte(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$gte', value);\n }\n\n static lte(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$lte', value);\n }\n\n static in(field: string, values: ReadonlyArray<MongoValue>): MongoFieldFilter {\n return new MongoFieldFilter(field, '$in', values);\n }\n\n static nin(field: string, values: ReadonlyArray<MongoValue>): MongoFieldFilter {\n return new MongoFieldFilter(field, '$nin', values);\n }\n\n static isNull(field: string): MongoFieldFilter {\n return new MongoFieldFilter(field, '$eq', null);\n }\n\n static isNotNull(field: string): MongoFieldFilter {\n return new MongoFieldFilter(field, '$ne', null);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.field(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n return rewriter.field ? rewriter.field(this) : this;\n }\n}\n\nexport class MongoAndExpr extends MongoFilterExpression {\n readonly kind = 'and' as const;\n readonly exprs: ReadonlyArray<MongoFilterExpr>;\n\n constructor(exprs: ReadonlyArray<MongoFilterExpr>) {\n super();\n if (exprs.length === 0) {\n throw new Error('$and requires at least one expression');\n }\n this.exprs = Object.freeze([...exprs]);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<MongoFilterExpr>): MongoAndExpr {\n return new MongoAndExpr(exprs);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.and(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n const rewritten = new MongoAndExpr(this.exprs.map((e) => e.rewrite(rewriter)));\n return rewriter.and ? rewriter.and(rewritten) : rewritten;\n }\n}\n\nexport class MongoOrExpr extends MongoFilterExpression {\n readonly kind = 'or' as const;\n readonly exprs: ReadonlyArray<MongoFilterExpr>;\n\n constructor(exprs: ReadonlyArray<MongoFilterExpr>) {\n super();\n if (exprs.length === 0) {\n throw new Error('$or requires at least one expression');\n }\n this.exprs = Object.freeze([...exprs]);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<MongoFilterExpr>): MongoOrExpr {\n return new MongoOrExpr(exprs);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.or(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n const rewritten = new MongoOrExpr(this.exprs.map((e) => e.rewrite(rewriter)));\n return rewriter.or ? rewriter.or(rewritten) : rewritten;\n }\n}\n\nexport class MongoNotExpr extends MongoFilterExpression {\n readonly kind = 'not' as const;\n readonly expr: MongoFilterExpr;\n\n constructor(expr: MongoFilterExpr) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.not(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n const rewritten = new MongoNotExpr(this.expr.rewrite(rewriter));\n return rewriter.not ? rewriter.not(rewritten) : rewritten;\n }\n}\n\nexport class MongoExistsExpr extends MongoFilterExpression {\n readonly kind = 'exists' as const;\n readonly field: string;\n readonly exists: boolean;\n\n constructor(field: string, exists: boolean) {\n super();\n this.field = field;\n this.exists = exists;\n this.freeze();\n }\n\n static exists(field: string): MongoExistsExpr {\n return new MongoExistsExpr(field, true);\n }\n\n static notExists(field: string): MongoExistsExpr {\n return new MongoExistsExpr(field, false);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.exists(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n return rewriter.exists ? rewriter.exists(this) : this;\n }\n}\n\nexport class MongoExprFilter extends MongoFilterExpression {\n readonly kind = 'expr' as const;\n readonly aggExpr: MongoAggExpr;\n\n constructor(aggExpr: MongoAggExpr) {\n super();\n this.aggExpr = aggExpr;\n this.freeze();\n }\n\n static of(aggExpr: MongoAggExpr): MongoExprFilter {\n return new MongoExprFilter(aggExpr);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.expr(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n return rewriter.expr ? rewriter.expr(this) : this;\n }\n}\n\nexport type MongoFilterExpr =\n | MongoFieldFilter\n | MongoAndExpr\n | MongoOrExpr\n | MongoNotExpr\n | MongoExistsExpr\n | MongoExprFilter;\n"],"mappings":";AAAA,IAAsB,eAAtB,MAAmC;CAGjC,AAAU,SAAe;AACvB,SAAO,OAAO,KAAK;;;;;;ACCvB,MAAM,oBAAoB;AAE1B,SAAgB,kBAAkB,OAA0C;AAC1E,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,qBAAqB;;AAG7E,IAAe,wBAAf,cAA6C,aAAa;CAIxD,MAAyC;AACvC,SAAO,IAAI,aAAa,KAAK;;;AAIjC,OAAO,eAAe,sBAAsB,WAAW,mBAAmB;CACxE,OAAO;CACP,UAAU;CACV,YAAY;CACZ,cAAc;CACf,CAAC;AAEF,IAAa,mBAAb,MAAa,yBAAyB,sBAAsB;CAC1D,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,OAAe,IAAY,OAAmB;AACxD,SAAO;AACP,OAAK,QAAQ;AACb,OAAK,KAAK;AACV,OAAK,QAAQ;AACb,OAAK,QAAQ;;CAGf,OAAO,GAAG,OAAe,IAAY,OAAqC;AACxE,SAAO,IAAI,iBAAiB,OAAO,IAAI,MAAM;;CAG/C,OAAO,GAAG,OAAe,OAAqC;AAC5D,SAAO,IAAI,iBAAiB,OAAO,OAAO,MAAM;;CAGlD,OAAO,IAAI,OAAe,OAAqC;AAC7D,SAAO,IAAI,iBAAiB,OAAO,OAAO,MAAM;;CAGlD,OAAO,GAAG,OAAe,OAAqC;AAC5D,SAAO,IAAI,iBAAiB,OAAO,OAAO,MAAM;;CAGlD,OAAO,GAAG,OAAe,OAAqC;AAC5D,SAAO,IAAI,iBAAiB,OAAO,OAAO,MAAM;;CAGlD,OAAO,IAAI,OAAe,OAAqC;AAC7D,SAAO,IAAI,iBAAiB,OAAO,QAAQ,MAAM;;CAGnD,OAAO,IAAI,OAAe,OAAqC;AAC7D,SAAO,IAAI,iBAAiB,OAAO,QAAQ,MAAM;;CAGnD,OAAO,GAAG,OAAe,QAAqD;AAC5E,SAAO,IAAI,iBAAiB,OAAO,OAAO,OAAO;;CAGnD,OAAO,IAAI,OAAe,QAAqD;AAC7E,SAAO,IAAI,iBAAiB,OAAO,QAAQ,OAAO;;CAGpD,OAAO,OAAO,OAAiC;AAC7C,SAAO,IAAI,iBAAiB,OAAO,OAAO,KAAK;;CAGjD,OAAO,UAAU,OAAiC;AAChD,SAAO,IAAI,iBAAiB,OAAO,OAAO,KAAK;;CAGjD,OAAU,SAAmC;AAC3C,SAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAQ,UAAgD;AACtD,SAAO,SAAS,QAAQ,SAAS,MAAM,KAAK,GAAG;;;AAInD,IAAa,eAAb,MAAa,qBAAqB,sBAAsB;CACtD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,OAAuC;AACjD,SAAO;AACP,MAAI,MAAM,WAAW,EACnB,OAAM,IAAI,MAAM,wCAAwC;AAE1D,OAAK,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;AACtC,OAAK,QAAQ;;CAGf,OAAO,GAAG,OAAqD;AAC7D,SAAO,IAAI,aAAa,MAAM;;CAGhC,OAAU,SAAmC;AAC3C,SAAO,QAAQ,IAAI,KAAK;;CAG1B,QAAQ,UAAgD;EACtD,MAAM,YAAY,IAAI,aAAa,KAAK,MAAM,KAAK,MAAM,EAAE,QAAQ,SAAS,CAAC,CAAC;AAC9E,SAAO,SAAS,MAAM,SAAS,IAAI,UAAU,GAAG;;;AAIpD,IAAa,cAAb,MAAa,oBAAoB,sBAAsB;CACrD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,OAAuC;AACjD,SAAO;AACP,MAAI,MAAM,WAAW,EACnB,OAAM,IAAI,MAAM,uCAAuC;AAEzD,OAAK,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;AACtC,OAAK,QAAQ;;CAGf,OAAO,GAAG,OAAoD;AAC5D,SAAO,IAAI,YAAY,MAAM;;CAG/B,OAAU,SAAmC;AAC3C,SAAO,QAAQ,GAAG,KAAK;;CAGzB,QAAQ,UAAgD;EACtD,MAAM,YAAY,IAAI,YAAY,KAAK,MAAM,KAAK,MAAM,EAAE,QAAQ,SAAS,CAAC,CAAC;AAC7E,SAAO,SAAS,KAAK,SAAS,GAAG,UAAU,GAAG;;;AAIlD,IAAa,eAAb,MAAa,qBAAqB,sBAAsB;CACtD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,MAAuB;AACjC,SAAO;AACP,OAAK,OAAO;AACZ,OAAK,QAAQ;;CAGf,OAAU,SAAmC;AAC3C,SAAO,QAAQ,IAAI,KAAK;;CAG1B,QAAQ,UAAgD;EACtD,MAAM,YAAY,IAAI,aAAa,KAAK,KAAK,QAAQ,SAAS,CAAC;AAC/D,SAAO,SAAS,MAAM,SAAS,IAAI,UAAU,GAAG;;;AAIpD,IAAa,kBAAb,MAAa,wBAAwB,sBAAsB;CACzD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,OAAe,QAAiB;AAC1C,SAAO;AACP,OAAK,QAAQ;AACb,OAAK,SAAS;AACd,OAAK,QAAQ;;CAGf,OAAO,OAAO,OAAgC;AAC5C,SAAO,IAAI,gBAAgB,OAAO,KAAK;;CAGzC,OAAO,UAAU,OAAgC;AAC/C,SAAO,IAAI,gBAAgB,OAAO,MAAM;;CAG1C,OAAU,SAAmC;AAC3C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,UAAgD;AACtD,SAAO,SAAS,SAAS,SAAS,OAAO,KAAK,GAAG;;;AAIrD,IAAa,kBAAb,MAAa,wBAAwB,sBAAsB;CACzD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,SAAuB;AACjC,SAAO;AACP,OAAK,UAAU;AACf,OAAK,QAAQ;;CAGf,OAAO,GAAG,SAAwC;AAChD,SAAO,IAAI,gBAAgB,QAAQ;;CAGrC,OAAU,SAAmC;AAC3C,SAAO,QAAQ,KAAK,KAAK;;CAG3B,QAAQ,UAAgD;AACtD,SAAO,SAAS,OAAO,SAAS,KAAK,KAAK,GAAG"}
|
|
@@ -580,6 +580,7 @@ declare class MongoFieldFilter extends MongoFilterExpression {
|
|
|
580
580
|
static gte(field: string, value: MongoValue): MongoFieldFilter;
|
|
581
581
|
static lte(field: string, value: MongoValue): MongoFieldFilter;
|
|
582
582
|
static in(field: string, values: ReadonlyArray<MongoValue>): MongoFieldFilter;
|
|
583
|
+
static nin(field: string, values: ReadonlyArray<MongoValue>): MongoFieldFilter;
|
|
583
584
|
static isNull(field: string): MongoFieldFilter;
|
|
584
585
|
static isNotNull(field: string): MongoFieldFilter;
|
|
585
586
|
accept<R>(visitor: MongoFilterVisitor<R>): R;
|
|
@@ -679,13 +680,21 @@ declare class RawFindOneAndUpdateCommand extends MongoAstNode {
|
|
|
679
680
|
readonly filter: Document;
|
|
680
681
|
readonly update: Document | ReadonlyArray<Document>;
|
|
681
682
|
readonly upsert: boolean;
|
|
682
|
-
|
|
683
|
+
readonly sort: Record<string, 1 | -1> | undefined;
|
|
684
|
+
/**
|
|
685
|
+
* When `undefined`, the option is omitted from the wire command and the
|
|
686
|
+
* MongoDB driver applies its documented default (return the pre-image
|
|
687
|
+
* document). Set explicitly to `'before'` or `'after'` to override.
|
|
688
|
+
*/
|
|
689
|
+
readonly returnDocument: 'before' | 'after' | undefined;
|
|
690
|
+
constructor(collection: string, filter: Document, update: Document | ReadonlyArray<Document>, upsert?: boolean, sort?: Record<string, 1 | -1>, returnDocument?: 'before' | 'after');
|
|
683
691
|
}
|
|
684
692
|
declare class RawFindOneAndDeleteCommand extends MongoAstNode {
|
|
685
693
|
readonly kind: "rawFindOneAndDelete";
|
|
686
694
|
readonly collection: string;
|
|
687
695
|
readonly filter: Document;
|
|
688
|
-
|
|
696
|
+
readonly sort: Record<string, 1 | -1> | undefined;
|
|
697
|
+
constructor(collection: string, filter: Document, sort?: Record<string, 1 | -1>);
|
|
689
698
|
}
|
|
690
699
|
type RawMongoCommand = RawAggregateCommand | RawInsertOneCommand | RawInsertManyCommand | RawUpdateOneCommand | RawUpdateManyCommand | RawDeleteOneCommand | RawDeleteManyCommand | RawFindOneAndUpdateCommand | RawFindOneAndDeleteCommand;
|
|
691
700
|
//#endregion
|
|
@@ -702,7 +711,13 @@ declare class UpdateOneCommand extends MongoAstNode {
|
|
|
702
711
|
readonly collection: string;
|
|
703
712
|
readonly filter: MongoFilterExpr;
|
|
704
713
|
readonly update: MongoUpdateSpec;
|
|
705
|
-
|
|
714
|
+
/**
|
|
715
|
+
* When true, the wire command becomes an upsert: if no document matches
|
|
716
|
+
* `filter`, a new document is inserted, derived from the filter's
|
|
717
|
+
* equality fields plus the update spec. Defaults to false.
|
|
718
|
+
*/
|
|
719
|
+
readonly upsert: boolean;
|
|
720
|
+
constructor(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec, upsert?: boolean);
|
|
706
721
|
}
|
|
707
722
|
declare class DeleteOneCommand extends MongoAstNode {
|
|
708
723
|
readonly kind: "deleteOne";
|
|
@@ -721,7 +736,13 @@ declare class UpdateManyCommand extends MongoAstNode {
|
|
|
721
736
|
readonly collection: string;
|
|
722
737
|
readonly filter: MongoFilterExpr;
|
|
723
738
|
readonly update: MongoUpdateSpec;
|
|
724
|
-
|
|
739
|
+
/**
|
|
740
|
+
* Upsert flag — see `UpdateOneCommand.upsert`. For `updateMany`, Mongo
|
|
741
|
+
* inserts at most one document when no match exists (driver-side
|
|
742
|
+
* constraint).
|
|
743
|
+
*/
|
|
744
|
+
readonly upsert: boolean;
|
|
745
|
+
constructor(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec, upsert?: boolean);
|
|
725
746
|
}
|
|
726
747
|
declare class DeleteManyCommand extends MongoAstNode {
|
|
727
748
|
readonly kind: "deleteMany";
|
|
@@ -735,13 +756,16 @@ declare class FindOneAndUpdateCommand extends MongoAstNode {
|
|
|
735
756
|
readonly filter: MongoFilterExpr;
|
|
736
757
|
readonly update: MongoUpdateSpec;
|
|
737
758
|
readonly upsert: boolean;
|
|
738
|
-
|
|
759
|
+
readonly sort: Record<string, 1 | -1> | undefined;
|
|
760
|
+
readonly returnDocument: 'before' | 'after';
|
|
761
|
+
constructor(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec, upsert?: boolean, sort?: Record<string, 1 | -1>, returnDocument?: 'before' | 'after');
|
|
739
762
|
}
|
|
740
763
|
declare class FindOneAndDeleteCommand extends MongoAstNode {
|
|
741
764
|
readonly kind: "findOneAndDelete";
|
|
742
765
|
readonly collection: string;
|
|
743
766
|
readonly filter: MongoFilterExpr;
|
|
744
|
-
|
|
767
|
+
readonly sort: Record<string, 1 | -1> | undefined;
|
|
768
|
+
constructor(collection: string, filter: MongoFilterExpr, sort?: Record<string, 1 | -1>);
|
|
745
769
|
}
|
|
746
770
|
declare class AggregateCommand extends MongoAstNode {
|
|
747
771
|
readonly kind: "aggregate";
|
|
@@ -753,12 +777,12 @@ type AnyMongoCommand = InsertOneCommand | InsertManyCommand | UpdateOneCommand |
|
|
|
753
777
|
//#endregion
|
|
754
778
|
//#region src/query-plan.d.ts
|
|
755
779
|
declare const __mongoQueryPlanRow: unique symbol;
|
|
756
|
-
interface MongoQueryPlan<Row = unknown> {
|
|
780
|
+
interface MongoQueryPlan<Row = unknown, Command extends AnyMongoCommand = AnyMongoCommand> {
|
|
757
781
|
readonly collection: string;
|
|
758
|
-
readonly command:
|
|
782
|
+
readonly command: Command;
|
|
759
783
|
readonly meta: PlanMeta;
|
|
760
784
|
readonly [__mongoQueryPlanRow]?: Row;
|
|
761
785
|
}
|
|
762
786
|
//#endregion
|
|
763
787
|
export { MongoAddFieldsStage as $, isMongoFilterExpr as A, MongoUnwindStage as At, MongoAggMergeObjects as B, MongoAndExpr as C, MongoSearchMetaStage as Ct, MongoFilterExpr as D, MongoSortByCountStage as Dt, MongoFieldFilter as E, MongoSkipStage as Et, MongoAggExpr as F, isExprArray as G, MongoAggReduce as H, MongoAggFieldRef as I, MongoAggExprVisitor as J, isRecordArgs as K, MongoAggLet as L, MongoAggAccumulator as M, MongoVectorSearchStage as Mt, MongoAggArrayFilter as N, MongoWindowField as Nt, MongoNotExpr as O, MongoSortStage as Ot, MongoAggCond as P, MongoAstNode as Pt, MongoStageVisitor as Q, MongoAggLiteral as R, RawUpdateOneCommand as S, MongoSampleStage as St, MongoExprFilter as T, MongoSetWindowFieldsStage as Tt, MongoAggSwitch as U, MongoAggOperator as V, MongoAggSwitchBranch as W, MongoFilterVisitor as X, MongoFilterRewriter as Y, MongoStageRewriterContext as Z, RawFindOneAndUpdateCommand as _, MongoPipelineStage as _t, DeleteOneCommand as a, MongoFacetStage as at, RawMongoCommand as b, MongoRedactStage as bt, InsertManyCommand as c, MongoGeoNearStage as ct, UpdateManyCommand as d, MongoGroupStage as dt, MongoBucketAutoStage as et, UpdateOneCommand as f, MongoLimitStage as ft, RawFindOneAndDeleteCommand as g, MongoOutStage as gt, RawDeleteOneCommand as h, MongoMergeStage as ht, DeleteManyCommand as i, MongoDensifyStage as it, AggRecordArgs as j, MongoUpdatePipelineStage as jt, MongoOrExpr as k, MongoUnionWithStage as kt, InsertOneCommand as l, MongoGraphLookupStage as lt, RawDeleteManyCommand as m, MongoMatchStage as mt, AggregateCommand as n, MongoCountStage as nt, FindOneAndDeleteCommand as o, MongoFillOutput as ot, RawAggregateCommand as p, MongoLookupStage as pt, MongoAggExprRewriter as q, AnyMongoCommand as r, MongoDensifyRange as rt, FindOneAndUpdateCommand as s, MongoFillStage as st, MongoQueryPlan as t, MongoBucketStage as tt, MongoUpdateSpec as u, MongoGroupId as ut, RawInsertManyCommand as v, MongoProjectStage as vt, MongoExistsExpr as w, MongoSearchStage as wt, RawUpdateManyCommand as x, MongoReplaceRootStage as xt, RawInsertOneCommand as y, MongoProjectionValue as yt, MongoAggMap as z };
|
|
764
|
-
//# sourceMappingURL=query-plan-
|
|
788
|
+
//# sourceMappingURL=query-plan-BIzWNgTH.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-plan-DwmFTXux.d.mts","names":[],"sources":["../src/ast-node.ts","../src/stages.ts","../src/visitors.ts","../src/aggregation-expressions.ts","../src/filter-expressions.ts","../src/raw-commands.ts","../src/commands.ts","../src/query-plan.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-plan-BIzWNgTH.d.mts","names":[],"sources":["../src/ast-node.ts","../src/stages.ts","../src/visitors.ts","../src/aggregation-expressions.ts","../src/filter-expressions.ts","../src/raw-commands.ts","../src/commands.ts","../src/query-plan.ts"],"sourcesContent":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/mongo-query-ast",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-dev.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "Typed query AST for MongoDB aggregation pipelines",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@prisma-next/contract": "0.
|
|
9
|
-
"@prisma-next/
|
|
10
|
-
"@prisma-next/mongo-value": "0.
|
|
11
|
-
"@prisma-next/
|
|
8
|
+
"@prisma-next/contract": "0.5.0-dev.1",
|
|
9
|
+
"@prisma-next/mongo-contract": "0.5.0-dev.1",
|
|
10
|
+
"@prisma-next/mongo-value": "0.5.0-dev.1",
|
|
11
|
+
"@prisma-next/framework-components": "0.5.0-dev.1"
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
14
|
"tsdown": "0.18.4",
|
package/src/commands.ts
CHANGED
|
@@ -23,12 +23,24 @@ export class UpdateOneCommand extends MongoAstNode {
|
|
|
23
23
|
readonly collection: string;
|
|
24
24
|
readonly filter: MongoFilterExpr;
|
|
25
25
|
readonly update: MongoUpdateSpec;
|
|
26
|
+
/**
|
|
27
|
+
* When true, the wire command becomes an upsert: if no document matches
|
|
28
|
+
* `filter`, a new document is inserted, derived from the filter's
|
|
29
|
+
* equality fields plus the update spec. Defaults to false.
|
|
30
|
+
*/
|
|
31
|
+
readonly upsert: boolean;
|
|
26
32
|
|
|
27
|
-
constructor(
|
|
33
|
+
constructor(
|
|
34
|
+
collection: string,
|
|
35
|
+
filter: MongoFilterExpr,
|
|
36
|
+
update: MongoUpdateSpec,
|
|
37
|
+
upsert = false,
|
|
38
|
+
) {
|
|
28
39
|
super();
|
|
29
40
|
this.collection = collection;
|
|
30
41
|
this.filter = filter;
|
|
31
42
|
this.update = update;
|
|
43
|
+
this.upsert = upsert;
|
|
32
44
|
this.freeze();
|
|
33
45
|
}
|
|
34
46
|
}
|
|
@@ -64,12 +76,24 @@ export class UpdateManyCommand extends MongoAstNode {
|
|
|
64
76
|
readonly collection: string;
|
|
65
77
|
readonly filter: MongoFilterExpr;
|
|
66
78
|
readonly update: MongoUpdateSpec;
|
|
79
|
+
/**
|
|
80
|
+
* Upsert flag — see `UpdateOneCommand.upsert`. For `updateMany`, Mongo
|
|
81
|
+
* inserts at most one document when no match exists (driver-side
|
|
82
|
+
* constraint).
|
|
83
|
+
*/
|
|
84
|
+
readonly upsert: boolean;
|
|
67
85
|
|
|
68
|
-
constructor(
|
|
86
|
+
constructor(
|
|
87
|
+
collection: string,
|
|
88
|
+
filter: MongoFilterExpr,
|
|
89
|
+
update: MongoUpdateSpec,
|
|
90
|
+
upsert = false,
|
|
91
|
+
) {
|
|
69
92
|
super();
|
|
70
93
|
this.collection = collection;
|
|
71
94
|
this.filter = filter;
|
|
72
95
|
this.update = update;
|
|
96
|
+
this.upsert = upsert;
|
|
73
97
|
this.freeze();
|
|
74
98
|
}
|
|
75
99
|
}
|
|
@@ -93,18 +117,24 @@ export class FindOneAndUpdateCommand extends MongoAstNode {
|
|
|
93
117
|
readonly filter: MongoFilterExpr;
|
|
94
118
|
readonly update: MongoUpdateSpec;
|
|
95
119
|
readonly upsert: boolean;
|
|
120
|
+
readonly sort: Record<string, 1 | -1> | undefined;
|
|
121
|
+
readonly returnDocument: 'before' | 'after';
|
|
96
122
|
|
|
97
123
|
constructor(
|
|
98
124
|
collection: string,
|
|
99
125
|
filter: MongoFilterExpr,
|
|
100
126
|
update: MongoUpdateSpec,
|
|
101
|
-
upsert
|
|
127
|
+
upsert = false,
|
|
128
|
+
sort?: Record<string, 1 | -1>,
|
|
129
|
+
returnDocument: 'before' | 'after' = 'after',
|
|
102
130
|
) {
|
|
103
131
|
super();
|
|
104
132
|
this.collection = collection;
|
|
105
133
|
this.filter = filter;
|
|
106
134
|
this.update = update;
|
|
107
135
|
this.upsert = upsert;
|
|
136
|
+
this.sort = sort;
|
|
137
|
+
this.returnDocument = returnDocument;
|
|
108
138
|
this.freeze();
|
|
109
139
|
}
|
|
110
140
|
}
|
|
@@ -113,11 +143,13 @@ export class FindOneAndDeleteCommand extends MongoAstNode {
|
|
|
113
143
|
readonly kind = 'findOneAndDelete' as const;
|
|
114
144
|
readonly collection: string;
|
|
115
145
|
readonly filter: MongoFilterExpr;
|
|
146
|
+
readonly sort: Record<string, 1 | -1> | undefined;
|
|
116
147
|
|
|
117
|
-
constructor(collection: string, filter: MongoFilterExpr) {
|
|
148
|
+
constructor(collection: string, filter: MongoFilterExpr, sort?: Record<string, 1 | -1>) {
|
|
118
149
|
super();
|
|
119
150
|
this.collection = collection;
|
|
120
151
|
this.filter = filter;
|
|
152
|
+
this.sort = sort;
|
|
121
153
|
this.freeze();
|
|
122
154
|
}
|
|
123
155
|
}
|
package/src/exports/execution.ts
CHANGED
|
@@ -49,6 +49,16 @@ export {
|
|
|
49
49
|
RawUpdateManyCommand,
|
|
50
50
|
RawUpdateOneCommand,
|
|
51
51
|
} from '../raw-commands';
|
|
52
|
+
export type {
|
|
53
|
+
DeleteManyResult,
|
|
54
|
+
DeleteOneResult,
|
|
55
|
+
DeleteResult,
|
|
56
|
+
InsertManyResult,
|
|
57
|
+
InsertOneResult,
|
|
58
|
+
UpdateManyResult,
|
|
59
|
+
UpdateOneResult,
|
|
60
|
+
UpdateResult,
|
|
61
|
+
} from '../result-types';
|
|
52
62
|
export type {
|
|
53
63
|
MongoDensifyRange,
|
|
54
64
|
MongoFillOutput,
|
|
@@ -71,6 +71,10 @@ export class MongoFieldFilter extends MongoFilterExpression {
|
|
|
71
71
|
return new MongoFieldFilter(field, '$in', values);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
static nin(field: string, values: ReadonlyArray<MongoValue>): MongoFieldFilter {
|
|
75
|
+
return new MongoFieldFilter(field, '$nin', values);
|
|
76
|
+
}
|
|
77
|
+
|
|
74
78
|
static isNull(field: string): MongoFieldFilter {
|
|
75
79
|
return new MongoFieldFilter(field, '$eq', null);
|
|
76
80
|
}
|
package/src/query-plan.ts
CHANGED
|
@@ -3,9 +3,9 @@ import type { AnyMongoCommand } from './commands';
|
|
|
3
3
|
|
|
4
4
|
declare const __mongoQueryPlanRow: unique symbol;
|
|
5
5
|
|
|
6
|
-
export interface MongoQueryPlan<Row = unknown> {
|
|
6
|
+
export interface MongoQueryPlan<Row = unknown, Command extends AnyMongoCommand = AnyMongoCommand> {
|
|
7
7
|
readonly collection: string;
|
|
8
|
-
readonly command:
|
|
8
|
+
readonly command: Command;
|
|
9
9
|
readonly meta: PlanMeta;
|
|
10
10
|
readonly [__mongoQueryPlanRow]?: Row;
|
|
11
11
|
}
|
package/src/raw-commands.ts
CHANGED
|
@@ -102,18 +102,29 @@ export class RawFindOneAndUpdateCommand extends MongoAstNode {
|
|
|
102
102
|
readonly filter: Document;
|
|
103
103
|
readonly update: Document | ReadonlyArray<Document>;
|
|
104
104
|
readonly upsert: boolean;
|
|
105
|
+
readonly sort: Record<string, 1 | -1> | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* When `undefined`, the option is omitted from the wire command and the
|
|
108
|
+
* MongoDB driver applies its documented default (return the pre-image
|
|
109
|
+
* document). Set explicitly to `'before'` or `'after'` to override.
|
|
110
|
+
*/
|
|
111
|
+
readonly returnDocument: 'before' | 'after' | undefined;
|
|
105
112
|
|
|
106
113
|
constructor(
|
|
107
114
|
collection: string,
|
|
108
115
|
filter: Document,
|
|
109
116
|
update: Document | ReadonlyArray<Document>,
|
|
110
|
-
upsert
|
|
117
|
+
upsert = false,
|
|
118
|
+
sort?: Record<string, 1 | -1>,
|
|
119
|
+
returnDocument?: 'before' | 'after',
|
|
111
120
|
) {
|
|
112
121
|
super();
|
|
113
122
|
this.collection = collection;
|
|
114
123
|
this.filter = filter;
|
|
115
124
|
this.update = update;
|
|
116
125
|
this.upsert = upsert;
|
|
126
|
+
this.sort = sort;
|
|
127
|
+
this.returnDocument = returnDocument;
|
|
117
128
|
this.freeze();
|
|
118
129
|
}
|
|
119
130
|
}
|
|
@@ -122,11 +133,13 @@ export class RawFindOneAndDeleteCommand extends MongoAstNode {
|
|
|
122
133
|
readonly kind = 'rawFindOneAndDelete' as const;
|
|
123
134
|
readonly collection: string;
|
|
124
135
|
readonly filter: Document;
|
|
136
|
+
readonly sort: Record<string, 1 | -1> | undefined;
|
|
125
137
|
|
|
126
|
-
constructor(collection: string, filter: Document) {
|
|
138
|
+
constructor(collection: string, filter: Document, sort?: Record<string, 1 | -1>) {
|
|
127
139
|
super();
|
|
128
140
|
this.collection = collection;
|
|
129
141
|
this.filter = filter;
|
|
142
|
+
this.sort = sort;
|
|
130
143
|
this.freeze();
|
|
131
144
|
}
|
|
132
145
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical command result types for the MongoDB primitive language.
|
|
3
|
+
*
|
|
4
|
+
* These interfaces describe the shape of the result document yielded by
|
|
5
|
+
* each write command. They live in the query layer (co-located with
|
|
6
|
+
* command AST nodes) because they are part of the language definition —
|
|
7
|
+
* transport layers (wire, HTTP, etc.) satisfy these interfaces, they do
|
|
8
|
+
* not define them.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export interface InsertOneResult {
|
|
12
|
+
readonly insertedId: unknown;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface InsertManyResult {
|
|
16
|
+
readonly insertedIds: ReadonlyArray<unknown>;
|
|
17
|
+
readonly insertedCount: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Shared result shape for `updateOne`, `updateMany`, and `upsertOne`
|
|
22
|
+
* commands. The `upsertedCount` / `upsertedId` fields are present only
|
|
23
|
+
* when the command was issued with `upsert: true` and a new document
|
|
24
|
+
* was inserted.
|
|
25
|
+
*/
|
|
26
|
+
export interface UpdateResult {
|
|
27
|
+
readonly matchedCount: number;
|
|
28
|
+
readonly modifiedCount: number;
|
|
29
|
+
readonly upsertedCount?: number;
|
|
30
|
+
readonly upsertedId?: unknown;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Alias — `updateOne` yields the same shape as `updateMany`. */
|
|
34
|
+
export type UpdateOneResult = UpdateResult;
|
|
35
|
+
|
|
36
|
+
/** Alias — `updateMany` yields the same shape as `updateOne`. */
|
|
37
|
+
export type UpdateManyResult = UpdateResult;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Shared result shape for `deleteOne` and `deleteMany` commands.
|
|
41
|
+
*/
|
|
42
|
+
export interface DeleteResult {
|
|
43
|
+
readonly deletedCount: number;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Alias — `deleteOne` yields the same shape as `deleteMany`. */
|
|
47
|
+
export type DeleteOneResult = DeleteResult;
|
|
48
|
+
|
|
49
|
+
/** Alias — `deleteMany` yields the same shape as `deleteOne`. */
|
|
50
|
+
export type DeleteManyResult = DeleteResult;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filter-expressions-CddUFy1m.mjs","names":[],"sources":["../src/ast-node.ts","../src/filter-expressions.ts"],"sourcesContent":["export abstract class MongoAstNode {\n abstract readonly kind: string;\n\n protected freeze(): void {\n Object.freeze(this);\n }\n}\n","import type { MongoValue } from '@prisma-next/mongo-value';\nimport type { MongoAggExpr } from './aggregation-expressions';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoFilterRewriter, MongoFilterVisitor } from './visitors';\n\nconst FILTER_EXPR_BRAND = '__prismaNextMongoFilter__';\n\nexport function isMongoFilterExpr(value: unknown): value is MongoFilterExpr {\n return typeof value === 'object' && value !== null && FILTER_EXPR_BRAND in value;\n}\n\nabstract class MongoFilterExpression extends MongoAstNode {\n abstract accept<R>(visitor: MongoFilterVisitor<R>): R;\n abstract rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr;\n\n not(this: MongoFilterExpr): MongoNotExpr {\n return new MongoNotExpr(this);\n }\n}\n\nObject.defineProperty(MongoFilterExpression.prototype, FILTER_EXPR_BRAND, {\n value: true,\n writable: false,\n enumerable: false,\n configurable: false,\n});\n\nexport class MongoFieldFilter extends MongoFilterExpression {\n readonly kind = 'field' as const;\n readonly field: string;\n readonly op: string;\n readonly value: MongoValue;\n\n constructor(field: string, op: string, value: MongoValue) {\n super();\n this.field = field;\n this.op = op;\n this.value = value;\n this.freeze();\n }\n\n static of(field: string, op: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, op, value);\n }\n\n static eq(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$eq', value);\n }\n\n static neq(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$ne', value);\n }\n\n static gt(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$gt', value);\n }\n\n static lt(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$lt', value);\n }\n\n static gte(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$gte', value);\n }\n\n static lte(field: string, value: MongoValue): MongoFieldFilter {\n return new MongoFieldFilter(field, '$lte', value);\n }\n\n static in(field: string, values: ReadonlyArray<MongoValue>): MongoFieldFilter {\n return new MongoFieldFilter(field, '$in', values);\n }\n\n static isNull(field: string): MongoFieldFilter {\n return new MongoFieldFilter(field, '$eq', null);\n }\n\n static isNotNull(field: string): MongoFieldFilter {\n return new MongoFieldFilter(field, '$ne', null);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.field(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n return rewriter.field ? rewriter.field(this) : this;\n }\n}\n\nexport class MongoAndExpr extends MongoFilterExpression {\n readonly kind = 'and' as const;\n readonly exprs: ReadonlyArray<MongoFilterExpr>;\n\n constructor(exprs: ReadonlyArray<MongoFilterExpr>) {\n super();\n if (exprs.length === 0) {\n throw new Error('$and requires at least one expression');\n }\n this.exprs = Object.freeze([...exprs]);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<MongoFilterExpr>): MongoAndExpr {\n return new MongoAndExpr(exprs);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.and(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n const rewritten = new MongoAndExpr(this.exprs.map((e) => e.rewrite(rewriter)));\n return rewriter.and ? rewriter.and(rewritten) : rewritten;\n }\n}\n\nexport class MongoOrExpr extends MongoFilterExpression {\n readonly kind = 'or' as const;\n readonly exprs: ReadonlyArray<MongoFilterExpr>;\n\n constructor(exprs: ReadonlyArray<MongoFilterExpr>) {\n super();\n if (exprs.length === 0) {\n throw new Error('$or requires at least one expression');\n }\n this.exprs = Object.freeze([...exprs]);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<MongoFilterExpr>): MongoOrExpr {\n return new MongoOrExpr(exprs);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.or(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n const rewritten = new MongoOrExpr(this.exprs.map((e) => e.rewrite(rewriter)));\n return rewriter.or ? rewriter.or(rewritten) : rewritten;\n }\n}\n\nexport class MongoNotExpr extends MongoFilterExpression {\n readonly kind = 'not' as const;\n readonly expr: MongoFilterExpr;\n\n constructor(expr: MongoFilterExpr) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.not(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n const rewritten = new MongoNotExpr(this.expr.rewrite(rewriter));\n return rewriter.not ? rewriter.not(rewritten) : rewritten;\n }\n}\n\nexport class MongoExistsExpr extends MongoFilterExpression {\n readonly kind = 'exists' as const;\n readonly field: string;\n readonly exists: boolean;\n\n constructor(field: string, exists: boolean) {\n super();\n this.field = field;\n this.exists = exists;\n this.freeze();\n }\n\n static exists(field: string): MongoExistsExpr {\n return new MongoExistsExpr(field, true);\n }\n\n static notExists(field: string): MongoExistsExpr {\n return new MongoExistsExpr(field, false);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.exists(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n return rewriter.exists ? rewriter.exists(this) : this;\n }\n}\n\nexport class MongoExprFilter extends MongoFilterExpression {\n readonly kind = 'expr' as const;\n readonly aggExpr: MongoAggExpr;\n\n constructor(aggExpr: MongoAggExpr) {\n super();\n this.aggExpr = aggExpr;\n this.freeze();\n }\n\n static of(aggExpr: MongoAggExpr): MongoExprFilter {\n return new MongoExprFilter(aggExpr);\n }\n\n accept<R>(visitor: MongoFilterVisitor<R>): R {\n return visitor.expr(this);\n }\n\n rewrite(rewriter: MongoFilterRewriter): MongoFilterExpr {\n return rewriter.expr ? rewriter.expr(this) : this;\n }\n}\n\nexport type MongoFilterExpr =\n | MongoFieldFilter\n | MongoAndExpr\n | MongoOrExpr\n | MongoNotExpr\n | MongoExistsExpr\n | MongoExprFilter;\n"],"mappings":"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"}
|