@prisma-next/mongo-query-ast 0.5.0-dev.65 → 0.5.0-dev.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { A as MongoFieldFilter, D as MongoAndExpr, M as MongoNotExpr, N as MongoOrExpr, O as MongoExistsExpr, Rt as MongoAstNode, et as MongoFilterVisitor, j as MongoFilterExpr, k as MongoExprFilter, t as MongoQueryPlan } from "../query-plan-TsZqsdut.mjs";
1
+ import { A as MongoFieldFilter, D as MongoAndExpr, M as MongoNotExpr, N as MongoOrExpr, O as MongoExistsExpr, Rt as MongoAstNode, et as MongoFilterVisitor, j as MongoFilterExpr, k as MongoExprFilter, t as MongoQueryPlan } from "../query-plan-DtOq9tt4.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 +1 @@
1
- {"version":3,"file":"control.d.mts","names":[],"sources":["../../src/inspection-commands.ts","../../src/ddl-visitors.ts","../../src/ddl-commands.ts","../../src/migration-helpers.ts","../../src/migration-operation-types.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"control.d.mts","names":[],"sources":["../../src/inspection-commands.ts","../../src/ddl-visitors.ts","../../src/ddl-commands.ts","../../src/migration-helpers.ts","../../src/migration-operation-types.ts"],"mappings":"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"}
@@ -1,5 +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-BSKn8EyU.mjs";
2
-
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-A0tk5q1u.mjs";
3
2
  //#region src/ddl-commands.ts
4
3
  var CreateIndexCommand = class extends MongoAstNode {
5
4
  kind = "createIndex";
@@ -113,7 +112,6 @@ var CollModCommand = class extends MongoAstNode {
113
112
  return visitor.collMod(this);
114
113
  }
115
114
  };
116
-
117
115
  //#endregion
118
116
  //#region src/inspection-commands.ts
119
117
  var ListIndexesCommand = class extends MongoAstNode {
@@ -138,7 +136,6 @@ var ListCollectionsCommand = class extends MongoAstNode {
138
136
  return visitor.listCollections(this);
139
137
  }
140
138
  };
141
-
142
139
  //#endregion
143
140
  //#region src/migration-helpers.ts
144
141
  function buildIndexOpId(verb, collection, keys) {
@@ -152,7 +149,7 @@ function keysToKeySpec(keys) {
152
149
  for (const k of keys) spec[k.field] = k.direction;
153
150
  return spec;
154
151
  }
155
-
156
152
  //#endregion
157
153
  export { CollModCommand, CreateCollectionCommand, CreateIndexCommand, DropCollectionCommand, DropIndexCommand, ListCollectionsCommand, ListIndexesCommand, MongoAndExpr, MongoExistsExpr, MongoExprFilter, MongoFieldFilter, MongoNotExpr, MongoOrExpr, buildIndexOpId, defaultMongoIndexName, keysToKeySpec };
154
+
158
155
  //# sourceMappingURL=control.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"control.mjs","names":["spec: Record<string, number | string>"],"sources":["../../src/ddl-commands.ts","../../src/inspection-commands.ts","../../src/migration-helpers.ts"],"sourcesContent":["import type { MongoIndexKey } from '@prisma-next/mongo-contract';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoDdlCommandVisitor } from './ddl-visitors';\n\nexport interface CreateIndexOptions {\n readonly unique?: boolean | undefined;\n readonly sparse?: boolean | undefined;\n readonly expireAfterSeconds?: number | undefined;\n readonly partialFilterExpression?: Record<string, unknown> | undefined;\n readonly name?: string | undefined;\n readonly wildcardProjection?: Record<string, 0 | 1> | undefined;\n readonly collation?: Record<string, unknown> | undefined;\n readonly weights?: Record<string, number> | undefined;\n readonly default_language?: string | undefined;\n readonly language_override?: string | undefined;\n}\n\nexport class CreateIndexCommand extends MongoAstNode {\n readonly kind = 'createIndex' as const;\n readonly collection: string;\n readonly keys: ReadonlyArray<MongoIndexKey>;\n readonly unique: boolean | undefined;\n readonly sparse: boolean | undefined;\n readonly expireAfterSeconds: number | undefined;\n readonly partialFilterExpression: Record<string, unknown> | undefined;\n readonly name: string | undefined;\n readonly wildcardProjection: Record<string, 0 | 1> | undefined;\n readonly collation: Record<string, unknown> | undefined;\n readonly weights: Record<string, number> | undefined;\n readonly default_language: string | undefined;\n readonly language_override: string | undefined;\n\n constructor(\n collection: string,\n keys: ReadonlyArray<MongoIndexKey>,\n options?: CreateIndexOptions,\n ) {\n super();\n this.collection = collection;\n this.keys = keys;\n this.unique = options?.unique;\n this.sparse = options?.sparse;\n this.expireAfterSeconds = options?.expireAfterSeconds;\n this.partialFilterExpression = options?.partialFilterExpression;\n this.name = options?.name;\n this.wildcardProjection = options?.wildcardProjection;\n this.collation = options?.collation;\n this.weights = options?.weights;\n this.default_language = options?.default_language;\n this.language_override = options?.language_override;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.createIndex(this);\n }\n}\n\nexport class DropIndexCommand extends MongoAstNode {\n readonly kind = 'dropIndex' as const;\n readonly collection: string;\n readonly name: string;\n\n constructor(collection: string, name: string) {\n super();\n this.collection = collection;\n this.name = name;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.dropIndex(this);\n }\n}\n\nexport interface CreateCollectionOptions {\n readonly validator?: Record<string, unknown> | undefined;\n readonly validationLevel?: 'strict' | 'moderate' | undefined;\n readonly validationAction?: 'error' | 'warn' | undefined;\n readonly capped?: boolean | undefined;\n readonly size?: number | undefined;\n readonly max?: number | undefined;\n readonly timeseries?:\n | {\n timeField: string;\n metaField?: string;\n granularity?: 'seconds' | 'minutes' | 'hours';\n }\n | undefined;\n readonly collation?: Record<string, unknown> | undefined;\n readonly changeStreamPreAndPostImages?: { enabled: boolean } | undefined;\n readonly clusteredIndex?:\n | {\n key: Record<string, number>;\n unique: boolean;\n name?: string;\n }\n | undefined;\n}\n\nexport class CreateCollectionCommand extends MongoAstNode {\n readonly kind = 'createCollection' as const;\n readonly collection: string;\n readonly validator: Record<string, unknown> | undefined;\n readonly validationLevel: 'strict' | 'moderate' | undefined;\n readonly validationAction: 'error' | 'warn' | undefined;\n readonly capped: boolean | undefined;\n readonly size: number | undefined;\n readonly max: number | undefined;\n readonly timeseries:\n | {\n timeField: string;\n metaField?: string;\n granularity?: 'seconds' | 'minutes' | 'hours';\n }\n | undefined;\n readonly collation: Record<string, unknown> | undefined;\n readonly changeStreamPreAndPostImages: { enabled: boolean } | undefined;\n readonly clusteredIndex:\n | {\n key: Record<string, number>;\n unique: boolean;\n name?: string;\n }\n | undefined;\n\n constructor(collection: string, options?: CreateCollectionOptions) {\n super();\n this.collection = collection;\n this.validator = options?.validator;\n this.validationLevel = options?.validationLevel;\n this.validationAction = options?.validationAction;\n this.capped = options?.capped;\n this.size = options?.size;\n this.max = options?.max;\n this.timeseries = options?.timeseries;\n this.collation = options?.collation;\n this.changeStreamPreAndPostImages = options?.changeStreamPreAndPostImages;\n this.clusteredIndex = options?.clusteredIndex;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.createCollection(this);\n }\n}\n\nexport class DropCollectionCommand extends MongoAstNode {\n readonly kind = 'dropCollection' as const;\n readonly collection: string;\n\n constructor(collection: string) {\n super();\n this.collection = collection;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.dropCollection(this);\n }\n}\n\nexport interface CollModOptions {\n readonly validator?: Record<string, unknown> | undefined;\n readonly validationLevel?: 'strict' | 'moderate' | undefined;\n readonly validationAction?: 'error' | 'warn' | undefined;\n readonly changeStreamPreAndPostImages?: { enabled: boolean } | undefined;\n}\n\nexport class CollModCommand extends MongoAstNode {\n readonly kind = 'collMod' as const;\n readonly collection: string;\n readonly validator: Record<string, unknown> | undefined;\n readonly validationLevel: 'strict' | 'moderate' | undefined;\n readonly validationAction: 'error' | 'warn' | undefined;\n readonly changeStreamPreAndPostImages: { enabled: boolean } | undefined;\n\n constructor(collection: string, options: CollModOptions) {\n super();\n this.collection = collection;\n this.validator = options.validator;\n this.validationLevel = options.validationLevel;\n this.validationAction = options.validationAction;\n this.changeStreamPreAndPostImages = options.changeStreamPreAndPostImages;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.collMod(this);\n }\n}\n\nexport type AnyMongoDdlCommand =\n | CreateIndexCommand\n | DropIndexCommand\n | CreateCollectionCommand\n | DropCollectionCommand\n | CollModCommand;\n","import { MongoAstNode } from './ast-node';\nimport type { MongoInspectionCommandVisitor } from './ddl-visitors';\n\nexport class ListIndexesCommand extends MongoAstNode {\n readonly kind = 'listIndexes' as const;\n readonly collection: string;\n\n constructor(collection: string) {\n super();\n this.collection = collection;\n this.freeze();\n }\n\n accept<R>(visitor: MongoInspectionCommandVisitor<R>): R {\n return visitor.listIndexes(this);\n }\n}\n\nexport class ListCollectionsCommand extends MongoAstNode {\n readonly kind = 'listCollections' as const;\n\n constructor() {\n super();\n this.freeze();\n }\n\n accept<R>(visitor: MongoInspectionCommandVisitor<R>): R {\n return visitor.listCollections(this);\n }\n}\n\nexport type AnyMongoInspectionCommand = ListIndexesCommand | ListCollectionsCommand;\n","import type { MongoIndexKey } from '@prisma-next/mongo-contract';\n\nexport function buildIndexOpId(\n verb: 'create' | 'drop',\n collection: string,\n keys: ReadonlyArray<MongoIndexKey>,\n): string {\n const keyStr = keys.map((k) => `${k.field}:${k.direction}`).join(',');\n return `index.${collection}.${verb}(${keyStr})`;\n}\n\nexport function defaultMongoIndexName(keys: ReadonlyArray<MongoIndexKey>): string {\n return keys.map((k) => `${k.field}_${k.direction}`).join('_');\n}\n\nexport function keysToKeySpec(keys: ReadonlyArray<MongoIndexKey>): Record<string, number | string> {\n const spec: Record<string, number | string> = {};\n for (const k of keys) {\n spec[k.field] = k.direction;\n }\n return spec;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"control.mjs","names":[],"sources":["../../src/ddl-commands.ts","../../src/inspection-commands.ts","../../src/migration-helpers.ts"],"sourcesContent":["import type { MongoIndexKey } from '@prisma-next/mongo-contract';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoDdlCommandVisitor } from './ddl-visitors';\n\nexport interface CreateIndexOptions {\n readonly unique?: boolean | undefined;\n readonly sparse?: boolean | undefined;\n readonly expireAfterSeconds?: number | undefined;\n readonly partialFilterExpression?: Record<string, unknown> | undefined;\n readonly name?: string | undefined;\n readonly wildcardProjection?: Record<string, 0 | 1> | undefined;\n readonly collation?: Record<string, unknown> | undefined;\n readonly weights?: Record<string, number> | undefined;\n readonly default_language?: string | undefined;\n readonly language_override?: string | undefined;\n}\n\nexport class CreateIndexCommand extends MongoAstNode {\n readonly kind = 'createIndex' as const;\n readonly collection: string;\n readonly keys: ReadonlyArray<MongoIndexKey>;\n readonly unique: boolean | undefined;\n readonly sparse: boolean | undefined;\n readonly expireAfterSeconds: number | undefined;\n readonly partialFilterExpression: Record<string, unknown> | undefined;\n readonly name: string | undefined;\n readonly wildcardProjection: Record<string, 0 | 1> | undefined;\n readonly collation: Record<string, unknown> | undefined;\n readonly weights: Record<string, number> | undefined;\n readonly default_language: string | undefined;\n readonly language_override: string | undefined;\n\n constructor(\n collection: string,\n keys: ReadonlyArray<MongoIndexKey>,\n options?: CreateIndexOptions,\n ) {\n super();\n this.collection = collection;\n this.keys = keys;\n this.unique = options?.unique;\n this.sparse = options?.sparse;\n this.expireAfterSeconds = options?.expireAfterSeconds;\n this.partialFilterExpression = options?.partialFilterExpression;\n this.name = options?.name;\n this.wildcardProjection = options?.wildcardProjection;\n this.collation = options?.collation;\n this.weights = options?.weights;\n this.default_language = options?.default_language;\n this.language_override = options?.language_override;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.createIndex(this);\n }\n}\n\nexport class DropIndexCommand extends MongoAstNode {\n readonly kind = 'dropIndex' as const;\n readonly collection: string;\n readonly name: string;\n\n constructor(collection: string, name: string) {\n super();\n this.collection = collection;\n this.name = name;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.dropIndex(this);\n }\n}\n\nexport interface CreateCollectionOptions {\n readonly validator?: Record<string, unknown> | undefined;\n readonly validationLevel?: 'strict' | 'moderate' | undefined;\n readonly validationAction?: 'error' | 'warn' | undefined;\n readonly capped?: boolean | undefined;\n readonly size?: number | undefined;\n readonly max?: number | undefined;\n readonly timeseries?:\n | {\n timeField: string;\n metaField?: string;\n granularity?: 'seconds' | 'minutes' | 'hours';\n }\n | undefined;\n readonly collation?: Record<string, unknown> | undefined;\n readonly changeStreamPreAndPostImages?: { enabled: boolean } | undefined;\n readonly clusteredIndex?:\n | {\n key: Record<string, number>;\n unique: boolean;\n name?: string;\n }\n | undefined;\n}\n\nexport class CreateCollectionCommand extends MongoAstNode {\n readonly kind = 'createCollection' as const;\n readonly collection: string;\n readonly validator: Record<string, unknown> | undefined;\n readonly validationLevel: 'strict' | 'moderate' | undefined;\n readonly validationAction: 'error' | 'warn' | undefined;\n readonly capped: boolean | undefined;\n readonly size: number | undefined;\n readonly max: number | undefined;\n readonly timeseries:\n | {\n timeField: string;\n metaField?: string;\n granularity?: 'seconds' | 'minutes' | 'hours';\n }\n | undefined;\n readonly collation: Record<string, unknown> | undefined;\n readonly changeStreamPreAndPostImages: { enabled: boolean } | undefined;\n readonly clusteredIndex:\n | {\n key: Record<string, number>;\n unique: boolean;\n name?: string;\n }\n | undefined;\n\n constructor(collection: string, options?: CreateCollectionOptions) {\n super();\n this.collection = collection;\n this.validator = options?.validator;\n this.validationLevel = options?.validationLevel;\n this.validationAction = options?.validationAction;\n this.capped = options?.capped;\n this.size = options?.size;\n this.max = options?.max;\n this.timeseries = options?.timeseries;\n this.collation = options?.collation;\n this.changeStreamPreAndPostImages = options?.changeStreamPreAndPostImages;\n this.clusteredIndex = options?.clusteredIndex;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.createCollection(this);\n }\n}\n\nexport class DropCollectionCommand extends MongoAstNode {\n readonly kind = 'dropCollection' as const;\n readonly collection: string;\n\n constructor(collection: string) {\n super();\n this.collection = collection;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.dropCollection(this);\n }\n}\n\nexport interface CollModOptions {\n readonly validator?: Record<string, unknown> | undefined;\n readonly validationLevel?: 'strict' | 'moderate' | undefined;\n readonly validationAction?: 'error' | 'warn' | undefined;\n readonly changeStreamPreAndPostImages?: { enabled: boolean } | undefined;\n}\n\nexport class CollModCommand extends MongoAstNode {\n readonly kind = 'collMod' as const;\n readonly collection: string;\n readonly validator: Record<string, unknown> | undefined;\n readonly validationLevel: 'strict' | 'moderate' | undefined;\n readonly validationAction: 'error' | 'warn' | undefined;\n readonly changeStreamPreAndPostImages: { enabled: boolean } | undefined;\n\n constructor(collection: string, options: CollModOptions) {\n super();\n this.collection = collection;\n this.validator = options.validator;\n this.validationLevel = options.validationLevel;\n this.validationAction = options.validationAction;\n this.changeStreamPreAndPostImages = options.changeStreamPreAndPostImages;\n this.freeze();\n }\n\n accept<R>(visitor: MongoDdlCommandVisitor<R>): R {\n return visitor.collMod(this);\n }\n}\n\nexport type AnyMongoDdlCommand =\n | CreateIndexCommand\n | DropIndexCommand\n | CreateCollectionCommand\n | DropCollectionCommand\n | CollModCommand;\n","import { MongoAstNode } from './ast-node';\nimport type { MongoInspectionCommandVisitor } from './ddl-visitors';\n\nexport class ListIndexesCommand extends MongoAstNode {\n readonly kind = 'listIndexes' as const;\n readonly collection: string;\n\n constructor(collection: string) {\n super();\n this.collection = collection;\n this.freeze();\n }\n\n accept<R>(visitor: MongoInspectionCommandVisitor<R>): R {\n return visitor.listIndexes(this);\n }\n}\n\nexport class ListCollectionsCommand extends MongoAstNode {\n readonly kind = 'listCollections' as const;\n\n constructor() {\n super();\n this.freeze();\n }\n\n accept<R>(visitor: MongoInspectionCommandVisitor<R>): R {\n return visitor.listCollections(this);\n }\n}\n\nexport type AnyMongoInspectionCommand = ListIndexesCommand | ListCollectionsCommand;\n","import type { MongoIndexKey } from '@prisma-next/mongo-contract';\n\nexport function buildIndexOpId(\n verb: 'create' | 'drop',\n collection: string,\n keys: ReadonlyArray<MongoIndexKey>,\n): string {\n const keyStr = keys.map((k) => `${k.field}:${k.direction}`).join(',');\n return `index.${collection}.${verb}(${keyStr})`;\n}\n\nexport function defaultMongoIndexName(keys: ReadonlyArray<MongoIndexKey>): string {\n return keys.map((k) => `${k.field}_${k.direction}`).join('_');\n}\n\nexport function keysToKeySpec(keys: ReadonlyArray<MongoIndexKey>): Record<string, number | string> {\n const spec: Record<string, number | string> = {};\n for (const k of keys) {\n spec[k.field] = k.direction;\n }\n return spec;\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import { $ as MongoFilterRewriter, A as MongoFieldFilter, At as MongoSkipStage, B as MongoAggFieldRef, C as RawInsertOneCommand, Ct as MongoProjectionValue, D as MongoAndExpr, Dt as MongoSearchMetaStage, E as RawUpdateOneCommand, Et as MongoSampleStage, F as AggRecordArgs, Ft as MongoUpdatePipelineStage, G as MongoAggOperator, H as MongoAggLiteral, I as MongoAggAccumulator, It as MongoVectorSearchStage, J as MongoAggSwitchBranch, K as MongoAggReduce, L as MongoAggArrayFilter, Lt as MongoWindowField, M as MongoNotExpr, Mt as MongoSortStage, N as MongoOrExpr, Nt as MongoUnionWithStage, O as MongoExistsExpr, Ot as MongoSearchStage, P as isMongoFilterExpr, Pt as MongoUnwindStage, Q as MongoAggExprVisitor, R as MongoAggCond, S as RawInsertManyCommand, St as MongoProjectStage, T as RawUpdateManyCommand, Tt as MongoReplaceRootStage, U as MongoAggMap, V as MongoAggLet, W as MongoAggMergeObjects, X as isRecordArgs, Y as isExprArray, Z as MongoAggExprRewriter, _ as RawAggregateCommand, _t as MongoLookupStage, a as freezeMongoResultShape, at as MongoBucketStage, b as RawFindOneAndDeleteCommand, bt as MongoOutStage, c as DeleteManyCommand, ct as MongoDensifyStage, d as FindOneAndUpdateCommand, dt as MongoFillStage, et as MongoFilterVisitor, f as InsertManyCommand, ft as MongoGeoNearStage, g as UpdateOneCommand, gt as MongoLimitStage, h as UpdateManyCommand, ht as MongoGroupStage, i as freezeMongoFieldShape, it as MongoBucketAutoStage, j as MongoFilterExpr, jt as MongoSortByCountStage, k as MongoExprFilter, kt as MongoSetWindowFieldsStage, l as DeleteOneCommand, lt as MongoFacetStage, m as MongoUpdateSpec, mt as MongoGroupId, n as MongoFieldShape, nt as MongoStageVisitor, o as AggregateCommand, ot as MongoCountStage, p as InsertOneCommand, pt as MongoGraphLookupStage, q as MongoAggSwitch, r as MongoResultShape, rt as MongoAddFieldsStage, s as AnyMongoCommand, st as MongoDensifyRange, t as MongoQueryPlan, tt as MongoStageRewriterContext, u as FindOneAndDeleteCommand, ut as MongoFillOutput, v as RawDeleteManyCommand, vt as MongoMatchStage, w as RawMongoCommand, wt as MongoRedactStage, x as RawFindOneAndUpdateCommand, xt as MongoPipelineStage, y as RawDeleteOneCommand, yt as MongoMergeStage, z as MongoAggExpr } from "../query-plan-TsZqsdut.mjs";
1
+ import { $ as MongoFilterRewriter, A as MongoFieldFilter, At as MongoSkipStage, B as MongoAggFieldRef, C as RawInsertOneCommand, Ct as MongoProjectionValue, D as MongoAndExpr, Dt as MongoSearchMetaStage, E as RawUpdateOneCommand, Et as MongoSampleStage, F as AggRecordArgs, Ft as MongoUpdatePipelineStage, G as MongoAggOperator, H as MongoAggLiteral, I as MongoAggAccumulator, It as MongoVectorSearchStage, J as MongoAggSwitchBranch, K as MongoAggReduce, L as MongoAggArrayFilter, Lt as MongoWindowField, M as MongoNotExpr, Mt as MongoSortStage, N as MongoOrExpr, Nt as MongoUnionWithStage, O as MongoExistsExpr, Ot as MongoSearchStage, P as isMongoFilterExpr, Pt as MongoUnwindStage, Q as MongoAggExprVisitor, R as MongoAggCond, S as RawInsertManyCommand, St as MongoProjectStage, T as RawUpdateManyCommand, Tt as MongoReplaceRootStage, U as MongoAggMap, V as MongoAggLet, W as MongoAggMergeObjects, X as isRecordArgs, Y as isExprArray, Z as MongoAggExprRewriter, _ as RawAggregateCommand, _t as MongoLookupStage, a as freezeMongoResultShape, at as MongoBucketStage, b as RawFindOneAndDeleteCommand, bt as MongoOutStage, c as DeleteManyCommand, ct as MongoDensifyStage, d as FindOneAndUpdateCommand, dt as MongoFillStage, et as MongoFilterVisitor, f as InsertManyCommand, ft as MongoGeoNearStage, g as UpdateOneCommand, gt as MongoLimitStage, h as UpdateManyCommand, ht as MongoGroupStage, i as freezeMongoFieldShape, it as MongoBucketAutoStage, j as MongoFilterExpr, jt as MongoSortByCountStage, k as MongoExprFilter, kt as MongoSetWindowFieldsStage, l as DeleteOneCommand, lt as MongoFacetStage, m as MongoUpdateSpec, mt as MongoGroupId, n as MongoFieldShape, nt as MongoStageVisitor, o as AggregateCommand, ot as MongoCountStage, p as InsertOneCommand, pt as MongoGraphLookupStage, q as MongoAggSwitch, r as MongoResultShape, rt as MongoAddFieldsStage, s as AnyMongoCommand, st as MongoDensifyRange, t as MongoQueryPlan, tt as MongoStageRewriterContext, u as FindOneAndDeleteCommand, ut as MongoFillOutput, v as RawDeleteManyCommand, vt as MongoMatchStage, w as RawMongoCommand, wt as MongoRedactStage, x as RawFindOneAndUpdateCommand, xt as MongoPipelineStage, y as RawDeleteOneCommand, yt as MongoMergeStage, z as MongoAggExpr } from "../query-plan-DtOq9tt4.mjs";
2
2
 
3
3
  //#region src/result-types.d.ts
4
-
5
4
  /**
6
5
  * Canonical command result types for the MongoDB primitive language.
7
6
  *
@@ -1 +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
+ {"version":3,"file":"execution.d.mts","names":[],"sources":["../../src/result-types.ts"],"mappings":";;;;;;AAUA;;;;;AAIA;UAJiB,eAAA;EAAA,SACN,UAAA;AAAA;AAAA,UAGM,gBAAA;EAAA,SACN,WAAA,EAAa,aAAA;EAAA,SACb,aAAA;AAAA;;AASX;;;;;UAAiB,YAAA;EAAA,SACN,YAAA;EAAA,SACA,aAAA;EAAA,SACA,aAAA;EAAA,SACA,UAAA;AAAA;;KAIC,eAAA,GAAkB,YAAA;;KAGlB,gBAAA,GAAmB,YAAA;AAA/B;;;AAAA,UAKiB,YAAA;EAAA,SACN,YAAA;AAAA;;KAIC,eAAA,GAAkB,YAAA;;KAGlB,gBAAA,GAAmB,YAAA"}
@@ -1,5 +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-BSKn8EyU.mjs";
2
-
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-A0tk5q1u.mjs";
3
2
  //#region src/aggregation-expressions.ts
4
3
  function isExprArray(args) {
5
4
  return Array.isArray(args);
@@ -328,7 +327,6 @@ var MongoAggMergeObjects = class MongoAggMergeObjects extends MongoAggExprNode {
328
327
  return rewriter.mergeObjects ? rewriter.mergeObjects(rebuilt) : rebuilt;
329
328
  }
330
329
  };
331
-
332
330
  //#endregion
333
331
  //#region src/commands.ts
334
332
  var InsertOneCommand = class extends MongoAstNode {
@@ -458,7 +456,6 @@ var AggregateCommand = class extends MongoAstNode {
458
456
  this.freeze();
459
457
  }
460
458
  };
461
-
462
459
  //#endregion
463
460
  //#region src/raw-commands.ts
464
461
  var RawAggregateCommand = class extends MongoAstNode {
@@ -579,7 +576,6 @@ var RawFindOneAndDeleteCommand = class extends MongoAstNode {
579
576
  this.freeze();
580
577
  }
581
578
  };
582
-
583
579
  //#endregion
584
580
  //#region src/result-shape.ts
585
581
  function freezeMongoFieldShape(shape) {
@@ -616,7 +612,6 @@ function freezeMongoResultShape(shape) {
616
612
  fields: Object.freeze(fields)
617
613
  });
618
614
  }
619
-
620
615
  //#endregion
621
616
  //#region src/stages.ts
622
617
  function isAggExpr(value) {
@@ -1276,7 +1271,7 @@ var MongoVectorSearchStage = class extends MongoStageNode {
1276
1271
  return this;
1277
1272
  }
1278
1273
  };
1279
-
1280
1274
  //#endregion
1281
1275
  export { AggregateCommand, DeleteManyCommand, DeleteOneCommand, FindOneAndDeleteCommand, FindOneAndUpdateCommand, InsertManyCommand, InsertOneCommand, MongoAddFieldsStage, MongoAggAccumulator, MongoAggArrayFilter, MongoAggCond, MongoAggFieldRef, MongoAggLet, MongoAggLiteral, MongoAggMap, MongoAggMergeObjects, MongoAggOperator, MongoAggReduce, MongoAggSwitch, MongoAndExpr, MongoBucketAutoStage, MongoBucketStage, MongoCountStage, MongoDensifyStage, MongoExistsExpr, MongoExprFilter, MongoFacetStage, MongoFieldFilter, MongoFillStage, MongoGeoNearStage, MongoGraphLookupStage, MongoGroupStage, MongoLimitStage, MongoLookupStage, MongoMatchStage, MongoMergeStage, MongoNotExpr, MongoOrExpr, MongoOutStage, MongoProjectStage, MongoRedactStage, MongoReplaceRootStage, MongoSampleStage, MongoSearchMetaStage, MongoSearchStage, MongoSetWindowFieldsStage, MongoSkipStage, MongoSortByCountStage, MongoSortStage, MongoUnionWithStage, MongoUnwindStage, MongoVectorSearchStage, RawAggregateCommand, RawDeleteManyCommand, RawDeleteOneCommand, RawFindOneAndDeleteCommand, RawFindOneAndUpdateCommand, RawInsertManyCommand, RawInsertOneCommand, RawUpdateManyCommand, RawUpdateOneCommand, UpdateManyCommand, UpdateOneCommand, freezeMongoFieldShape, freezeMongoResultShape, isExprArray, isMongoFilterExpr, isRecordArgs };
1276
+
1282
1277
  //# sourceMappingURL=execution.mjs.map
@@ -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>","fields: Record<string, MongoFieldShape>","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/result-shape.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","export type MongoResultShape =\n | { readonly kind: 'document'; readonly fields: Readonly<Record<string, MongoFieldShape>> }\n | { readonly kind: 'unknown' };\n\nexport type MongoFieldShape =\n | { readonly kind: 'leaf'; readonly codecId: string; readonly nullable: boolean }\n | {\n readonly kind: 'document';\n readonly nullable: boolean;\n readonly fields: Readonly<Record<string, MongoFieldShape>>;\n }\n | { readonly kind: 'array'; readonly nullable: boolean; readonly element: MongoFieldShape }\n | { readonly kind: 'unknown' };\n\nexport function freezeMongoFieldShape(shape: MongoFieldShape): MongoFieldShape {\n switch (shape.kind) {\n case 'unknown':\n return Object.freeze({ kind: 'unknown' as const });\n case 'leaf':\n return Object.freeze({\n kind: 'leaf' as const,\n codecId: shape.codecId,\n nullable: shape.nullable,\n });\n case 'document': {\n const fields: Record<string, MongoFieldShape> = {};\n for (const [k, v] of Object.entries(shape.fields)) {\n fields[k] = freezeMongoFieldShape(v);\n }\n return Object.freeze({\n kind: 'document' as const,\n nullable: shape.nullable,\n fields: Object.freeze(fields),\n });\n }\n case 'array':\n return Object.freeze({\n kind: 'array' as const,\n nullable: shape.nullable,\n element: freezeMongoFieldShape(shape.element),\n });\n default: {\n const _exhaustive: never = shape;\n return _exhaustive;\n }\n }\n}\n\nexport function freezeMongoResultShape(shape: MongoResultShape): MongoResultShape {\n if (shape.kind === 'unknown') {\n return Object.freeze({ kind: 'unknown' as const });\n }\n const fields: Record<string, MongoFieldShape> = {};\n for (const [k, v] of Object.entries(shape.fields)) {\n fields[k] = freezeMongoFieldShape(v);\n }\n return Object.freeze({\n kind: 'document' as const,\n fields: Object.freeze(fields),\n });\n}\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":["_exhaustive"],"sources":["../../src/aggregation-expressions.ts","../../src/commands.ts","../../src/raw-commands.ts","../../src/result-shape.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","export type MongoResultShape =\n | { readonly kind: 'document'; readonly fields: Readonly<Record<string, MongoFieldShape>> }\n | { readonly kind: 'unknown' };\n\nexport type MongoFieldShape =\n | { readonly kind: 'leaf'; readonly codecId: string; readonly nullable: boolean }\n | {\n readonly kind: 'document';\n readonly nullable: boolean;\n readonly fields: Readonly<Record<string, MongoFieldShape>>;\n }\n | { readonly kind: 'array'; readonly nullable: boolean; readonly element: MongoFieldShape }\n | { readonly kind: 'unknown' };\n\nexport function freezeMongoFieldShape(shape: MongoFieldShape): MongoFieldShape {\n switch (shape.kind) {\n case 'unknown':\n return Object.freeze({ kind: 'unknown' as const });\n case 'leaf':\n return Object.freeze({\n kind: 'leaf' as const,\n codecId: shape.codecId,\n nullable: shape.nullable,\n });\n case 'document': {\n const fields: Record<string, MongoFieldShape> = {};\n for (const [k, v] of Object.entries(shape.fields)) {\n fields[k] = freezeMongoFieldShape(v);\n }\n return Object.freeze({\n kind: 'document' as const,\n nullable: shape.nullable,\n fields: Object.freeze(fields),\n });\n }\n case 'array':\n return Object.freeze({\n kind: 'array' as const,\n nullable: shape.nullable,\n element: freezeMongoFieldShape(shape.element),\n });\n default: {\n const _exhaustive: never = shape;\n return _exhaustive;\n }\n }\n}\n\nexport function freezeMongoResultShape(shape: MongoResultShape): MongoResultShape {\n if (shape.kind === 'unknown') {\n return Object.freeze({ kind: 'unknown' as const });\n }\n const fields: Record<string, MongoFieldShape> = {};\n for (const [k, v] of Object.entries(shape.fields)) {\n fields[k] = freezeMongoFieldShape(v);\n }\n return Object.freeze({\n kind: 'document' as const,\n fields: Object.freeze(fields),\n });\n}\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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"}
@@ -4,7 +4,6 @@ var MongoAstNode = class {
4
4
  Object.freeze(this);
5
5
  }
6
6
  };
7
-
8
7
  //#endregion
9
8
  //#region src/filter-expressions.ts
10
9
  const FILTER_EXPR_BRAND = "__prismaNextMongoFilter__";
@@ -171,7 +170,7 @@ var MongoExprFilter = class MongoExprFilter extends MongoFilterExpression {
171
170
  return rewriter.expr ? rewriter.expr(this) : this;
172
171
  }
173
172
  };
174
-
175
173
  //#endregion
176
174
  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 };
177
- //# sourceMappingURL=filter-expressions-BSKn8EyU.mjs.map
175
+
176
+ //# sourceMappingURL=filter-expressions-A0tk5q1u.mjs.map
@@ -1 +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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"}
1
+ {"version":3,"file":"filter-expressions-A0tk5q1u.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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"}
@@ -818,4 +818,4 @@ interface MongoQueryPlan<Row = unknown, Command extends AnyMongoCommand = AnyMon
818
818
  }
819
819
  //#endregion
820
820
  export { MongoFilterRewriter as $, MongoFieldFilter as A, MongoSkipStage as At, MongoAggFieldRef as B, RawInsertOneCommand as C, MongoProjectionValue as Ct, MongoAndExpr as D, MongoSearchMetaStage as Dt, RawUpdateOneCommand as E, MongoSampleStage as Et, AggRecordArgs as F, MongoUpdatePipelineStage as Ft, MongoAggOperator as G, MongoAggLiteral as H, MongoAggAccumulator as I, MongoVectorSearchStage as It, MongoAggSwitchBranch as J, MongoAggReduce as K, MongoAggArrayFilter as L, MongoWindowField as Lt, MongoNotExpr as M, MongoSortStage as Mt, MongoOrExpr as N, MongoUnionWithStage as Nt, MongoExistsExpr as O, MongoSearchStage as Ot, isMongoFilterExpr as P, MongoUnwindStage as Pt, MongoAggExprVisitor as Q, MongoAggCond as R, MongoAstNode as Rt, RawInsertManyCommand as S, MongoProjectStage as St, RawUpdateManyCommand as T, MongoReplaceRootStage as Tt, MongoAggMap as U, MongoAggLet as V, MongoAggMergeObjects as W, isRecordArgs as X, isExprArray as Y, MongoAggExprRewriter as Z, RawAggregateCommand as _, MongoLookupStage as _t, freezeMongoResultShape as a, MongoBucketStage as at, RawFindOneAndDeleteCommand as b, MongoOutStage as bt, DeleteManyCommand as c, MongoDensifyStage as ct, FindOneAndUpdateCommand as d, MongoFillStage as dt, MongoFilterVisitor as et, InsertManyCommand as f, MongoGeoNearStage as ft, UpdateOneCommand as g, MongoLimitStage as gt, UpdateManyCommand as h, MongoGroupStage as ht, freezeMongoFieldShape as i, MongoBucketAutoStage as it, MongoFilterExpr as j, MongoSortByCountStage as jt, MongoExprFilter as k, MongoSetWindowFieldsStage as kt, DeleteOneCommand as l, MongoFacetStage as lt, MongoUpdateSpec as m, MongoGroupId as mt, MongoFieldShape as n, MongoStageVisitor as nt, AggregateCommand as o, MongoCountStage as ot, InsertOneCommand as p, MongoGraphLookupStage as pt, MongoAggSwitch as q, MongoResultShape as r, MongoAddFieldsStage as rt, AnyMongoCommand as s, MongoDensifyRange as st, MongoQueryPlan as t, MongoStageRewriterContext as tt, FindOneAndDeleteCommand as u, MongoFillOutput as ut, RawDeleteManyCommand as v, MongoMatchStage as vt, RawMongoCommand as w, MongoRedactStage as wt, RawFindOneAndUpdateCommand as x, MongoPipelineStage as xt, RawDeleteOneCommand as y, MongoMergeStage as yt, MongoAggExpr as z };
821
- //# sourceMappingURL=query-plan-TsZqsdut.d.mts.map
821
+ //# sourceMappingURL=query-plan-DtOq9tt4.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-plan-DtOq9tt4.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/result-shape.ts","../src/query-plan.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@prisma-next/mongo-query-ast",
3
- "version": "0.5.0-dev.65",
3
+ "version": "0.5.0-dev.67",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "description": "Typed query AST for MongoDB aggregation pipelines",
8
8
  "dependencies": {
9
- "@prisma-next/contract": "0.5.0-dev.65",
10
- "@prisma-next/framework-components": "0.5.0-dev.65",
11
- "@prisma-next/mongo-contract": "0.5.0-dev.65",
12
- "@prisma-next/mongo-value": "0.5.0-dev.65"
9
+ "@prisma-next/contract": "0.5.0-dev.67",
10
+ "@prisma-next/mongo-contract": "0.5.0-dev.67",
11
+ "@prisma-next/mongo-value": "0.5.0-dev.67",
12
+ "@prisma-next/framework-components": "0.5.0-dev.67"
13
13
  },
14
14
  "devDependencies": {
15
- "tsdown": "0.18.4",
15
+ "tsdown": "0.22.0",
16
16
  "typescript": "5.9.3",
17
- "vitest": "4.0.17",
17
+ "vitest": "4.1.5",
18
18
  "@prisma-next/tsconfig": "0.0.0",
19
- "@prisma-next/test-utils": "0.0.1",
20
- "@prisma-next/tsdown": "0.0.0"
19
+ "@prisma-next/tsdown": "0.0.0",
20
+ "@prisma-next/test-utils": "0.0.1"
21
21
  },
22
22
  "files": [
23
23
  "dist",
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-plan-TsZqsdut.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/result-shape.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;;;KMjMjB,gBAAA;;mBACsC,SAAS,eAAe;;EPDpD,SAAA,IAAA,EAAY,SAAA;;KOItB,eAAA;;ENKA,SAAA,OAAY,EAAA,MAAA;EAAU,SAAA,QAAA,EAAA,OAAA;CAAuC,GAAA;EAAf,SAAA,IAAA,EAAA,UAAA;EAAT,SAAA,QAAA,EAAA,OAAA;EAAQ,SAAA,MAAA,EMAlC,QNAkC,CMAzB,MNAyB,CAAA,MAAA,EMAV,eNAU,CAAA,CAAA;AACzD,CAAA,GAAY;EAiDG,SAAA,IAAA,EAAA,OAAe;EACkB,SAAA,QAAA,EAAA,OAAA;EAAlB,SAAA,OAAA,EMjD8C,eNiD9C;CAAuB,GAAA;EACzB,SAAA,IAAA,EAAA,SAAA;CAA4B;AAFlB,iBM7CtB,qBAAA,CN6CsB,KAAA,EM7CO,eN6CP,CAAA,EM7CyB,eN6CzB;AAAY,iBMXlC,sBAAA,CNWkC,KAAA,EMXJ,gBNWI,CAAA,EMXe,gBNWf;;;cOvDpC;ARJd;;;;ACSA;;;;AAAiD,UOKhC,cPLgC,CAAA,MAAA,OAAA,EAAA,gBOKc,ePLd,GOKgC,ePLhC,CAAA,SOMvC,SPNuC,COM7B,GPN6B,CAAA,CAAA;EAAQ,SAAA,UAAA,EAAA,MAAA;EAC7C,SAAA,OAAA,EOOQ,OPPY;EAiDjB,SAAA,WAAe,CAAA,EOzCL,gBPyCK;EACkB,UOzCpC,mBAAA,EPyCoC,EOzCb,GPyCa"}