@prisma-next/mongo-query-ast 0.4.0-dev.9 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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-DwmFTXux.mjs";
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
 
@@ -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-CddUFy1m.mjs";
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-DwmFTXux.mjs";
2
- export { type AggRecordArgs, AggregateCommand, type AnyMongoCommand, DeleteManyCommand, DeleteOneCommand, FindOneAndDeleteCommand, FindOneAndUpdateCommand, InsertManyCommand, InsertOneCommand, 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, UpdateOneCommand, isExprArray, isMongoFilterExpr, isRecordArgs };
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-CddUFy1m.mjs";
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
- constructor(collection, filter, update) {
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
- constructor(collection, filter, update) {
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
- constructor(collection, filter, update, upsert) {
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
- constructor(collection, filter) {
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
- constructor(collection, filter, update, upsert) {
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
- constructor(collection, filter) {
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":";;;AAKA,SAAgB,YACd,MACqC;AACrC,QAAO,MAAM,QAAQ,KAAK;;AAG5B,SAAgB,aACd,MACuB;AACvB,QAAO,CAAC,MAAM,QAAQ,KAAK,IAAI,OAAO,SAAS,YAAY,EAAE,YAAY;;AAG3E,SAAS,iBAAiB,QAAsC;CAC9D,MAAMA,SAAqE,EAAE;AAC7E,MAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,OAAO,CAC7C,QAAO,OAAO,MAAM,QAAQ,IAAI,GAAG,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG;AAE/D,QAAO,OAAO,OAAO,OAAO;;AAG9B,SAAS,kBAAkB,QAAuB,UAA+C;CAC/F,MAAMC,SAAqE,EAAE;AAC7E,MAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,OAAO,CAC7C,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,OAAO,IAAI,KAAK,MAAoB,EAAE,QAAQ,SAAS,CAAC;KAE/D,QAAO,OAAQ,IAAqB,QAAQ,SAAS;AAGzD,QAAO;;AAGT,IAAe,mBAAf,cAAwC,aAAa;AAKrD,IAAa,mBAAb,MAAa,yBAAyB,iBAAiB;CACrD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,MAAc;AACxB,SAAO;AACP,MAAI,CAAC,KACH,OAAM,IAAI,MAAM,+BAA+B;AAEjD,OAAK,OAAO;AACZ,OAAK,QAAQ;;CAGf,OAAO,GAAG,MAAgC;AACxC,SAAO,IAAI,iBAAiB,KAAK;;CAGnC,OAAU,SAAoC;AAC5C,SAAO,QAAQ,SAAS,KAAK;;CAG/B,QAAQ,UAA8C;AACpD,SAAO,SAAS,WAAW,SAAS,SAAS,KAAK,GAAG;;;AAIzD,IAAa,kBAAb,MAAa,wBAAwB,iBAAiB;CACpD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,OAAgB;AAC1B,SAAO;AACP,OAAK,QAAQ;AACb,OAAK,QAAQ;;CAGf,OAAO,GAAG,OAAiC;AACzC,SAAO,IAAI,gBAAgB,MAAM;;CAGnC,OAAU,SAAoC;AAC5C,SAAO,QAAQ,QAAQ,KAAK;;CAG9B,QAAQ,UAA8C;AACpD,SAAO,SAAS,UAAU,SAAS,QAAQ,KAAK,GAAG;;;AAIvD,IAAa,mBAAb,MAAa,yBAAyB,iBAAiB;CACrD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,IAAY,MAAkE;AACxF,SAAO;AACP,OAAK,KAAK;AACV,MAAI,MAAM,QAAQ,KAAK,CACrB,MAAK,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;WAC3B,aAAa,KAAK,CAC3B,MAAK,OAAO,iBAAiB,KAAK;MAElC,MAAK,OAAO;AAEd,OAAK,QAAQ;;CAGf,OAAO,GACL,IACA,MACkB;AAClB,SAAO,IAAI,iBAAiB,IAAI,KAAK;;CAGvC,OAAO,IAAI,GAAG,MAAqD;AACjE,SAAO,IAAI,iBAAiB,QAAQ,KAAK;;CAG3C,OAAO,SAAS,MAAoB,OAAuC;AACzE,SAAO,IAAI,iBAAiB,aAAa,CAAC,MAAM,MAAM,CAAC;;CAGzD,OAAO,SAAS,GAAG,MAAqD;AACtE,SAAO,IAAI,iBAAiB,aAAa,KAAK;;CAGhD,OAAO,OAAO,UAAwB,SAAyC;AAC7E,SAAO,IAAI,iBAAiB,WAAW,CAAC,UAAU,QAAQ,CAAC;;CAG7D,OAAO,OAAO,GAAG,MAAqD;AACpE,SAAO,IAAI,iBAAiB,WAAW,KAAK;;CAG9C,OAAO,QAAQ,MAAsC;AACnD,SAAO,IAAI,iBAAiB,YAAY,KAAK;;CAG/C,OAAO,QAAQ,MAAsC;AACnD,SAAO,IAAI,iBAAiB,YAAY,KAAK;;CAG/C,OAAO,KAAK,MAAsC;AAChD,SAAO,IAAI,iBAAiB,SAAS,KAAK;;CAG5C,OAAU,SAAoC;AAC5C,SAAO,QAAQ,SAAS,KAAK;;CAG/B,QAAQ,UAA8C;EACpD,MAAM,EAAE,SAAS;EACjB,IAAIC;AACJ,MAAI,YAAY,KAAK,CACnB,iBAAgB,KAAK,KAAK,MAAM,EAAE,QAAQ,SAAS,CAAC;WAC3C,aAAa,KAAK,CAC3B,iBAAgB,kBAAkB,MAAM,SAAS;MAEjD,iBAAgB,KAAK,QAAQ,SAAS;EAExC,MAAM,UAAU,IAAI,iBAAiB,KAAK,IAAI,cAAc;AAC5D,SAAO,SAAS,WAAW,SAAS,SAAS,QAAQ,GAAG;;;AAI5D,IAAa,sBAAb,MAAa,4BAA4B,iBAAiB;CACxD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,IAAY,KAA0C;AAChE,SAAO;AACP,OAAK,KAAK;AACV,MAAI,QAAQ,QAAQ,aAAa,IAAI,CACnC,MAAK,MAAM,iBAAiB,IAAI;MAEhC,MAAK,MAAM;AAEb,OAAK,QAAQ;;CAGf,OAAO,GAAG,IAAY,KAA+D;AACnF,SAAO,IAAI,oBAAoB,IAAI,IAAI;;CAGzC,OAAO,IAAI,MAAyC;AAClD,SAAO,IAAI,oBAAoB,QAAQ,KAAK;;CAG9C,OAAO,IAAI,MAAyC;AAClD,SAAO,IAAI,oBAAoB,QAAQ,KAAK;;CAG9C,OAAO,IAAI,MAAyC;AAClD,SAAO,IAAI,oBAAoB,QAAQ,KAAK;;CAG9C,OAAO,IAAI,MAAyC;AAClD,SAAO,IAAI,oBAAoB,QAAQ,KAAK;;CAG9C,OAAO,MAAM,MAAyC;AACpD,SAAO,IAAI,oBAAoB,UAAU,KAAK;;CAGhD,OAAO,KAAK,MAAyC;AACnD,SAAO,IAAI,oBAAoB,SAAS,KAAK;;CAG/C,OAAO,KAAK,MAAyC;AACnD,SAAO,IAAI,oBAAoB,SAAS,KAAK;;CAG/C,OAAO,SAAS,MAAyC;AACvD,SAAO,IAAI,oBAAoB,aAAa,KAAK;;CAGnD,OAAO,QAA6B;AAClC,SAAO,IAAI,oBAAoB,UAAU,KAAK;;CAGhD,OAAO,UAAU,MAAyC;AACxD,SAAO,IAAI,oBAAoB,cAAc,KAAK;;CAGpD,OAAO,WAAW,MAAyC;AACzD,SAAO,IAAI,oBAAoB,eAAe,KAAK;;CAGrD,OAAU,SAAoC;AAC5C,SAAO,QAAQ,YAAY,KAAK;;CAGlC,QAAQ,UAA8C;EACpD,IAAIC;AACJ,MAAI,KAAK,QAAQ,KACf,gBAAe;WACN,aAAa,KAAK,IAAI,CAC/B,gBAAe,kBAAkB,KAAK,KAAK,SAAS;MAEpD,gBAAe,KAAK,IAAI,QAAQ,SAAS;EAE3C,MAAM,UAAU,IAAI,oBAAoB,KAAK,IAAI,aAAa;AAC9D,SAAO,SAAS,cAAc,SAAS,YAAY,QAAQ,GAAG;;;AAIlE,IAAa,eAAb,MAAa,qBAAqB,iBAAiB;CACjD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,WAAyB,OAAqB,OAAqB;AAC7E,SAAO;AACP,OAAK,YAAY;AACjB,OAAK,QAAQ;AACb,OAAK,QAAQ;AACb,OAAK,QAAQ;;CAGf,OAAO,GAAG,WAAyB,OAAqB,OAAmC;AACzF,SAAO,IAAI,aAAa,WAAW,OAAO,MAAM;;CAGlD,OAAU,SAAoC;AAC5C,SAAO,QAAQ,KAAK,KAAK;;CAG3B,QAAQ,UAA8C;EACpD,MAAM,UAAU,IAAI,aAClB,KAAK,UAAU,QAAQ,SAAS,EAChC,KAAK,MAAM,QAAQ,SAAS,EAC5B,KAAK,MAAM,QAAQ,SAAS,CAC7B;AACD,SAAO,SAAS,OAAO,SAAS,KAAK,QAAQ,GAAG;;;AASpD,IAAa,iBAAb,MAAa,uBAAuB,iBAAiB;CACnD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,UAA+C,UAAwB;AACjF,SAAO;AACP,OAAK,WAAW,OAAO,OACrB,SAAS,KAAK,MAAM,OAAO,OAAO;GAAE,OAAO,EAAE;GAAO,OAAO,EAAE;GAAO,CAAC,CAAC,CACvE;AACD,OAAK,WAAW;AAChB,OAAK,QAAQ;;CAGf,OAAO,GAAG,UAA+C,UAAwC;AAC/F,SAAO,IAAI,eAAe,UAAU,SAAS;;CAG/C,OAAU,SAAoC;AAC5C,SAAO,QAAQ,QAAQ,KAAK;;CAG9B,QAAQ,UAA8C;EACpD,MAAM,UAAU,IAAI,eAClB,KAAK,SAAS,KAAK,OAAO;GACxB,OAAO,EAAE,MAAM,QAAQ,SAAS;GAChC,OAAO,EAAE,MAAM,QAAQ,SAAS;GACjC,EAAE,EACH,KAAK,SAAS,QAAQ,SAAS,CAChC;AACD,SAAO,SAAS,UAAU,SAAS,QAAQ,QAAQ,GAAG;;;AAI1D,IAAa,sBAAb,MAAa,4BAA4B,iBAAiB;CACxD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,OAAqB,MAAoB,IAAY;AAC/D,SAAO;AACP,OAAK,QAAQ;AACb,OAAK,OAAO;AACZ,OAAK,KAAK;AACV,OAAK,QAAQ;;CAGf,OAAO,GAAG,OAAqB,MAAoB,IAAiC;AAClF,SAAO,IAAI,oBAAoB,OAAO,MAAM,GAAG;;CAGjD,OAAU,SAAoC;AAC5C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,UAA8C;EACpD,MAAM,UAAU,IAAI,oBAClB,KAAK,MAAM,QAAQ,SAAS,EAC5B,KAAK,KAAK,QAAQ,SAAS,EAC3B,KAAK,GACN;AACD,SAAO,SAAS,SAAS,SAAS,OAAO,QAAQ,GAAG;;;AAIxD,IAAa,cAAb,MAAa,oBAAoB,iBAAiB;CAChD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,OAAqB,KAAmB,IAAY;AAC9D,SAAO;AACP,OAAK,QAAQ;AACb,OAAK,MAAM;AACX,OAAK,KAAK;AACV,OAAK,QAAQ;;CAGf,OAAO,GAAG,OAAqB,KAAmB,IAAyB;AACzE,SAAO,IAAI,YAAY,OAAO,KAAK,GAAG;;CAGxC,OAAU,SAAoC;AAC5C,SAAO,QAAQ,IAAI,KAAK;;CAG1B,QAAQ,UAA8C;EACpD,MAAM,UAAU,IAAI,YAClB,KAAK,MAAM,QAAQ,SAAS,EAC5B,KAAK,IAAI,QAAQ,SAAS,EAC1B,KAAK,GACN;AACD,SAAO,SAAS,MAAM,SAAS,IAAI,QAAQ,GAAG;;;AAIlD,IAAa,iBAAb,MAAa,uBAAuB,iBAAiB;CACnD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,OAAqB,cAA4B,KAAmB;AAC9E,SAAO;AACP,OAAK,QAAQ;AACb,OAAK,eAAe;AACpB,OAAK,MAAM;AACX,OAAK,QAAQ;;CAGf,OAAO,GAAG,OAAqB,cAA4B,KAAmC;AAC5F,SAAO,IAAI,eAAe,OAAO,cAAc,IAAI;;CAGrD,OAAU,SAAoC;AAC5C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,UAA8C;EACpD,MAAM,UAAU,IAAI,eAClB,KAAK,MAAM,QAAQ,SAAS,EAC5B,KAAK,aAAa,QAAQ,SAAS,EACnC,KAAK,IAAI,QAAQ,SAAS,CAC3B;AACD,SAAO,SAAS,SAAS,SAAS,OAAO,QAAQ,GAAG;;;AAIxD,IAAa,cAAb,MAAa,oBAAoB,iBAAiB;CAChD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,MAAoC,KAAmB;AACjE,SAAO;AACP,OAAK,OAAO,OAAO,OAAO,EAAE,GAAG,MAAM,CAAC;AACtC,OAAK,MAAM;AACX,OAAK,QAAQ;;CAGf,OAAO,GAAG,MAAoC,KAAgC;AAC5E,SAAO,IAAI,YAAY,MAAM,IAAI;;CAGnC,OAAU,SAAoC;AAC5C,SAAO,QAAQ,KAAK,KAAK;;CAG3B,QAAQ,UAA8C;EACpD,MAAMC,gBAA8C,EAAE;AACtD,OAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,KAAK,CAChD,eAAc,OAAO,IAAI,QAAQ,SAAS;EAE5C,MAAM,UAAU,IAAI,YAAY,eAAe,KAAK,IAAI,QAAQ,SAAS,CAAC;AAC1E,SAAO,SAAS,OAAO,SAAS,KAAK,QAAQ,GAAG;;;AAIpD,IAAa,uBAAb,MAAa,6BAA6B,iBAAiB;CACzD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,OAAoC;AAC9C,SAAO;AACP,OAAK,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;AACtC,OAAK,QAAQ;;CAGf,OAAO,GAAG,OAA0D;AAClE,SAAO,IAAI,qBAAqB,MAAM;;CAGxC,OAAU,SAAoC;AAC5C,SAAO,QAAQ,aAAa,KAAK;;CAGnC,QAAQ,UAA8C;EACpD,MAAM,UAAU,IAAI,qBAAqB,KAAK,MAAM,KAAK,MAAM,EAAE,QAAQ,SAAS,CAAC,CAAC;AACpF,SAAO,SAAS,eAAe,SAAS,aAAa,QAAQ,GAAG;;;;;;AC3cpE,IAAa,mBAAb,cAAsC,aAAa;CACjD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,UAAsC;AACpE,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,WAAW;AAChB,OAAK,QAAQ;;;AAIjB,IAAa,mBAAb,cAAsC,aAAa;CACjD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;;;;;;CAMT,AAAS;CAET,YACE,YACA,QACA,QACA,SAAS,OACT;AACA,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,QAAQ;;;AAIjB,IAAa,mBAAb,cAAsC,aAAa;CACjD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,QAAyB;AACvD,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,QAAQ;;;AAIjB,IAAa,oBAAb,cAAuC,aAAa;CAClD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,WAAsD;AACpF,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,YAAY;AACjB,OAAK,QAAQ;;;AAIjB,IAAa,oBAAb,cAAuC,aAAa;CAClD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;;;;;;CAMT,AAAS;CAET,YACE,YACA,QACA,QACA,SAAS,OACT;AACA,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,QAAQ;;;AAIjB,IAAa,oBAAb,cAAuC,aAAa;CAClD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,QAAyB;AACvD,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,QAAQ;;;AAIjB,IAAa,0BAAb,cAA6C,aAAa;CACxD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YACE,YACA,QACA,QACA,SAAS,OACT,MACA,iBAAqC,SACrC;AACA,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,OAAO;AACZ,OAAK,iBAAiB;AACtB,OAAK,QAAQ;;;AAIjB,IAAa,0BAAb,cAA6C,aAAa;CACxD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,QAAyB,MAA+B;AACtF,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ;;;AAIjB,IAAa,mBAAb,cAAsC,aAAa;CACjD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,UAA6C;AAC3E,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,WAAW;AAChB,OAAK,QAAQ;;;;;;AClKjB,IAAa,sBAAb,cAAyC,aAAa;CACpD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,UAAmC;AACjE,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,WAAW;AAChB,OAAK,QAAQ;;;AAIjB,IAAa,sBAAb,cAAyC,aAAa;CACpD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,UAAoB;AAClD,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,WAAW;AAChB,OAAK,QAAQ;;;AAIjB,IAAa,uBAAb,cAA0C,aAAa;CACrD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,WAAoC;AAClE,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,YAAY;AACjB,OAAK,QAAQ;;;AAIjB,IAAa,sBAAb,cAAyC,aAAa;CACpD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,QAAkB,QAA4C;AAC5F,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,QAAQ;;;AAIjB,IAAa,uBAAb,cAA0C,aAAa;CACrD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,QAAkB,QAA4C;AAC5F,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,QAAQ;;;AAIjB,IAAa,sBAAb,cAAyC,aAAa;CACpD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,QAAkB;AAChD,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,QAAQ;;;AAIjB,IAAa,uBAAb,cAA0C,aAAa;CACrD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,QAAkB;AAChD,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,QAAQ;;;AAIjB,IAAa,6BAAb,cAAgD,aAAa;CAC3D,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;;;;;;CAMT,AAAS;CAET,YACE,YACA,QACA,QACA,SAAS,OACT,MACA,gBACA;AACA,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,OAAO;AACZ,OAAK,iBAAiB;AACtB,OAAK,QAAQ;;;AAIjB,IAAa,6BAAb,cAAgD,aAAa;CAC3D,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,QAAkB,MAA+B;AAC/E,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,SAAS;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ;;;;;;AC9HjB,SAAS,UAAU,OAAoD;AACrE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU;;AAMlE,SAAS,cAAc,OAAsC;AAC3D,QAAO,YAAY,SAAS,OAAO,MAAM,WAAW;;AAGtD,SAAS,eAAe,SAAuB,UAA8C;AAC3F,KAAI,YAAY,KAAM,QAAO;AAC7B,KAAI,cAAc,QAAQ,CAAE,QAAO,QAAQ,QAAQ,SAAS;CAC5D,MAAMC,SAAuC,EAAE;AAC/C,MAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,QAAQ,CAC9C,QAAO,OAAO,IAAI,QAAQ,SAAS;AAErC,QAAO;;AAGT,SAAS,kBACP,QACA,UAC8B;CAC9B,MAAMA,SAAuC,EAAE;AAC/C,MAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,OAAO,CAC7C,QAAO,OAAO,IAAI,QAAQ,SAAS;AAErC,QAAO;;AAGT,SAAS,yBACP,cACA,UACqC;CACrC,MAAMC,SAA8C,EAAE;AACtD,MAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,aAAa,CACnD,QAAO,OAAO,IAAI,QAAQ,SAAS;AAErC,QAAO;;AAGT,IAAe,iBAAf,cAAsC,aAAa;AAKnD,IAAa,kBAAb,MAAa,wBAAwB,eAAe;CAClD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,QAAyB;AACnC,SAAO;AACP,OAAK,SAAS;AACd,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAQ,SAAwD;AAC9D,SAAO,IAAI,gBAAgB,KAAK,OAAO,QAAQ,QAAQ,UAAU,EAAE,CAAC,CAAC;;;AAIzE,IAAa,oBAAb,MAAa,0BAA0B,eAAe;CACpD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,YAAkD;AAC5D,SAAO;AACP,OAAK,aAAa,OAAO,OAAO,EAAE,GAAG,YAAY,CAAC;AAClD,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,QAAQ,KAAK;;CAG9B,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;EACtB,IAAI,UAAU;AACd,OAAK,MAAM,OAAO,OAAO,OAAO,KAAK,WAAW,CAC9C,KAAI,UAAU,IAAI,EAAE;AAClB,aAAU;AACV;;AAGJ,MAAI,CAAC,QAAS,QAAO;EACrB,MAAMC,gBAAsD,EAAE;AAC9D,OAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,WAAW,CACtD,eAAc,OAAO,UAAU,IAAI,GAAG,IAAI,QAAQ,SAAS,GAAG;AAEhE,SAAO,IAAI,kBAAkB,cAAc;;;AAI/C,IAAa,iBAAb,cAAoC,eAAe;CACjD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,MAA8B;AACxC,SAAO;AACP,OAAK,OAAO,OAAO,OAAO,EAAE,GAAG,MAAM,CAAC;AACtC,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,KAAK,KAAK;;CAG3B,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,kBAAb,cAAqC,eAAe;CAClD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,OAAe;AACzB,SAAO;AACP,MAAI,CAAC,OAAO,UAAU,MAAM,IAAI,QAAQ,EACtC,OAAM,IAAI,WAAW,uCAAuC;AAE9D,OAAK,QAAQ;AACb,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,iBAAb,cAAoC,eAAe;CACjD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,MAAc;AACxB,SAAO;AACP,MAAI,CAAC,OAAO,UAAU,KAAK,IAAI,OAAO,EACpC,OAAM,IAAI,WAAW,sCAAsC;AAE7D,OAAK,OAAO;AACZ,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,KAAK,KAAK;;CAG3B,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,mBAAb,MAAa,yBAAyB,eAAe;CACnD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAOT;AACD,SAAO;EACP,MAAM,gBAAgB,QAAQ,eAAe;EAC7C,MAAM,kBAAkB,QAAQ,iBAAiB;EACjD,MAAM,cAAc,CAAC,CAAC,QAAQ;AAC9B,MAAI,kBAAkB,gBACpB,OAAM,IAAI,MAAM,sEAAsE;AAExF,MAAI,CAAC,iBAAiB,CAAC,YACrB,OAAM,IAAI,MACR,2FACD;AAEH,MAAI,QAAQ,QAAQ,CAAC,YACnB,OAAM,IAAI,MAAM,4CAA4C;AAE9D,OAAK,OAAO,QAAQ;AACpB,OAAK,aAAa,QAAQ;AAC1B,OAAK,eAAe,QAAQ;AAC5B,OAAK,KAAK,QAAQ;AAClB,OAAK,WAAW,QAAQ,WAAW,OAAO,OAAO,CAAC,GAAG,QAAQ,SAAS,CAAC,GAAG;AAC1E,OAAK,OAAO,QAAQ,OAAO,OAAO,OAAO,EAAE,GAAG,QAAQ,MAAM,CAAC,GAAG;AAChE,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,SAAwD;AAC9D,MAAI,CAAC,KAAK,YAAY,CAAC,KAAK,KAAM,QAAO;EACzC,MAAM,eACJ,KAAK,QAAQ,QAAQ,UAAU,kBAAkB,KAAK,MAAM,QAAQ,QAAQ,GAAG,KAAK;EACtF,MAAMC,UAOF;GAAE,MAAM,KAAK;GAAM,IAAI,KAAK;GAAI;AACpC,MAAI,KAAK,eAAe,OAAW,SAAQ,aAAa,KAAK;AAC7D,MAAI,KAAK,iBAAiB,OAAW,SAAQ,eAAe,KAAK;AACjE,MAAI,KAAK,SAAU,SAAQ,WAAW,KAAK,SAAS,KAAK,UAAU,MAAM,QAAQ,QAAQ,CAAC;AAC1F,MAAI,aAAc,SAAQ,OAAO,EAAE,GAAG,cAAc;AACpD,SAAO,IAAI,iBAAiB,QAAQ;;;AAIxC,IAAa,mBAAb,cAAsC,eAAe;CACnD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,MAAc,4BAAqC,mBAA4B;AACzF,SAAO;AACP,OAAK,OAAO;AACZ,OAAK,6BAA6B;AAClC,OAAK,oBAAoB;AACzB,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,kBAAb,MAAa,wBAAwB,eAAe;CAClD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,SAAuB,cAAmD;AACpF,SAAO;AACP,OAAK,UAAU;AACf,OAAK,eAAe,OAAO,OAAO,EAAE,GAAG,cAAc,CAAC;AACtD,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;EACtB,MAAMC,kBAAuD,EAAE;AAC/D,OAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,aAAa,CAKxD,iBAAgB,OAAO,IAAI,QAAQ,SAAS;AAE9C,SAAO,IAAI,gBAAgB,eAAe,KAAK,SAAS,SAAS,EAAE,gBAAgB;;;AAIvF,IAAa,sBAAb,MAAa,4BAA4B,eAAe;CACtD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,QAAsC;AAChD,SAAO;AACP,OAAK,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,CAAC;AAC1C,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,UAAU,KAAK;;CAGhC,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,IAAI,oBAAoB,kBAAkB,KAAK,QAAQ,SAAS,CAAC;;;AAI5E,IAAa,wBAAb,MAAa,8BAA8B,eAAe;CACxD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,SAAuB;AACjC,SAAO;AACP,OAAK,UAAU;AACf,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,YAAY,KAAK;;CAGlC,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,IAAI,sBAAsB,KAAK,QAAQ,QAAQ,SAAS,CAAC;;;AAIpE,IAAa,kBAAb,cAAqC,eAAe;CAClD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,OAAe;AACzB,SAAO;AACP,OAAK,QAAQ;AACb,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,wBAAb,MAAa,8BAA8B,eAAe;CACxD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,MAAoB;AAC9B,SAAO;AACP,OAAK,OAAO;AACZ,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,YAAY,KAAK;;CAGlC,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,IAAI,sBAAsB,KAAK,KAAK,QAAQ,SAAS,CAAC;;;AAIjE,IAAa,mBAAb,cAAsC,eAAe;CACnD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,MAAc;AACxB,SAAO;AACP,MAAI,CAAC,OAAO,UAAU,KAAK,IAAI,OAAO,EACpC,OAAM,IAAI,WAAW,sCAAsC;AAE7D,OAAK,OAAO;AACZ,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,mBAAb,MAAa,yBAAyB,eAAe;CACnD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,MAAoB;AAC9B,SAAO;AACP,OAAK,OAAO;AACZ,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,IAAI,iBAAiB,KAAK,KAAK,QAAQ,SAAS,CAAC;;;AAI5D,IAAa,gBAAb,cAAmC,eAAe;CAChD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,IAAa;AAC3C,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,KAAK;AACV,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,IAAI,KAAK;;CAG1B,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,sBAAb,MAAa,4BAA4B,eAAe;CACtD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,YAAoB,UAA8C;AAC5E,SAAO;AACP,OAAK,aAAa;AAClB,OAAK,WAAW,WAAW,OAAO,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG;AAC1D,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,UAAU,KAAK;;CAGhC,QAAQ,SAAwD;AAC9D,MAAI,CAAC,KAAK,SAAU,QAAO;AAC3B,SAAO,IAAI,oBACT,KAAK,YACL,KAAK,SAAS,KAAK,UAAU,MAAM,QAAQ,QAAQ,CAAC,CACrD;;;AAIL,IAAa,mBAAb,MAAa,yBAAyB,eAAe;CACnD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAKT;AACD,SAAO;AACP,MAAI,QAAQ,WAAW,SAAS,EAC9B,OAAM,IAAI,WAAW,4CAA4C;AAEnE,OAAK,UAAU,QAAQ;AACvB,OAAK,aAAa,OAAO,OAAO,CAAC,GAAG,QAAQ,WAAW,CAAC;AACxD,OAAK,WAAW,QAAQ;AACxB,OAAK,SAAS,QAAQ,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,QAAQ,CAAC,GAAG;AACtE,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;EACtB,MAAMC,OAKF;GAAE,SAAS,KAAK,QAAQ,QAAQ,SAAS;GAAE,YAAY,KAAK;GAAY;AAC5E,MAAI,KAAK,aAAa,OAAW,MAAK,WAAW,KAAK;AACtD,MAAI,KAAK,OAAQ,MAAK,SAAS,yBAAyB,KAAK,QAAQ,SAAS;AAC9E,SAAO,IAAI,iBAAiB,KAAK;;;AAIrC,IAAa,uBAAb,MAAa,6BAA6B,eAAe;CACvD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAKT;AACD,SAAO;AACP,MAAI,CAAC,OAAO,UAAU,QAAQ,QAAQ,IAAI,QAAQ,UAAU,EAC1D,OAAM,IAAI,WAAW,qCAAqC;AAE5D,OAAK,UAAU,QAAQ;AACvB,OAAK,UAAU,QAAQ;AACvB,OAAK,SAAS,QAAQ,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,QAAQ,CAAC,GAAG;AACtE,OAAK,cAAc,QAAQ;AAC3B,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,WAAW,KAAK;;CAGjC,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;EACtB,MAAMC,OAKF;GAAE,SAAS,KAAK,QAAQ,QAAQ,SAAS;GAAE,SAAS,KAAK;GAAS;AACtE,MAAI,KAAK,OAAQ,MAAK,SAAS,yBAAyB,KAAK,QAAQ,SAAS;AAC9E,MAAI,KAAK,gBAAgB,OAAW,MAAK,cAAc,KAAK;AAC5D,SAAO,IAAI,qBAAqB,KAAK;;;AAIzC,IAAa,oBAAb,MAAa,0BAA0B,eAAe;CACpD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAUT;AACD,SAAO;AACP,OAAK,OAAO,QAAQ;AACpB,OAAK,gBAAgB,QAAQ;AAC7B,OAAK,YAAY,QAAQ;AACzB,OAAK,cAAc,QAAQ;AAC3B,OAAK,cAAc,QAAQ;AAC3B,OAAK,QAAQ,QAAQ;AACrB,OAAK,MAAM,QAAQ;AACnB,OAAK,qBAAqB,QAAQ;AAClC,OAAK,cAAc,QAAQ;AAC3B,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,QAAQ,KAAK;;CAG9B,QAAQ,SAAwD;AAC9D,MAAI,CAAC,KAAK,SAAS,CAAC,QAAQ,OAAQ,QAAO;EAC3C,MAAMC,OAUF;GAAE,MAAM,KAAK;GAAM,eAAe,KAAK;GAAe;AAC1D,MAAI,KAAK,cAAc,OAAW,MAAK,YAAY,KAAK;AACxD,MAAI,KAAK,gBAAgB,OAAW,MAAK,cAAc,KAAK;AAC5D,MAAI,KAAK,gBAAgB,OAAW,MAAK,cAAc,KAAK;AAC5D,OAAK,QAAQ,KAAK,MAAM,QAAQ,QAAQ,OAAO;AAC/C,MAAI,KAAK,QAAQ,OAAW,MAAK,MAAM,KAAK;AAC5C,MAAI,KAAK,uBAAuB,OAAW,MAAK,qBAAqB,KAAK;AAC1E,MAAI,KAAK,gBAAgB,OAAW,MAAK,cAAc,KAAK;AAC5D,SAAO,IAAI,kBAAkB,KAAK;;;AAItC,IAAa,kBAAb,MAAa,wBAAwB,eAAe;CAClD,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,QAA2D;AACrE,SAAO;EACP,MAAMC,SAA4D,EAAE;AACpE,OAAK,MAAM,CAAC,KAAK,aAAa,OAAO,QAAQ,OAAO,CAClD,QAAO,OAAO,OAAO,OAAO,CAAC,GAAG,SAAS,CAAC;AAE5C,OAAK,SAAS,OAAO,OAAO,OAAO;AACnC,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAQ,SAAwD;EAC9D,MAAMC,YAA+D,EAAE;AACvE,OAAK,MAAM,CAAC,KAAK,aAAa,OAAO,QAAQ,KAAK,OAAO,CACvD,WAAU,OAAO,SAAS,KAAK,UAAU,MAAM,QAAQ,QAAQ,CAAC;AAElE,SAAO,IAAI,gBAAgB,UAAU;;;AAIzC,IAAa,wBAAb,MAAa,8BAA8B,eAAe;CACxD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAST;AACD,SAAO;AACP,OAAK,OAAO,QAAQ;AACpB,OAAK,YAAY,QAAQ;AACzB,OAAK,mBAAmB,QAAQ;AAChC,OAAK,iBAAiB,QAAQ;AAC9B,OAAK,KAAK,QAAQ;AAClB,OAAK,WAAW,QAAQ;AACxB,OAAK,aAAa,QAAQ;AAC1B,OAAK,0BAA0B,QAAQ;AACvC,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,YAAY,KAAK;;CAGlC,QAAQ,SAAwD;EAC9D,MAAM,qBAAqB,QAAQ,UAC/B,KAAK,UAAU,QAAQ,QAAQ,QAAQ,GACvC,KAAK;EACT,MAAM,iBACJ,KAAK,2BAA2B,QAAQ,SACpC,KAAK,wBAAwB,QAAQ,QAAQ,OAAO,GACpD,KAAK;AACX,MAAI,uBAAuB,KAAK,aAAa,mBAAmB,KAAK,wBACnE,QAAO;EAET,MAAMC,OASF;GACF,MAAM,KAAK;GACX,WAAW;GACX,kBAAkB,KAAK;GACvB,gBAAgB,KAAK;GACrB,IAAI,KAAK;GACV;AACD,MAAI,KAAK,aAAa,OAAW,MAAK,WAAW,KAAK;AACtD,MAAI,KAAK,eAAe,OAAW,MAAK,aAAa,KAAK;AAC1D,MAAI,eAAgB,MAAK,0BAA0B;AACnD,SAAO,IAAI,sBAAsB,KAAK;;;AAI1C,IAAa,kBAAb,MAAa,wBAAwB,eAAe;CAClD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAKT;AACD,SAAO;AACP,OAAK,OACH,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO,OAAO,OAAO,EAAE,GAAG,QAAQ,MAAM,CAAC;AACtF,OAAK,KACH,QAAQ,OAAO,SACX,SACA,OAAO,QAAQ,OAAO,WACpB,QAAQ,KACR,OAAO,OAAO,CAAC,GAAG,QAAQ,GAAG,CAAC;AACtC,OAAK,cACH,QAAQ,gBAAgB,SACpB,SACA,OAAO,QAAQ,gBAAgB,WAC7B,QAAQ,cACR,OAAO,OAAO,CAAC,GAAG,QAAQ,YAAY,CAAC;AAC/C,OAAK,iBAAiB,QAAQ;AAC9B,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAQ,SAAwD;AAC9D,MAAI,CAAC,MAAM,QAAQ,KAAK,YAAY,CAAE,QAAO;EAC7C,MAAMC,OAKF,EAAE,MAAM,KAAK,MAAM;AACvB,MAAI,KAAK,OAAO,OAAW,MAAK,KAAK,KAAK;AAE1C,OAAK,cAAc,KAAK,YAAY,KACjC,UAAU,MAAM,QAAQ,QAAQ,CAClC;AACD,MAAI,KAAK,mBAAmB,OAAW,MAAK,iBAAiB,KAAK;AAClE,SAAO,IAAI,gBAAgB,KAAK;;;AAYpC,IAAa,4BAAb,MAAa,kCAAkC,eAAe;CAC5D,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAIT;AACD,SAAO;AACP,OAAK,cAAc,QAAQ;AAC3B,OAAK,SAAS,QAAQ,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,QAAQ,CAAC,GAAG;AACtE,OAAK,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,QAAQ,CAAC;AAClD,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,gBAAgB,KAAK;;CAGtC,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;EACtB,MAAMC,YAA8C,EAAE;AACtD,OAAK,MAAM,CAAC,KAAK,OAAO,OAAO,QAAQ,KAAK,OAAO,CACjD,WAAU,OAAO;GAAE,GAAG;GAAI,UAAU,GAAG,SAAS,QAAQ,SAAS;GAAE;EAErE,MAAMC,OAIF,EAAE,QAAQ,WAAW;AACzB,MAAI,KAAK,YAAa,MAAK,cAAc,KAAK,YAAY,QAAQ,SAAS;AAC3E,MAAI,KAAK,OAAQ,MAAK,SAAS,EAAE,GAAG,KAAK,QAAQ;AACjD,SAAO,IAAI,0BAA0B,KAAK;;;AAU9C,IAAa,oBAAb,cAAuC,eAAe;CACpD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAIT;AACD,SAAO;AACP,OAAK,QAAQ,QAAQ;AACrB,OAAK,oBAAoB,QAAQ,oBAC7B,OAAO,OAAO,CAAC,GAAG,QAAQ,kBAAkB,CAAC,GAC7C;AACJ,OAAK,QAAQ,OAAO,OAAO,EAAE,GAAG,QAAQ,OAAO,CAAC;AAChD,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,QAAQ,KAAK;;CAG9B,QAAQ,UAAyD;AAC/D,SAAO;;;AASX,IAAa,iBAAb,MAAa,uBAAuB,eAAe;CACjD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAKT;AACD,SAAO;AACP,OAAK,cAAc,QAAQ;AAC3B,OAAK,oBAAoB,QAAQ,oBAC7B,OAAO,OAAO,CAAC,GAAG,QAAQ,kBAAkB,CAAC,GAC7C;AACJ,OAAK,SAAS,QAAQ,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,QAAQ,CAAC,GAAG;AACtE,OAAK,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,QAAQ,CAAC;AAClD,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,KAAK,KAAK;;CAG3B,QAAQ,SAAwD;EAC9D,MAAM,WAAW,QAAQ;AACzB,MAAI,CAAC,SAAU,QAAO;EACtB,MAAMC,YAA6C,EAAE;AACrD,OAAK,MAAM,CAAC,KAAK,OAAO,OAAO,QAAQ,KAAK,OAAO,CACjD,WAAU,OAAO,GAAG,QAAQ;GAAE,GAAG;GAAI,OAAO,GAAG,MAAM,QAAQ,SAAS;GAAE,GAAG;EAE7E,MAAMC,OAKF,EAAE,QAAQ,WAAW;AACzB,MAAI,KAAK,YAAa,MAAK,cAAc,KAAK,YAAY,QAAQ,SAAS;AAC3E,MAAI,KAAK,kBAAmB,MAAK,oBAAoB,CAAC,GAAG,KAAK,kBAAkB;AAChF,MAAI,KAAK,OAAQ,MAAK,SAAS,EAAE,GAAG,KAAK,QAAQ;AACjD,SAAO,IAAI,eAAe,KAAK;;;AAInC,IAAa,mBAAb,cAAsC,eAAe;CACnD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,QAAiC,OAAgB;AAC3D,SAAO;AACP,OAAK,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,CAAC;AAC1C,OAAK,QAAQ;AACb,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,uBAAb,cAA0C,eAAe;CACvD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CAET,YAAY,QAAiC,OAAgB;AAC3D,SAAO;AACP,OAAK,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,CAAC;AAC1C,OAAK,QAAQ;AACb,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,WAAW,KAAK;;CAGjC,QAAQ,UAAyD;AAC/D,SAAO;;;AAIX,IAAa,yBAAb,cAA4C,eAAe;CACzD,AAAS,OAAO;CAChB,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAOT;AACD,SAAO;AACP,MAAI,CAAC,OAAO,UAAU,QAAQ,MAAM,IAAI,QAAQ,QAAQ,EACtD,OAAM,IAAI,WAAW,mCAAmC;AAE1D,MAAI,CAAC,OAAO,UAAU,QAAQ,cAAc,IAAI,QAAQ,gBAAgB,QAAQ,MAC9E,OAAM,IAAI,WAAW,4CAA4C;AAEnE,OAAK,QAAQ,QAAQ;AACrB,OAAK,OAAO,QAAQ;AACpB,OAAK,cAAc,OAAO,OAAO,CAAC,GAAG,QAAQ,YAAY,CAAC;AAC1D,OAAK,gBAAgB,QAAQ;AAC7B,OAAK,QAAQ,QAAQ;AACrB,OAAK,SAAS,QAAQ,SAAS,OAAO,OAAO,EAAE,GAAG,QAAQ,QAAQ,CAAC,GAAG;AACtE,OAAK,QAAQ;;CAGf,OAAU,SAAkC;AAC1C,SAAO,QAAQ,aAAa,KAAK;;CAGnC,QAAQ,UAAyD;AAC/D,SAAO"}
@@ -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-CddUFy1m.mjs.map
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":"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"}
@@ -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
- constructor(collection: string, filter: Document, update: Document | ReadonlyArray<Document>, upsert: boolean);
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
- constructor(collection: string, filter: Document);
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
- constructor(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec);
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
- constructor(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec);
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
- constructor(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec, upsert: boolean);
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
- constructor(collection: string, filter: MongoFilterExpr);
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: AnyMongoCommand;
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-DwmFTXux.d.mts.map
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":";;;;uBAAsB,YAAA;;;;;;AAAA,KCSV,YAAA,GDTsB,IAAA,GCSA,YDTA,GCSe,QDTf,CCSwB,MDTxB,CAAA,MAAA,ECSuC,YDTvC,CAAA,CAAA;KCUtB,oBAAA,WAA+B;uBAiD5B,cAAA,SAAuB,YAAA;8BACR,kBAAkB,KAAK;EAnDzC,SAAA,OAAY,CAAA,OAAA,EAoDI,yBApDJ,CAAA,EAoDgC,kBApDhC;;AAAiD,cAuD5D,eAAA,SAAwB,cAAA,CAvDoC;EAAf,SAAA,IAAA,EAAA,OAAA;EAAT,SAAA,MAAA,EAyD9B,eAzD8B;EAAQ,WAAA,CAAA,MAAA,EA2DnC,eA3DmC;EAC7C,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAgES,iBAhEsB,CAgEJ,CAhEI,CAAA,CAAA,EAgEC,CAhED;EAiD5B,OAAA,CAAA,OAAA,EAmBI,yBAnBW,CAAA,EAmBiB,kBAnBjB;;AACA,cAuBjB,iBAAA,SAA0B,cAAA,CAvBT;EAAuB,SAAA,IAAA,EAAA,SAAA;EACzB,SAAA,UAAA,EAwBL,QAxBK,CAwBI,MAxBJ,CAAA,MAAA,EAwBmB,oBAxBnB,CAAA,CAAA;EAA4B,WAAA,CAAA,UAAA,EA0B9B,MA1B8B,CAAA,MAAA,EA0Bf,oBA1Be,CAAA;EAFlB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAkCjB,iBAlCiB,CAkCC,CAlCD,CAAA,CAAA,EAkCM,CAlCN;EAAY,OAAA,CAAA,OAAA,EAsC/B,yBAtC+B,CAAA,EAsCH,kBAtCG;AAKlD;AAEmB,cAkDN,cAAA,SAAuB,cAAA,CAlDjB;EAEG,SAAA,IAAA,EAAA,MAAA;EAMiB,SAAA,IAAA,EA4CtB,QA5CsB,CA4Cb,MA5Ca,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;EAAlB,WAAA,CAAA,IAAA,EA8CD,MA9CC,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA;EAAuB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAoDvB,iBApDuB,CAoDL,CApDK,CAAA,CAAA,EAoDA,CApDA;EAIzB,OAAA,CAAA,QAAA,EAoDC,yBApDD,CAAA,EAoD6B,kBApD7B;;AAdkB,cAuExB,eAAA,SAAwB,cAAA,CAvEA;EAAc,SAAA,IAAA,EAAA,OAAA;EAmBtC,SAAA,KAAA,EAAA,MAAkB;EAEgB,WAAA,CAAA,KAAA,EAAA,MAAA;EAAf,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA+DX,iBA/DW,CA+DO,CA/DP,CAAA,CAAA,EA+DY,CA/DZ;EAAT,OAAA,CAAA,QAAA,EAmEH,yBAnEG,CAAA,EAmEyB,kBAnEzB;;AAEG,cAsEb,cAAA,SAAuB,cAAA,CAtEV;EAMa,SAAA,IAAA,EAAA,MAAA;EAAlB,SAAA,IAAA,EAAA,MAAA;EAAuB,WAAA,CAAA,IAAA,EAAA,MAAA;EAIzB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAyEE,iBAzEF,CAyEoB,CAzEpB,CAAA,CAAA,EAyEyB,CAzEzB;EAA4B,OAAA,CAAA,QAAA,EA6E3B,yBA7E2B,CAAA,EA6EC,kBA7ED;;AAdM,cAgGxC,gBAAA,SAAyB,cAAA,CAhGe;EAiCxC,SAAA,IAAA,EAAA,QAAe;EAEF,SAAA,IAAA,EAAA,MAAA;EAAT,SAAA,UAAA,EAAA,MAAA,GAAA,SAAA;EAEG,SAAA,YAAA,EAAA,MAAA,GAAA,SAAA;EAMmB,SAAA,EAAA,EAAA,MAAA;EAAlB,SAAA,QAAA,EA2DA,aA3DA,CA2Dc,kBA3Dd,CAAA,GAAA,SAAA;EAAuB,SAAA,IAAA,EA4D3B,QA5D2B,CA4DlB,MA5DkB,CAAA,MAAA,EA4DH,YA5DG,CAAA,CAAA,GAAA,SAAA;EAIxB,WAAA,CAAA,OAAA,EAAA;IAA4B,IAAA,EAAA,MAAA;IAdZ,UAAA,CAAA,EAAA,MAAA;IAAc,YAAA,CAAA,EAAA,MAAA;IAmBrC,EAAA,EAAA,MAAA;IAa0B,QAAA,CAAA,EA6CxB,aA7CwB,CA6CV,kBA7CU,CAAA;IAAlB,IAAA,CAAA,EA8CV,MA9CU,CAAA,MAAA,EA8CK,YA9CL,CAAA;EAAuB,CAAA;EAIxB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAoEC,iBApED,CAoEmB,CApEnB,CAAA,CAAA,EAoEwB,CApExB;EAA4B,OAAA,CAAA,OAAA,EAwE7B,yBAxE6B,CAAA,EAwED,kBAxEC;;AAjBG,cA6GtC,gBAAA,SAAyB,cAAA,CA7Ga;EAsBtC,SAAA,IAAA,EAAA,QAAe;EAaW,SAAA,IAAA,EAAA,MAAA;EAAlB,SAAA,0BAAA,EAAA,OAAA;EAAuB,SAAA,iBAAA,EAAA,MAAA,GAAA,SAAA;EAIxB,WAAA,CAAA,IAAA,EAAA,MAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,MAAA;EAA4B,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAoF3B,iBApF2B,CAoFT,CApFS,CAAA,CAAA,EAoFJ,CApFI;EAjBZ,OAAA,CAAA,QAAA,EAyGhB,yBAzGgB,CAAA,EAyGY,kBAzGZ;;AAsBvB,cAwFA,eAAA,SAAwB,cAAA,CAxFP;EAMK,SAAA,IAAA,EAAA,OAAA;EAAd,SAAA,OAAA,EAoFD,YApFC;EACoB,SAAA,YAAA,EAoFhB,QApFgB,CAoFP,MApFO,CAAA,MAAA,EAoFQ,mBApFR,CAAA,CAAA;EAAf,WAAA,CAAA,OAAA,EAsFH,YAtFG,EAAA,YAAA,EAsFyB,MAtFzB,CAAA,MAAA,EAsFwC,mBAtFxC,CAAA;EAAT,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA6FI,iBA7FJ,CA6FsB,CA7FtB,CAAA,CAAA,EA6F2B,CA7F3B;EAOY,OAAA,CAAA,OAAA,EA0FV,yBA1FU,CAAA,EA0FkB,kBA1FlB;;AACH,cAwGb,mBAAA,SAA4B,cAAA,CAxGf;EAAf,SAAA,IAAA,EAAA,WAAA;EA0B4B,SAAA,MAAA,EAgFpB,QAhFoB,CAgFX,MAhFW,CAAA,MAAA,EAgFI,YAhFJ,CAAA,CAAA;EAAlB,WAAA,CAAA,MAAA,EAkFC,MAlFD,CAAA,MAAA,EAkFgB,YAlFhB,CAAA;EAAuB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAwFvB,iBAxFuB,CAwFL,CAxFK,CAAA,CAAA,EAwFA,CAxFA;EAIzB,OAAA,CAAA,OAAA,EAwFA,yBAxFA,CAAA,EAwF4B,kBAxF5B;;AA7CmB,cA4IzB,qBAAA,SAA8B,cAAA,CA5IL;EAAc,SAAA,IAAA,EAAA,aAAA;EAiEvC,SAAA,OAAA,EA6EO,YA7EU;EAcS,WAAA,CAAA,OAAA,EAiEhB,YAjEgB;EAAlB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAuEA,iBAvEA,CAuEkB,CAvElB,CAAA,CAAA,EAuEuB,CAvEvB;EAAuB,OAAA,CAAA,OAAA,EA2EzB,yBA3EyB,CAAA,EA2EG,kBA3EH;;AAII,cA8EnC,eAAA,SAAwB,cAAA,CA9EW;EAlBV,SAAA,IAAA,EAAA,OAAA;EAAc,SAAA,KAAA,EAAA,MAAA;EAuBvC,WAAA,CAAA,KAAA,EAAgB,MAAA;EAET,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAiFC,iBAjFD,CAiFmB,CAjFnB,CAAA,CAAA,EAiFwB,CAjFxB;EAC6B,OAAA,CAAA,QAAA,EAoF7B,yBApF6B,CAAA,EAoFD,kBApFC;;AAAxB,cAyFZ,qBAAA,SAA8B,cAAA,CAzFlB;EAEF,SAAA,IAAA,EAAA,aAAA;EAA2C,SAAA,IAAA,EAyFjD,YAzFiD;EAAf,WAAA,CAAA,IAAA,EA2F/B,YA3F+B;EAOZ,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA0FlB,iBA1FkB,CA0FA,CA1FA,CAAA,CAAA,EA0FK,CA1FL;EAAlB,OAAA,CAAA,OAAA,EA8FF,yBA9FE,CAAA,EA8F0B,kBA9F1B;;AAIF,cAiGN,gBAAA,SAAyB,cAAA,CAjGnB;EAA4B,SAAA,IAAA,EAAA,QAAA;EAhBV,SAAA,IAAA,EAAA,MAAA;EAAc,WAAA,CAAA,IAAA,EAAA,MAAA;EA+BtC,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA+FQ,iBA/FY,CA+FM,CA/FN,CAAA,CAAA,EA+FW,CA/FX;EAEU,OAAA,CAAA,QAAA,EAiGvB,yBAjGuB,CAAA,EAiGK,kBAjGL;;AAAxB,cAsGN,gBAAA,SAAyB,cAAA,CAtGnB;EAEkB,SAAA,IAAA,EAAA,QAAA;EAAf,SAAA,IAAA,EAsGL,YAtGK;EAMiB,WAAA,CAAA,IAAA,EAkGnB,YAlGmB;EAAlB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAwGA,iBAxGA,CAwGkB,CAxGlB,CAAA,CAAA,EAwGuB,CAxGvB;EAAuB,OAAA,CAAA,OAAA,EA4GzB,yBA5GyB,CAAA,EA4GG,kBA5GH;;AAIG,cA+GlC,aAAA,SAAsB,cAAA,CA/GY;EAdN,SAAA,IAAA,EAAA,KAAA;EAAc,SAAA,UAAA,EAAA,MAAA;EAqB1C,SAAA,EAAA,EAAA,MAAA,GAAA,SAAsB;EAEf,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,EAAA,CAAA,EAAA,MAAA;EAEG,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAgHF,iBAhHE,CAgHgB,CAhHhB,CAAA,CAAA,EAgHqB,CAhHrB;EAMgB,OAAA,CAAA,QAAA,EA8GnB,yBA9GmB,CAAA,EA8GS,kBA9GT;;AAAK,cAmH/B,mBAAA,SAA4B,cAAA,CAnHG;EAIzB,SAAA,IAAA,EAAA,WAAA;EAA4B,SAAA,UAAA,EAAA,MAAA;EAdJ,SAAA,QAAA,EAgItB,aAhIsB,CAgIR,kBAhIQ,CAAA,GAAA,SAAA;EAAc,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAkIZ,aAlIY,CAkIE,kBAlIF,CAAA;EAqB5C,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAoHQ,iBApHQ,CAoHU,CApHV,CAAA,CAAA,EAoHe,CApHf;EAUU,OAAA,CAAA,OAAA,EA8GpB,yBA9GoB,CAAA,EA8GQ,kBA9GR;;AAAK,cAuH/B,gBAAA,SAAyB,cAAA,CAvHM;EAIxB,SAAA,IAAA,EAAA,QAAA;EAA4B,SAAA,OAAA,EAqH5B,YArH4B;EAdX,SAAA,UAAA,EAoId,aApIc,CAAA,OAAA,CAAA;EAAc,SAAA,QAAA,EAAA,OAAA;EAmBtC,SAAA,MAAA,EAmHM,QAnHgB,CAmHP,MAnHO,CAAA,MAAA,EAmHQ,mBAnHR,CAAA,CAAA,GAAA,SAAA;EAElB,WAAA,CAAA,OAAA,EAAA;IAEG,OAAA,EAkHP,YAlHO;IAMmB,UAAA,EA6GvB,aA7GuB,CAAA,OAAA,CAAA;IAAlB,QAAA,CAAA,EAAA,OAAA;IAAuB,MAAA,CAAA,EA+G/B,MA/G+B,CAAA,MAAA,EA+GhB,mBA/GgB,CAAA;EAIzB,CAAA;EAA4B,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAwH1B,iBAxH0B,CAwHR,CAxHQ,CAAA,CAAA,EAwHH,CAxHG;EAdJ,OAAA,CAAA,OAAA,EA0IxB,yBA1IwB,CAAA,EA0II,kBA1IJ;;AAqB9B,cAoIA,oBAAA,SAA6B,cAAA,CApIZ;EAaS,SAAA,IAAA,EAAA,YAAA;EAAlB,SAAA,OAAA,EAyHD,YAzHC;EAAuB,SAAA,OAAA,EAAA,MAAA;EAIxB,SAAA,MAAA,EAuHD,QAvHC,CAuHQ,MAvHR,CAAA,MAAA,EAuHuB,mBAvHvB,CAAA,CAAA,GAAA,SAAA;EAA4B,SAAA,WAAA,EAAA,MAAA,GAAA,SAAA;EAjBV,WAAA,CAAA,OAAA,EAAA;IAAc,OAAA,EA4IvC,YA5IuC;IAsBvC,OAAA,EAAA,MAAiB;IAEb,MAAA,CAAA,EAsHJ,MAtHI,CAAA,MAAA,EAsHW,mBAtHX,CAAA;IAEG,WAAA,CAAA,EAAA,MAAA;EAMmB,CAAA;EAAlB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA4HA,iBA5HA,CA4HkB,CA5HlB,CAAA,CAAA,EA4HuB,CA5HvB;EAAuB,OAAA,CAAA,OAAA,EAgIzB,yBAhIyB,CAAA,EAgIG,kBAhIH;;AAIG,cA2IlC,iBAAA,SAA0B,cAAA,CA3IQ;EAdT,SAAA,IAAA,EAAA,SAAA;EAAc,SAAA,IAAA,EAAA,OAAA;EAqBvC,SAAA,aAAc,EAAA,MAAA;EAYY,SAAA,SAAA,EAAA,OAAA,GAAA,SAAA;EAAlB,SAAA,WAAA,EAAA,MAAA,GAAA,SAAA;EAAuB,SAAA,WAAA,EAAA,MAAA,GAAA,SAAA;EAIxB,SAAA,KAAA,EA2HF,eA3HE,GAAA,SAAA;EAA4B,SAAA,GAAA,EAAA,MAAA,GAAA,SAAA;EAhBb,SAAA,kBAAA,EAAA,MAAA,GAAA,SAAA;EAAc,SAAA,WAAA,EAAA,MAAA,GAAA,SAAA;EAqBpC,WAAA,CAAA,OAAA,EAAA;IAGsB,IAAA,EAAA,OAAA;IAAd,aAAA,EAAA,MAAA;IAEsC,SAAA,CAAA,EAAA,OAAA;IAAd,WAAA,CAAA,EAAA,MAAA;IAON,WAAA,CAAA,EAAA,MAAA;IAAlB,KAAA,CAAA,EAqHT,eArHS;IAAuB,GAAA,CAAA,EAAA,MAAA;IAIzB,kBAAA,CAAA,EAAA,MAAA;IAA4B,WAAA,CAAA,EAAA,MAAA;EAhBN,CAAA;EAAc,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAmJlC,iBAnJkC,CAmJhB,CAnJgB,CAAA,CAAA,EAmJX,CAnJW;EAyB1C,OAAA,CAAA,OAAA,EA8HM,yBA9HW,CAAA,EA8HiB,kBA9HjB;;AAGP,cAmJV,eAAA,SAAwB,cAAA,CAnJd;EAEoB,SAAA,IAAA,EAAA,OAAA;EAAf,SAAA,MAAA,EAmJT,QAnJS,CAmJA,MAnJA,CAAA,MAAA,EAmJe,aAnJf,CAmJ6B,kBAnJ7B,CAAA,CAAA,CAAA;EAAT,WAAA,CAAA,MAAA,EAqJG,MArJH,CAAA,MAAA,EAqJkB,aArJlB,CAqJgC,kBArJhC,CAAA,CAAA;EAGN,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA4JQ,iBA5JR,CA4J0B,CA5J1B,CAAA,CAAA,EA4J+B,CA5J/B;EACG,OAAA,CAAA,OAAA,EA+JG,yBA/JH,CAAA,EA+J+B,kBA/J/B;;AAEH,cAsKA,qBAAA,SAA8B,cAAA,CAtK9B;EAa0B,SAAA,IAAA,EAAA,aAAA;EAAlB,SAAA,IAAA,EAAA,MAAA;EAAuB,SAAA,SAAA,EA4JtB,YA5JsB;EAIzB,SAAA,gBAAA,EAAA,MAAA;EAA4B,SAAA,cAAA,EAAA,MAAA;EA5BT,SAAA,EAAA,EAAA,MAAA;EAAc,SAAA,QAAA,EAAA,MAAA,GAAA,SAAA;EA2CvC,SAAA,UAAA,EAAA,MAAqB,GAAA,SAAA;EAEd,SAAA,uBAAA,EA6IgB,eA7IhB,GAAA,SAAA;EAEuB,WAAA,CAAA,OAAA,EAAA;IAAf,IAAA,EAAA,MAAA;IAAT,SAAA,EA+IJ,YA/II;IAIN,gBAAA,EAAA,MAAA;IAEe,cAAA,EAAA,MAAA;IAAf,EAAA,EAAA,MAAA;IAc0B,QAAA,CAAA,EAAA,MAAA;IAAlB,UAAA,CAAA,EAAA,MAAA;IAAuB,uBAAA,CAAA,EAiId,eAjIc;EAIzB,CAAA;EAA4B,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA2I1B,iBA3I0B,CA2IR,CA3IQ,CAAA,CAAA,EA2IH,CA3IG;EA5BL,OAAA,CAAA,OAAA,EA2KvB,yBA3KuB,CAAA,EA2KK,kBA3KL;;AA2C7B,cAkKA,eAAA,SAAwB,cAAA,CAlKN;EAOb,SAAA,IAAA,EAAA,OAAA;EAWN,SAAA,IAAA,EAAA,MAAA,GAAA;IAkB2B,SAAA,EAAA,EAAA,MAAA;IAAlB,SAAA,IAAA,EAAA,MAAA;EAAuB,CAAA;EAIzB,SAAA,EAAA,EAAA,MAAA,GA6HK,aA7HL,CAAA,MAAA,CAAA,GAAA,SAAA;EAA4B,SAAA,WAAA,EAAA,MAAA,GA8Hd,aA9Hc,CA8HA,wBA9HA,CAAA,GAAA,SAAA;EAxCR,SAAA,cAAA,EAAA,MAAA,GAAA,SAAA;EAAc,WAAA,CAAA,OAAA,EAAA;IAgExC,IAAA,EAAA,MAAA,GAAgB;MAE4B,EAAA,EAAA,MAAA;MAAd,IAAA,EAAA,MAAA;IAAf,CAAA;IAAT,EAAA,CAAA,EAAA,MAAA,GAyGD,aAzGC,CAAA,MAAA,CAAA;IAEgC,WAAA,CAAA,EAAA,MAAA,GAwGxB,aAxGwB,CAwGV,wBAxGU,CAAA;IAAd,cAAA,CAAA,EAAA,MAAA;EAAf,CAAA;EAUiB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAoHlB,iBApHkB,CAoHA,CApHA,CAAA,CAAA,EAoHK,CApHL;EAAlB,OAAA,CAAA,OAAA,EAwHF,yBAxHE,CAAA,EAwH0B,kBAxH1B;;AAIF,UAsIF,gBAAA,CAtIE;EAA4B,SAAA,QAAA,EAuI1B,YAvI0B;EAlBV,SAAA,MAAA,CAAA,EAAA;IAAc,SAAA,SAAA,CAAA,EAAA,SAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IA2BtC,SAAA,KAAA,CAAA,EAAA;MAGS,SAAA,KAAA,EAAA,OAAA;MAMc,SAAA,GAAA,EAAA,OAAA;MAIrB,SAAA,IAAA,CAAA,EAAA,MAAA;IAMe,CAAA;EAcS,CAAA;;AAAK,cAoG/B,yBAAA,SAAkC,cAAA,CApGH;EAIzB,SAAA,IAAA,EAAA,iBAAA;EAA4B,SAAA,WAAA,EAkGvB,YAlGuB,GAAA,SAAA;EArCJ,SAAA,MAAA,EAwIxB,QAxIwB,CAwIf,MAxIe,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,SAAA;EAAc,SAAA,MAAA,EAyItC,QAzIsC,CAyI7B,MAzI6B,CAAA,MAAA,EAyId,gBAzIc,CAAA,CAAA;EAuE5C,WAAA,CAAA,OAAgB,EAAA;IAGL,WAAA,CAAA,EAkEN,YAlEM;IACuB,MAAA,CAAA,EAkElC,MAlEkC,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA;IAAd,MAAA,EAmErB,MAnEqB,CAAA,MAAA,EAmEN,gBAnEM,CAAA;EAKf,CAAA;EACuB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAsEpB,iBAtEoB,CAsEF,CAtEE,CAAA,CAAA,EAsEG,CAtEH;EAAd,OAAA,CAAA,OAAA,EA0ER,yBA1EQ,CAAA,EA0EoB,kBA1EpB;;AAsBN,UAsEJ,iBAAA,CAtEI;EAAuB,SAAA,IAAA,EAAA,MAAA;EAIzB,SAAA,IAAA,CAAA,EAAA,MAAA;EAA4B,SAAA,MAAA,EAAA,MAAA,GAAA,WAAA,GAAA,SAAA,CAAA,OAAA,EAAA,OAAA,CAAA;;AApCI,cA4GtC,iBAAA,SAA0B,cAAA,CA5GY;EAsDlC,SAAA,IAAA,EAAA,SAAgB;EAQpB,SAAA,KAAA,EAAA,MAAA;EAEW,SAAA,iBAAA,EA+CM,aA/CN,CAAA,MAAA,CAAA,GAAA,SAAA;EACI,SAAA,KAAA,EA+CV,iBA/CU;EAAT,WAAA,CAAA,OAAA,EAAA;IACwB,KAAA,EAAA,MAAA;IAAf,iBAAA,CAAA,EAkDJ,aAlDI,CAAA,MAAA,CAAA;IAAT,KAAA,EAmDR,iBAnDQ;EAGD,CAAA;EACL,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA0DQ,iBA1DR,CA0D0B,CA1D1B,CAAA,CAAA,EA0D+B,CA1D/B;EACc,OAAA,CAAA,QAAA,EA6DP,yBA7DO,CAAA,EA6DqB,kBA7DrB;;AASY,UAyDtB,eAAA,CAzDsB;EAAlB,SAAA,MAAA,CAAA,EAAA,MAAA;EAAuB,SAAA,KAAA,CAAA,EA2DzB,YA3DyB;;AAIG,cA0DlC,cAAA,SAAuB,cAAA,CA1DW;EAtBA,SAAA,IAAA,EAAA,MAAA;EAAc,SAAA,WAAA,EAkFrC,YAlFqC,GAAA,SAAA;EAwC5C,SAAA,iBAAiB,EA2CJ,aA3CI,CAAA,MAAA,CAAA,GAAA,SAAA;EAMrB,SAAA,MAAA,EAsCM,QAtCY,CAsCH,MAtCG,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,SAAA;EAGD,SAAA,MAAA,EAoCX,QApCW,CAoCF,MApCE,CAAA,MAAA,EAoCa,eApCb,CAAA,CAAA;EACZ,WAAA,CAAA,OAAA,EAAA;IAIM,WAAA,CAAA,EAkCN,YAlCM;IACb,iBAAA,CAAA,EAkCa,aAlCb,CAAA,MAAA,CAAA;IAW4B,MAAA,CAAA,EAwB1B,MAxB0B,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA;IAAlB,MAAA,EAyBT,MAzBS,CAAA,MAAA,EAyBM,eAzBN,CAAA;EAAuB,CAAA;EAIxB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAiCC,iBAjCD,CAiCmB,CAjCnB,CAAA,CAAA,EAiCwB,CAjCxB;EAA4B,OAAA,CAAA,OAAA,EAqC7B,yBArC6B,CAAA,EAqCD,kBArCC;;AAxBK,cAiFxC,gBAAA,SAAyB,cAAA,CAjFe;EA6BpC,SAAA,IAAA,EAAA,QAAe;EAKnB,SAAA,KAAA,EAAA,MAAe,GAAA,SAAA;EAEJ,SAAA,MAAA,EAgDL,QAhDK,CAgDI,MAhDJ,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;EACM,WAAA,CAAA,MAAA,EAiDR,MAjDQ,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,KAAA,CAAA,EAAA,MAAA;EACF,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAuDP,iBAvDO,CAuDW,CAvDX,CAAA,CAAA,EAuDgB,CAvDhB;EAAT,OAAA,CAAA,QAAA,EA2DC,yBA3DD,CAAA,EA2D6B,kBA3D7B;;AACS,cA+Df,oBAAA,SAA6B,cAAA,CA/Dd;EAAT,SAAA,IAAA,EAAA,YAAA;EAGD,SAAA,KAAA,EAAA,MAAA,GAAA,SAAA;EACM,SAAA,MAAA,EA8DL,QA9DK,CA8DI,MA9DJ,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;EACX,WAAA,CAAA,MAAA,EA+DS,MA/DT,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,KAAA,CAAA,EAAA,MAAA;EACc,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAqEN,iBArEM,CAqEY,CArEZ,CAAA,CAAA,EAqEiB,CArEjB;EAAf,OAAA,CAAA,QAAA,EAyEQ,yBAzER,CAAA,EAyEoC,kBAzEpC;;AAYS,cAkER,sBAAA,SAA+B,cAAA,CAlEvB;EAAuB,SAAA,IAAA,EAAA,cAAA;EAIzB,SAAA,KAAA,EAAA,MAAA;EAA4B,SAAA,IAAA,EAAA,MAAA;EA3BX,SAAA,WAAA,EA6FZ,aA7FY,CAAA,MAAA,CAAA;EAAc,SAAA,aAAA,EAAA,MAAA;EA+CrC,SAAA,KAAA,EAAA,MAAiB;EAGF,SAAA,MAAA,EA8CT,QA9CS,CA8CA,MA9CA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,SAAA;EAAT,WAAA,CAAA,OAAA,EAAA;IAEG,KAAA,EAAA,MAAA;IAOiB,IAAA,EAAA,MAAA;IAAlB,WAAA,EA0CJ,aA1CI,CAAA,MAAA,CAAA;IAAuB,aAAA,EAAA,MAAA;IAIxB,KAAA,EAAA,MAAA;IAA4B,MAAA,CAAA,EAyCnC,MAzCmC,CAAA,MAAA,EAAA,OAAA,CAAA;EAhBV,CAAA;EAAc,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EA2E/B,iBA3E+B,CA2Eb,CA3Ea,CAAA,CAAA,EA2ER,CA3EQ;EAqBvC,OAAA,CAAA,QAAA,EA0DO,yBA1Dc,CAAA,EA0Dc,kBA1Dd;;AAGf,KA4DP,wBAAA,GACR,mBA7De,GA8Df,iBA9De,GA+Df,qBA/De;AAEG,KA+DV,kBAAA,GACR,eAhEkB,GAiElB,iBAjEkB,GAkElB,cAlEkB,GAmElB,eAnEkB,GAoElB,cApEkB,GAqElB,gBArEkB,GAsElB,gBAtEkB,GAuElB,eAvEkB,GAwElB,mBAxEkB,GAyElB,qBAzEkB,GA0ElB,eA1EkB,GA2ElB,qBA3EkB,GA4ElB,gBA5EkB,GA6ElB,gBA7EkB,GA8ElB,aA9EkB,GA+ElB,mBA/EkB,GAgFlB,gBAhFkB,GAiFlB,oBAjFkB,GAkFlB,iBAlFkB,GAmFlB,eAnFkB,GAoFlB,qBApFkB,GAqFlB,eArFkB,GAsFlB,yBAtFkB,GAuFlB,iBAvFkB,GAwFlB,cAxFkB,GAyFlB,gBAzFkB,GA0FlB,oBA1FkB,GA2FlB,sBA3FkB;;;UC92BL;EFtDK,QAAA,CAAA,IAAA,EEuDL,gBFvDiB,CAAA,EEuDE,CFvDF;gBEwDlB,kBAAkB;iBACjB,mBAAmB;oBAChB,sBAAsB;EDjD9B,IAAA,CAAA,IAAA,ECkDC,YDlDW,CAAA,ECkDI,CDlDJ;EAAU,OAAA,CAAA,IAAA,ECmDlB,cDnDkB,CAAA,ECmDD,CDnDC;EAAuC,MAAA,CAAA,IAAA,ECoD1D,mBDpD0D,CAAA,ECoDpC,CDpDoC;EAAf,GAAA,CAAA,IAAA,ECqD9C,WDrD8C,CAAA,ECqDhC,CDrDgC;EAAT,MAAA,CAAA,IAAA,ECsDlC,cDtDkC,CAAA,ECsDjB,CDtDiB;EAAQ,IAAA,CAAA,IAAA,ECuD5C,WDvD4C,CAAA,ECuD9B,CDvD8B;EAC7C,YAAA,CAAA,IAAA,ECuDS,oBDvDsB,CAAA,ECuDC,CDvDD;AAAa;AAkDR,UCQ/B,oBAAA,CDR+B;EAAlB,QAAA,EAAA,IAAA,ECSZ,gBDTY,CAAA,ECSO,YDTP;EAAuB,OAAA,EAAA,IAAA,ECUpC,eDVoC,CAAA,ECUlB,YDVkB;EACzB,QAAA,EAAA,IAAA,ECUV,gBDVU,CAAA,ECUS,YDVT;EAA4B,WAAA,EAAA,IAAA,ECWnC,mBDXmC,CAAA,ECWb,YDXa;EAFlB,IAAA,EAAA,IAAA,ECcxB,YDdwB,CAAA,ECcT,YDdS;EAAY,OAAA,EAAA,IAAA,ECejC,cDfiC,CAAA,ECehB,YDfgB;EAKrC,MAAA,EAAA,IAAA,ECWG,mBDXa,CAAA,ECWS,YDXT;EAEV,GAAA,EAAA,IAAA,ECUN,WDVM,CAAA,ECUQ,YDVR;EAEG,MAAA,EAAA,IAAA,ECSN,cDTM,CAAA,ECSW,YDTX;EAMiB,IAAA,EAAA,IAAA,ECIzB,WDJyB,CAAA,ECIX,YDJW;EAAlB,YAAA,EAAA,IAAA,ECKC,oBDLD,CAAA,ECKwB,YDLxB;;AAIF,UCIF,kBDJE,CAAA,CAAA,CAAA,CAAA;EAA4B,KAAA,CAAA,IAAA,ECKjC,gBDLiC,CAAA,ECKd,CDLc;EAdV,GAAA,CAAA,IAAA,ECoBzB,YDpByB,CAAA,ECoBV,CDpBU;EAAc,EAAA,CAAA,IAAA,ECqBxC,WDrBwC,CAAA,ECqB1B,CDrB0B;EAmBtC,GAAA,CAAA,IAAA,ECGD,YDHmB,CAAA,ECGJ,CDHI;EAEgB,MAAA,CAAA,IAAA,ECEhC,eDFgC,CAAA,ECEd,CDFc;EAAf,IAAA,CAAA,IAAA,ECGnB,eDHmB,CAAA,ECGD,CDHC;;AAES,UCIxB,mBAAA,CDJwB;EAAf,KAAA,EAAA,IAAA,ECKX,gBDLW,CAAA,ECKQ,eDLR;EAMa,GAAA,EAAA,IAAA,ECA1B,YDA0B,CAAA,ECAX,eDAW;EAAlB,EAAA,EAAA,IAAA,ECCT,WDDS,CAAA,ECCK,eDDL;EAAuB,GAAA,EAAA,IAAA,ECE/B,YDF+B,CAAA,ECEhB,eDFgB;EAIzB,MAAA,EAAA,IAAA,ECDH,eDCG,CAAA,ECDe,eDCf;EAA4B,IAAA,EAAA,IAAA,ECAjC,eDAiC,CAAA,ECAf,eDAe;;AAdM,UCiBpC,yBAAA,CDjBoC;EAiCxC,MAAA,CAAA,ECfF,mBDeiB;EAEF,OAAA,CAAA,EChBd,oBDgBc;;AAEN,UCfH,iBDeG,CAAA,CAAA,CAAA,CAAA;EAMmB,KAAA,CAAA,KAAA,ECpBxB,eDoBwB,CAAA,ECpBN,CDoBM;EAAlB,OAAA,CAAA,KAAA,ECnBJ,iBDmBI,CAAA,ECnBgB,CDmBhB;EAAuB,IAAA,CAAA,KAAA,EClB9B,cDkB8B,CAAA,EClBb,CDkBa;EAIxB,KAAA,CAAA,KAAA,ECrBL,eDqBK,CAAA,ECrBa,CDqBb;EAA4B,IAAA,CAAA,KAAA,ECpBlC,cDoBkC,CAAA,ECpBjB,CDoBiB;EAdZ,MAAA,CAAA,KAAA,ECLpB,gBDKoB,CAAA,ECLD,CDKC;EAAc,MAAA,CAAA,KAAA,ECJlC,gBDIkC,CAAA,ECJf,CDIe;EAmBrC,KAAA,CAAA,KAAA,ECtBE,eDsBc,CAAA,ECtBI,CDsBJ;EAaU,SAAA,CAAA,KAAA,EClCpB,mBDkCoB,CAAA,EClCE,CDkCF;EAAlB,WAAA,CAAA,KAAA,ECjCA,qBDiCA,CAAA,ECjCwB,CDiCxB;EAAuB,KAAA,CAAA,KAAA,EChC7B,eDgC6B,CAAA,EChCX,CDgCW;EAIxB,WAAA,CAAA,KAAA,ECnCC,qBDmCD,CAAA,ECnCyB,CDmCzB;EAA4B,MAAA,CAAA,KAAA,EClChC,gBDkCgC,CAAA,EClCb,CDkCa;EAjBX,MAAA,CAAA,KAAA,EChBrB,gBDgBqB,CAAA,EChBF,CDgBE;EAAc,GAAA,CAAA,KAAA,ECftC,aDesC,CAAA,ECftB,CDesB;EAsBtC,SAAA,CAAA,KAAA,ECpCM,mBDoCS,CAAA,ECpCa,CDoCb;EAaW,MAAA,CAAA,KAAA,EChDvB,gBDgDuB,CAAA,EChDJ,CDgDI;EAAlB,UAAA,CAAA,KAAA,EC/CD,oBD+CC,CAAA,EC/CsB,CD+CtB;EAAuB,OAAA,CAAA,KAAA,EC9C3B,iBD8C2B,CAAA,EC9CP,CD8CO;EAIxB,KAAA,CAAA,KAAA,ECjDL,eDiDK,CAAA,ECjDa,CDiDb;EAA4B,WAAA,CAAA,KAAA,EChD3B,qBDgD2B,CAAA,EChDH,CDgDG;EAjBZ,KAAA,CAAA,KAAA,EC9BrB,eD8BqB,CAAA,EC9BH,CD8BG;EAAc,eAAA,CAAA,KAAA,EC7BzB,yBD6ByB,CAAA,EC7BG,CD6BH;EAsBrC,OAAA,CAAA,KAAA,EClDI,iBDkDa,CAAA,EClDO,CDkDP;EAMK,IAAA,CAAA,KAAA,ECvDrB,cDuDqB,CAAA,ECvDJ,CDuDI;EAAd,MAAA,CAAA,KAAA,ECtDL,gBDsDK,CAAA,ECtDc,CDsDd;EACoB,UAAA,CAAA,KAAA,ECtDrB,oBDsDqB,CAAA,ECtDE,CDsDF;EAAf,YAAA,CAAA,KAAA,ECrDJ,sBDqDI,CAAA,ECrDqB,CDqDrB;;;;KEvLd,aAAA,GAAgB,SAAS,eAAe,eAAe,cAAc;iBAEjE,WAAA,OACR,eAAe,cAAc,gBAAgB,wBAC1C,cAAc;AHPH,iBGWN,YAAA,CHXkB,IAAA,EGY1B,YHZ0B,GGYX,aHZW,CGYG,YHZH,CAAA,GGYmB,aHZnB,CAAA,EAAA,IAAA,IGavB,aHbuB;uBGqCnB,gBAAA,SAAyB,YAAA;8BACV,oBAAoB,KAAK;6BAC1B,uBAAuB;AF9BpD;AAAkC,cEiCrB,gBAAA,SAAyB,gBAAA,CFjCJ;EAAuC,SAAA,IAAA,EAAA,UAAA;EAAf,SAAA,IAAA,EAAA,MAAA;EAAT,WAAA,CAAA,IAAA,EAAA,MAAA;EAAQ,OAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EE8C9B,gBF9C8B;EAC7C,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EEiDS,mBFjDsB,CEiDF,CFjDE,CAAA,CAAA,EEiDG,CFjDH;EAiD5B,OAAA,CAAA,QAAA,EEIK,oBFJU,CAAA,EEIa,YFJb;;AACA,cEQjB,eAAA,SAAwB,gBAAA,CFRP;EAAuB,SAAA,IAAA,EAAA,SAAA;EACzB,SAAA,KAAA,EAAA,OAAA;EAA4B,WAAA,CAAA,KAAA,EAAA,OAAA;EAFlB,OAAA,EAAA,CAAA,KAAA,EAAA,OAAA,CAAA,EEmBT,eFnBS;EAAY,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EEuB7B,mBFvB6B,CEuBT,CFvBS,CAAA,CAAA,EEuBJ,CFvBI;EAKrC,OAAA,CAAA,QAAA,EEsBO,oBFtBS,CAAA,EEsBc,YFtBd;;AAIP,cEuBT,gBAAA,SAAyB,gBAAA,CFvBhB;EAMiB,SAAA,IAAA,EAAA,UAAA;EAAlB,SAAA,EAAA,EAAA,MAAA;EAAuB,SAAA,IAAA,EEoB3B,YFpB2B,GEoBZ,aFpBY,CEoBE,YFpBF,CAAA,GEoBkB,aFpBlB;EAIzB,WAAA,CAAA,EAAA,EAAA,MAAA,EAAA,IAAA,EEkBa,YFlBb,GEkB4B,aFlB5B,CEkB0C,YFlB1C,CAAA,GEkB0D,aFlB1D;EAA4B,OAAA,EAAA,CAAA,EAAA,EAAA,MAAA,EAAA,IAAA,EEiCrC,YFjCqC,GEiCtB,aFjCsB,CEiCR,YFjCQ,CAAA,GEiCQ,aFjCR,CAAA,EEkC1C,gBFlC0C;EAdV,OAAA,GAAA,CAAA,GAAA,IAAA,EEoDf,aFpDe,CEoDD,YFpDC,CAAA,CAAA,EEoDe,gBFpDf;EAAc,OAAA,QAAA,CAAA,IAAA,EEwD3B,YFxD2B,EAAA,KAAA,EEwDN,YFxDM,CAAA,EEwDS,gBFxDT;EAmBtC,OAAA,QAAA,CAAA,GAAA,IAAkB,EEyCJ,aFzCI,CEyCU,YFzCV,CAAA,CAAA,EEyC0B,gBFzC1B;EAEgB,OAAA,MAAA,CAAA,QAAA,EE2CrB,YF3CqB,EAAA,OAAA,EE2CE,YF3CF,CAAA,EE2CiB,gBF3CjB;EAAf,OAAA,MAAA,CAAA,GAAA,IAAA,EE+CP,aF/CO,CE+CO,YF/CP,CAAA,CAAA,EE+CuB,gBF/CvB;EAAT,OAAA,OAAA,CAAA,IAAA,EEmDA,YFnDA,CAAA,EEmDe,gBFnDf;EAEkB,OAAA,OAAA,CAAA,IAAA,EEqDlB,YFrDkB,CAAA,EEqDH,gBFrDG;EAAf,OAAA,IAAA,CAAA,IAAA,EEyDN,YFzDM,CAAA,EEyDS,gBFzDT;EAMa,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EEuDlB,mBFvDkB,CEuDE,CFvDF,CAAA,CAAA,EEuDO,CFvDP;EAAlB,OAAA,CAAA,QAAA,EE2DD,oBF3DC,CAAA,EE2DsB,YF3DtB;;AAIF,cEsEN,mBAAA,SAA4B,gBAAA,CFtEtB;EAA4B,SAAA,IAAA,EAAA,aAAA;EAdR,SAAA,EAAA,EAAA,MAAA;EAAc,SAAA,GAAA,EEuFrC,YFvFqC,GEuFtB,aFvFsB,GAAA,IAAA;EAiCxC,WAAA,CAAA,EAAA,EAAA,MAAe,EAAA,GAAA,EEwDG,YFxDH,GEwDkB,aFxDlB,GAAA,IAAA;EAEF,OAAA,EAAA,CAAA,EAAA,EAAA,MAAA,EAAA,GAAA,EEiEG,YFjEH,GEiEkB,aFjElB,GAAA,IAAA,CAAA,EEiEyC,mBFjEzC;EAAT,OAAA,GAAA,CAAA,IAAA,EEqEE,YFrEF,CAAA,EEqEiB,mBFrEjB;EAEG,OAAA,GAAA,CAAA,IAAA,EEuED,YFvEC,CAAA,EEuEc,mBFvEd;EAMmB,OAAA,GAAA,CAAA,IAAA,EEqEpB,YFrEoB,CAAA,EEqEL,mBFrEK;EAAlB,OAAA,GAAA,CAAA,IAAA,EEyEF,YFzEE,CAAA,EEyEa,mBFzEb;EAAuB,OAAA,KAAA,CAAA,IAAA,EE6EvB,YF7EuB,CAAA,EE6ER,mBF7EQ;EAIxB,OAAA,IAAA,CAAA,IAAA,EE6EA,YF7EA,CAAA,EE6Ee,mBF7Ef;EAA4B,OAAA,IAAA,CAAA,IAAA,EEiF5B,YFjF4B,CAAA,EEiFb,mBFjFa;EAdZ,OAAA,QAAA,CAAA,IAAA,EEmGZ,YFnGY,CAAA,EEmGG,mBFnGH;EAAc,OAAA,KAAA,CAAA,CAAA,EEuGhC,mBFvGgC;EAmBrC,OAAA,SAAA,CAAA,IAAgB,EEwFJ,YFxFI,CAAA,EEwFW,mBFxFX;EAaU,OAAA,UAAA,CAAA,IAAA,EE+Eb,YF/Ea,CAAA,EE+EE,mBF/EF;EAAlB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EEmFA,mBFnFA,CEmFoB,CFnFpB,CAAA,CAAA,EEmFyB,CFnFzB;EAAuB,OAAA,CAAA,QAAA,EEuFxB,oBFvFwB,CAAA,EEuFD,YFvFC;;AAII,cEiGnC,YAAA,SAAqB,gBAAA,CFjGc;EAjBX,SAAA,IAAA,EAAA,MAAA;EAAc,SAAA,SAAA,EEoH7B,YFpH6B;EAsBtC,SAAA,KAAA,EE+FK,YF/FU;EAaW,SAAA,KAAA,EEmFrB,YFnFqB;EAAlB,WAAA,CAAA,SAAA,EEqFI,YFrFJ,EAAA,KAAA,EEqFyB,YFrFzB,EAAA,KAAA,EEqF8C,YFrF9C;EAAuB,OAAA,EAAA,CAAA,SAAA,EE6FrB,YF7FqB,EAAA,KAAA,EE6FA,YF7FA,EAAA,KAAA,EE6FqB,YF7FrB,CAAA,EE6FoC,YF7FpC;EAIxB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EE6FC,mBF7FD,CE6FqB,CF7FrB,CAAA,CAAA,EE6F0B,CF7F1B;EAA4B,OAAA,CAAA,QAAA,EEiG5B,oBFjG4B,CAAA,EEiGL,YFjGK;;AAjBE,UE4HjC,oBAAA,CF5HiC;EAsBrC,SAAA,KAAA,EEuGK,YFvGY;EAMK,SAAA,KAAA,EEkGjB,YFlGiB;;AACM,cEoG5B,cAAA,SAAuB,gBAAA,CFpGK;EAAf,SAAA,IAAA,EAAA,QAAA;EAAT,SAAA,QAAA,EEsGI,aFtGJ,CEsGkB,oBFtGlB,CAAA;EAOY,SAAA,QAAA,EEgGR,YFhGQ;EAAd,WAAA,CAAA,QAAA,EEkGS,aFlGT,CEkGuB,oBFlGvB,CAAA,EAAA,QAAA,EEkGwD,YFlGxD;EACW,OAAA,EAAA,CAAA,QAAA,EE0GJ,aF1GI,CE0GU,oBF1GV,CAAA,EAAA,QAAA,EE0G2C,YF1G3C,CAAA,EE0G0D,cF1G1D;EAAf,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EE8GU,mBF9GV,CE8G8B,CF9G9B,CAAA,CAAA,EE8GmC,CF9GnC;EA0B4B,OAAA,CAAA,QAAA,EEwFnB,oBFxFmB,CAAA,EEwFI,YFxFJ;;AAAK,cEoG/B,mBAAA,SAA4B,gBAAA,CFpGG;EAIzB,SAAA,IAAA,EAAA,QAAA;EAA4B,SAAA,KAAA,EEkG7B,YFlG6B;EA7CT,SAAA,IAAA,EEgJrB,YFhJqB;EAAc,SAAA,EAAA,EAAA,MAAA;EAiEvC,WAAA,CAAA,KAAA,EEkFQ,YFlFS,EAAA,IAAA,EEkFW,YFlFX,EAAA,EAAA,EAAA,MAAA;EAcS,OAAA,EAAA,CAAA,KAAA,EE4EpB,YF5EoB,EAAA,IAAA,EE4EA,YF5EA,EAAA,EAAA,EAAA,MAAA,CAAA,EE4E2B,mBF5E3B;EAAlB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EEgFA,mBFhFA,CEgFoB,CFhFpB,CAAA,CAAA,EEgFyB,CFhFzB;EAAuB,OAAA,CAAA,QAAA,EEoFxB,oBFpFwB,CAAA,EEoFD,YFpFC;;AAII,cE0FnC,WAAA,SAAoB,gBAAA,CF1Fe;EAlBV,SAAA,IAAA,EAAA,KAAA;EAAc,SAAA,KAAA,EE8GlC,YF9GkC;EAuBvC,SAAA,GAAA,EEwFG,YFxFa;EAET,SAAA,EAAA,EAAA,MAAA;EAC6B,WAAA,CAAA,KAAA,EEwF5B,YFxF4B,EAAA,GAAA,EEwFT,YFxFS,EAAA,EAAA,EAAA,MAAA;EAAf,OAAA,EAAA,CAAA,KAAA,EEgGf,YFhGe,EAAA,GAAA,EEgGI,YFhGJ,EAAA,EAAA,EAAA,MAAA,CAAA,EEgG+B,WFhG/B;EAAT,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EEoGJ,mBFpGI,CEoGgB,CFpGhB,CAAA,CAAA,EEoGqB,CFpGrB;EAEF,OAAA,CAAA,QAAA,EEsGH,oBFtGG,CAAA,EEsGoB,YFtGpB;;AAA4B,cEgHtC,cAAA,SAAuB,gBAAA,CFhHe;EAOZ,SAAA,IAAA,EAAA,QAAA;EAAlB,SAAA,KAAA,EE2GH,YF3GG;EAAuB,SAAA,YAAA,EE4GnB,YF5GmB;EAIzB,SAAA,GAAA,EEyGH,YFzGG;EAA4B,WAAA,CAAA,KAAA,EE2G1B,YF3G0B,EAAA,YAAA,EE2GE,YF3GF,EAAA,GAAA,EE2GqB,YF3GrB;EAhBV,OAAA,EAAA,CAAA,KAAA,EEmIlB,YFnIkB,EAAA,YAAA,EEmIU,YFnIV,EAAA,GAAA,EEmI6B,YFnI7B,CAAA,EEmI4C,cFnI5C;EAAc,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EEuI9B,mBFvI8B,CEuIV,CFvIU,CAAA,CAAA,EEuIL,CFvIK;EA+BtC,OAAA,CAAA,QAAA,EE4GO,oBF5Ga,CAAA,EE4GU,YF5GV;;AAEL,cEoHf,WAAA,SAAoB,gBAAA,CFpHL;EAAT,SAAA,IAAA,EAAA,KAAA;EAEkB,SAAA,IAAA,EEoHpB,QFpHoB,CEoHX,MFpHW,CAAA,MAAA,EEoHI,YFpHJ,CAAA,CAAA;EAAf,SAAA,GAAA,EEqHN,YFrHM;EAMiB,WAAA,CAAA,IAAA,EEiHnB,MFjHmB,CAAA,MAAA,EEiHJ,YFjHI,CAAA,EAAA,GAAA,EEiHgB,YFjHhB;EAAlB,OAAA,EAAA,CAAA,IAAA,EEwHH,MFxHG,CAAA,MAAA,EEwHY,YFxHZ,CAAA,EAAA,GAAA,EEwHgC,YFxHhC,CAAA,EEwH+C,WFxH/C;EAAuB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EE4HvB,mBF5HuB,CE4HH,CF5HG,CAAA,CAAA,EE4HE,CF5HF;EAIzB,OAAA,CAAA,QAAA,EE4HC,oBF5HD,CAAA,EE4HwB,YF5HxB;;AAdsB,cEoJ5B,oBAAA,SAA6B,gBAAA,CFpJD;EAAc,SAAA,IAAA,EAAA,cAAA;EAqB1C,SAAA,KAAA,EEiIK,aFjIiB,CEiIH,YFjIG,CAAA;EAEf,WAAA,CAAA,KAAA,EEiIC,aFjID,CEiIe,YFjIf,CAAA;EAEG,OAAA,EAAA,CAAA,KAAA,EEqIJ,aFrII,CEqIU,YFrIV,CAAA,CAAA,EEqI0B,oBFrI1B;EAMgB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EEmIlB,mBFnIkB,CEmIE,CFnIF,CAAA,CAAA,EEmIO,CFnIP;EAAlB,OAAA,CAAA,QAAA,EEuID,oBFvIC,CAAA,EEuIsB,YFvItB;;AAIF,KEyIP,YAAA,GACR,gBF1Ie,GE2If,eF3Ie,GE4If,gBF5Ie,GE6If,mBF7Ie,GE8If,YF9Ie,GE+If,cF/Ie,GEgJf,mBFhJe,GEiJf,WFjJe,GEkJf,cFlJe,GEmJf,WFnJe,GEoJf,oBFpJe;;;AD7UG,iBION,iBAAA,CJPkB,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IIO0B,eJP1B;uBIWnB,qBAAA,SAA8B,YAAA;8BACf,mBAAmB,KAAK;6BACzB,sBAAsB;EHJvC,GAAA,CAAA,IAAA,EGMA,eHNY,CAAA,EGMM,YHNN;;AAAiD,cGkB5D,gBAAA,SAAyB,qBAAA,CHlBmC;EAAf,SAAA,IAAA,EAAA,OAAA;EAAT,SAAA,KAAA,EAAA,MAAA;EAAQ,SAAA,EAAA,EAAA,MAAA;EAC7C,SAAA,KAAA,EGqBM,UHrBc;EAiDjB,WAAA,CAAA,KAAe,EAAA,MAAA,EAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EG1BkB,UH0BlB;EACkB,OAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EGnBF,UHmBE,CAAA,EGnBW,gBHmBX;EAAlB,OAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EGfI,UHeJ,CAAA,EGfiB,gBHejB;EAAuB,OAAA,GAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EGXlB,UHWkB,CAAA,EGXL,gBHWK;EACzB,OAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EGRM,UHQN,CAAA,EGRmB,gBHQnB;EAA4B,OAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EGJtB,UHIsB,CAAA,EGJT,gBHIS;EAFlB,OAAA,GAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EGEH,UHFG,CAAA,EGEU,gBHFV;EAAY,OAAA,GAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EGMf,UHNe,CAAA,EGMF,gBHNE;EAKrC,OAAA,EAAA,CAAA,KAAA,EAAA,MAAgB,EAAA,MAAA,EGKM,aHLN,CGKoB,UHLpB,CAAA,CAAA,EGKkC,gBHLlC;EAEV,OAAA,GAAA,CAAA,KAAA,EAAA,MAAA,EAAA,MAAA,EGOiB,aHPjB,CGO+B,UHP/B,CAAA,CAAA,EGO6C,gBHP7C;EAEG,OAAA,MAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EGSU,gBHTV;EAMiB,OAAA,SAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EGOJ,gBHPI;EAAlB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EGWA,kBHXA,CGWmB,CHXnB,CAAA,CAAA,EGWwB,CHXxB;EAAuB,OAAA,CAAA,QAAA,EGexB,mBHfwB,CAAA,EGeF,eHfE;;AAIG,cGgBlC,YAAA,SAAqB,qBAAA,CHhBa;EAdV,SAAA,IAAA,EAAA,KAAA;EAAc,SAAA,KAAA,EGgCjC,aHhCiC,CGgCnB,eHhCmB,CAAA;EAmBtC,WAAA,CAAA,KAAA,EGeQ,aHfU,CGeI,eHfJ,CAAA;EAEgB,OAAA,EAAA,CAAA,KAAA,EGsB5B,aHtB4B,CGsBd,eHtBc,CAAA,CAAA,EGsBK,YHtBL;EAAf,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EG0BX,kBH1BW,CG0BQ,CH1BR,CAAA,CAAA,EG0Ba,CH1Bb;EAAT,OAAA,CAAA,QAAA,EG8BH,mBH9BG,CAAA,EG8BmB,eH9BnB;;AAEG,cGkCb,WAAA,SAAoB,qBAAA,CHlCP;EAMa,SAAA,IAAA,EAAA,IAAA;EAAlB,SAAA,KAAA,EG8BH,aH9BG,CG8BW,eH9BX,CAAA;EAAuB,WAAA,CAAA,KAAA,EGgCvB,aHhCuB,CGgCT,eHhCS,CAAA;EAIzB,OAAA,EAAA,CAAA,KAAA,EGqCA,aHrCA,CGqCc,eHrCd,CAAA,CAAA,EGqCiC,WHrCjC;EAA4B,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EGyC1B,kBHzC0B,CGyCP,CHzCO,CAAA,CAAA,EGyCF,CHzCE;EAdR,OAAA,CAAA,QAAA,EG2DnB,mBH3DmB,CAAA,EG2DG,eH3DH;;AAiC1B,cGgCA,YAAA,SAAqB,qBAAA,CHhCN;EAEF,SAAA,IAAA,EAAA,KAAA;EAAT,SAAA,IAAA,EGgCA,eHhCA;EAEG,WAAA,CAAA,IAAA,EGgCA,eHhCA;EAMmB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EGgClB,kBHhCkB,CGgCC,CHhCD,CAAA,CAAA,EGgCM,CHhCN;EAAlB,OAAA,CAAA,QAAA,EGoCD,mBHpCC,CAAA,EGoCqB,eHpCrB;;AAID,cGsCP,eAAA,SAAwB,qBAAA,CHtCjB;EAA4B,SAAA,IAAA,EAAA,QAAA;EAdZ,SAAA,KAAA,EAAA,MAAA;EAAc,SAAA,MAAA,EAAA,OAAA;EAmBrC,WAAA,CAAA,KAAA,EAAgB,MAAA,EAAA,MAAA,EAAA,OAAA;EAaU,OAAA,MAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EGgCP,eHhCO;EAAlB,OAAA,SAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EGoCc,eHpCd;EAAuB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EGwCvB,kBHxCuB,CGwCJ,CHxCI,CAAA,CAAA,EGwCC,CHxCD;EAIxB,OAAA,CAAA,QAAA,EGwCA,mBHxCA,CAAA,EGwCsB,eHxCtB;;AAjBiB,cG8DxB,eAAA,SAAwB,qBAAA,CH9DA;EAAc,SAAA,IAAA,EAAA,MAAA;EAsBtC,SAAA,OAAA,EG0CO,YH1CQ;EAaW,WAAA,CAAA,OAAA,EG+BhB,YH/BgB;EAAlB,OAAA,EAAA,CAAA,OAAA,EGqCA,YHrCA,CAAA,EGqCe,eHrCf;EAAuB,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EGyCvB,kBHzCuB,CGyCJ,CHzCI,CAAA,CAAA,EGyCC,CHzCD;EAIxB,OAAA,CAAA,QAAA,EGyCA,mBHzCA,CAAA,EGyCsB,eHzCtB;;AAjBgB,KG+DxB,eAAA,GACR,gBHhEgC,GGiEhC,YHjEgC,GGkEhC,WHlEgC,GGmEhC,YHnEgC,GGoEhC,eHpEgC,GGqEhC,eHrEgC;;;cI1JvB,mBAAA,SAA4B,YAAA;;ELHnB,SAAA,UAAY,EAAA,MAAA;qBKMb,cAAc;4CAES,cAAc;;AJC9C,cIOC,mBAAA,SAA4B,YAAA,CJPjB;EAAU,SAAA,IAAA,EAAA,cAAA;EAAuC,SAAA,UAAA,EAAA,MAAA;EAAf,SAAA,QAAA,EIUrC,QJVqC;EAAT,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EIYL,QJZK;;AACrC,cImBC,oBAAA,SAA6B,YAAA,CJnBa;EAiDxC,SAAA,IAAA,EAAA,eAAe;EACkB,SAAA,UAAA,EAAA,MAAA;EAAlB,SAAA,SAAA,EI5BR,aJ4BQ,CI5BM,QJ4BN,CAAA;EAAuB,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EI1BR,aJ0BQ,CI1BM,QJ0BN,CAAA;;AACG,cInB3C,mBAAA,SAA4B,YAAA,CJmBe;EAFlB,SAAA,IAAA,EAAA,cAAA;EAAY,SAAA,UAAA,EAAA,MAAA;EAKrC,SAAA,MAAA,EInBM,QJmBU;EAEV,SAAA,MAAA,EIpBA,QJoBA,GIpBW,aJoBX,CIpByB,QJoBzB,CAAA;EAEG,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EIpBoB,QJoBpB,EAAA,MAAA,EIpBsC,QJoBtC,GIpBiD,aJoBjD,CIpB+D,QJoB/D,CAAA;;AAMD,cIjBR,oBAAA,SAA6B,YAAA,CJiBrB;EAAuB,SAAA,IAAA,EAAA,eAAA;EAIzB,SAAA,UAAA,EAAA,MAAA;EAA4B,SAAA,MAAA,EIlB5B,QJkB4B;EAdV,SAAA,MAAA,EIHlB,QJGkB,GIHP,aJGO,CIHO,QJGP,CAAA;EAAc,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EIDT,QJCS,EAAA,MAAA,EIDS,QJCT,GIDoB,aJCpB,CIDkC,QJClC,CAAA;AAmBnD;AAE+C,cIblC,mBAAA,SAA4B,YAAA,CJaM;EAAf,SAAA,IAAA,EAAA,cAAA;EAAT,SAAA,UAAA,EAAA,MAAA;EAEkB,SAAA,MAAA,EIZtB,QJYsB;EAAf,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EIVgB,QJUhB;;AAML,cIRR,oBAAA,SAA6B,YAAA,CJQrB;EAAuB,SAAA,IAAA,EAAA,eAAA;EAIzB,SAAA,UAAA,EAAA,MAAA;EAA4B,SAAA,MAAA,EIT5B,QJS4B;EAdR,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EIOG,QJPH;;AAiC1B,cIlBA,0BAAA,SAAmC,YAAA,CJkBpB;EAEF,SAAA,IAAA,EAAA,qBAAA;EAAT,SAAA,UAAA,EAAA,MAAA;EAEG,SAAA,MAAA,EInBD,QJmBC;EAMmB,SAAA,MAAA,EIxBpB,QJwBoB,GIxBT,aJwBS,CIxBK,QJwBL,CAAA;EAAlB,SAAA,MAAA,EAAA,OAAA;EAAuB,SAAA,IAAA,EItB3B,MJsB2B,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,SAAA;EAIxB;;;;AAKpB;EAauC,SAAA,cAAA,EAAA,QAAA,GAAA,OAAA,GAAA,SAAA;EAAlB,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EIlCT,QJkCS,EAAA,MAAA,EIjCT,QJiCS,GIjCE,aJiCF,CIjCgB,QJiChB,CAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EI/BV,MJ+BU,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,cAAA,CAAA,EAAA,QAAA,GAAA,OAAA;;AAID,cIrBP,0BAAA,SAAmC,YAAA,CJqB5B;EAA4B,SAAA,IAAA,EAAA,qBAAA;EAjBX,SAAA,UAAA,EAAA,MAAA;EAAc,SAAA,MAAA,EIDhC,QJCgC;EAsBtC,SAAA,IAAA,EItBI,MJsBW,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,SAAA;EAaW,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EIjCG,QJiCH,EAAA,IAAA,CAAA,EIjCoB,MJiCpB,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;AAAK,KIxBhC,eAAA,GACR,mBJuBwC,GItBxC,mBJsBwC,GIrBxC,oBJqBwC,GIpBxC,mBJoBwC,GInBxC,oBJmBwC,GIlBxC,mBJkBwC,GIjBxC,oBJiBwC,GIhBxC,0BJgBwC,GIfxC,0BJewC;;;KKrKhC,eAAA,GAAkB,eAAe,cAAc,cAAc;cAE5D,gBAAA,SAAyB,YAAA;;ELE1B,SAAA,UAAY,EAAA,MAAA;EAAU,SAAA,QAAA,EKCb,MLDa,CAAA,MAAA,EKCE,ULDF,CAAA;EAAuC,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EKG7B,MLH6B,CAAA,MAAA,EKGd,ULHc,CAAA;;AAAxB,cKWpC,gBAAA,SAAyB,YAAA,CLXW;EAAQ,SAAA,IAAA,EAAA,WAAA;EAC7C,SAAA,UAAA,EAAA,MAAoB;EAiDjB,SAAA,MAAA,EKpCI,eLoCW;EACkB,SAAA,MAAA,EKpC7B,eLoC6B;EAAlB;;;;;EADoB,SAAA,MAAA,EAAA,OAAA;EAKrC,WAAA,CAAA,UAAgB,EAAA,MAAA,EAAA,MAAA,EK9BjB,eL8BiB,EAAA,MAAA,EK7BjB,eL6BiB,EAAA,MAAA,CAAA,EAAA,OAAA;;AAIP,cKrBT,gBAAA,SAAyB,YAAA,CLqBhB;EAMiB,SAAA,IAAA,EAAA,WAAA;EAAlB,SAAA,UAAA,EAAA,MAAA;EAAuB,SAAA,MAAA,EKxBzB,eLwByB;EAIzB,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EK1BuB,eL0BvB;;AAdkB,cKJxB,iBAAA,SAA0B,YAAA,CLIF;EAAc,SAAA,IAAA,EAAA,YAAA;EAmBtC,SAAA,UAAA,EAAkB,MAAA;EAEgB,SAAA,SAAA,EKtBzB,aLsByB,CKtBX,MLsBW,CAAA,MAAA,EKtBI,ULsBJ,CAAA,CAAA;EAAf,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EKpBa,aLoBb,CKpB2B,MLoB3B,CAAA,MAAA,EKpB0C,ULoB1C,CAAA,CAAA;;AAES,cKd5B,iBAAA,SAA0B,YAAA,CLcE;EAAf,SAAA,IAAA,EAAA,YAAA;EAMa,SAAA,UAAA,EAAA,MAAA;EAAlB,SAAA,MAAA,EKjBF,eLiBE;EAAuB,SAAA,MAAA,EKhBzB,eLgByB;EAIzB;;;;AAmBnB;EAE0B,SAAA,MAAA,EAAA,OAAA;EAAT,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EK/BL,eL+BK,EAAA,MAAA,EK9BL,eL8BK,EAAA,MAAA,CAAA,EAAA,OAAA;;AAQsB,cK1B1B,iBAAA,SAA0B,YAAA,CL0BA;EAAlB,SAAA,IAAA,EAAA,YAAA;EAAuB,SAAA,UAAA,EAAA,MAAA;EAIxB,SAAA,MAAA,EK3BD,eL2BC;EAA4B,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EKzBN,eLyBM;;AAdE,cKHrC,uBAAA,SAAgC,YAAA,CLGK;EAmBrC,SAAA,IAAA,EAAA,kBAAgB;EAaU,SAAA,UAAA,EAAA,MAAA;EAAlB,SAAA,MAAA,EKhCF,eLgCE;EAAuB,SAAA,MAAA,EK/BzB,eL+ByB;EAIxB,SAAA,MAAA,EAAA,OAAA;EAA4B,SAAA,IAAA,EKjC/B,MLiC+B,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,SAAA;EAjBX,SAAA,cAAA,EAAA,QAAA,GAAA,OAAA;EAAc,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EKXvC,eLWuC,EAAA,MAAA,EKVvC,eLUuC,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EKRxC,MLQwC,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,cAAA,CAAA,EAAA,QAAA,GAAA,OAAA;AAsBnD;AAauC,cK7B1B,uBAAA,SAAgC,YAAA,CL6BN;EAAlB,SAAA,IAAA,EAAA,kBAAA;EAAuB,SAAA,UAAA,EAAA,MAAA;EAIxB,SAAA,MAAA,EK9BD,eL8BC;EAA4B,SAAA,IAAA,EK7B/B,ML6B+B,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,SAAA;EAjBZ,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EKVM,eLUN,EAAA,IAAA,CAAA,EKV8B,MLU9B,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;AAsBvB,cKvBA,gBAAA,SAAyB,YAAA,CLuBR;EAMK,SAAA,IAAA,EAAA,WAAA;EAAd,SAAA,UAAA,EAAA,MAAA;EACoB,SAAA,QAAA,EK3BpB,aL2BoB,CK3BN,kBL2BM,CAAA;EAAf,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EKzBkB,aLyBlB,CKzBgC,kBLyBhC,CAAA;;AAOG,KKxBjB,eAAA,GACR,gBLuByB,GKtBzB,iBLsByB,GKrBzB,gBLqByB,GKpBzB,iBLoByB,GKnBzB,gBLmByB,GKlBzB,iBLkByB,GKjBzB,uBLiByB,GKhBzB,uBLgByB,GKfzB,gBLeyB,GKdzB,eLcyB;;;cM9Lf;UAEG,8CAA8C,kBAAkB;EPL3D,SAAA,UAAY,EAAA,MAAA;oBOOd;iBACH;YACL,mBAAA,IAAuB;ANAnC"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@prisma-next/mongo-query-ast",
3
- "version": "0.4.0-dev.9",
3
+ "version": "0.4.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.4.0-dev.9",
9
- "@prisma-next/framework-components": "0.4.0-dev.9",
10
- "@prisma-next/mongo-value": "0.4.0-dev.9",
11
- "@prisma-next/mongo-contract": "0.4.0-dev.9"
8
+ "@prisma-next/contract": "0.4.1",
9
+ "@prisma-next/framework-components": "0.4.1",
10
+ "@prisma-next/mongo-value": "0.4.1",
11
+ "@prisma-next/mongo-contract": "0.4.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(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec) {
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(collection: string, filter: MongoFilterExpr, update: MongoUpdateSpec) {
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: boolean,
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
  }
@@ -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: AnyMongoCommand;
8
+ readonly command: Command;
9
9
  readonly meta: PlanMeta;
10
10
  readonly [__mongoQueryPlanRow]?: Row;
11
11
  }
@@ -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: boolean,
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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"}