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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { C as MongoAndExpr, D as MongoFilterExpr, E as MongoFieldFilter, O as MongoNotExpr, Pt as MongoAstNode, T as MongoExprFilter, X as MongoFilterVisitor, k as MongoOrExpr, t as MongoQueryPlan, w as MongoExistsExpr } from "../query-plan-Bn2lrJ__.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
 
@@ -171,7 +171,16 @@ interface MongoDataTransformCheck {
171
171
  }
172
172
  interface MongoDataTransformOperation extends MigrationPlanOperation {
173
173
  readonly operationClass: 'data';
174
+ /**
175
+ * Human-readable label for this data transform.
176
+ */
174
177
  readonly name: string;
178
+ /**
179
+ * Optional opt-in routing identity. Presence opts the transform into
180
+ * invariant-aware routing; absence means the transform is
181
+ * path-dependent and not referenceable from refs.
182
+ */
183
+ readonly invariantId?: string;
175
184
  readonly precheck: readonly MongoDataTransformCheck[];
176
185
  readonly run: readonly MongoQueryPlan[];
177
186
  readonly postcheck: readonly MongoDataTransformCheck[];
@@ -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":";;AAiBA,IAAa,qBAAb,cAAwC,aAAa;CACnD,OAAgB;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YACE,YACA,MACA,SACA;EACA,OAAO;EACP,KAAK,aAAa;EAClB,KAAK,OAAO;EACZ,KAAK,SAAS,SAAS;EACvB,KAAK,SAAS,SAAS;EACvB,KAAK,qBAAqB,SAAS;EACnC,KAAK,0BAA0B,SAAS;EACxC,KAAK,OAAO,SAAS;EACrB,KAAK,qBAAqB,SAAS;EACnC,KAAK,YAAY,SAAS;EAC1B,KAAK,UAAU,SAAS;EACxB,KAAK,mBAAmB,SAAS;EACjC,KAAK,oBAAoB,SAAS;EAClC,KAAK,QAAQ;;CAGf,OAAU,SAAuC;EAC/C,OAAO,QAAQ,YAAY,KAAK;;;AAIpC,IAAa,mBAAb,cAAsC,aAAa;CACjD,OAAgB;CAChB;CACA;CAEA,YAAY,YAAoB,MAAc;EAC5C,OAAO;EACP,KAAK,aAAa;EAClB,KAAK,OAAO;EACZ,KAAK,QAAQ;;CAGf,OAAU,SAAuC;EAC/C,OAAO,QAAQ,UAAU,KAAK;;;AA6BlC,IAAa,0BAAb,cAA6C,aAAa;CACxD,OAAgB;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAOA;CACA;CACA;CAQA,YAAY,YAAoB,SAAmC;EACjE,OAAO;EACP,KAAK,aAAa;EAClB,KAAK,YAAY,SAAS;EAC1B,KAAK,kBAAkB,SAAS;EAChC,KAAK,mBAAmB,SAAS;EACjC,KAAK,SAAS,SAAS;EACvB,KAAK,OAAO,SAAS;EACrB,KAAK,MAAM,SAAS;EACpB,KAAK,aAAa,SAAS;EAC3B,KAAK,YAAY,SAAS;EAC1B,KAAK,+BAA+B,SAAS;EAC7C,KAAK,iBAAiB,SAAS;EAC/B,KAAK,QAAQ;;CAGf,OAAU,SAAuC;EAC/C,OAAO,QAAQ,iBAAiB,KAAK;;;AAIzC,IAAa,wBAAb,cAA2C,aAAa;CACtD,OAAgB;CAChB;CAEA,YAAY,YAAoB;EAC9B,OAAO;EACP,KAAK,aAAa;EAClB,KAAK,QAAQ;;CAGf,OAAU,SAAuC;EAC/C,OAAO,QAAQ,eAAe,KAAK;;;AAWvC,IAAa,iBAAb,cAAoC,aAAa;CAC/C,OAAgB;CAChB;CACA;CACA;CACA;CACA;CAEA,YAAY,YAAoB,SAAyB;EACvD,OAAO;EACP,KAAK,aAAa;EAClB,KAAK,YAAY,QAAQ;EACzB,KAAK,kBAAkB,QAAQ;EAC/B,KAAK,mBAAmB,QAAQ;EAChC,KAAK,+BAA+B,QAAQ;EAC5C,KAAK,QAAQ;;CAGf,OAAU,SAAuC;EAC/C,OAAO,QAAQ,QAAQ,KAAK;;;;;ACzLhC,IAAa,qBAAb,cAAwC,aAAa;CACnD,OAAgB;CAChB;CAEA,YAAY,YAAoB;EAC9B,OAAO;EACP,KAAK,aAAa;EAClB,KAAK,QAAQ;;CAGf,OAAU,SAA8C;EACtD,OAAO,QAAQ,YAAY,KAAK;;;AAIpC,IAAa,yBAAb,cAA4C,aAAa;CACvD,OAAgB;CAEhB,cAAc;EACZ,OAAO;EACP,KAAK,QAAQ;;CAGf,OAAU,SAA8C;EACtD,OAAO,QAAQ,gBAAgB,KAAK;;;;;ACzBxC,SAAgB,eACd,MACA,YACA,MACQ;CAER,OAAO,SAAS,WAAW,GAAG,KAAK,GADpB,KAAK,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,YAAY,CAAC,KAAK,IACrB,CAAC;;AAG/C,SAAgB,sBAAsB,MAA4C;CAChF,OAAO,KAAK,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,YAAY,CAAC,KAAK,IAAI;;AAG/D,SAAgB,cAAc,MAAqE;CACjG,MAAM,OAAwC,EAAE;CAChD,KAAK,MAAM,KAAK,MACd,KAAK,EAAE,SAAS,EAAE;CAEpB,OAAO"}
@@ -1,7 +1,6 @@
1
- import { $ as MongoAddFieldsStage, A as isMongoFilterExpr, At as MongoUnwindStage, B as MongoAggMergeObjects, C as MongoAndExpr, Ct as MongoSearchMetaStage, D as MongoFilterExpr, Dt as MongoSortByCountStage, E as MongoFieldFilter, Et as MongoSkipStage, F as MongoAggExpr, G as isExprArray, H as MongoAggReduce, I as MongoAggFieldRef, J as MongoAggExprVisitor, K as isRecordArgs, L as MongoAggLet, M as MongoAggAccumulator, Mt as MongoVectorSearchStage, N as MongoAggArrayFilter, Nt as MongoWindowField, O as MongoNotExpr, Ot as MongoSortStage, P as MongoAggCond, Q as MongoStageVisitor, R as MongoAggLiteral, S as RawUpdateOneCommand, St as MongoSampleStage, T as MongoExprFilter, Tt as MongoSetWindowFieldsStage, U as MongoAggSwitch, V as MongoAggOperator, W as MongoAggSwitchBranch, X as MongoFilterVisitor, Y as MongoFilterRewriter, Z as MongoStageRewriterContext, _ as RawFindOneAndUpdateCommand, _t as MongoPipelineStage, a as DeleteOneCommand, at as MongoFacetStage, b as RawMongoCommand, bt as MongoRedactStage, c as InsertManyCommand, ct as MongoGeoNearStage, d as UpdateManyCommand, dt as MongoGroupStage, et as MongoBucketAutoStage, f as UpdateOneCommand, ft as MongoLimitStage, g as RawFindOneAndDeleteCommand, gt as MongoOutStage, h as RawDeleteOneCommand, ht as MongoMergeStage, i as DeleteManyCommand, it as MongoDensifyStage, j as AggRecordArgs, jt as MongoUpdatePipelineStage, k as MongoOrExpr, kt as MongoUnionWithStage, l as InsertOneCommand, lt as MongoGraphLookupStage, m as RawDeleteManyCommand, mt as MongoMatchStage, n as AggregateCommand, nt as MongoCountStage, o as FindOneAndDeleteCommand, ot as MongoFillOutput, p as RawAggregateCommand, pt as MongoLookupStage, q as MongoAggExprRewriter, r as AnyMongoCommand, rt as MongoDensifyRange, s as FindOneAndUpdateCommand, st as MongoFillStage, t as MongoQueryPlan, tt as MongoBucketStage, u as MongoUpdateSpec, ut as MongoGroupId, v as RawInsertManyCommand, vt as MongoProjectStage, w as MongoExistsExpr, wt as MongoSearchStage, x as RawUpdateManyCommand, xt as MongoReplaceRootStage, y as RawInsertOneCommand, yt as MongoProjectionValue, z as MongoAggMap } from "../query-plan-Bn2lrJ__.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
  *
@@ -45,5 +44,5 @@ type DeleteOneResult = DeleteResult;
45
44
  /** Alias — `deleteMany` yields the same shape as `deleteOne`. */
46
45
  type DeleteManyResult = DeleteResult;
47
46
  //#endregion
48
- export { type AggRecordArgs, AggregateCommand, type AnyMongoCommand, DeleteManyCommand, type DeleteManyResult, DeleteOneCommand, type DeleteOneResult, type DeleteResult, FindOneAndDeleteCommand, FindOneAndUpdateCommand, InsertManyCommand, type InsertManyResult, InsertOneCommand, type InsertOneResult, MongoAddFieldsStage, MongoAggAccumulator, MongoAggArrayFilter, MongoAggCond, type MongoAggExpr, type MongoAggExprRewriter, type MongoAggExprVisitor, MongoAggFieldRef, MongoAggLet, MongoAggLiteral, MongoAggMap, MongoAggMergeObjects, MongoAggOperator, MongoAggReduce, MongoAggSwitch, type MongoAggSwitchBranch, MongoAndExpr, MongoBucketAutoStage, MongoBucketStage, MongoCountStage, type MongoDensifyRange, MongoDensifyStage, MongoExistsExpr, MongoExprFilter, MongoFacetStage, MongoFieldFilter, type MongoFillOutput, MongoFillStage, type MongoFilterExpr, type MongoFilterRewriter, type MongoFilterVisitor, MongoGeoNearStage, MongoGraphLookupStage, type MongoGroupId, MongoGroupStage, MongoLimitStage, MongoLookupStage, MongoMatchStage, MongoMergeStage, MongoNotExpr, MongoOrExpr, MongoOutStage, type MongoPipelineStage, MongoProjectStage, type MongoProjectionValue, type MongoQueryPlan, MongoRedactStage, MongoReplaceRootStage, MongoSampleStage, MongoSearchMetaStage, MongoSearchStage, MongoSetWindowFieldsStage, MongoSkipStage, MongoSortByCountStage, MongoSortStage, type MongoStageRewriterContext, type MongoStageVisitor, MongoUnionWithStage, MongoUnwindStage, type MongoUpdatePipelineStage, type MongoUpdateSpec, MongoVectorSearchStage, type MongoWindowField, RawAggregateCommand, RawDeleteManyCommand, RawDeleteOneCommand, RawFindOneAndDeleteCommand, RawFindOneAndUpdateCommand, RawInsertManyCommand, RawInsertOneCommand, type RawMongoCommand, RawUpdateManyCommand, RawUpdateOneCommand, UpdateManyCommand, type UpdateManyResult, UpdateOneCommand, type UpdateOneResult, type UpdateResult, isExprArray, isMongoFilterExpr, isRecordArgs };
47
+ export { type AggRecordArgs, AggregateCommand, type AnyMongoCommand, DeleteManyCommand, type DeleteManyResult, DeleteOneCommand, type DeleteOneResult, type DeleteResult, FindOneAndDeleteCommand, FindOneAndUpdateCommand, InsertManyCommand, type InsertManyResult, InsertOneCommand, type InsertOneResult, MongoAddFieldsStage, MongoAggAccumulator, MongoAggArrayFilter, MongoAggCond, type MongoAggExpr, type MongoAggExprRewriter, type MongoAggExprVisitor, MongoAggFieldRef, MongoAggLet, MongoAggLiteral, MongoAggMap, MongoAggMergeObjects, MongoAggOperator, MongoAggReduce, MongoAggSwitch, type MongoAggSwitchBranch, MongoAndExpr, MongoBucketAutoStage, MongoBucketStage, MongoCountStage, type MongoDensifyRange, MongoDensifyStage, MongoExistsExpr, MongoExprFilter, MongoFacetStage, MongoFieldFilter, type MongoFieldShape, type MongoFillOutput, MongoFillStage, type MongoFilterExpr, type MongoFilterRewriter, type MongoFilterVisitor, MongoGeoNearStage, MongoGraphLookupStage, type MongoGroupId, MongoGroupStage, MongoLimitStage, MongoLookupStage, MongoMatchStage, MongoMergeStage, MongoNotExpr, MongoOrExpr, MongoOutStage, type MongoPipelineStage, MongoProjectStage, type MongoProjectionValue, type MongoQueryPlan, MongoRedactStage, MongoReplaceRootStage, type MongoResultShape, MongoSampleStage, MongoSearchMetaStage, MongoSearchStage, MongoSetWindowFieldsStage, MongoSkipStage, MongoSortByCountStage, MongoSortStage, type MongoStageRewriterContext, type MongoStageVisitor, MongoUnionWithStage, MongoUnwindStage, type MongoUpdatePipelineStage, type MongoUpdateSpec, MongoVectorSearchStage, type MongoWindowField, RawAggregateCommand, RawDeleteManyCommand, RawDeleteOneCommand, RawFindOneAndDeleteCommand, RawFindOneAndUpdateCommand, RawInsertManyCommand, RawInsertOneCommand, type RawMongoCommand, RawUpdateManyCommand, RawUpdateOneCommand, UpdateManyCommand, type UpdateManyResult, UpdateOneCommand, type UpdateOneResult, type UpdateResult, freezeMongoFieldShape, freezeMongoResultShape, isExprArray, isMongoFilterExpr, isRecordArgs };
49
48
  //# sourceMappingURL=execution.d.mts.map
@@ -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,42 @@ var RawFindOneAndDeleteCommand = class extends MongoAstNode {
579
576
  this.freeze();
580
577
  }
581
578
  };
582
-
579
+ //#endregion
580
+ //#region src/result-shape.ts
581
+ function freezeMongoFieldShape(shape) {
582
+ switch (shape.kind) {
583
+ case "unknown": return Object.freeze({ kind: "unknown" });
584
+ case "leaf": return Object.freeze({
585
+ kind: "leaf",
586
+ codecId: shape.codecId,
587
+ nullable: shape.nullable
588
+ });
589
+ case "document": {
590
+ const fields = {};
591
+ for (const [k, v] of Object.entries(shape.fields)) fields[k] = freezeMongoFieldShape(v);
592
+ return Object.freeze({
593
+ kind: "document",
594
+ nullable: shape.nullable,
595
+ fields: Object.freeze(fields)
596
+ });
597
+ }
598
+ case "array": return Object.freeze({
599
+ kind: "array",
600
+ nullable: shape.nullable,
601
+ element: freezeMongoFieldShape(shape.element)
602
+ });
603
+ default: return shape;
604
+ }
605
+ }
606
+ function freezeMongoResultShape(shape) {
607
+ if (shape.kind === "unknown") return Object.freeze({ kind: "unknown" });
608
+ const fields = {};
609
+ for (const [k, v] of Object.entries(shape.fields)) fields[k] = freezeMongoFieldShape(v);
610
+ return Object.freeze({
611
+ kind: "document",
612
+ fields: Object.freeze(fields)
613
+ });
614
+ }
583
615
  //#endregion
584
616
  //#region src/stages.ts
585
617
  function isAggExpr(value) {
@@ -1239,7 +1271,7 @@ var MongoVectorSearchStage = class extends MongoStageNode {
1239
1271
  return this;
1240
1272
  }
1241
1273
  };
1242
-
1243
1274
  //#endregion
1244
- 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, isExprArray, isMongoFilterExpr, isRecordArgs };
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
+
1245
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>","result: Record<string, MongoAggExpr>","result: Record<string, MongoAggAccumulator>","newProjection: Record<string, MongoProjectionValue>","options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n }","newAccumulators: Record<string, MongoAggAccumulator>","opts: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n }","opts: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n }","opts: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n }","frozen: Record<string, ReadonlyArray<MongoPipelineStage>>","newFacets: Record<string, ReadonlyArray<MongoPipelineStage>>","opts: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n }","opts: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n }","newOutput: Record<string, MongoWindowField>","opts: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n }","newOutput: Record<string, MongoFillOutput>","opts: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n }"],"sources":["../../src/aggregation-expressions.ts","../../src/commands.ts","../../src/raw-commands.ts","../../src/stages.ts"],"sourcesContent":["import { MongoAstNode } from './ast-node';\nimport type { MongoAggExprRewriter, MongoAggExprVisitor } from './visitors';\n\nexport type AggRecordArgs = Readonly<Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>>>;\n\nexport function isExprArray(\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n): args is ReadonlyArray<MongoAggExpr> {\n return Array.isArray(args);\n}\n\nexport function isRecordArgs(\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n): args is AggRecordArgs {\n return !Array.isArray(args) && typeof args === 'object' && !('accept' in args);\n}\n\nfunction freezeRecordArgs(record: AggRecordArgs): AggRecordArgs {\n const frozen: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>> = {};\n for (const [key, val] of Object.entries(record)) {\n frozen[key] = Array.isArray(val) ? Object.freeze([...val]) : val;\n }\n return Object.freeze(frozen);\n}\n\nfunction rewriteRecordArgs(record: AggRecordArgs, rewriter: MongoAggExprRewriter): AggRecordArgs {\n const result: Record<string, MongoAggExpr | ReadonlyArray<MongoAggExpr>> = {};\n for (const [key, val] of Object.entries(record)) {\n if (Array.isArray(val)) {\n result[key] = val.map((v: MongoAggExpr) => v.rewrite(rewriter));\n } else {\n result[key] = (val as MongoAggExpr).rewrite(rewriter);\n }\n }\n return result;\n}\n\nabstract class MongoAggExprNode extends MongoAstNode {\n abstract accept<R>(visitor: MongoAggExprVisitor<R>): R;\n abstract rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr;\n}\n\nexport class MongoAggFieldRef extends MongoAggExprNode {\n readonly kind = 'fieldRef' as const;\n readonly path: string;\n\n constructor(path: string) {\n super();\n if (!path) {\n throw new Error('Field path must not be empty');\n }\n this.path = path;\n this.freeze();\n }\n\n static of(path: string): MongoAggFieldRef {\n return new MongoAggFieldRef(path);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.fieldRef(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n return rewriter.fieldRef ? rewriter.fieldRef(this) : this;\n }\n}\n\nexport class MongoAggLiteral extends MongoAggExprNode {\n readonly kind = 'literal' as const;\n readonly value: unknown;\n\n constructor(value: unknown) {\n super();\n this.value = value;\n this.freeze();\n }\n\n static of(value: unknown): MongoAggLiteral {\n return new MongoAggLiteral(value);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.literal(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n return rewriter.literal ? rewriter.literal(this) : this;\n }\n}\n\nexport class MongoAggOperator extends MongoAggExprNode {\n readonly kind = 'operator' as const;\n readonly op: string;\n readonly args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs;\n\n constructor(op: string, args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs) {\n super();\n this.op = op;\n if (Array.isArray(args)) {\n this.args = Object.freeze([...args]);\n } else if (isRecordArgs(args)) {\n this.args = freezeRecordArgs(args);\n } else {\n this.args = args;\n }\n this.freeze();\n }\n\n static of(\n op: string,\n args: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs,\n ): MongoAggOperator {\n return new MongoAggOperator(op, args);\n }\n\n static add(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$add', args);\n }\n\n static subtract(left: MongoAggExpr, right: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$subtract', [left, right]);\n }\n\n static multiply(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$multiply', args);\n }\n\n static divide(dividend: MongoAggExpr, divisor: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$divide', [dividend, divisor]);\n }\n\n static concat(...args: ReadonlyArray<MongoAggExpr>): MongoAggOperator {\n return new MongoAggOperator('$concat', args);\n }\n\n static toLower(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$toLower', expr);\n }\n\n static toUpper(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$toUpper', expr);\n }\n\n static size(expr: MongoAggExpr): MongoAggOperator {\n return new MongoAggOperator('$size', expr);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.operator(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const { args } = this;\n let rewrittenArgs: MongoAggExpr | ReadonlyArray<MongoAggExpr> | AggRecordArgs;\n if (isExprArray(args)) {\n rewrittenArgs = args.map((a) => a.rewrite(rewriter));\n } else if (isRecordArgs(args)) {\n rewrittenArgs = rewriteRecordArgs(args, rewriter);\n } else {\n rewrittenArgs = args.rewrite(rewriter);\n }\n const rebuilt = new MongoAggOperator(this.op, rewrittenArgs);\n return rewriter.operator ? rewriter.operator(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggAccumulator extends MongoAggExprNode {\n readonly kind = 'accumulator' as const;\n readonly op: string;\n readonly arg: MongoAggExpr | AggRecordArgs | null;\n\n constructor(op: string, arg: MongoAggExpr | AggRecordArgs | null) {\n super();\n this.op = op;\n if (arg !== null && isRecordArgs(arg)) {\n this.arg = freezeRecordArgs(arg);\n } else {\n this.arg = arg;\n }\n this.freeze();\n }\n\n static of(op: string, arg: MongoAggExpr | AggRecordArgs | null): MongoAggAccumulator {\n return new MongoAggAccumulator(op, arg);\n }\n\n static sum(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$sum', expr);\n }\n\n static avg(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$avg', expr);\n }\n\n static min(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$min', expr);\n }\n\n static max(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$max', expr);\n }\n\n static first(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$first', expr);\n }\n\n static last(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$last', expr);\n }\n\n static push(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$push', expr);\n }\n\n static addToSet(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$addToSet', expr);\n }\n\n static count(): MongoAggAccumulator {\n return new MongoAggAccumulator('$count', null);\n }\n\n static stdDevPop(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$stdDevPop', expr);\n }\n\n static stdDevSamp(expr: MongoAggExpr): MongoAggAccumulator {\n return new MongoAggAccumulator('$stdDevSamp', expr);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.accumulator(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n let rewrittenArg: MongoAggExpr | AggRecordArgs | null;\n if (this.arg === null) {\n rewrittenArg = null;\n } else if (isRecordArgs(this.arg)) {\n rewrittenArg = rewriteRecordArgs(this.arg, rewriter);\n } else {\n rewrittenArg = this.arg.rewrite(rewriter);\n }\n const rebuilt = new MongoAggAccumulator(this.op, rewrittenArg);\n return rewriter.accumulator ? rewriter.accumulator(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggCond extends MongoAggExprNode {\n readonly kind = 'cond' as const;\n readonly condition: MongoAggExpr;\n readonly then_: MongoAggExpr;\n readonly else_: MongoAggExpr;\n\n constructor(condition: MongoAggExpr, then_: MongoAggExpr, else_: MongoAggExpr) {\n super();\n this.condition = condition;\n this.then_ = then_;\n this.else_ = else_;\n this.freeze();\n }\n\n static of(condition: MongoAggExpr, then_: MongoAggExpr, else_: MongoAggExpr): MongoAggCond {\n return new MongoAggCond(condition, then_, else_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.cond(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggCond(\n this.condition.rewrite(rewriter),\n this.then_.rewrite(rewriter),\n this.else_.rewrite(rewriter),\n );\n return rewriter.cond ? rewriter.cond(rebuilt) : rebuilt;\n }\n}\n\nexport interface MongoAggSwitchBranch {\n readonly case_: MongoAggExpr;\n readonly then_: MongoAggExpr;\n}\n\nexport class MongoAggSwitch extends MongoAggExprNode {\n readonly kind = 'switch' as const;\n readonly branches: ReadonlyArray<MongoAggSwitchBranch>;\n readonly default_: MongoAggExpr;\n\n constructor(branches: ReadonlyArray<MongoAggSwitchBranch>, default_: MongoAggExpr) {\n super();\n this.branches = Object.freeze(\n branches.map((b) => Object.freeze({ case_: b.case_, then_: b.then_ })),\n );\n this.default_ = default_;\n this.freeze();\n }\n\n static of(branches: ReadonlyArray<MongoAggSwitchBranch>, default_: MongoAggExpr): MongoAggSwitch {\n return new MongoAggSwitch(branches, default_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.switch_(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggSwitch(\n this.branches.map((b) => ({\n case_: b.case_.rewrite(rewriter),\n then_: b.then_.rewrite(rewriter),\n })),\n this.default_.rewrite(rewriter),\n );\n return rewriter.switch_ ? rewriter.switch_(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggArrayFilter extends MongoAggExprNode {\n readonly kind = 'filter' as const;\n readonly input: MongoAggExpr;\n readonly cond: MongoAggExpr;\n readonly as: string;\n\n constructor(input: MongoAggExpr, cond: MongoAggExpr, as: string) {\n super();\n this.input = input;\n this.cond = cond;\n this.as = as;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, cond: MongoAggExpr, as: string): MongoAggArrayFilter {\n return new MongoAggArrayFilter(input, cond, as);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.filter(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggArrayFilter(\n this.input.rewrite(rewriter),\n this.cond.rewrite(rewriter),\n this.as,\n );\n return rewriter.filter ? rewriter.filter(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggMap extends MongoAggExprNode {\n readonly kind = 'map' as const;\n readonly input: MongoAggExpr;\n readonly in_: MongoAggExpr;\n readonly as: string;\n\n constructor(input: MongoAggExpr, in_: MongoAggExpr, as: string) {\n super();\n this.input = input;\n this.in_ = in_;\n this.as = as;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, in_: MongoAggExpr, as: string): MongoAggMap {\n return new MongoAggMap(input, in_, as);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.map(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggMap(\n this.input.rewrite(rewriter),\n this.in_.rewrite(rewriter),\n this.as,\n );\n return rewriter.map ? rewriter.map(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggReduce extends MongoAggExprNode {\n readonly kind = 'reduce' as const;\n readonly input: MongoAggExpr;\n readonly initialValue: MongoAggExpr;\n readonly in_: MongoAggExpr;\n\n constructor(input: MongoAggExpr, initialValue: MongoAggExpr, in_: MongoAggExpr) {\n super();\n this.input = input;\n this.initialValue = initialValue;\n this.in_ = in_;\n this.freeze();\n }\n\n static of(input: MongoAggExpr, initialValue: MongoAggExpr, in_: MongoAggExpr): MongoAggReduce {\n return new MongoAggReduce(input, initialValue, in_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.reduce(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggReduce(\n this.input.rewrite(rewriter),\n this.initialValue.rewrite(rewriter),\n this.in_.rewrite(rewriter),\n );\n return rewriter.reduce ? rewriter.reduce(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggLet extends MongoAggExprNode {\n readonly kind = 'let' as const;\n readonly vars: Readonly<Record<string, MongoAggExpr>>;\n readonly in_: MongoAggExpr;\n\n constructor(vars: Record<string, MongoAggExpr>, in_: MongoAggExpr) {\n super();\n this.vars = Object.freeze({ ...vars });\n this.in_ = in_;\n this.freeze();\n }\n\n static of(vars: Record<string, MongoAggExpr>, in_: MongoAggExpr): MongoAggLet {\n return new MongoAggLet(vars, in_);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.let_(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rewrittenVars: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(this.vars)) {\n rewrittenVars[key] = val.rewrite(rewriter);\n }\n const rebuilt = new MongoAggLet(rewrittenVars, this.in_.rewrite(rewriter));\n return rewriter.let_ ? rewriter.let_(rebuilt) : rebuilt;\n }\n}\n\nexport class MongoAggMergeObjects extends MongoAggExprNode {\n readonly kind = 'mergeObjects' as const;\n readonly exprs: ReadonlyArray<MongoAggExpr>;\n\n constructor(exprs: ReadonlyArray<MongoAggExpr>) {\n super();\n this.exprs = Object.freeze([...exprs]);\n this.freeze();\n }\n\n static of(exprs: ReadonlyArray<MongoAggExpr>): MongoAggMergeObjects {\n return new MongoAggMergeObjects(exprs);\n }\n\n accept<R>(visitor: MongoAggExprVisitor<R>): R {\n return visitor.mergeObjects(this);\n }\n\n rewrite(rewriter: MongoAggExprRewriter): MongoAggExpr {\n const rebuilt = new MongoAggMergeObjects(this.exprs.map((e) => e.rewrite(rewriter)));\n return rewriter.mergeObjects ? rewriter.mergeObjects(rebuilt) : rebuilt;\n }\n}\n\nexport type MongoAggExpr =\n | MongoAggFieldRef\n | MongoAggLiteral\n | MongoAggOperator\n | MongoAggAccumulator\n | MongoAggCond\n | MongoAggSwitch\n | MongoAggArrayFilter\n | MongoAggMap\n | MongoAggReduce\n | MongoAggLet\n | MongoAggMergeObjects;\n","import type { MongoValue } from '@prisma-next/mongo-value';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoFilterExpr } from './filter-expressions';\nimport type { RawMongoCommand } from './raw-commands';\nimport type { MongoPipelineStage, MongoUpdatePipelineStage } from './stages';\nexport type MongoUpdateSpec = Record<string, MongoValue> | ReadonlyArray<MongoUpdatePipelineStage>;\n\nexport class InsertOneCommand extends MongoAstNode {\n readonly kind = 'insertOne' as const;\n readonly collection: string;\n readonly document: Record<string, MongoValue>;\n\n constructor(collection: string, document: Record<string, MongoValue>) {\n super();\n this.collection = collection;\n this.document = document;\n this.freeze();\n }\n}\n\nexport class UpdateOneCommand extends MongoAstNode {\n readonly kind = 'updateOne' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n /**\n * When true, the wire command becomes an upsert: if no document matches\n * `filter`, a new document is inserted, derived from the filter's\n * equality fields plus the update spec. Defaults to false.\n */\n readonly upsert: boolean;\n\n constructor(\n collection: string,\n filter: MongoFilterExpr,\n update: MongoUpdateSpec,\n upsert = false,\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.freeze();\n }\n}\n\nexport class DeleteOneCommand extends MongoAstNode {\n readonly kind = 'deleteOne' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n\n constructor(collection: string, filter: MongoFilterExpr) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class InsertManyCommand extends MongoAstNode {\n readonly kind = 'insertMany' as const;\n readonly collection: string;\n readonly documents: ReadonlyArray<Record<string, MongoValue>>;\n\n constructor(collection: string, documents: ReadonlyArray<Record<string, MongoValue>>) {\n super();\n this.collection = collection;\n this.documents = documents;\n this.freeze();\n }\n}\n\nexport class UpdateManyCommand extends MongoAstNode {\n readonly kind = 'updateMany' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n /**\n * Upsert flag — see `UpdateOneCommand.upsert`. For `updateMany`, Mongo\n * inserts at most one document when no match exists (driver-side\n * constraint).\n */\n readonly upsert: boolean;\n\n constructor(\n collection: string,\n filter: MongoFilterExpr,\n update: MongoUpdateSpec,\n upsert = false,\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.freeze();\n }\n}\n\nexport class DeleteManyCommand extends MongoAstNode {\n readonly kind = 'deleteMany' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n\n constructor(collection: string, filter: MongoFilterExpr) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class FindOneAndUpdateCommand extends MongoAstNode {\n readonly kind = 'findOneAndUpdate' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly update: MongoUpdateSpec;\n readonly upsert: boolean;\n readonly sort: Record<string, 1 | -1> | undefined;\n readonly returnDocument: 'before' | 'after';\n\n constructor(\n collection: string,\n filter: MongoFilterExpr,\n update: MongoUpdateSpec,\n upsert = false,\n sort?: Record<string, 1 | -1>,\n returnDocument: 'before' | 'after' = 'after',\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.sort = sort;\n this.returnDocument = returnDocument;\n this.freeze();\n }\n}\n\nexport class FindOneAndDeleteCommand extends MongoAstNode {\n readonly kind = 'findOneAndDelete' as const;\n readonly collection: string;\n readonly filter: MongoFilterExpr;\n readonly sort: Record<string, 1 | -1> | undefined;\n\n constructor(collection: string, filter: MongoFilterExpr, sort?: Record<string, 1 | -1>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.sort = sort;\n this.freeze();\n }\n}\n\nexport class AggregateCommand extends MongoAstNode {\n readonly kind = 'aggregate' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage>;\n\n constructor(collection: string, pipeline: ReadonlyArray<MongoPipelineStage>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline;\n this.freeze();\n }\n}\n\nexport type AnyMongoCommand =\n | InsertOneCommand\n | InsertManyCommand\n | UpdateOneCommand\n | UpdateManyCommand\n | DeleteOneCommand\n | DeleteManyCommand\n | FindOneAndUpdateCommand\n | FindOneAndDeleteCommand\n | AggregateCommand\n | RawMongoCommand;\n","import type { Document } from '@prisma-next/mongo-value';\nimport { MongoAstNode } from './ast-node';\n\nexport class RawAggregateCommand extends MongoAstNode {\n readonly kind = 'rawAggregate' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<Document>;\n\n constructor(collection: string, pipeline: ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline;\n this.freeze();\n }\n}\n\nexport class RawInsertOneCommand extends MongoAstNode {\n readonly kind = 'rawInsertOne' as const;\n readonly collection: string;\n readonly document: Document;\n\n constructor(collection: string, document: Document) {\n super();\n this.collection = collection;\n this.document = document;\n this.freeze();\n }\n}\n\nexport class RawInsertManyCommand extends MongoAstNode {\n readonly kind = 'rawInsertMany' as const;\n readonly collection: string;\n readonly documents: ReadonlyArray<Document>;\n\n constructor(collection: string, documents: ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.documents = documents;\n this.freeze();\n }\n}\n\nexport class RawUpdateOneCommand extends MongoAstNode {\n readonly kind = 'rawUpdateOne' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n\n constructor(collection: string, filter: Document, update: Document | ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.freeze();\n }\n}\n\nexport class RawUpdateManyCommand extends MongoAstNode {\n readonly kind = 'rawUpdateMany' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n\n constructor(collection: string, filter: Document, update: Document | ReadonlyArray<Document>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.freeze();\n }\n}\n\nexport class RawDeleteOneCommand extends MongoAstNode {\n readonly kind = 'rawDeleteOne' as const;\n readonly collection: string;\n readonly filter: Document;\n\n constructor(collection: string, filter: Document) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class RawDeleteManyCommand extends MongoAstNode {\n readonly kind = 'rawDeleteMany' as const;\n readonly collection: string;\n readonly filter: Document;\n\n constructor(collection: string, filter: Document) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.freeze();\n }\n}\n\nexport class RawFindOneAndUpdateCommand extends MongoAstNode {\n readonly kind = 'rawFindOneAndUpdate' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly update: Document | ReadonlyArray<Document>;\n readonly upsert: boolean;\n readonly sort: Record<string, 1 | -1> | undefined;\n /**\n * When `undefined`, the option is omitted from the wire command and the\n * MongoDB driver applies its documented default (return the pre-image\n * document). Set explicitly to `'before'` or `'after'` to override.\n */\n readonly returnDocument: 'before' | 'after' | undefined;\n\n constructor(\n collection: string,\n filter: Document,\n update: Document | ReadonlyArray<Document>,\n upsert = false,\n sort?: Record<string, 1 | -1>,\n returnDocument?: 'before' | 'after',\n ) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.update = update;\n this.upsert = upsert;\n this.sort = sort;\n this.returnDocument = returnDocument;\n this.freeze();\n }\n}\n\nexport class RawFindOneAndDeleteCommand extends MongoAstNode {\n readonly kind = 'rawFindOneAndDelete' as const;\n readonly collection: string;\n readonly filter: Document;\n readonly sort: Record<string, 1 | -1> | undefined;\n\n constructor(collection: string, filter: Document, sort?: Record<string, 1 | -1>) {\n super();\n this.collection = collection;\n this.filter = filter;\n this.sort = sort;\n this.freeze();\n }\n}\n\nexport type RawMongoCommand =\n | RawAggregateCommand\n | RawInsertOneCommand\n | RawInsertManyCommand\n | RawUpdateOneCommand\n | RawUpdateManyCommand\n | RawDeleteOneCommand\n | RawDeleteManyCommand\n | RawFindOneAndUpdateCommand\n | RawFindOneAndDeleteCommand;\n","import type { MongoAggAccumulator, MongoAggExpr } from './aggregation-expressions';\nimport { MongoAstNode } from './ast-node';\nimport type { MongoFilterExpr } from './filter-expressions';\nimport type {\n MongoAggExprRewriter,\n MongoStageRewriterContext,\n MongoStageVisitor,\n} from './visitors';\n\nexport type MongoGroupId = null | MongoAggExpr | Readonly<Record<string, MongoAggExpr>>;\nexport type MongoProjectionValue = 0 | 1 | MongoAggExpr;\n\n// Structural guard: MongoAggExpr nodes always carry a `kind` string discriminant,\n// while scalar projection values (0 | 1) are numbers. This convention holds for all\n// current AST node types. If non-node objects with `kind` are introduced in the future,\n// consider a shared branded isAggExprNode() guard.\nfunction isAggExpr(value: MongoProjectionValue): value is MongoAggExpr {\n return typeof value === 'object' && value !== null && 'kind' in value;\n}\n\n// Discriminate MongoAggExpr from Record<string, MongoAggExpr> via the accept() method\n// that all AST nodes inherit from MongoAstNode. A plain record won't have accept(),\n// so this is robust even if a compound _id contains a key named \"kind\".\nfunction isAggExprNode(value: object): value is MongoAggExpr {\n return 'accept' in value && typeof value.accept === 'function';\n}\n\nfunction rewriteGroupId(groupId: MongoGroupId, rewriter: MongoAggExprRewriter): MongoGroupId {\n if (groupId === null) return null;\n if (isAggExprNode(groupId)) return groupId.rewrite(rewriter);\n const result: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(groupId)) {\n result[key] = val.rewrite(rewriter);\n }\n return result;\n}\n\nfunction rewriteExprRecord(\n fields: Readonly<Record<string, MongoAggExpr>>,\n rewriter: MongoAggExprRewriter,\n): Record<string, MongoAggExpr> {\n const result: Record<string, MongoAggExpr> = {};\n for (const [key, val] of Object.entries(fields)) {\n result[key] = val.rewrite(rewriter);\n }\n return result;\n}\n\nfunction rewriteAccumulatorRecord(\n accumulators: Readonly<Record<string, MongoAggAccumulator>>,\n rewriter: MongoAggExprRewriter,\n): Record<string, MongoAggAccumulator> {\n const result: Record<string, MongoAggAccumulator> = {};\n for (const [key, acc] of Object.entries(accumulators)) {\n result[key] = acc.rewrite(rewriter) as MongoAggAccumulator;\n }\n return result;\n}\n\nabstract class MongoStageNode extends MongoAstNode {\n abstract accept<R>(visitor: MongoStageVisitor<R>): R;\n abstract rewrite(context: MongoStageRewriterContext): MongoPipelineStage;\n}\n\nexport class MongoMatchStage extends MongoStageNode {\n readonly kind = 'match' as const;\n readonly filter: MongoFilterExpr;\n\n constructor(filter: MongoFilterExpr) {\n super();\n this.filter = filter;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.match(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n return new MongoMatchStage(this.filter.rewrite(context.filter ?? {}));\n }\n}\n\nexport class MongoProjectStage extends MongoStageNode {\n readonly kind = 'project' as const;\n readonly projection: Readonly<Record<string, MongoProjectionValue>>;\n\n constructor(projection: Record<string, MongoProjectionValue>) {\n super();\n this.projection = Object.freeze({ ...projection });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.project(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n let hasExpr = false;\n for (const val of Object.values(this.projection)) {\n if (isAggExpr(val)) {\n hasExpr = true;\n break;\n }\n }\n if (!hasExpr) return this;\n const newProjection: Record<string, MongoProjectionValue> = {};\n for (const [key, val] of Object.entries(this.projection)) {\n newProjection[key] = isAggExpr(val) ? val.rewrite(rewriter) : val;\n }\n return new MongoProjectStage(newProjection);\n }\n}\n\nexport class MongoSortStage extends MongoStageNode {\n readonly kind = 'sort' as const;\n readonly sort: Readonly<Record<string, 1 | -1>>;\n\n constructor(sort: Record<string, 1 | -1>) {\n super();\n this.sort = Object.freeze({ ...sort });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sort(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoLimitStage extends MongoStageNode {\n readonly kind = 'limit' as const;\n readonly limit: number;\n\n constructor(limit: number) {\n super();\n if (!Number.isInteger(limit) || limit < 0) {\n throw new RangeError('limit must be a non-negative integer');\n }\n this.limit = limit;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.limit(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSkipStage extends MongoStageNode {\n readonly kind = 'skip' as const;\n readonly skip: number;\n\n constructor(skip: number) {\n super();\n if (!Number.isInteger(skip) || skip < 0) {\n throw new RangeError('skip must be a non-negative integer');\n }\n this.skip = skip;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.skip(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoLookupStage extends MongoStageNode {\n readonly kind = 'lookup' as const;\n readonly from: string;\n readonly localField: string | undefined;\n readonly foreignField: string | undefined;\n readonly as: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage> | undefined;\n readonly let_: Readonly<Record<string, MongoAggExpr>> | undefined;\n\n constructor(options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n }) {\n super();\n const hasLocalField = options.localField !== undefined;\n const hasForeignField = options.foreignField !== undefined;\n const hasPipeline = !!options.pipeline;\n if (hasLocalField !== hasForeignField) {\n throw new Error('MongoLookupStage requires both localField and foreignField together');\n }\n if (!hasLocalField && !hasPipeline) {\n throw new Error(\n 'MongoLookupStage requires either equality fields (localField/foreignField) or a pipeline',\n );\n }\n if (options.let_ && !hasPipeline) {\n throw new Error('MongoLookupStage let_ requires a pipeline');\n }\n this.from = options.from;\n this.localField = options.localField;\n this.foreignField = options.foreignField;\n this.as = options.as;\n this.pipeline = options.pipeline ? Object.freeze([...options.pipeline]) : undefined;\n this.let_ = options.let_ ? Object.freeze({ ...options.let_ }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.lookup(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.pipeline && !this.let_) return this;\n const rewrittenLet =\n this.let_ && context.aggExpr ? rewriteExprRecord(this.let_, context.aggExpr) : this.let_;\n const options: {\n from: string;\n localField?: string;\n foreignField?: string;\n as: string;\n pipeline?: ReadonlyArray<MongoPipelineStage>;\n let_?: Record<string, MongoAggExpr>;\n } = { from: this.from, as: this.as };\n if (this.localField !== undefined) options.localField = this.localField;\n if (this.foreignField !== undefined) options.foreignField = this.foreignField;\n if (this.pipeline) options.pipeline = this.pipeline.map((stage) => stage.rewrite(context));\n if (rewrittenLet) options.let_ = { ...rewrittenLet };\n return new MongoLookupStage(options);\n }\n}\n\nexport class MongoUnwindStage extends MongoStageNode {\n readonly kind = 'unwind' as const;\n readonly path: string;\n readonly preserveNullAndEmptyArrays: boolean;\n readonly includeArrayIndex: string | undefined;\n\n constructor(path: string, preserveNullAndEmptyArrays: boolean, includeArrayIndex?: string) {\n super();\n this.path = path;\n this.preserveNullAndEmptyArrays = preserveNullAndEmptyArrays;\n this.includeArrayIndex = includeArrayIndex;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.unwind(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoGroupStage extends MongoStageNode {\n readonly kind = 'group' as const;\n readonly groupId: MongoGroupId;\n readonly accumulators: Readonly<Record<string, MongoAggAccumulator>>;\n\n constructor(groupId: MongoGroupId, accumulators: Record<string, MongoAggAccumulator>) {\n super();\n this.groupId = groupId;\n this.accumulators = Object.freeze({ ...accumulators });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.group(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newAccumulators: Record<string, MongoAggAccumulator> = {};\n for (const [key, acc] of Object.entries(this.accumulators)) {\n // MongoAggAccumulator.rewrite() returns MongoAggExpr (the base union). The cast is safe\n // because the default rewriter rebuilds an accumulator from its rewritten arg. A custom\n // accumulator() hook could technically return a non-accumulator — narrowing the return type\n // on MongoAggAccumulator.rewrite() is tracked as a follow-up for the agg expression AST.\n newAccumulators[key] = acc.rewrite(rewriter) as MongoAggAccumulator;\n }\n return new MongoGroupStage(rewriteGroupId(this.groupId, rewriter), newAccumulators);\n }\n}\n\nexport class MongoAddFieldsStage extends MongoStageNode {\n readonly kind = 'addFields' as const;\n readonly fields: Readonly<Record<string, MongoAggExpr>>;\n\n constructor(fields: Record<string, MongoAggExpr>) {\n super();\n this.fields = Object.freeze({ ...fields });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.addFields(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoAddFieldsStage(rewriteExprRecord(this.fields, rewriter));\n }\n}\n\nexport class MongoReplaceRootStage extends MongoStageNode {\n readonly kind = 'replaceRoot' as const;\n readonly newRoot: MongoAggExpr;\n\n constructor(newRoot: MongoAggExpr) {\n super();\n this.newRoot = newRoot;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.replaceRoot(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoReplaceRootStage(this.newRoot.rewrite(rewriter));\n }\n}\n\nexport class MongoCountStage extends MongoStageNode {\n readonly kind = 'count' as const;\n readonly field: string;\n\n constructor(field: string) {\n super();\n this.field = field;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.count(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSortByCountStage extends MongoStageNode {\n readonly kind = 'sortByCount' as const;\n readonly expr: MongoAggExpr;\n\n constructor(expr: MongoAggExpr) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sortByCount(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoSortByCountStage(this.expr.rewrite(rewriter));\n }\n}\n\nexport class MongoSampleStage extends MongoStageNode {\n readonly kind = 'sample' as const;\n readonly size: number;\n\n constructor(size: number) {\n super();\n if (!Number.isInteger(size) || size < 0) {\n throw new RangeError('size must be a non-negative integer');\n }\n this.size = size;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.sample(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoRedactStage extends MongoStageNode {\n readonly kind = 'redact' as const;\n readonly expr: MongoAggExpr;\n\n constructor(expr: MongoAggExpr) {\n super();\n this.expr = expr;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.redact(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n return new MongoRedactStage(this.expr.rewrite(rewriter));\n }\n}\n\nexport class MongoOutStage extends MongoStageNode {\n readonly kind = 'out' as const;\n readonly collection: string;\n readonly db: string | undefined;\n\n constructor(collection: string, db?: string) {\n super();\n this.collection = collection;\n this.db = db;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.out(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoUnionWithStage extends MongoStageNode {\n readonly kind = 'unionWith' as const;\n readonly collection: string;\n readonly pipeline: ReadonlyArray<MongoPipelineStage> | undefined;\n\n constructor(collection: string, pipeline?: ReadonlyArray<MongoPipelineStage>) {\n super();\n this.collection = collection;\n this.pipeline = pipeline ? Object.freeze([...pipeline]) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.unionWith(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.pipeline) return this;\n return new MongoUnionWithStage(\n this.collection,\n this.pipeline.map((stage) => stage.rewrite(context)),\n );\n }\n}\n\nexport class MongoBucketStage extends MongoStageNode {\n readonly kind = 'bucket' as const;\n readonly groupBy: MongoAggExpr;\n readonly boundaries: ReadonlyArray<unknown>;\n readonly default_: unknown;\n readonly output: Readonly<Record<string, MongoAggAccumulator>> | undefined;\n\n constructor(options: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n }) {\n super();\n if (options.boundaries.length < 2) {\n throw new RangeError('boundaries must contain at least 2 values');\n }\n this.groupBy = options.groupBy;\n this.boundaries = Object.freeze([...options.boundaries]);\n this.default_ = options.default_;\n this.output = options.output ? Object.freeze({ ...options.output }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.bucket(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const opts: {\n groupBy: MongoAggExpr;\n boundaries: ReadonlyArray<unknown>;\n default_?: unknown;\n output?: Record<string, MongoAggAccumulator>;\n } = { groupBy: this.groupBy.rewrite(rewriter), boundaries: this.boundaries };\n if (this.default_ !== undefined) opts.default_ = this.default_;\n if (this.output) opts.output = rewriteAccumulatorRecord(this.output, rewriter);\n return new MongoBucketStage(opts);\n }\n}\n\nexport class MongoBucketAutoStage extends MongoStageNode {\n readonly kind = 'bucketAuto' as const;\n readonly groupBy: MongoAggExpr;\n readonly buckets: number;\n readonly output: Readonly<Record<string, MongoAggAccumulator>> | undefined;\n readonly granularity: string | undefined;\n\n constructor(options: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n }) {\n super();\n if (!Number.isInteger(options.buckets) || options.buckets < 1) {\n throw new RangeError('buckets must be a positive integer');\n }\n this.groupBy = options.groupBy;\n this.buckets = options.buckets;\n this.output = options.output ? Object.freeze({ ...options.output }) : undefined;\n this.granularity = options.granularity;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.bucketAuto(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const opts: {\n groupBy: MongoAggExpr;\n buckets: number;\n output?: Record<string, MongoAggAccumulator>;\n granularity?: string;\n } = { groupBy: this.groupBy.rewrite(rewriter), buckets: this.buckets };\n if (this.output) opts.output = rewriteAccumulatorRecord(this.output, rewriter);\n if (this.granularity !== undefined) opts.granularity = this.granularity;\n return new MongoBucketAutoStage(opts);\n }\n}\n\nexport class MongoGeoNearStage extends MongoStageNode {\n readonly kind = 'geoNear' as const;\n readonly near: unknown;\n readonly distanceField: string;\n readonly spherical: boolean | undefined;\n readonly maxDistance: number | undefined;\n readonly minDistance: number | undefined;\n readonly query: MongoFilterExpr | undefined;\n readonly key: string | undefined;\n readonly distanceMultiplier: number | undefined;\n readonly includeLocs: string | undefined;\n\n constructor(options: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n }) {\n super();\n this.near = options.near;\n this.distanceField = options.distanceField;\n this.spherical = options.spherical;\n this.maxDistance = options.maxDistance;\n this.minDistance = options.minDistance;\n this.query = options.query;\n this.key = options.key;\n this.distanceMultiplier = options.distanceMultiplier;\n this.includeLocs = options.includeLocs;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.geoNear(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!this.query || !context.filter) return this;\n const opts: {\n near: unknown;\n distanceField: string;\n spherical?: boolean;\n maxDistance?: number;\n minDistance?: number;\n query?: MongoFilterExpr;\n key?: string;\n distanceMultiplier?: number;\n includeLocs?: string;\n } = { near: this.near, distanceField: this.distanceField };\n if (this.spherical !== undefined) opts.spherical = this.spherical;\n if (this.maxDistance !== undefined) opts.maxDistance = this.maxDistance;\n if (this.minDistance !== undefined) opts.minDistance = this.minDistance;\n opts.query = this.query.rewrite(context.filter);\n if (this.key !== undefined) opts.key = this.key;\n if (this.distanceMultiplier !== undefined) opts.distanceMultiplier = this.distanceMultiplier;\n if (this.includeLocs !== undefined) opts.includeLocs = this.includeLocs;\n return new MongoGeoNearStage(opts);\n }\n}\n\nexport class MongoFacetStage extends MongoStageNode {\n readonly kind = 'facet' as const;\n readonly facets: Readonly<Record<string, ReadonlyArray<MongoPipelineStage>>>;\n\n constructor(facets: Record<string, ReadonlyArray<MongoPipelineStage>>) {\n super();\n const frozen: Record<string, ReadonlyArray<MongoPipelineStage>> = {};\n for (const [key, pipeline] of Object.entries(facets)) {\n frozen[key] = Object.freeze([...pipeline]);\n }\n this.facets = Object.freeze(frozen);\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.facet(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const newFacets: Record<string, ReadonlyArray<MongoPipelineStage>> = {};\n for (const [key, pipeline] of Object.entries(this.facets)) {\n newFacets[key] = pipeline.map((stage) => stage.rewrite(context));\n }\n return new MongoFacetStage(newFacets);\n }\n}\n\nexport class MongoGraphLookupStage extends MongoStageNode {\n readonly kind = 'graphLookup' as const;\n readonly from: string;\n readonly startWith: MongoAggExpr;\n readonly connectFromField: string;\n readonly connectToField: string;\n readonly as: string;\n readonly maxDepth: number | undefined;\n readonly depthField: string | undefined;\n readonly restrictSearchWithMatch: MongoFilterExpr | undefined;\n\n constructor(options: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n }) {\n super();\n this.from = options.from;\n this.startWith = options.startWith;\n this.connectFromField = options.connectFromField;\n this.connectToField = options.connectToField;\n this.as = options.as;\n this.maxDepth = options.maxDepth;\n this.depthField = options.depthField;\n this.restrictSearchWithMatch = options.restrictSearchWithMatch;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.graphLookup(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewrittenStartWith = context.aggExpr\n ? this.startWith.rewrite(context.aggExpr)\n : this.startWith;\n const rewrittenMatch =\n this.restrictSearchWithMatch && context.filter\n ? this.restrictSearchWithMatch.rewrite(context.filter)\n : this.restrictSearchWithMatch;\n if (rewrittenStartWith === this.startWith && rewrittenMatch === this.restrictSearchWithMatch) {\n return this;\n }\n const opts: {\n from: string;\n startWith: MongoAggExpr;\n connectFromField: string;\n connectToField: string;\n as: string;\n maxDepth?: number;\n depthField?: string;\n restrictSearchWithMatch?: MongoFilterExpr;\n } = {\n from: this.from,\n startWith: rewrittenStartWith,\n connectFromField: this.connectFromField,\n connectToField: this.connectToField,\n as: this.as,\n };\n if (this.maxDepth !== undefined) opts.maxDepth = this.maxDepth;\n if (this.depthField !== undefined) opts.depthField = this.depthField;\n if (rewrittenMatch) opts.restrictSearchWithMatch = rewrittenMatch;\n return new MongoGraphLookupStage(opts);\n }\n}\n\nexport class MongoMergeStage extends MongoStageNode {\n readonly kind = 'merge' as const;\n readonly into: string | { readonly db: string; readonly coll: string };\n readonly on: string | ReadonlyArray<string> | undefined;\n readonly whenMatched: string | ReadonlyArray<MongoUpdatePipelineStage> | undefined;\n readonly whenNotMatched: string | undefined;\n\n constructor(options: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n }) {\n super();\n this.into =\n typeof options.into === 'string' ? options.into : Object.freeze({ ...options.into });\n this.on =\n options.on === undefined\n ? undefined\n : typeof options.on === 'string'\n ? options.on\n : Object.freeze([...options.on]);\n this.whenMatched =\n options.whenMatched === undefined\n ? undefined\n : typeof options.whenMatched === 'string'\n ? options.whenMatched\n : Object.freeze([...options.whenMatched]);\n this.whenNotMatched = options.whenNotMatched;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.merge(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n if (!Array.isArray(this.whenMatched)) return this;\n const opts: {\n into: string | { db: string; coll: string };\n on?: string | ReadonlyArray<string>;\n whenMatched?: string | ReadonlyArray<MongoUpdatePipelineStage>;\n whenNotMatched?: string;\n } = { into: this.into };\n if (this.on !== undefined) opts.on = this.on;\n // rewrite() preserves the concrete stage type at runtime\n opts.whenMatched = this.whenMatched.map(\n (stage) => stage.rewrite(context) as MongoUpdatePipelineStage,\n );\n if (this.whenNotMatched !== undefined) opts.whenNotMatched = this.whenNotMatched;\n return new MongoMergeStage(opts);\n }\n}\n\nexport interface MongoWindowField {\n readonly operator: MongoAggExpr;\n readonly window?: {\n readonly documents?: readonly [number, number];\n readonly range?: { readonly start: unknown; readonly end: unknown; readonly unit?: string };\n };\n}\n\nexport class MongoSetWindowFieldsStage extends MongoStageNode {\n readonly kind = 'setWindowFields' as const;\n readonly partitionBy: MongoAggExpr | undefined;\n readonly sortBy: Readonly<Record<string, 1 | -1>> | undefined;\n readonly output: Readonly<Record<string, MongoWindowField>>;\n\n constructor(options: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n }) {\n super();\n this.partitionBy = options.partitionBy;\n this.sortBy = options.sortBy ? Object.freeze({ ...options.sortBy }) : undefined;\n this.output = Object.freeze({ ...options.output });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.setWindowFields(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newOutput: Record<string, MongoWindowField> = {};\n for (const [key, wf] of Object.entries(this.output)) {\n newOutput[key] = { ...wf, operator: wf.operator.rewrite(rewriter) };\n }\n const opts: {\n partitionBy?: MongoAggExpr;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoWindowField>;\n } = { output: newOutput };\n if (this.partitionBy) opts.partitionBy = this.partitionBy.rewrite(rewriter);\n if (this.sortBy) opts.sortBy = { ...this.sortBy };\n return new MongoSetWindowFieldsStage(opts);\n }\n}\n\nexport interface MongoDensifyRange {\n readonly step: number;\n readonly unit?: string;\n readonly bounds: 'full' | 'partition' | readonly [unknown, unknown];\n}\n\nexport class MongoDensifyStage extends MongoStageNode {\n readonly kind = 'densify' as const;\n readonly field: string;\n readonly partitionByFields: ReadonlyArray<string> | undefined;\n readonly range: MongoDensifyRange;\n\n constructor(options: {\n field: string;\n partitionByFields?: ReadonlyArray<string>;\n range: MongoDensifyRange;\n }) {\n super();\n this.field = options.field;\n this.partitionByFields = options.partitionByFields\n ? Object.freeze([...options.partitionByFields])\n : undefined;\n this.range = Object.freeze({ ...options.range });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.densify(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport interface MongoFillOutput {\n readonly method?: string;\n readonly value?: MongoAggExpr;\n}\n\nexport class MongoFillStage extends MongoStageNode {\n readonly kind = 'fill' as const;\n readonly partitionBy: MongoAggExpr | undefined;\n readonly partitionByFields: ReadonlyArray<string> | undefined;\n readonly sortBy: Readonly<Record<string, 1 | -1>> | undefined;\n readonly output: Readonly<Record<string, MongoFillOutput>>;\n\n constructor(options: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n }) {\n super();\n this.partitionBy = options.partitionBy;\n this.partitionByFields = options.partitionByFields\n ? Object.freeze([...options.partitionByFields])\n : undefined;\n this.sortBy = options.sortBy ? Object.freeze({ ...options.sortBy }) : undefined;\n this.output = Object.freeze({ ...options.output });\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.fill(this);\n }\n\n rewrite(context: MongoStageRewriterContext): MongoPipelineStage {\n const rewriter = context.aggExpr;\n if (!rewriter) return this;\n const newOutput: Record<string, MongoFillOutput> = {};\n for (const [key, fo] of Object.entries(this.output)) {\n newOutput[key] = fo.value ? { ...fo, value: fo.value.rewrite(rewriter) } : fo;\n }\n const opts: {\n partitionBy?: MongoAggExpr;\n partitionByFields?: ReadonlyArray<string>;\n sortBy?: Record<string, 1 | -1>;\n output: Record<string, MongoFillOutput>;\n } = { output: newOutput };\n if (this.partitionBy) opts.partitionBy = this.partitionBy.rewrite(rewriter);\n if (this.partitionByFields) opts.partitionByFields = [...this.partitionByFields];\n if (this.sortBy) opts.sortBy = { ...this.sortBy };\n return new MongoFillStage(opts);\n }\n}\n\nexport class MongoSearchStage extends MongoStageNode {\n readonly kind = 'search' as const;\n readonly index: string | undefined;\n readonly config: Readonly<Record<string, unknown>>;\n\n constructor(config: Record<string, unknown>, index?: string) {\n super();\n this.config = Object.freeze({ ...config });\n this.index = index;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.search(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoSearchMetaStage extends MongoStageNode {\n readonly kind = 'searchMeta' as const;\n readonly index: string | undefined;\n readonly config: Readonly<Record<string, unknown>>;\n\n constructor(config: Record<string, unknown>, index?: string) {\n super();\n this.config = Object.freeze({ ...config });\n this.index = index;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.searchMeta(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport class MongoVectorSearchStage extends MongoStageNode {\n readonly kind = 'vectorSearch' as const;\n readonly index: string;\n readonly path: string;\n readonly queryVector: ReadonlyArray<number>;\n readonly numCandidates: number;\n readonly limit: number;\n readonly filter: Readonly<Record<string, unknown>> | undefined;\n\n constructor(options: {\n index: string;\n path: string;\n queryVector: ReadonlyArray<number>;\n numCandidates: number;\n limit: number;\n filter?: Record<string, unknown>;\n }) {\n super();\n if (!Number.isInteger(options.limit) || options.limit < 1) {\n throw new RangeError('limit must be a positive integer');\n }\n if (!Number.isInteger(options.numCandidates) || options.numCandidates < options.limit) {\n throw new RangeError('numCandidates must be an integer >= limit');\n }\n this.index = options.index;\n this.path = options.path;\n this.queryVector = Object.freeze([...options.queryVector]);\n this.numCandidates = options.numCandidates;\n this.limit = options.limit;\n this.filter = options.filter ? Object.freeze({ ...options.filter }) : undefined;\n this.freeze();\n }\n\n accept<R>(visitor: MongoStageVisitor<R>): R {\n return visitor.vectorSearch(this);\n }\n\n rewrite(_context: MongoStageRewriterContext): MongoPipelineStage {\n return this;\n }\n}\n\nexport type MongoUpdatePipelineStage =\n | MongoAddFieldsStage\n | MongoProjectStage\n | MongoReplaceRootStage;\n\nexport type MongoPipelineStage =\n | MongoMatchStage\n | MongoProjectStage\n | MongoSortStage\n | MongoLimitStage\n | MongoSkipStage\n | MongoLookupStage\n | MongoUnwindStage\n | MongoGroupStage\n | MongoAddFieldsStage\n | MongoReplaceRootStage\n | MongoCountStage\n | MongoSortByCountStage\n | MongoSampleStage\n | MongoRedactStage\n | MongoOutStage\n | MongoUnionWithStage\n | MongoBucketStage\n | MongoBucketAutoStage\n | MongoGeoNearStage\n | MongoFacetStage\n | MongoGraphLookupStage\n | MongoMergeStage\n | MongoSetWindowFieldsStage\n | MongoDensifyStage\n | MongoFillStage\n | MongoSearchStage\n | MongoSearchMetaStage\n | MongoVectorSearchStage;\n"],"mappings":"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"}
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":";AAAA,IAAsB,eAAtB,MAAmC;CAGjC,SAAyB;EACvB,OAAO,OAAO,KAAK;;;;;ACCvB,MAAM,oBAAoB;AAE1B,SAAgB,kBAAkB,OAA0C;CAC1E,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,qBAAqB;;AAG7E,IAAe,wBAAf,cAA6C,aAAa;CAIxD,MAAyC;EACvC,OAAO,IAAI,aAAa,KAAK;;;AAIjC,OAAO,eAAe,sBAAsB,WAAW,mBAAmB;CACxE,OAAO;CACP,UAAU;CACV,YAAY;CACZ,cAAc;CACf,CAAC;AAEF,IAAa,mBAAb,MAAa,yBAAyB,sBAAsB;CAC1D,OAAgB;CAChB;CACA;CACA;CAEA,YAAY,OAAe,IAAY,OAAmB;EACxD,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,KAAK;EACV,KAAK,QAAQ;EACb,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAAe,IAAY,OAAqC;EACxE,OAAO,IAAI,iBAAiB,OAAO,IAAI,MAAM;;CAG/C,OAAO,GAAG,OAAe,OAAqC;EAC5D,OAAO,IAAI,iBAAiB,OAAO,OAAO,MAAM;;CAGlD,OAAO,IAAI,OAAe,OAAqC;EAC7D,OAAO,IAAI,iBAAiB,OAAO,OAAO,MAAM;;CAGlD,OAAO,GAAG,OAAe,OAAqC;EAC5D,OAAO,IAAI,iBAAiB,OAAO,OAAO,MAAM;;CAGlD,OAAO,GAAG,OAAe,OAAqC;EAC5D,OAAO,IAAI,iBAAiB,OAAO,OAAO,MAAM;;CAGlD,OAAO,IAAI,OAAe,OAAqC;EAC7D,OAAO,IAAI,iBAAiB,OAAO,QAAQ,MAAM;;CAGnD,OAAO,IAAI,OAAe,OAAqC;EAC7D,OAAO,IAAI,iBAAiB,OAAO,QAAQ,MAAM;;CAGnD,OAAO,GAAG,OAAe,QAAqD;EAC5E,OAAO,IAAI,iBAAiB,OAAO,OAAO,OAAO;;CAGnD,OAAO,IAAI,OAAe,QAAqD;EAC7E,OAAO,IAAI,iBAAiB,OAAO,QAAQ,OAAO;;CAGpD,OAAO,OAAO,OAAiC;EAC7C,OAAO,IAAI,iBAAiB,OAAO,OAAO,KAAK;;CAGjD,OAAO,UAAU,OAAiC;EAChD,OAAO,IAAI,iBAAiB,OAAO,OAAO,KAAK;;CAGjD,OAAU,SAAmC;EAC3C,OAAO,QAAQ,MAAM,KAAK;;CAG5B,QAAQ,UAAgD;EACtD,OAAO,SAAS,QAAQ,SAAS,MAAM,KAAK,GAAG;;;AAInD,IAAa,eAAb,MAAa,qBAAqB,sBAAsB;CACtD,OAAgB;CAChB;CAEA,YAAY,OAAuC;EACjD,OAAO;EACP,IAAI,MAAM,WAAW,GACnB,MAAM,IAAI,MAAM,wCAAwC;EAE1D,KAAK,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;EACtC,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAAqD;EAC7D,OAAO,IAAI,aAAa,MAAM;;CAGhC,OAAU,SAAmC;EAC3C,OAAO,QAAQ,IAAI,KAAK;;CAG1B,QAAQ,UAAgD;EACtD,MAAM,YAAY,IAAI,aAAa,KAAK,MAAM,KAAK,MAAM,EAAE,QAAQ,SAAS,CAAC,CAAC;EAC9E,OAAO,SAAS,MAAM,SAAS,IAAI,UAAU,GAAG;;;AAIpD,IAAa,cAAb,MAAa,oBAAoB,sBAAsB;CACrD,OAAgB;CAChB;CAEA,YAAY,OAAuC;EACjD,OAAO;EACP,IAAI,MAAM,WAAW,GACnB,MAAM,IAAI,MAAM,uCAAuC;EAEzD,KAAK,QAAQ,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC;EACtC,KAAK,QAAQ;;CAGf,OAAO,GAAG,OAAoD;EAC5D,OAAO,IAAI,YAAY,MAAM;;CAG/B,OAAU,SAAmC;EAC3C,OAAO,QAAQ,GAAG,KAAK;;CAGzB,QAAQ,UAAgD;EACtD,MAAM,YAAY,IAAI,YAAY,KAAK,MAAM,KAAK,MAAM,EAAE,QAAQ,SAAS,CAAC,CAAC;EAC7E,OAAO,SAAS,KAAK,SAAS,GAAG,UAAU,GAAG;;;AAIlD,IAAa,eAAb,MAAa,qBAAqB,sBAAsB;CACtD,OAAgB;CAChB;CAEA,YAAY,MAAuB;EACjC,OAAO;EACP,KAAK,OAAO;EACZ,KAAK,QAAQ;;CAGf,OAAU,SAAmC;EAC3C,OAAO,QAAQ,IAAI,KAAK;;CAG1B,QAAQ,UAAgD;EACtD,MAAM,YAAY,IAAI,aAAa,KAAK,KAAK,QAAQ,SAAS,CAAC;EAC/D,OAAO,SAAS,MAAM,SAAS,IAAI,UAAU,GAAG;;;AAIpD,IAAa,kBAAb,MAAa,wBAAwB,sBAAsB;CACzD,OAAgB;CAChB;CACA;CAEA,YAAY,OAAe,QAAiB;EAC1C,OAAO;EACP,KAAK,QAAQ;EACb,KAAK,SAAS;EACd,KAAK,QAAQ;;CAGf,OAAO,OAAO,OAAgC;EAC5C,OAAO,IAAI,gBAAgB,OAAO,KAAK;;CAGzC,OAAO,UAAU,OAAgC;EAC/C,OAAO,IAAI,gBAAgB,OAAO,MAAM;;CAG1C,OAAU,SAAmC;EAC3C,OAAO,QAAQ,OAAO,KAAK;;CAG7B,QAAQ,UAAgD;EACtD,OAAO,SAAS,SAAS,SAAS,OAAO,KAAK,GAAG;;;AAIrD,IAAa,kBAAb,MAAa,wBAAwB,sBAAsB;CACzD,OAAgB;CAChB;CAEA,YAAY,SAAuB;EACjC,OAAO;EACP,KAAK,UAAU;EACf,KAAK,QAAQ;;CAGf,OAAO,GAAG,SAAwC;EAChD,OAAO,IAAI,gBAAgB,QAAQ;;CAGrC,OAAU,SAAmC;EAC3C,OAAO,QAAQ,KAAK,KAAK;;CAG3B,QAAQ,UAAgD;EACtD,OAAO,SAAS,OAAO,SAAS,KAAK,KAAK,GAAG"}
@@ -775,6 +775,31 @@ declare class AggregateCommand extends MongoAstNode {
775
775
  }
776
776
  type AnyMongoCommand = InsertOneCommand | InsertManyCommand | UpdateOneCommand | UpdateManyCommand | DeleteOneCommand | DeleteManyCommand | FindOneAndUpdateCommand | FindOneAndDeleteCommand | AggregateCommand | RawMongoCommand;
777
777
  //#endregion
778
+ //#region src/result-shape.d.ts
779
+ type MongoResultShape = {
780
+ readonly kind: 'document';
781
+ readonly fields: Readonly<Record<string, MongoFieldShape>>;
782
+ } | {
783
+ readonly kind: 'unknown';
784
+ };
785
+ type MongoFieldShape = {
786
+ readonly kind: 'leaf';
787
+ readonly codecId: string;
788
+ readonly nullable: boolean;
789
+ } | {
790
+ readonly kind: 'document';
791
+ readonly nullable: boolean;
792
+ readonly fields: Readonly<Record<string, MongoFieldShape>>;
793
+ } | {
794
+ readonly kind: 'array';
795
+ readonly nullable: boolean;
796
+ readonly element: MongoFieldShape;
797
+ } | {
798
+ readonly kind: 'unknown';
799
+ };
800
+ declare function freezeMongoFieldShape(shape: MongoFieldShape): MongoFieldShape;
801
+ declare function freezeMongoResultShape(shape: MongoResultShape): MongoResultShape;
802
+ //#endregion
778
803
  //#region src/query-plan.d.ts
779
804
  declare const __mongoQueryPlanRow: unique symbol;
780
805
  /**
@@ -788,8 +813,9 @@ declare const __mongoQueryPlanRow: unique symbol;
788
813
  interface MongoQueryPlan<Row = unknown, Command extends AnyMongoCommand = AnyMongoCommand> extends QueryPlan<Row> {
789
814
  readonly collection: string;
790
815
  readonly command: Command;
816
+ readonly resultShape?: MongoResultShape;
791
817
  readonly [__mongoQueryPlanRow]?: Row;
792
818
  }
793
819
  //#endregion
794
- export { MongoAddFieldsStage as $, isMongoFilterExpr as A, MongoUnwindStage as At, MongoAggMergeObjects as B, MongoAndExpr as C, MongoSearchMetaStage as Ct, MongoFilterExpr as D, MongoSortByCountStage as Dt, MongoFieldFilter as E, MongoSkipStage as Et, MongoAggExpr as F, isExprArray as G, MongoAggReduce as H, MongoAggFieldRef as I, MongoAggExprVisitor as J, isRecordArgs as K, MongoAggLet as L, MongoAggAccumulator as M, MongoVectorSearchStage as Mt, MongoAggArrayFilter as N, MongoWindowField as Nt, MongoNotExpr as O, MongoSortStage as Ot, MongoAggCond as P, MongoAstNode as Pt, MongoStageVisitor as Q, MongoAggLiteral as R, RawUpdateOneCommand as S, MongoSampleStage as St, MongoExprFilter as T, MongoSetWindowFieldsStage as Tt, MongoAggSwitch as U, MongoAggOperator as V, MongoAggSwitchBranch as W, MongoFilterVisitor as X, MongoFilterRewriter as Y, MongoStageRewriterContext as Z, RawFindOneAndUpdateCommand as _, MongoPipelineStage as _t, DeleteOneCommand as a, MongoFacetStage as at, RawMongoCommand as b, MongoRedactStage as bt, InsertManyCommand as c, MongoGeoNearStage as ct, UpdateManyCommand as d, MongoGroupStage as dt, MongoBucketAutoStage as et, UpdateOneCommand as f, MongoLimitStage as ft, RawFindOneAndDeleteCommand as g, MongoOutStage as gt, RawDeleteOneCommand as h, MongoMergeStage as ht, DeleteManyCommand as i, MongoDensifyStage as it, AggRecordArgs as j, MongoUpdatePipelineStage as jt, MongoOrExpr as k, MongoUnionWithStage as kt, InsertOneCommand as l, MongoGraphLookupStage as lt, RawDeleteManyCommand as m, MongoMatchStage as mt, AggregateCommand as n, MongoCountStage as nt, FindOneAndDeleteCommand as o, MongoFillOutput as ot, RawAggregateCommand as p, MongoLookupStage as pt, MongoAggExprRewriter as q, AnyMongoCommand as r, MongoDensifyRange as rt, FindOneAndUpdateCommand as s, MongoFillStage as st, MongoQueryPlan as t, MongoBucketStage as tt, MongoUpdateSpec as u, MongoGroupId as ut, RawInsertManyCommand as v, MongoProjectStage as vt, MongoExistsExpr as w, MongoSearchStage as wt, RawUpdateManyCommand as x, MongoReplaceRootStage as xt, RawInsertOneCommand as y, MongoProjectionValue as yt, MongoAggMap as z };
795
- //# sourceMappingURL=query-plan-Bn2lrJ__.d.mts.map
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-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,21 +1,22 @@
1
1
  {
2
2
  "name": "@prisma-next/mongo-query-ast",
3
- "version": "0.5.0-dev.9",
3
+ "version": "0.5.0",
4
+ "license": "Apache-2.0",
4
5
  "type": "module",
5
6
  "sideEffects": false,
6
7
  "description": "Typed query AST for MongoDB aggregation pipelines",
7
8
  "dependencies": {
8
- "@prisma-next/contract": "0.5.0-dev.9",
9
- "@prisma-next/framework-components": "0.5.0-dev.9",
10
- "@prisma-next/mongo-contract": "0.5.0-dev.9",
11
- "@prisma-next/mongo-value": "0.5.0-dev.9"
9
+ "@prisma-next/contract": "0.5.0",
10
+ "@prisma-next/mongo-contract": "0.5.0",
11
+ "@prisma-next/mongo-value": "0.5.0",
12
+ "@prisma-next/framework-components": "0.5.0"
12
13
  },
13
14
  "devDependencies": {
14
- "tsdown": "0.18.4",
15
+ "tsdown": "0.22.0",
15
16
  "typescript": "5.9.3",
16
- "vitest": "4.0.17",
17
- "@prisma-next/tsconfig": "0.0.0",
17
+ "vitest": "4.1.5",
18
18
  "@prisma-next/test-utils": "0.0.1",
19
+ "@prisma-next/tsconfig": "0.0.0",
19
20
  "@prisma-next/tsdown": "0.0.0"
20
21
  },
21
22
  "files": [
@@ -49,6 +49,8 @@ export {
49
49
  RawUpdateManyCommand,
50
50
  RawUpdateOneCommand,
51
51
  } from '../raw-commands';
52
+ export type { MongoFieldShape, MongoResultShape } from '../result-shape';
53
+ export { freezeMongoFieldShape, freezeMongoResultShape } from '../result-shape';
52
54
  export type {
53
55
  DeleteManyResult,
54
56
  DeleteOneResult,
@@ -34,7 +34,16 @@ export interface MongoDataTransformCheck {
34
34
 
35
35
  export interface MongoDataTransformOperation extends MigrationPlanOperation {
36
36
  readonly operationClass: 'data';
37
+ /**
38
+ * Human-readable label for this data transform.
39
+ */
37
40
  readonly name: string;
41
+ /**
42
+ * Optional opt-in routing identity. Presence opts the transform into
43
+ * invariant-aware routing; absence means the transform is
44
+ * path-dependent and not referenceable from refs.
45
+ */
46
+ readonly invariantId?: string;
38
47
  readonly precheck: readonly MongoDataTransformCheck[];
39
48
  readonly run: readonly MongoQueryPlan[];
40
49
  readonly postcheck: readonly MongoDataTransformCheck[];
package/src/query-plan.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { QueryPlan } from '@prisma-next/framework-components/runtime';
2
2
  import type { AnyMongoCommand } from './commands';
3
+ import type { MongoResultShape } from './result-shape';
3
4
 
4
5
  declare const __mongoQueryPlanRow: unique symbol;
5
6
 
@@ -15,5 +16,6 @@ export interface MongoQueryPlan<Row = unknown, Command extends AnyMongoCommand =
15
16
  extends QueryPlan<Row> {
16
17
  readonly collection: string;
17
18
  readonly command: Command;
19
+ readonly resultShape?: MongoResultShape;
18
20
  readonly [__mongoQueryPlanRow]?: Row;
19
21
  }
@@ -0,0 +1,61 @@
1
+ export type MongoResultShape =
2
+ | { readonly kind: 'document'; readonly fields: Readonly<Record<string, MongoFieldShape>> }
3
+ | { readonly kind: 'unknown' };
4
+
5
+ export type MongoFieldShape =
6
+ | { readonly kind: 'leaf'; readonly codecId: string; readonly nullable: boolean }
7
+ | {
8
+ readonly kind: 'document';
9
+ readonly nullable: boolean;
10
+ readonly fields: Readonly<Record<string, MongoFieldShape>>;
11
+ }
12
+ | { readonly kind: 'array'; readonly nullable: boolean; readonly element: MongoFieldShape }
13
+ | { readonly kind: 'unknown' };
14
+
15
+ export function freezeMongoFieldShape(shape: MongoFieldShape): MongoFieldShape {
16
+ switch (shape.kind) {
17
+ case 'unknown':
18
+ return Object.freeze({ kind: 'unknown' as const });
19
+ case 'leaf':
20
+ return Object.freeze({
21
+ kind: 'leaf' as const,
22
+ codecId: shape.codecId,
23
+ nullable: shape.nullable,
24
+ });
25
+ case 'document': {
26
+ const fields: Record<string, MongoFieldShape> = {};
27
+ for (const [k, v] of Object.entries(shape.fields)) {
28
+ fields[k] = freezeMongoFieldShape(v);
29
+ }
30
+ return Object.freeze({
31
+ kind: 'document' as const,
32
+ nullable: shape.nullable,
33
+ fields: Object.freeze(fields),
34
+ });
35
+ }
36
+ case 'array':
37
+ return Object.freeze({
38
+ kind: 'array' as const,
39
+ nullable: shape.nullable,
40
+ element: freezeMongoFieldShape(shape.element),
41
+ });
42
+ default: {
43
+ const _exhaustive: never = shape;
44
+ return _exhaustive;
45
+ }
46
+ }
47
+ }
48
+
49
+ export function freezeMongoResultShape(shape: MongoResultShape): MongoResultShape {
50
+ if (shape.kind === 'unknown') {
51
+ return Object.freeze({ kind: 'unknown' as const });
52
+ }
53
+ const fields: Record<string, MongoFieldShape> = {};
54
+ for (const [k, v] of Object.entries(shape.fields)) {
55
+ fields[k] = freezeMongoFieldShape(v);
56
+ }
57
+ return Object.freeze({
58
+ kind: 'document' as const,
59
+ fields: Object.freeze(fields),
60
+ });
61
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-plan-Bn2lrJ__.d.mts","names":[],"sources":["../src/ast-node.ts","../src/stages.ts","../src/visitors.ts","../src/aggregation-expressions.ts","../src/filter-expressions.ts","../src/raw-commands.ts","../src/commands.ts","../src/query-plan.ts"],"sourcesContent":[],"mappings":"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"}