@prisma-next/mongo-orm 0.12.0-dev.9 → 0.13.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { ContractField, ContractReferenceRelation, ContractValueObject, ContractValueObjectsMap } from "@prisma-next/contract/types";
1
+ import { ContractField, ContractReferenceRelation, ContractValueObject, ContractValueObjectDefinitions } from "@prisma-next/contract/types";
2
2
  import { AsyncIterableResult } from "@prisma-next/framework-components/runtime";
3
3
  import { MongoFilterExpr, MongoQueryPlan, MongoQueryPlan as MongoQueryPlan$1 } from "@prisma-next/mongo-query-ast/execution";
4
4
  import { Document, MongoValue } from "@prisma-next/mongo-value";
@@ -71,7 +71,7 @@ type FieldExpression<T = unknown> = {
71
71
  pop(end: 1 | -1): FieldOperation;
72
72
  } & (T extends number ? NumericOps : unknown);
73
73
  type HasValueObjects = MongoContract;
74
- type MergedContractValueObjects<TContract extends HasValueObjects> = ContractValueObjectsMap<TContract> & (TContract extends {
74
+ type MergedContractValueObjects<TContract extends HasValueObjects> = ContractValueObjectDefinitions<TContract> & (TContract extends {
75
75
  readonly valueObjects?: infer VOs;
76
76
  } ? VOs extends Record<string, ContractValueObject> ? VOs : Record<string, never> : Record<string, never>);
77
77
  type VOFields<TContract extends HasValueObjects, VOName extends string> = VOName extends keyof MergedContractValueObjects<TContract> ? MergedContractValueObjects<TContract>[VOName] extends {
@@ -259,7 +259,7 @@ interface MongoIncludeExpr {
259
259
  readonly from: string;
260
260
  readonly localField: string;
261
261
  readonly foreignField: string;
262
- readonly cardinality: '1:1' | 'N:1' | '1:N' | 'M:N';
262
+ readonly cardinality: '1:1' | 'N:1' | '1:N' | 'N:M';
263
263
  }
264
264
  interface MongoCollectionState {
265
265
  readonly filters: readonly MongoFilterExpr[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/executor.ts","../src/field-accessor.ts","../src/types.ts","../src/collection.ts","../src/collection-state.ts","../src/compile.ts","../src/mongo-orm.ts","../src/raw-collection.ts","../src/mongo-raw.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/executor.ts","../src/field-accessor.ts","../src/types.ts","../src/collection.ts","../src/collection-state.ts","../src/compile.ts","../src/mongo-orm.ts","../src/raw-collection.ts","../src/mongo-raw.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { contractModels, contractValueObjects } from "@prisma-next/contract/types";
1
+ import { domainModelsAtDefaultNamespace, domainValueObjectsAtDefaultNamespace } from "@prisma-next/contract/types";
2
2
  import { AsyncIterableResult } from "@prisma-next/framework-components/runtime";
3
3
  import { AggregateCommand, DeleteManyCommand, FindOneAndDeleteCommand, FindOneAndUpdateCommand, InsertManyCommand, InsertOneCommand, MongoAndExpr, MongoFieldFilter, MongoLimitStage, MongoLookupStage, MongoMatchStage, MongoProjectStage, MongoSkipStage, MongoSortStage, MongoUnwindStage, RawAggregateCommand, RawDeleteManyCommand, RawDeleteOneCommand, RawFindOneAndDeleteCommand, RawFindOneAndUpdateCommand, RawInsertManyCommand, RawInsertOneCommand, RawUpdateManyCommand, RawUpdateOneCommand, UpdateManyCommand, isMongoFilterExpr } from "@prisma-next/mongo-query-ast/execution";
4
4
  import { MongoParamRef } from "@prisma-next/mongo-value";
@@ -164,12 +164,12 @@ var MongoCollectionImpl = class MongoCollectionImpl {
164
164
  this.#contract = contract;
165
165
  this.#modelName = modelName;
166
166
  this.#executor = executor;
167
- const model = contractModels(contract)[modelName];
167
+ const model = domainModelsAtDefaultNamespace(contract.domain)[modelName];
168
168
  this.#collectionName = resolveCollectionName(model, modelName);
169
169
  this.#state = emptyCollectionState();
170
170
  }
171
171
  variant(variantName) {
172
- const model = contractModels(this.#contract)[this.#modelName];
172
+ const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName];
173
173
  if (!model?.discriminator || !model.variants) return this;
174
174
  const variantEntry = model.variants[variantName];
175
175
  if (!variantEntry) return this;
@@ -185,7 +185,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
185
185
  return this.#clone({ selectedFields: [...this.#state.selectedFields ?? [], ...fields] });
186
186
  }
187
187
  include(relationName) {
188
- const relation = contractModels(this.#contract)[this.#modelName].relations?.[relationName];
188
+ const relation = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName].relations?.[relationName];
189
189
  if (!relation) throw new Error(`Unknown relation "${relationName}" on model "${this.#modelName}"`);
190
190
  if (!("on" in relation)) throw new Error(`Relation "${relationName}" is an embed relation — only reference relations can be included`);
191
191
  const ref = relation;
@@ -193,7 +193,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
193
193
  const foreignField = ref.on.targetFields[0];
194
194
  if (!localField || !foreignField || ref.on.localFields.length !== 1 || ref.on.targetFields.length !== 1) throw new Error(`Compound references are not yet supported: relation "${relationName}"`);
195
195
  const targetModelName = ref.to.model;
196
- const targetModel = contractModels(this.#contract)[targetModelName];
196
+ const targetModel = domainModelsAtDefaultNamespace(this.#contract.domain)[targetModelName];
197
197
  if (!targetModel) throw new Error(`Target model "${targetModelName}" not found for relation "${relationName}"`);
198
198
  const includeExpr = {
199
199
  relationName,
@@ -365,7 +365,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
365
365
  return this.#executor.execute(plan);
366
366
  }
367
367
  #compile() {
368
- const model = contractModels(this.#contract)[this.#modelName];
368
+ const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName];
369
369
  if (!model) throw new Error(`Unknown model: "${this.#modelName}".`);
370
370
  return compileMongoQuery(this.#collectionName, this.#state, this.#contract.storage.storageHash, model);
371
371
  }
@@ -384,7 +384,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
384
384
  return rows;
385
385
  }
386
386
  #modelFields() {
387
- return contractModels(this.#contract)[this.#modelName]?.fields ?? {};
387
+ return domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]?.fields ?? {};
388
388
  }
389
389
  #compileWhereObject(data) {
390
390
  const fields = this.#modelFields();
@@ -401,7 +401,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
401
401
  if (field.type.kind === "scalar") return new MongoParamRef(value, { codecId: field.type.codecId });
402
402
  if (field.type.kind === "valueObject") {
403
403
  const voName = field.type.name;
404
- const voDef = contractValueObjects(this.#contract)?.[voName];
404
+ const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];
405
405
  if (!voDef || value === null) return new MongoParamRef(value);
406
406
  if (field.many && Array.isArray(value)) return value.map((item) => this.#wrapValueObject(item, voDef));
407
407
  return this.#wrapValueObject(value, voDef);
@@ -460,7 +460,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
460
460
  const raw = value.value;
461
461
  if (typeof raw === "object" && raw !== null && !Array.isArray(raw)) {
462
462
  const voName = contractField.type.name;
463
- const voDef = contractValueObjects(this.#contract)?.[voName];
463
+ const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];
464
464
  if (voDef) return this.#wrapValueObject(raw, voDef);
465
465
  }
466
466
  }
@@ -473,7 +473,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
473
473
  for (let i = 1; i < parts.length; i++) {
474
474
  if (!currentField || currentField.type.kind !== "valueObject") return value;
475
475
  const voName = currentField.type.name;
476
- const voDef = contractValueObjects(this.#contract)?.[voName];
476
+ const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];
477
477
  if (!voDef) return value;
478
478
  const partKey = parts[i];
479
479
  currentField = partKey ? voDef.fields[partKey] : void 0;
@@ -483,7 +483,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
483
483
  const raw = value.value;
484
484
  if (typeof raw === "object" && raw !== null && !Array.isArray(raw)) {
485
485
  const voName = currentField.type.name;
486
- const voDef = contractValueObjects(this.#contract)?.[voName];
486
+ const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];
487
487
  if (voDef) return this.#wrapValueObject(raw, voDef);
488
488
  }
489
489
  }
@@ -512,7 +512,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
512
512
  }
513
513
  #injectDiscriminator(data) {
514
514
  if (!this.#variantName) return data;
515
- const model = contractModels(this.#contract)[this.#modelName];
515
+ const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName];
516
516
  if (!model?.discriminator || !model.variants) return data;
517
517
  const variantEntry = model.variants[this.#variantName];
518
518
  if (!variantEntry) return data;
@@ -599,7 +599,7 @@ function mongoRaw(options) {
599
599
  const { contract } = options;
600
600
  return { collection(rootName) {
601
601
  const modelName = contract.roots[rootName]?.model;
602
- const models = contractModels(contract);
602
+ const models = domainModelsAtDefaultNamespace(contract.domain);
603
603
  if (!modelName || !Object.hasOwn(models, modelName)) throw new Error(`Unknown model "${modelName ?? ""}" for root "${rootName}"`);
604
604
  return createRawMongoCollection(models[modelName].storage.collection ?? modelName, {
605
605
  target: "mongo",
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["#contract","#modelName","#executor","#collectionName","#state","#cloneWithVariant","#clone","#compileWhereObject","#execute","#rejectIncludes","#injectDiscriminator","#stripUndefined","#toDocument","#drainPlan","#requireFilters","#rejectWindowing","#mergeFilters","#resolveUpdateDoc","#readMatchingIds","#wrapFieldOpValue","#toSetFields","#compile","#planMeta","#wrapCommand","#modelFields","#wrapFieldValue","#wrapValueObject","#toUpdateDocument","#wrapDotPathValue","#variantName"],"sources":["../src/collection-state.ts","../src/compile.ts","../src/field-accessor.ts","../src/collection.ts","../src/mongo-orm.ts","../src/raw-collection.ts","../src/mongo-raw.ts"],"sourcesContent":["import type { MongoFilterExpr } from '@prisma-next/mongo-query-ast/execution';\n\nexport interface MongoIncludeExpr {\n readonly relationName: string;\n readonly from: string;\n readonly localField: string;\n readonly foreignField: string;\n readonly cardinality: '1:1' | 'N:1' | '1:N' | 'M:N';\n}\n\nexport interface MongoCollectionState {\n readonly filters: readonly MongoFilterExpr[];\n readonly includes: readonly MongoIncludeExpr[];\n readonly orderBy: Readonly<Record<string, 1 | -1>> | undefined;\n readonly selectedFields: readonly string[] | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n}\n\nexport function emptyCollectionState(): MongoCollectionState {\n return {\n filters: [],\n includes: [],\n orderBy: undefined,\n selectedFields: undefined,\n limit: undefined,\n offset: undefined,\n };\n}\n","import type { PlanMeta } from '@prisma-next/contract/types';\nimport type { MongoModelDefinition } from '@prisma-next/mongo-contract';\nimport type { MongoPipelineStage, MongoQueryPlan } from '@prisma-next/mongo-query-ast/execution';\nimport {\n AggregateCommand,\n MongoAndExpr,\n MongoLimitStage,\n MongoLookupStage,\n MongoMatchStage,\n MongoProjectStage,\n MongoSkipStage,\n MongoSortStage,\n MongoUnwindStage,\n} from '@prisma-next/mongo-query-ast/execution';\nimport { contractModelToMongoResultShape } from '@prisma-next/mongo-query-builder';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type { MongoCollectionState, MongoIncludeExpr } from './collection-state';\n\nfunction compileIncludes(includes: readonly MongoIncludeExpr[]): MongoPipelineStage[] {\n const stages: MongoPipelineStage[] = [];\n\n for (const inc of includes) {\n stages.push(\n new MongoLookupStage({\n from: inc.from,\n localField: inc.localField,\n foreignField: inc.foreignField,\n as: inc.relationName,\n }),\n );\n\n if (inc.cardinality === 'N:1' || inc.cardinality === '1:1') {\n stages.push(new MongoUnwindStage(`$${inc.relationName}`, true));\n }\n }\n\n return stages;\n}\n\nexport function compileMongoQuery<Row = unknown>(\n collection: string,\n state: MongoCollectionState,\n storageHash: string,\n model: MongoModelDefinition,\n): MongoQueryPlan<Row> {\n const stages: MongoPipelineStage[] = [];\n\n const singleFilter = state.filters.length === 1 ? state.filters[0] : undefined;\n if (singleFilter) {\n stages.push(new MongoMatchStage(singleFilter));\n } else if (state.filters.length > 1) {\n stages.push(new MongoMatchStage(MongoAndExpr.of([...state.filters])));\n }\n\n if (state.includes.length > 0) {\n stages.push(...compileIncludes(state.includes));\n }\n\n if (state.orderBy) {\n stages.push(new MongoSortStage(state.orderBy));\n }\n\n if (state.offset !== undefined) {\n stages.push(new MongoSkipStage(state.offset));\n }\n\n if (state.limit !== undefined) {\n stages.push(new MongoLimitStage(state.limit));\n }\n\n if (state.selectedFields && state.selectedFields.length > 0) {\n const projection: Record<string, 0 | 1> = {};\n for (const field of state.selectedFields) {\n projection[field] = 1;\n }\n if (!Object.hasOwn(projection, '_id')) {\n projection['_id'] = 0;\n }\n stages.push(new MongoProjectStage(projection));\n }\n\n const meta: PlanMeta = {\n target: 'mongo',\n storageHash,\n lane: 'mongo-orm',\n };\n const command = new AggregateCommand(collection, stages);\n\n const selection =\n state.selectedFields !== undefined && state.selectedFields.length > 0\n ? state.selectedFields\n : undefined;\n const includeRelationNames =\n state.includes.length > 0 ? state.includes.map((inc) => inc.relationName) : undefined;\n const resultShape = contractModelToMongoResultShape(model, {\n ...ifDefined('selection', selection),\n ...ifDefined('includeRelationNames', includeRelationNames),\n });\n\n return { collection, command, meta, resultShape };\n}\n","import type {\n ContractField,\n ContractValueObject,\n ContractValueObjectsMap,\n} from '@prisma-next/contract/types';\nimport type {\n ExtractMongoCodecTypes,\n ExtractMongoFieldOutputTypes,\n InferModelRow,\n MongoContract,\n MongoContractWithTypeMaps,\n MongoModelsMap,\n MongoTypeMaps,\n} from '@prisma-next/mongo-contract';\nimport type { MongoValue } from '@prisma-next/mongo-value';\nimport { MongoParamRef } from '@prisma-next/mongo-value';\n\n// ── Runtime types ────────────────────────────────────────────────────────────\n\nexport type UpdateOperator =\n | '$set'\n | '$unset'\n | '$inc'\n | '$mul'\n | '$push'\n | '$pull'\n | '$addToSet'\n | '$pop';\n\nexport interface FieldOperation {\n readonly operator: UpdateOperator;\n readonly field: string;\n readonly value: MongoValue;\n}\n\n// ── Compile-time types ───────────────────────────────────────────────────────\n\ntype ScalarFieldKeys<\n TContract extends MongoContract,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n> = {\n [K in keyof MongoModelsMap<TContract>[ModelName]['fields'] &\n string]: MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: { readonly kind: 'scalar' };\n }\n ? K\n : never;\n}[keyof MongoModelsMap<TContract>[ModelName]['fields'] & string];\n\ntype ValueObjectFieldKeys<\n TContract extends MongoContract,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n> = {\n [K in keyof MongoModelsMap<TContract>[ModelName]['fields'] &\n string]: MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: string };\n }\n ? K\n : never;\n}[keyof MongoModelsMap<TContract>[ModelName]['fields'] & string];\n\ntype ResolvedModelRow<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n> = string extends keyof ExtractMongoFieldOutputTypes<TContract>\n ? InferModelRow<TContract, ModelName, MongoModelsMap<TContract>[ModelName]['fields'], TCodecTypes>\n : ModelName extends keyof ExtractMongoFieldOutputTypes<TContract>\n ? {\n -readonly [K in keyof ExtractMongoFieldOutputTypes<TContract>[ModelName]]: ExtractMongoFieldOutputTypes<TContract>[ModelName][K];\n }\n : InferModelRow<\n TContract,\n ModelName,\n MongoModelsMap<TContract>[ModelName]['fields'],\n TCodecTypes\n >;\n\ntype ResolveFieldType<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n K extends keyof MongoModelsMap<TContract>[ModelName]['fields'] & string,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n> = MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n readonly many: true;\n readonly nullable: true;\n}\n ? readonly TCodecTypes[CId]['output'][] | null\n : MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n readonly many: true;\n }\n ? readonly TCodecTypes[CId]['output'][]\n : MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n readonly nullable: true;\n }\n ? TCodecTypes[CId]['output'] | null\n : MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n }\n ? TCodecTypes[CId]['output']\n : K extends keyof ResolvedModelRow<TContract, ModelName, TCodecTypes>\n ? ResolvedModelRow<TContract, ModelName, TCodecTypes>[K]\n : unknown;\n\ntype NumericOps = {\n inc(value: number): FieldOperation;\n mul(value: number): FieldOperation;\n};\n\nexport type FieldExpression<T = unknown> = {\n set(value: T): FieldOperation;\n unset(): FieldOperation;\n push(value: T extends readonly (infer E)[] ? E : unknown): FieldOperation;\n pull(match: T extends readonly (infer E)[] ? E | Partial<E> : unknown): FieldOperation;\n addToSet(value: T extends readonly (infer E)[] ? E : unknown): FieldOperation;\n pop(end: 1 | -1): FieldOperation;\n} & (T extends number ? NumericOps : unknown);\n\ntype HasValueObjects = MongoContract;\n\ntype MergedContractValueObjects<TContract extends HasValueObjects> =\n ContractValueObjectsMap<TContract> &\n (TContract extends { readonly valueObjects?: infer VOs }\n ? VOs extends Record<string, ContractValueObject>\n ? VOs\n : Record<string, never>\n : Record<string, never>);\n\ntype VOFields<\n TContract extends HasValueObjects,\n VOName extends string,\n> = VOName extends keyof MergedContractValueObjects<TContract>\n ? MergedContractValueObjects<TContract>[VOName] extends {\n readonly fields: infer F extends Record<string, ContractField>;\n }\n ? F\n : never\n : never;\n\ntype VOScalarFieldKeys<Fields extends Record<string, ContractField>> = {\n [K in keyof Fields & string]: Fields[K] extends { readonly type: { readonly kind: 'scalar' } }\n ? K\n : never;\n}[keyof Fields & string];\n\ntype VOValueObjectFieldKeys<Fields extends Record<string, ContractField>> = {\n [K in keyof Fields & string]: Fields[K] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: string };\n }\n ? K\n : never;\n}[keyof Fields & string];\n\ntype VODotPaths<\n TContract extends HasValueObjects,\n Fields extends Record<string, ContractField>,\n Prefix extends string,\n> =\n | { [K in VOScalarFieldKeys<Fields>]: `${Prefix}${K}` }[VOScalarFieldKeys<Fields>]\n | {\n [K in VOValueObjectFieldKeys<Fields>]: Fields[K] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: infer N extends string };\n }\n ? VODotPaths<TContract, VOFields<TContract, N>, `${Prefix}${K}.`>\n : never;\n }[VOValueObjectFieldKeys<Fields>];\n\nexport type DotPath<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n> = {\n [K in ValueObjectFieldKeys<\n TContract,\n ModelName\n >]: MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: infer N extends string };\n }\n ? VODotPaths<TContract, VOFields<TContract, N>, `${K}.`>\n : never;\n}[ValueObjectFieldKeys<TContract, ModelName>];\n\ntype ResolveDotPathInFields<\n TContract extends HasValueObjects,\n Fields extends Record<string, ContractField>,\n Path extends string,\n TCodecTypes extends Record<string, { output: unknown }>,\n> = Path extends `${infer Head}.${infer Rest}`\n ? Head extends keyof Fields & string\n ? Fields[Head] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: infer N extends string };\n }\n ? ResolveDotPathInFields<TContract, VOFields<TContract, N>, Rest, TCodecTypes>\n : never\n : never\n : Path extends keyof Fields & string\n ? Fields[Path] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n }\n ? TCodecTypes[CId]['output']\n : unknown\n : never;\n\nexport type ResolveDotPathType<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n Path extends string,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n> = Path extends `${infer Head}.${infer Rest}`\n ? Head extends keyof MongoModelsMap<TContract>[ModelName]['fields'] & string\n ? MongoModelsMap<TContract>[ModelName]['fields'][Head] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: infer N extends string };\n }\n ? ResolveDotPathInFields<TContract, VOFields<TContract, N>, Rest, TCodecTypes>\n : never\n : never\n : never;\n\nexport type FieldAccessor<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n> = {\n readonly [K in ScalarFieldKeys<TContract, ModelName>]: FieldExpression<\n ResolveFieldType<TContract, ModelName, K, TCodecTypes>\n >;\n} & {\n readonly [K in ValueObjectFieldKeys<TContract, ModelName>]: FieldExpression<\n ResolveFieldType<TContract, ModelName, K, TCodecTypes>\n >;\n} & (<P extends DotPath<TContract, ModelName>>(\n path: P,\n ) => FieldExpression<ResolveDotPathType<TContract, ModelName, P, TCodecTypes>>);\n\n// ── Runtime implementation ───────────────────────────────────────────────────\n\n// Runtime expression has all methods; type-level gating happens via FieldExpression<T>\ninterface RuntimeFieldExpression extends NumericOps {\n set(value: unknown): FieldOperation;\n unset(): FieldOperation;\n push(value: unknown): FieldOperation;\n pull(match: unknown): FieldOperation;\n addToSet(value: unknown): FieldOperation;\n pop(end: 1 | -1): FieldOperation;\n}\n\nfunction createFieldExpression(fieldPath: string): RuntimeFieldExpression {\n return {\n set(value: unknown): FieldOperation {\n return { operator: '$set', field: fieldPath, value: new MongoParamRef(value) };\n },\n unset(): FieldOperation {\n return { operator: '$unset', field: fieldPath, value: new MongoParamRef('') };\n },\n inc(value: number): FieldOperation {\n return { operator: '$inc', field: fieldPath, value: new MongoParamRef(value) };\n },\n mul(value: number): FieldOperation {\n return { operator: '$mul', field: fieldPath, value: new MongoParamRef(value) };\n },\n push(value: unknown): FieldOperation {\n return { operator: '$push', field: fieldPath, value: new MongoParamRef(value) };\n },\n pull(match: unknown): FieldOperation {\n return { operator: '$pull', field: fieldPath, value: new MongoParamRef(match) };\n },\n addToSet(value: unknown): FieldOperation {\n return { operator: '$addToSet', field: fieldPath, value: new MongoParamRef(value) };\n },\n pop(end: 1 | -1): FieldOperation {\n return { operator: '$pop', field: fieldPath, value: new MongoParamRef(end) };\n },\n };\n}\n\nexport function createFieldAccessor<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n>(): FieldAccessor<TContract, ModelName, TCodecTypes> {\n return new Proxy((() => {}) as unknown as FieldAccessor<TContract, ModelName, TCodecTypes>, {\n get(_target, prop: string): RuntimeFieldExpression {\n return createFieldExpression(prop);\n },\n apply(_target, _thisArg, args: [string]): RuntimeFieldExpression {\n return createFieldExpression(args[0]);\n },\n });\n}\n\nexport function compileFieldOperations(\n ops: readonly FieldOperation[],\n wrapValue: (field: string, value: MongoValue, operator: UpdateOperator) => MongoValue,\n): Record<string, Record<string, MongoValue>> {\n const grouped: Record<string, Record<string, MongoValue>> = {};\n for (const op of ops) {\n let group = grouped[op.operator];\n if (!group) {\n group = {};\n grouped[op.operator] = group;\n }\n group[op.field] = wrapValue(op.field, op.value, op.operator);\n }\n return grouped;\n}\n","import {\n type ContractField,\n type ContractReferenceRelation,\n type ContractValueObject,\n contractModels,\n contractValueObjects,\n type PlanMeta,\n} from '@prisma-next/contract/types';\nimport { AsyncIterableResult } from '@prisma-next/framework-components/runtime';\nimport type {\n MongoContract,\n MongoContractWithTypeMaps,\n MongoModelDefinition,\n MongoModelsMap,\n MongoTypeMaps,\n} from '@prisma-next/mongo-contract';\nimport type {\n AnyMongoCommand,\n MongoFilterExpr,\n MongoQueryPlan,\n} from '@prisma-next/mongo-query-ast/execution';\nimport {\n DeleteManyCommand,\n FindOneAndDeleteCommand,\n FindOneAndUpdateCommand,\n InsertManyCommand,\n InsertOneCommand,\n isMongoFilterExpr,\n MongoAndExpr,\n MongoFieldFilter,\n UpdateManyCommand,\n} from '@prisma-next/mongo-query-ast/execution';\nimport type { MongoValue } from '@prisma-next/mongo-value';\nimport { MongoParamRef } from '@prisma-next/mongo-value';\nimport type { MongoIncludeExpr } from './collection-state';\nimport { emptyCollectionState, type MongoCollectionState } from './collection-state';\nimport { compileMongoQuery } from './compile';\nimport type { MongoQueryExecutor } from './executor';\nimport {\n compileFieldOperations,\n createFieldAccessor,\n type FieldAccessor,\n type FieldOperation,\n} from './field-accessor';\nimport type {\n DefaultModelRow,\n IncludedRow,\n MongoIncludeSpec,\n MongoWhereFilter,\n NoIncludes,\n ReferenceRelationKeys,\n ResolvedCreateInput,\n VariantNames,\n} from './types';\n\ntype ModelFieldKeys<\n TContract extends MongoContract,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n> = keyof MongoModelsMap<TContract>[ModelName]['fields'] & string;\n\nexport interface MongoCollection<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TIncludes extends MongoIncludeSpec<TContract, ModelName> = NoIncludes,\n TVariant extends string = never,\n> {\n /** Narrows to a specific variant, injecting a discriminator filter. */\n variant<V extends VariantNames<TContract, ModelName>>(\n variantName: V,\n ): MongoCollection<TContract, ModelName, TIncludes, V>;\n /** Appends equality filters from a plain object. Values are encoded through codecs. */\n where(\n filter: MongoWhereFilter<TContract, ModelName>,\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Appends a filter condition from a raw filter expression. */\n where(filter: MongoFilterExpr): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Restricts returned fields to the given subset. Returns a new immutable collection. */\n select(\n ...fields: ModelFieldKeys<TContract, ModelName>[]\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Adds a `$lookup` for a reference relation. Returns a new immutable collection. */\n include<K extends ReferenceRelationKeys<TContract, ModelName> & string>(\n relationName: K,\n ): MongoCollection<TContract, ModelName, TIncludes & Record<K, true>, TVariant>;\n /** Sets sort order. Returns a new immutable collection. */\n orderBy(\n spec: Partial<Record<ModelFieldKeys<TContract, ModelName>, 1 | -1>>,\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Limits the number of results. Returns a new immutable collection. */\n take(n: number): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Skips the first `n` results. Returns a new immutable collection. */\n skip(n: number): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Executes the query and returns all matching rows as an async iterable. */\n all(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Executes the query with limit 1. Returns the first matching row or `null`. */\n first(): Promise<IncludedRow<TContract, ModelName, TIncludes> | null>;\n /** Returns the input data with the server-assigned `_id`. Does not re-read the stored document. */\n create(\n data: ResolvedCreateInput<TContract, ModelName, TVariant>,\n ): Promise<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Returns input rows with server-assigned `_id`s. Does not re-read stored documents. */\n createAll(\n data: ReadonlyArray<ResolvedCreateInput<TContract, ModelName, TVariant>>,\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Inserts multiple documents and returns the number inserted. */\n createCount(\n data: ReadonlyArray<ResolvedCreateInput<TContract, ModelName, TVariant>>,\n ): Promise<number>;\n /** Updates one matching document via `findOneAndUpdate`. Returns the updated document or `null`. Requires `.where()`. */\n update(\n data: Partial<DefaultModelRow<TContract, ModelName>>,\n ): Promise<IncludedRow<TContract, ModelName, TIncludes> | null>;\n /** Updates one matching document using field operations from a callback. Requires `.where()`. */\n update(\n callback: (u: FieldAccessor<TContract, ModelName>) => FieldOperation[],\n ): Promise<IncludedRow<TContract, ModelName, TIncludes> | null>;\n /** Non-atomic: captures matching `_id`s, updates, then re-reads by `_id`. Requires `.where()`. */\n updateAll(\n data: Partial<DefaultModelRow<TContract, ModelName>>,\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Updates all matching documents using field operations from a callback. Requires `.where()`. */\n updateAll(\n callback: (u: FieldAccessor<TContract, ModelName>) => FieldOperation[],\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Updates all matching documents and returns the number modified. Requires `.where()`. */\n updateCount(data: Partial<DefaultModelRow<TContract, ModelName>>): Promise<number>;\n /** Updates all matching documents using field operations and returns the number modified. Requires `.where()`. */\n updateCount(\n callback: (u: FieldAccessor<TContract, ModelName>) => FieldOperation[],\n ): Promise<number>;\n /** Deletes one matching document via `findOneAndDelete`. Returns the deleted document or `null`. Requires `.where()`. */\n delete(): Promise<IncludedRow<TContract, ModelName, TIncludes> | null>;\n /** Non-atomic: reads matching docs then deletes them. Concurrent writes may cause stale results. Requires `.where()`. */\n deleteAll(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Deletes all matching documents and returns the number deleted. Requires `.where()`. */\n deleteCount(): Promise<number>;\n /**\n * On insert: `update` fields are applied via `$set`, remaining `create` fields via `$setOnInsert`.\n * This means `update` values take precedence over `create` for overlapping fields on insert.\n * Requires `.where()`.\n */\n upsert(input: {\n create: ResolvedCreateInput<TContract, ModelName, TVariant>;\n update: Partial<DefaultModelRow<TContract, ModelName>>;\n }): Promise<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Upsert using field operations callback for the update part. Requires `.where()`. */\n upsert(input: {\n create: ResolvedCreateInput<TContract, ModelName, TVariant>;\n update: (u: FieldAccessor<TContract, ModelName>) => FieldOperation[];\n }): Promise<IncludedRow<TContract, ModelName, TIncludes>>;\n}\n\nfunction resolveCollectionName(model: MongoModelDefinition, modelName: string): string {\n return model.storage.collection ?? modelName;\n}\n\nclass MongoCollectionImpl<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TIncludes extends MongoIncludeSpec<TContract, ModelName> = NoIncludes,\n TVariant extends string = never,\n> implements MongoCollection<TContract, ModelName, TIncludes, TVariant>\n{\n readonly #contract: TContract;\n readonly #modelName: ModelName;\n readonly #executor: MongoQueryExecutor;\n #collectionName: string;\n #state: MongoCollectionState;\n #variantName: string | undefined;\n\n constructor(contract: TContract, modelName: ModelName, executor: MongoQueryExecutor) {\n this.#contract = contract;\n this.#modelName = modelName;\n this.#executor = executor;\n const model = contractModels(contract)[modelName] as MongoModelDefinition;\n this.#collectionName = resolveCollectionName(model, modelName);\n this.#state = emptyCollectionState();\n }\n\n variant<V extends VariantNames<TContract, ModelName>>(\n variantName: V,\n ): MongoCollection<TContract, ModelName, TIncludes, V> {\n const model = contractModels(this.#contract)[this.#modelName] as\n | MongoModelDefinition\n | undefined;\n if (!model?.discriminator || !model.variants) {\n // No polymorphism metadata on this model — return unchanged. Cast required\n // because TS cannot verify TVariant (the current variant) is assignable to V.\n return this as unknown as MongoCollection<TContract, ModelName, TIncludes, V>;\n }\n\n const variantEntry = model.variants[variantName as string];\n if (!variantEntry) {\n // Unknown variant name at runtime — return unchanged. Same cast rationale.\n return this as unknown as MongoCollection<TContract, ModelName, TIncludes, V>;\n }\n\n const filter = MongoFieldFilter.eq(\n model.discriminator.field,\n new MongoParamRef(variantEntry.value),\n );\n return this.#cloneWithVariant<V>(\n { filters: [...this.#state.filters, filter] },\n variantName as string,\n );\n }\n\n where(\n filter: MongoWhereFilter<TContract, ModelName> | MongoFilterExpr,\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n if (isMongoFilterExpr(filter)) {\n return this.#clone({ filters: [...this.#state.filters, filter] });\n }\n const compiled = this.#compileWhereObject(filter as Record<string, unknown>);\n return this.#clone({ filters: [...this.#state.filters, ...compiled] });\n }\n\n select(\n ...fields: ModelFieldKeys<TContract, ModelName>[]\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n return this.#clone({ selectedFields: [...(this.#state.selectedFields ?? []), ...fields] });\n }\n\n include<K extends ReferenceRelationKeys<TContract, ModelName> & string>(\n relationName: K,\n ): MongoCollection<TContract, ModelName, TIncludes & Record<K, true>, TVariant> {\n const model = contractModels(this.#contract)[this.#modelName] as MongoModelDefinition;\n const relation = model.relations?.[relationName];\n if (!relation) {\n throw new Error(`Unknown relation \"${relationName}\" on model \"${this.#modelName as string}\"`);\n }\n\n if (!('on' in relation)) {\n throw new Error(\n `Relation \"${relationName}\" is an embed relation — only reference relations can be included`,\n );\n }\n\n const ref = relation as ContractReferenceRelation;\n const localField = ref.on.localFields[0];\n const foreignField = ref.on.targetFields[0];\n if (\n !localField ||\n !foreignField ||\n ref.on.localFields.length !== 1 ||\n ref.on.targetFields.length !== 1\n ) {\n throw new Error(`Compound references are not yet supported: relation \"${relationName}\"`);\n }\n\n const targetModelName = ref.to.model;\n const targetModel = contractModels(this.#contract)[targetModelName] as\n | MongoModelDefinition\n | undefined;\n if (!targetModel) {\n throw new Error(`Target model \"${targetModelName}\" not found for relation \"${relationName}\"`);\n }\n\n const includeExpr: MongoIncludeExpr = {\n relationName,\n from: resolveCollectionName(targetModel, targetModelName),\n localField,\n foreignField,\n cardinality: ref.cardinality,\n };\n\n return this.#clone({\n includes: [...this.#state.includes, includeExpr],\n }) as unknown as MongoCollectionImpl<\n TContract,\n ModelName,\n TIncludes & Record<K, true>,\n TVariant\n >;\n }\n\n orderBy(\n spec: Partial<Record<ModelFieldKeys<TContract, ModelName>, 1 | -1>>,\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n const merged = { ...this.#state.orderBy, ...(spec as Readonly<Record<string, 1 | -1>>) };\n return this.#clone({ orderBy: merged });\n }\n\n take(n: number): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n return this.#clone({ limit: n });\n }\n\n skip(n: number): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n return this.#clone({ offset: n });\n }\n\n all(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n return this.#execute();\n }\n\n async first(): Promise<IncludedRow<TContract, ModelName, TIncludes> | null> {\n const limited = this.#clone({ limit: 1 });\n const result = limited.#execute();\n for await (const row of result) {\n return row;\n }\n return null;\n }\n\n async create(\n data: ResolvedCreateInput<TContract, ModelName, TVariant>,\n ): Promise<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#rejectIncludes('create');\n const normalized = this.#injectDiscriminator(\n this.#stripUndefined(data as Record<string, unknown>),\n );\n const document = this.#toDocument(normalized);\n const command = new InsertOneCommand(this.#collectionName, document);\n const results = await this.#drainPlan(command);\n const insertedId = (results[0] as { insertedId: unknown }).insertedId;\n return { _id: insertedId, ...normalized } as unknown as IncludedRow<\n TContract,\n ModelName,\n TIncludes\n >;\n }\n\n createAll(\n data: ReadonlyArray<ResolvedCreateInput<TContract, ModelName, TVariant>>,\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#rejectIncludes('createAll');\n const self = this;\n async function* gen(): AsyncGenerator<IncludedRow<TContract, ModelName, TIncludes>> {\n const normalizedRows = data.map((d) =>\n self.#injectDiscriminator(self.#stripUndefined(d as Record<string, unknown>)),\n );\n const documents = normalizedRows.map((d) => self.#toDocument(d));\n const command = new InsertManyCommand(self.#collectionName, documents);\n const results = await self.#drainPlan(command);\n const insertedIds = (results[0] as { insertedIds: readonly unknown[] }).insertedIds;\n for (let i = 0; i < normalizedRows.length; i++) {\n yield { _id: insertedIds[i], ...normalizedRows[i] } as unknown as IncludedRow<\n TContract,\n ModelName,\n TIncludes\n >;\n }\n }\n return new AsyncIterableResult(gen());\n }\n\n async createCount(\n data: ReadonlyArray<ResolvedCreateInput<TContract, ModelName, TVariant>>,\n ): Promise<number> {\n this.#rejectIncludes('createCount');\n const documents = data.map((d) =>\n this.#toDocument(this.#injectDiscriminator(d as Record<string, unknown>)),\n );\n const command = new InsertManyCommand(this.#collectionName, documents);\n const results = await this.#drainPlan(command);\n return (results[0] as { insertedCount: number }).insertedCount;\n }\n\n async update(\n dataOrCallback:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]),\n ): Promise<IncludedRow<TContract, ModelName, TIncludes> | null> {\n this.#requireFilters('update');\n this.#rejectWindowing('update');\n this.#rejectIncludes('update');\n const filter = this.#mergeFilters();\n const updateDoc = this.#resolveUpdateDoc(dataOrCallback);\n const command = new FindOneAndUpdateCommand(this.#collectionName, filter, updateDoc, false);\n const results = await this.#drainPlan(command);\n return (results[0] as IncludedRow<TContract, ModelName, TIncludes>) ?? null;\n }\n\n updateAll(\n dataOrCallback:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]),\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#requireFilters('updateAll');\n this.#rejectWindowing('updateAll');\n const self = this;\n async function* gen(): AsyncGenerator<IncludedRow<TContract, ModelName, TIncludes>> {\n const ids = await self.#readMatchingIds();\n if (ids.length === 0) return;\n\n const filter = self.#mergeFilters();\n const updateDoc = self.#resolveUpdateDoc(dataOrCallback);\n const command = new UpdateManyCommand(self.#collectionName, filter, updateDoc);\n await self.#drainPlan(command);\n\n const idFilter = MongoFieldFilter.in(\n '_id',\n ids.map((id) => new MongoParamRef(id)),\n );\n yield* self.#clone({ filters: [idFilter] }).#execute();\n }\n return new AsyncIterableResult(gen());\n }\n\n async updateCount(\n dataOrCallback:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]),\n ): Promise<number> {\n this.#requireFilters('updateCount');\n this.#rejectWindowing('updateCount');\n this.#rejectIncludes('updateCount');\n const filter = this.#mergeFilters();\n const updateDoc = this.#resolveUpdateDoc(dataOrCallback);\n const command = new UpdateManyCommand(this.#collectionName, filter, updateDoc);\n const results = await this.#drainPlan(command);\n return (results[0] as { modifiedCount: number }).modifiedCount;\n }\n\n async delete(): Promise<IncludedRow<TContract, ModelName, TIncludes> | null> {\n this.#requireFilters('delete');\n this.#rejectWindowing('delete');\n this.#rejectIncludes('delete');\n const filter = this.#mergeFilters();\n const command = new FindOneAndDeleteCommand(this.#collectionName, filter);\n const results = await this.#drainPlan(command);\n return (results[0] as IncludedRow<TContract, ModelName, TIncludes>) ?? null;\n }\n\n deleteAll(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#requireFilters('deleteAll');\n this.#rejectWindowing('deleteAll');\n const self = this;\n async function* gen(): AsyncGenerator<IncludedRow<TContract, ModelName, TIncludes>> {\n const docs: IncludedRow<TContract, ModelName, TIncludes>[] = [];\n for await (const row of self.#execute()) {\n docs.push(row);\n }\n const filter = self.#mergeFilters();\n const command = new DeleteManyCommand(self.#collectionName, filter);\n await self.#drainPlan(command);\n yield* docs;\n }\n return new AsyncIterableResult(gen());\n }\n\n async deleteCount(): Promise<number> {\n this.#requireFilters('deleteCount');\n this.#rejectWindowing('deleteCount');\n this.#rejectIncludes('deleteCount');\n const filter = this.#mergeFilters();\n const command = new DeleteManyCommand(this.#collectionName, filter);\n const results = await this.#drainPlan(command);\n return (results[0] as { deletedCount: number }).deletedCount;\n }\n\n async upsert(input: {\n create: ResolvedCreateInput<TContract, ModelName, TVariant>;\n update:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]);\n }): Promise<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#requireFilters('upsert');\n this.#rejectWindowing('upsert');\n this.#rejectIncludes('upsert');\n const filter = this.#mergeFilters();\n\n const allCreateFields = this.#toDocument(\n this.#injectDiscriminator(input.create as Record<string, unknown>),\n );\n\n let updateDoc: Record<string, Record<string, MongoValue>>;\n if (typeof input.update === 'function') {\n const accessor = createFieldAccessor<TContract, ModelName>();\n const ops = input.update(accessor);\n const idOp = ops.find((op) => op.field === '_id');\n if (idOp) {\n throw new Error('Mutation payloads cannot modify `_id`');\n }\n const dotPathOp = ops.find((op) => op.field.includes('.'));\n if (dotPathOp) {\n throw new Error(\n `upsert() does not support dot-path field operations (found \"${dotPathOp.field}\"). ` +\n 'Dot-path updates conflict with $setOnInsert on the insert path, producing incomplete documents. ' +\n 'Use top-level field operations instead.',\n );\n }\n updateDoc = compileFieldOperations(ops, (field, value, operator) =>\n this.#wrapFieldOpValue(field, value, operator),\n );\n } else {\n const setFields = this.#toSetFields(input.update as Record<string, unknown>);\n updateDoc = {};\n if (Object.keys(setFields).length > 0) {\n updateDoc['$set'] = setFields;\n }\n }\n\n const updatedFields = new Set<string>();\n for (const operatorGroup of Object.values(updateDoc)) {\n for (const fieldPath of Object.keys(operatorGroup)) {\n updatedFields.add(fieldPath.split('.')[0] ?? fieldPath);\n }\n }\n const insertOnlyFields: Record<string, MongoValue> = {};\n for (const [key, value] of Object.entries(allCreateFields)) {\n if (!updatedFields.has(key)) {\n insertOnlyFields[key] = value;\n }\n }\n if (Object.keys(insertOnlyFields).length > 0) {\n updateDoc['$setOnInsert'] = insertOnlyFields;\n }\n\n const command = new FindOneAndUpdateCommand(this.#collectionName, filter, updateDoc, true);\n const results = await this.#drainPlan(command);\n return results[0] as IncludedRow<TContract, ModelName, TIncludes>;\n }\n\n async #readMatchingIds(): Promise<unknown[]> {\n const idQuery = this.#clone({\n includes: [],\n selectedFields: ['_id'],\n orderBy: undefined,\n limit: undefined,\n offset: undefined,\n });\n const ids: unknown[] = [];\n // Strip resultShape so the runtime yields wire-level _id values (e.g. ObjectId)\n // rather than decoded hex strings. The follow-up $in filter in updateAll wraps\n // these in bare MongoParamRefs with no codecId; round-tripping a decoded string\n // back through the adapter would require attaching the field's codecId, which\n // we don't do here. Do not \"tidy\" the destructure away — the prefetch+modify+\n // re-read flow depends on it.\n const { resultShape: _rs, ...planWithoutShape } = idQuery.#compile();\n for await (const row of this.#executor.execute(planWithoutShape)) {\n ids.push((row as Record<string, unknown>)['_id']);\n }\n return ids;\n }\n\n #execute(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n const plan = this.#compile();\n return this.#executor.execute(plan);\n }\n\n #compile(): MongoQueryPlan<IncludedRow<TContract, ModelName, TIncludes>> {\n const model = contractModels(this.#contract)[this.#modelName] as\n | MongoModelDefinition\n | undefined;\n if (!model) {\n throw new Error(`Unknown model: \"${this.#modelName}\".`);\n }\n return compileMongoQuery<IncludedRow<TContract, ModelName, TIncludes>>(\n this.#collectionName,\n this.#state,\n this.#contract.storage.storageHash,\n model,\n );\n }\n\n #wrapCommand(command: AnyMongoCommand): MongoQueryPlan {\n return { collection: this.#collectionName, command, meta: this.#planMeta() };\n }\n\n async #drainPlan(command: AnyMongoCommand): Promise<unknown[]> {\n const plan = this.#wrapCommand(command);\n const result = this.#executor.execute(plan);\n const rows: unknown[] = [];\n for await (const row of result) {\n rows.push(row);\n }\n return rows;\n }\n\n #modelFields(): Record<string, ContractField> {\n const model = contractModels(this.#contract)[this.#modelName] as\n | MongoModelDefinition\n | undefined;\n return model?.fields ?? {};\n }\n\n #compileWhereObject(data: Record<string, unknown>): MongoFilterExpr[] {\n const fields = this.#modelFields();\n const filters: MongoFilterExpr[] = [];\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) continue;\n const wrapped = this.#wrapFieldValue(value, fields[key]);\n filters.push(MongoFieldFilter.eq(key, wrapped));\n }\n return filters;\n }\n\n #wrapFieldValue(value: unknown, field: ContractField | undefined): MongoValue {\n if (field === undefined) return new MongoParamRef(value);\n\n if (field.type.kind === 'scalar') {\n return new MongoParamRef(value, { codecId: field.type.codecId });\n }\n\n if (field.type.kind === 'valueObject') {\n const voName = field.type.name;\n const voDef = contractValueObjects(this.#contract)?.[voName];\n if (!voDef || value === null) return new MongoParamRef(value);\n\n if (field.many && Array.isArray(value)) {\n return value.map((item) =>\n this.#wrapValueObject(item as Record<string, unknown>, voDef),\n ) as unknown as MongoValue;\n }\n return this.#wrapValueObject(value as Record<string, unknown>, voDef);\n }\n\n return new MongoParamRef(value);\n }\n\n #wrapValueObject(\n data: Record<string, unknown>,\n voDef: ContractValueObject,\n ): Record<string, MongoValue> {\n const doc: Record<string, MongoValue> = {};\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) continue;\n const fieldDef = voDef.fields[key];\n doc[key] = this.#wrapFieldValue(value, fieldDef);\n }\n return doc;\n }\n\n #toDocument(data: Record<string, unknown>): Record<string, MongoValue> {\n const fields = this.#modelFields();\n const doc: Record<string, MongoValue> = {};\n for (const [key, value] of Object.entries(data)) {\n if (value !== undefined) {\n doc[key] = this.#wrapFieldValue(value, fields[key]);\n }\n }\n return doc;\n }\n\n #toSetFields(data: Record<string, unknown>): Record<string, MongoValue> {\n const fields = this.#modelFields();\n const result: Record<string, MongoValue> = {};\n for (const [key, value] of Object.entries(data)) {\n if (key === '_id' && value !== undefined) {\n throw new Error('Mutation payloads cannot modify `_id`');\n }\n if (value !== undefined) {\n result[key] = this.#wrapFieldValue(value, fields[key]);\n }\n }\n return result;\n }\n\n #stripUndefined(data: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (value !== undefined) {\n result[key] = value;\n }\n }\n return result;\n }\n\n #toUpdateDocument(data: Record<string, unknown>): Record<string, Record<string, MongoValue>> {\n return { $set: this.#toSetFields(data) };\n }\n\n #resolveUpdateDoc(\n dataOrCallback:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]),\n ): Record<string, Record<string, MongoValue>> {\n if (typeof dataOrCallback === 'function') {\n const accessor = createFieldAccessor<TContract, ModelName>();\n const ops = dataOrCallback(accessor);\n const idOp = ops.find((op) => op.field === '_id');\n if (idOp) {\n throw new Error('Mutation payloads cannot modify `_id`');\n }\n if (ops.length === 0) {\n return { $set: {} };\n }\n return compileFieldOperations(ops, (field, value, operator) =>\n this.#wrapFieldOpValue(field, value, operator),\n );\n }\n return this.#toUpdateDocument(dataOrCallback as Record<string, unknown>);\n }\n\n #wrapFieldOpValue(field: string, value: MongoValue, operator?: string): MongoValue {\n if (operator === '$unset') return value;\n\n const topLevelField = field.split('.')[0] ?? field;\n const fields = this.#modelFields();\n const contractField = fields[topLevelField];\n if (!contractField) return value;\n\n if (field.includes('.')) {\n return this.#wrapDotPathValue(field, value);\n }\n\n if (value instanceof MongoParamRef && contractField.type.kind === 'scalar') {\n return new MongoParamRef(value.value, { codecId: contractField.type.codecId });\n }\n\n if (contractField.type.kind === 'valueObject' && value instanceof MongoParamRef) {\n const raw = value.value;\n if (typeof raw === 'object' && raw !== null && !Array.isArray(raw)) {\n const voName = contractField.type.name;\n const voDef = contractValueObjects(this.#contract)?.[voName];\n if (voDef) {\n return this.#wrapValueObject(raw as Record<string, unknown>, voDef);\n }\n }\n }\n\n return value;\n }\n\n #wrapDotPathValue(dotPath: string, value: MongoValue): MongoValue {\n const parts = dotPath.split('.');\n const fields = this.#modelFields();\n let currentField: ContractField | undefined = parts[0] ? fields[parts[0]] : undefined;\n\n for (let i = 1; i < parts.length; i++) {\n if (!currentField || currentField.type.kind !== 'valueObject') return value;\n const voName = currentField.type.name;\n const voDef = contractValueObjects(this.#contract)?.[voName];\n if (!voDef) return value;\n const partKey = parts[i];\n currentField = partKey ? voDef.fields[partKey] : undefined;\n }\n\n if (currentField?.type.kind === 'scalar' && value instanceof MongoParamRef) {\n return new MongoParamRef(value.value, { codecId: currentField.type.codecId });\n }\n\n if (currentField?.type.kind === 'valueObject' && value instanceof MongoParamRef) {\n const raw = value.value;\n if (typeof raw === 'object' && raw !== null && !Array.isArray(raw)) {\n const voName = currentField.type.name;\n const voDef = contractValueObjects(this.#contract)?.[voName];\n if (voDef) {\n return this.#wrapValueObject(raw as Record<string, unknown>, voDef);\n }\n }\n }\n\n return value;\n }\n\n #mergeFilters(): MongoFilterExpr {\n const [single] = this.#state.filters;\n if (this.#state.filters.length === 1 && single) {\n return single;\n }\n return MongoAndExpr.of([...this.#state.filters]);\n }\n\n #requireFilters(methodName: string): void {\n if (this.#state.filters.length === 0) {\n throw new Error(\n `${methodName}() requires a .where() filter. Call .where() before .${methodName}()`,\n );\n }\n }\n\n #rejectWindowing(methodName: string): void {\n if (\n this.#state.orderBy !== undefined ||\n this.#state.limit !== undefined ||\n this.#state.offset !== undefined\n ) {\n throw new Error(\n `${methodName}() does not support orderBy/skip/take. Remove windowing before calling .${methodName}()`,\n );\n }\n }\n\n #rejectIncludes(methodName: string): void {\n if (this.#state.includes.length > 0) {\n throw new Error(\n `${methodName}() does not support .include(). Remove includes before calling .${methodName}()`,\n );\n }\n }\n\n #planMeta(): PlanMeta {\n return {\n target: 'mongo',\n storageHash: this.#contract.storage.storageHash,\n lane: 'mongo-orm',\n };\n }\n\n #injectDiscriminator(data: Record<string, unknown>): Record<string, unknown> {\n if (!this.#variantName) return data;\n const model = contractModels(this.#contract)[this.#modelName] as\n | MongoModelDefinition\n | undefined;\n if (!model?.discriminator || !model.variants) return data;\n const variantEntry = model.variants[this.#variantName];\n if (!variantEntry) return data;\n return { ...data, [model.discriminator.field]: variantEntry.value };\n }\n\n #clone(\n overrides: Partial<MongoCollectionState>,\n ): MongoCollectionImpl<TContract, ModelName, TIncludes, TVariant> {\n const instance = new MongoCollectionImpl<TContract, ModelName, TIncludes, TVariant>(\n this.#contract,\n this.#modelName,\n this.#executor,\n );\n instance.#state = { ...this.#state, ...overrides };\n instance.#collectionName = this.#collectionName;\n instance.#variantName = this.#variantName;\n return instance;\n }\n\n #cloneWithVariant<VNew extends string>(\n overrides: Partial<MongoCollectionState>,\n variantName: string,\n ): MongoCollectionImpl<TContract, ModelName, TIncludes, VNew> {\n const instance = new MongoCollectionImpl<TContract, ModelName, TIncludes, VNew>(\n this.#contract,\n this.#modelName,\n this.#executor,\n );\n instance.#state = { ...this.#state, ...overrides };\n instance.#collectionName = this.#collectionName;\n instance.#variantName = variantName;\n return instance;\n }\n}\n\nexport function createMongoCollection<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n>(\n contract: TContract,\n modelName: ModelName,\n executor: MongoQueryExecutor,\n): MongoCollection<TContract, ModelName> {\n return new MongoCollectionImpl(contract, modelName, executor);\n}\n","import type {\n MongoContract,\n MongoContractWithTypeMaps,\n MongoTypeMaps,\n RootModelName,\n} from '@prisma-next/mongo-contract';\nimport { blindCast } from '@prisma-next/utils/casts';\nimport type { MongoCollection } from './collection';\nimport { createMongoCollection } from './collection';\nimport type { MongoQueryExecutor } from './executor';\n\nexport interface MongoOrmOptions<TContract extends MongoContract> {\n readonly contract: TContract;\n readonly executor: MongoQueryExecutor;\n}\n\nexport type MongoOrmClient<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n> = {\n readonly [K in keyof TContract['roots'] & string]: MongoCollection<\n TContract,\n RootModelName<TContract, K>\n >;\n};\n\nexport function mongoOrm<TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>>(\n options: MongoOrmOptions<TContract>,\n): MongoOrmClient<TContract> {\n const { contract, executor } = options;\n const client: Record<string, unknown> = {};\n\n for (const [rootName, rootRef] of Object.entries(contract.roots)) {\n client[rootName] = createMongoCollection(\n contract,\n blindCast<\n RootModelName<TContract, typeof rootName & keyof TContract['roots'] & string>,\n 'roots entries are CrossReferences; rootRef.model is a valid RootModelName for this contract'\n >(rootRef.model),\n executor,\n );\n }\n\n return client as MongoOrmClient<TContract>;\n}\n","import type { PlanMeta } from '@prisma-next/contract/types';\nimport type { MongoQueryPlan } from '@prisma-next/mongo-query-ast/execution';\nimport {\n RawAggregateCommand,\n RawDeleteManyCommand,\n RawDeleteOneCommand,\n RawFindOneAndDeleteCommand,\n RawFindOneAndUpdateCommand,\n RawInsertManyCommand,\n RawInsertOneCommand,\n RawUpdateManyCommand,\n RawUpdateOneCommand,\n} from '@prisma-next/mongo-query-ast/execution';\nimport type { Document } from '@prisma-next/mongo-value';\n\ninterface Buildable<Row = unknown> {\n build(): MongoQueryPlan<Row>;\n}\n\nexport interface RawMongoCollection {\n aggregate<Row = Record<string, unknown>>(pipeline: ReadonlyArray<Document>): Buildable<Row>;\n\n insertOne(document: Document): Buildable;\n insertMany(documents: ReadonlyArray<Document>): Buildable;\n\n updateOne(filter: Document, update: Document | ReadonlyArray<Document>): Buildable;\n\n updateMany(filter: Document, update: Document | ReadonlyArray<Document>): Buildable;\n\n deleteOne(filter: Document): Buildable;\n deleteMany(filter: Document): Buildable;\n\n findOneAndUpdate(\n filter: Document,\n update: Document | ReadonlyArray<Document>,\n options?: { upsert?: boolean },\n ): Buildable;\n\n findOneAndDelete(filter: Document): Buildable;\n}\n\nexport function createRawMongoCollection(\n collectionName: string,\n meta: PlanMeta,\n): RawMongoCollection {\n function buildable<Row>(command: MongoQueryPlan['command']): Buildable<Row> {\n return {\n build: () => ({ collection: collectionName, command, meta }),\n };\n }\n\n return {\n aggregate<Row = Record<string, unknown>>(pipeline: ReadonlyArray<Document>) {\n return buildable<Row>(new RawAggregateCommand(collectionName, pipeline));\n },\n\n insertOne(document: Document) {\n return buildable(new RawInsertOneCommand(collectionName, document));\n },\n\n insertMany(documents: ReadonlyArray<Document>) {\n return buildable(new RawInsertManyCommand(collectionName, documents));\n },\n\n updateOne(filter: Document, update: Document | ReadonlyArray<Document>) {\n return buildable(new RawUpdateOneCommand(collectionName, filter, update));\n },\n\n updateMany(filter: Document, update: Document | ReadonlyArray<Document>) {\n return buildable(new RawUpdateManyCommand(collectionName, filter, update));\n },\n\n deleteOne(filter: Document) {\n return buildable(new RawDeleteOneCommand(collectionName, filter));\n },\n\n deleteMany(filter: Document) {\n return buildable(new RawDeleteManyCommand(collectionName, filter));\n },\n\n findOneAndUpdate(\n filter: Document,\n update: Document | ReadonlyArray<Document>,\n options?: { upsert?: boolean },\n ) {\n return buildable(\n new RawFindOneAndUpdateCommand(collectionName, filter, update, options?.upsert ?? false),\n );\n },\n\n findOneAndDelete(filter: Document) {\n return buildable(new RawFindOneAndDeleteCommand(collectionName, filter));\n },\n };\n}\n","import { contractModels, type PlanMeta } from '@prisma-next/contract/types';\nimport type { MongoContract, MongoModelDefinition } from '@prisma-next/mongo-contract';\nimport { createRawMongoCollection, type RawMongoCollection } from './raw-collection';\n\nexport interface MongoRawClient<TContract extends MongoContract> {\n collection<K extends keyof TContract['roots'] & string>(rootName: K): RawMongoCollection;\n}\n\nexport function mongoRaw<TContract extends MongoContract>(options: {\n contract: TContract;\n}): MongoRawClient<TContract> {\n const { contract } = options;\n\n return {\n collection<K extends keyof TContract['roots'] & string>(rootName: K): RawMongoCollection {\n const modelName = contract.roots[rootName]?.model;\n const models = contractModels(contract);\n if (!modelName || !Object.hasOwn(models, modelName)) {\n throw new Error(`Unknown model \"${modelName ?? ''}\" for root \"${rootName}\"`);\n }\n const model = models[modelName] as MongoModelDefinition;\n const collectionName = model.storage.collection ?? modelName;\n\n const meta: PlanMeta = {\n target: 'mongo',\n storageHash: contract.storage.storageHash,\n lane: 'mongo-raw',\n };\n\n return createRawMongoCollection(collectionName, meta);\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["#contract","#modelName","#executor","#collectionName","#state","#cloneWithVariant","#clone","#compileWhereObject","#execute","#rejectIncludes","#injectDiscriminator","#stripUndefined","#toDocument","#drainPlan","#requireFilters","#rejectWindowing","#mergeFilters","#resolveUpdateDoc","#readMatchingIds","#wrapFieldOpValue","#toSetFields","#compile","#planMeta","#wrapCommand","#modelFields","#wrapFieldValue","#wrapValueObject","#toUpdateDocument","#wrapDotPathValue","#variantName"],"sources":["../src/collection-state.ts","../src/compile.ts","../src/field-accessor.ts","../src/collection.ts","../src/mongo-orm.ts","../src/raw-collection.ts","../src/mongo-raw.ts"],"sourcesContent":["import type { MongoFilterExpr } from '@prisma-next/mongo-query-ast/execution';\n\nexport interface MongoIncludeExpr {\n readonly relationName: string;\n readonly from: string;\n readonly localField: string;\n readonly foreignField: string;\n readonly cardinality: '1:1' | 'N:1' | '1:N' | 'N:M';\n}\n\nexport interface MongoCollectionState {\n readonly filters: readonly MongoFilterExpr[];\n readonly includes: readonly MongoIncludeExpr[];\n readonly orderBy: Readonly<Record<string, 1 | -1>> | undefined;\n readonly selectedFields: readonly string[] | undefined;\n readonly limit: number | undefined;\n readonly offset: number | undefined;\n}\n\nexport function emptyCollectionState(): MongoCollectionState {\n return {\n filters: [],\n includes: [],\n orderBy: undefined,\n selectedFields: undefined,\n limit: undefined,\n offset: undefined,\n };\n}\n","import type { PlanMeta } from '@prisma-next/contract/types';\nimport type { MongoModelDefinition } from '@prisma-next/mongo-contract';\nimport type { MongoPipelineStage, MongoQueryPlan } from '@prisma-next/mongo-query-ast/execution';\nimport {\n AggregateCommand,\n MongoAndExpr,\n MongoLimitStage,\n MongoLookupStage,\n MongoMatchStage,\n MongoProjectStage,\n MongoSkipStage,\n MongoSortStage,\n MongoUnwindStage,\n} from '@prisma-next/mongo-query-ast/execution';\nimport { contractModelToMongoResultShape } from '@prisma-next/mongo-query-builder';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type { MongoCollectionState, MongoIncludeExpr } from './collection-state';\n\nfunction compileIncludes(includes: readonly MongoIncludeExpr[]): MongoPipelineStage[] {\n const stages: MongoPipelineStage[] = [];\n\n for (const inc of includes) {\n stages.push(\n new MongoLookupStage({\n from: inc.from,\n localField: inc.localField,\n foreignField: inc.foreignField,\n as: inc.relationName,\n }),\n );\n\n if (inc.cardinality === 'N:1' || inc.cardinality === '1:1') {\n stages.push(new MongoUnwindStage(`$${inc.relationName}`, true));\n }\n }\n\n return stages;\n}\n\nexport function compileMongoQuery<Row = unknown>(\n collection: string,\n state: MongoCollectionState,\n storageHash: string,\n model: MongoModelDefinition,\n): MongoQueryPlan<Row> {\n const stages: MongoPipelineStage[] = [];\n\n const singleFilter = state.filters.length === 1 ? state.filters[0] : undefined;\n if (singleFilter) {\n stages.push(new MongoMatchStage(singleFilter));\n } else if (state.filters.length > 1) {\n stages.push(new MongoMatchStage(MongoAndExpr.of([...state.filters])));\n }\n\n if (state.includes.length > 0) {\n stages.push(...compileIncludes(state.includes));\n }\n\n if (state.orderBy) {\n stages.push(new MongoSortStage(state.orderBy));\n }\n\n if (state.offset !== undefined) {\n stages.push(new MongoSkipStage(state.offset));\n }\n\n if (state.limit !== undefined) {\n stages.push(new MongoLimitStage(state.limit));\n }\n\n if (state.selectedFields && state.selectedFields.length > 0) {\n const projection: Record<string, 0 | 1> = {};\n for (const field of state.selectedFields) {\n projection[field] = 1;\n }\n if (!Object.hasOwn(projection, '_id')) {\n projection['_id'] = 0;\n }\n stages.push(new MongoProjectStage(projection));\n }\n\n const meta: PlanMeta = {\n target: 'mongo',\n storageHash,\n lane: 'mongo-orm',\n };\n const command = new AggregateCommand(collection, stages);\n\n const selection =\n state.selectedFields !== undefined && state.selectedFields.length > 0\n ? state.selectedFields\n : undefined;\n const includeRelationNames =\n state.includes.length > 0 ? state.includes.map((inc) => inc.relationName) : undefined;\n const resultShape = contractModelToMongoResultShape(model, {\n ...ifDefined('selection', selection),\n ...ifDefined('includeRelationNames', includeRelationNames),\n });\n\n return { collection, command, meta, resultShape };\n}\n","import type {\n ContractField,\n ContractValueObject,\n ContractValueObjectDefinitions,\n} from '@prisma-next/contract/types';\nimport type {\n ExtractMongoCodecTypes,\n ExtractMongoFieldOutputTypes,\n InferModelRow,\n MongoContract,\n MongoContractWithTypeMaps,\n MongoModelsMap,\n MongoTypeMaps,\n} from '@prisma-next/mongo-contract';\nimport type { MongoValue } from '@prisma-next/mongo-value';\nimport { MongoParamRef } from '@prisma-next/mongo-value';\n\n// ── Runtime types ────────────────────────────────────────────────────────────\n\nexport type UpdateOperator =\n | '$set'\n | '$unset'\n | '$inc'\n | '$mul'\n | '$push'\n | '$pull'\n | '$addToSet'\n | '$pop';\n\nexport interface FieldOperation {\n readonly operator: UpdateOperator;\n readonly field: string;\n readonly value: MongoValue;\n}\n\n// ── Compile-time types ───────────────────────────────────────────────────────\n\ntype ScalarFieldKeys<\n TContract extends MongoContract,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n> = {\n [K in keyof MongoModelsMap<TContract>[ModelName]['fields'] &\n string]: MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: { readonly kind: 'scalar' };\n }\n ? K\n : never;\n}[keyof MongoModelsMap<TContract>[ModelName]['fields'] & string];\n\ntype ValueObjectFieldKeys<\n TContract extends MongoContract,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n> = {\n [K in keyof MongoModelsMap<TContract>[ModelName]['fields'] &\n string]: MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: string };\n }\n ? K\n : never;\n}[keyof MongoModelsMap<TContract>[ModelName]['fields'] & string];\n\ntype ResolvedModelRow<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n> = string extends keyof ExtractMongoFieldOutputTypes<TContract>\n ? InferModelRow<TContract, ModelName, MongoModelsMap<TContract>[ModelName]['fields'], TCodecTypes>\n : ModelName extends keyof ExtractMongoFieldOutputTypes<TContract>\n ? {\n -readonly [K in keyof ExtractMongoFieldOutputTypes<TContract>[ModelName]]: ExtractMongoFieldOutputTypes<TContract>[ModelName][K];\n }\n : InferModelRow<\n TContract,\n ModelName,\n MongoModelsMap<TContract>[ModelName]['fields'],\n TCodecTypes\n >;\n\ntype ResolveFieldType<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n K extends keyof MongoModelsMap<TContract>[ModelName]['fields'] & string,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n> = MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n readonly many: true;\n readonly nullable: true;\n}\n ? readonly TCodecTypes[CId]['output'][] | null\n : MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n readonly many: true;\n }\n ? readonly TCodecTypes[CId]['output'][]\n : MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n readonly nullable: true;\n }\n ? TCodecTypes[CId]['output'] | null\n : MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n }\n ? TCodecTypes[CId]['output']\n : K extends keyof ResolvedModelRow<TContract, ModelName, TCodecTypes>\n ? ResolvedModelRow<TContract, ModelName, TCodecTypes>[K]\n : unknown;\n\ntype NumericOps = {\n inc(value: number): FieldOperation;\n mul(value: number): FieldOperation;\n};\n\nexport type FieldExpression<T = unknown> = {\n set(value: T): FieldOperation;\n unset(): FieldOperation;\n push(value: T extends readonly (infer E)[] ? E : unknown): FieldOperation;\n pull(match: T extends readonly (infer E)[] ? E | Partial<E> : unknown): FieldOperation;\n addToSet(value: T extends readonly (infer E)[] ? E : unknown): FieldOperation;\n pop(end: 1 | -1): FieldOperation;\n} & (T extends number ? NumericOps : unknown);\n\ntype HasValueObjects = MongoContract;\n\ntype MergedContractValueObjects<TContract extends HasValueObjects> =\n ContractValueObjectDefinitions<TContract> &\n (TContract extends { readonly valueObjects?: infer VOs }\n ? VOs extends Record<string, ContractValueObject>\n ? VOs\n : Record<string, never>\n : Record<string, never>);\n\ntype VOFields<\n TContract extends HasValueObjects,\n VOName extends string,\n> = VOName extends keyof MergedContractValueObjects<TContract>\n ? MergedContractValueObjects<TContract>[VOName] extends {\n readonly fields: infer F extends Record<string, ContractField>;\n }\n ? F\n : never\n : never;\n\ntype VOScalarFieldKeys<Fields extends Record<string, ContractField>> = {\n [K in keyof Fields & string]: Fields[K] extends { readonly type: { readonly kind: 'scalar' } }\n ? K\n : never;\n}[keyof Fields & string];\n\ntype VOValueObjectFieldKeys<Fields extends Record<string, ContractField>> = {\n [K in keyof Fields & string]: Fields[K] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: string };\n }\n ? K\n : never;\n}[keyof Fields & string];\n\ntype VODotPaths<\n TContract extends HasValueObjects,\n Fields extends Record<string, ContractField>,\n Prefix extends string,\n> =\n | { [K in VOScalarFieldKeys<Fields>]: `${Prefix}${K}` }[VOScalarFieldKeys<Fields>]\n | {\n [K in VOValueObjectFieldKeys<Fields>]: Fields[K] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: infer N extends string };\n }\n ? VODotPaths<TContract, VOFields<TContract, N>, `${Prefix}${K}.`>\n : never;\n }[VOValueObjectFieldKeys<Fields>];\n\nexport type DotPath<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n> = {\n [K in ValueObjectFieldKeys<\n TContract,\n ModelName\n >]: MongoModelsMap<TContract>[ModelName]['fields'][K] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: infer N extends string };\n }\n ? VODotPaths<TContract, VOFields<TContract, N>, `${K}.`>\n : never;\n}[ValueObjectFieldKeys<TContract, ModelName>];\n\ntype ResolveDotPathInFields<\n TContract extends HasValueObjects,\n Fields extends Record<string, ContractField>,\n Path extends string,\n TCodecTypes extends Record<string, { output: unknown }>,\n> = Path extends `${infer Head}.${infer Rest}`\n ? Head extends keyof Fields & string\n ? Fields[Head] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: infer N extends string };\n }\n ? ResolveDotPathInFields<TContract, VOFields<TContract, N>, Rest, TCodecTypes>\n : never\n : never\n : Path extends keyof Fields & string\n ? Fields[Path] extends {\n readonly type: {\n readonly kind: 'scalar';\n readonly codecId: infer CId extends string & keyof TCodecTypes;\n };\n }\n ? TCodecTypes[CId]['output']\n : unknown\n : never;\n\nexport type ResolveDotPathType<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n Path extends string,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n> = Path extends `${infer Head}.${infer Rest}`\n ? Head extends keyof MongoModelsMap<TContract>[ModelName]['fields'] & string\n ? MongoModelsMap<TContract>[ModelName]['fields'][Head] extends {\n readonly type: { readonly kind: 'valueObject'; readonly name: infer N extends string };\n }\n ? ResolveDotPathInFields<TContract, VOFields<TContract, N>, Rest, TCodecTypes>\n : never\n : never\n : never;\n\nexport type FieldAccessor<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n> = {\n readonly [K in ScalarFieldKeys<TContract, ModelName>]: FieldExpression<\n ResolveFieldType<TContract, ModelName, K, TCodecTypes>\n >;\n} & {\n readonly [K in ValueObjectFieldKeys<TContract, ModelName>]: FieldExpression<\n ResolveFieldType<TContract, ModelName, K, TCodecTypes>\n >;\n} & (<P extends DotPath<TContract, ModelName>>(\n path: P,\n ) => FieldExpression<ResolveDotPathType<TContract, ModelName, P, TCodecTypes>>);\n\n// ── Runtime implementation ───────────────────────────────────────────────────\n\n// Runtime expression has all methods; type-level gating happens via FieldExpression<T>\ninterface RuntimeFieldExpression extends NumericOps {\n set(value: unknown): FieldOperation;\n unset(): FieldOperation;\n push(value: unknown): FieldOperation;\n pull(match: unknown): FieldOperation;\n addToSet(value: unknown): FieldOperation;\n pop(end: 1 | -1): FieldOperation;\n}\n\nfunction createFieldExpression(fieldPath: string): RuntimeFieldExpression {\n return {\n set(value: unknown): FieldOperation {\n return { operator: '$set', field: fieldPath, value: new MongoParamRef(value) };\n },\n unset(): FieldOperation {\n return { operator: '$unset', field: fieldPath, value: new MongoParamRef('') };\n },\n inc(value: number): FieldOperation {\n return { operator: '$inc', field: fieldPath, value: new MongoParamRef(value) };\n },\n mul(value: number): FieldOperation {\n return { operator: '$mul', field: fieldPath, value: new MongoParamRef(value) };\n },\n push(value: unknown): FieldOperation {\n return { operator: '$push', field: fieldPath, value: new MongoParamRef(value) };\n },\n pull(match: unknown): FieldOperation {\n return { operator: '$pull', field: fieldPath, value: new MongoParamRef(match) };\n },\n addToSet(value: unknown): FieldOperation {\n return { operator: '$addToSet', field: fieldPath, value: new MongoParamRef(value) };\n },\n pop(end: 1 | -1): FieldOperation {\n return { operator: '$pop', field: fieldPath, value: new MongoParamRef(end) };\n },\n };\n}\n\nexport function createFieldAccessor<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TCodecTypes extends Record<string, { output: unknown }> = ExtractMongoCodecTypes<TContract>,\n>(): FieldAccessor<TContract, ModelName, TCodecTypes> {\n return new Proxy((() => {}) as unknown as FieldAccessor<TContract, ModelName, TCodecTypes>, {\n get(_target, prop: string): RuntimeFieldExpression {\n return createFieldExpression(prop);\n },\n apply(_target, _thisArg, args: [string]): RuntimeFieldExpression {\n return createFieldExpression(args[0]);\n },\n });\n}\n\nexport function compileFieldOperations(\n ops: readonly FieldOperation[],\n wrapValue: (field: string, value: MongoValue, operator: UpdateOperator) => MongoValue,\n): Record<string, Record<string, MongoValue>> {\n const grouped: Record<string, Record<string, MongoValue>> = {};\n for (const op of ops) {\n let group = grouped[op.operator];\n if (!group) {\n group = {};\n grouped[op.operator] = group;\n }\n group[op.field] = wrapValue(op.field, op.value, op.operator);\n }\n return grouped;\n}\n","import {\n type ContractField,\n type ContractReferenceRelation,\n type ContractValueObject,\n domainModelsAtDefaultNamespace,\n domainValueObjectsAtDefaultNamespace,\n type PlanMeta,\n} from '@prisma-next/contract/types';\nimport { AsyncIterableResult } from '@prisma-next/framework-components/runtime';\nimport type {\n MongoContract,\n MongoContractWithTypeMaps,\n MongoModelDefinition,\n MongoModelsMap,\n MongoTypeMaps,\n} from '@prisma-next/mongo-contract';\nimport type {\n AnyMongoCommand,\n MongoFilterExpr,\n MongoQueryPlan,\n} from '@prisma-next/mongo-query-ast/execution';\nimport {\n DeleteManyCommand,\n FindOneAndDeleteCommand,\n FindOneAndUpdateCommand,\n InsertManyCommand,\n InsertOneCommand,\n isMongoFilterExpr,\n MongoAndExpr,\n MongoFieldFilter,\n UpdateManyCommand,\n} from '@prisma-next/mongo-query-ast/execution';\nimport type { MongoValue } from '@prisma-next/mongo-value';\nimport { MongoParamRef } from '@prisma-next/mongo-value';\nimport type { MongoIncludeExpr } from './collection-state';\nimport { emptyCollectionState, type MongoCollectionState } from './collection-state';\nimport { compileMongoQuery } from './compile';\nimport type { MongoQueryExecutor } from './executor';\nimport {\n compileFieldOperations,\n createFieldAccessor,\n type FieldAccessor,\n type FieldOperation,\n} from './field-accessor';\nimport type {\n DefaultModelRow,\n IncludedRow,\n MongoIncludeSpec,\n MongoWhereFilter,\n NoIncludes,\n ReferenceRelationKeys,\n ResolvedCreateInput,\n VariantNames,\n} from './types';\n\ntype ModelFieldKeys<\n TContract extends MongoContract,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n> = keyof MongoModelsMap<TContract>[ModelName]['fields'] & string;\n\nexport interface MongoCollection<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TIncludes extends MongoIncludeSpec<TContract, ModelName> = NoIncludes,\n TVariant extends string = never,\n> {\n /** Narrows to a specific variant, injecting a discriminator filter. */\n variant<V extends VariantNames<TContract, ModelName>>(\n variantName: V,\n ): MongoCollection<TContract, ModelName, TIncludes, V>;\n /** Appends equality filters from a plain object. Values are encoded through codecs. */\n where(\n filter: MongoWhereFilter<TContract, ModelName>,\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Appends a filter condition from a raw filter expression. */\n where(filter: MongoFilterExpr): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Restricts returned fields to the given subset. Returns a new immutable collection. */\n select(\n ...fields: ModelFieldKeys<TContract, ModelName>[]\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Adds a `$lookup` for a reference relation. Returns a new immutable collection. */\n include<K extends ReferenceRelationKeys<TContract, ModelName> & string>(\n relationName: K,\n ): MongoCollection<TContract, ModelName, TIncludes & Record<K, true>, TVariant>;\n /** Sets sort order. Returns a new immutable collection. */\n orderBy(\n spec: Partial<Record<ModelFieldKeys<TContract, ModelName>, 1 | -1>>,\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Limits the number of results. Returns a new immutable collection. */\n take(n: number): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Skips the first `n` results. Returns a new immutable collection. */\n skip(n: number): MongoCollection<TContract, ModelName, TIncludes, TVariant>;\n /** Executes the query and returns all matching rows as an async iterable. */\n all(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Executes the query with limit 1. Returns the first matching row or `null`. */\n first(): Promise<IncludedRow<TContract, ModelName, TIncludes> | null>;\n /** Returns the input data with the server-assigned `_id`. Does not re-read the stored document. */\n create(\n data: ResolvedCreateInput<TContract, ModelName, TVariant>,\n ): Promise<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Returns input rows with server-assigned `_id`s. Does not re-read stored documents. */\n createAll(\n data: ReadonlyArray<ResolvedCreateInput<TContract, ModelName, TVariant>>,\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Inserts multiple documents and returns the number inserted. */\n createCount(\n data: ReadonlyArray<ResolvedCreateInput<TContract, ModelName, TVariant>>,\n ): Promise<number>;\n /** Updates one matching document via `findOneAndUpdate`. Returns the updated document or `null`. Requires `.where()`. */\n update(\n data: Partial<DefaultModelRow<TContract, ModelName>>,\n ): Promise<IncludedRow<TContract, ModelName, TIncludes> | null>;\n /** Updates one matching document using field operations from a callback. Requires `.where()`. */\n update(\n callback: (u: FieldAccessor<TContract, ModelName>) => FieldOperation[],\n ): Promise<IncludedRow<TContract, ModelName, TIncludes> | null>;\n /** Non-atomic: captures matching `_id`s, updates, then re-reads by `_id`. Requires `.where()`. */\n updateAll(\n data: Partial<DefaultModelRow<TContract, ModelName>>,\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Updates all matching documents using field operations from a callback. Requires `.where()`. */\n updateAll(\n callback: (u: FieldAccessor<TContract, ModelName>) => FieldOperation[],\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Updates all matching documents and returns the number modified. Requires `.where()`. */\n updateCount(data: Partial<DefaultModelRow<TContract, ModelName>>): Promise<number>;\n /** Updates all matching documents using field operations and returns the number modified. Requires `.where()`. */\n updateCount(\n callback: (u: FieldAccessor<TContract, ModelName>) => FieldOperation[],\n ): Promise<number>;\n /** Deletes one matching document via `findOneAndDelete`. Returns the deleted document or `null`. Requires `.where()`. */\n delete(): Promise<IncludedRow<TContract, ModelName, TIncludes> | null>;\n /** Non-atomic: reads matching docs then deletes them. Concurrent writes may cause stale results. Requires `.where()`. */\n deleteAll(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Deletes all matching documents and returns the number deleted. Requires `.where()`. */\n deleteCount(): Promise<number>;\n /**\n * On insert: `update` fields are applied via `$set`, remaining `create` fields via `$setOnInsert`.\n * This means `update` values take precedence over `create` for overlapping fields on insert.\n * Requires `.where()`.\n */\n upsert(input: {\n create: ResolvedCreateInput<TContract, ModelName, TVariant>;\n update: Partial<DefaultModelRow<TContract, ModelName>>;\n }): Promise<IncludedRow<TContract, ModelName, TIncludes>>;\n /** Upsert using field operations callback for the update part. Requires `.where()`. */\n upsert(input: {\n create: ResolvedCreateInput<TContract, ModelName, TVariant>;\n update: (u: FieldAccessor<TContract, ModelName>) => FieldOperation[];\n }): Promise<IncludedRow<TContract, ModelName, TIncludes>>;\n}\n\nfunction resolveCollectionName(model: MongoModelDefinition, modelName: string): string {\n return model.storage.collection ?? modelName;\n}\n\nclass MongoCollectionImpl<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n TIncludes extends MongoIncludeSpec<TContract, ModelName> = NoIncludes,\n TVariant extends string = never,\n> implements MongoCollection<TContract, ModelName, TIncludes, TVariant>\n{\n readonly #contract: TContract;\n readonly #modelName: ModelName;\n readonly #executor: MongoQueryExecutor;\n #collectionName: string;\n #state: MongoCollectionState;\n #variantName: string | undefined;\n\n constructor(contract: TContract, modelName: ModelName, executor: MongoQueryExecutor) {\n this.#contract = contract;\n this.#modelName = modelName;\n this.#executor = executor;\n const model = domainModelsAtDefaultNamespace(contract.domain)[\n modelName\n ] as MongoModelDefinition;\n this.#collectionName = resolveCollectionName(model, modelName);\n this.#state = emptyCollectionState();\n }\n\n variant<V extends VariantNames<TContract, ModelName>>(\n variantName: V,\n ): MongoCollection<TContract, ModelName, TIncludes, V> {\n const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName] as\n | MongoModelDefinition\n | undefined;\n if (!model?.discriminator || !model.variants) {\n // No polymorphism metadata on this model — return unchanged. Cast required\n // because TS cannot verify TVariant (the current variant) is assignable to V.\n return this as unknown as MongoCollection<TContract, ModelName, TIncludes, V>;\n }\n\n const variantEntry = model.variants[variantName as string];\n if (!variantEntry) {\n // Unknown variant name at runtime — return unchanged. Same cast rationale.\n return this as unknown as MongoCollection<TContract, ModelName, TIncludes, V>;\n }\n\n const filter = MongoFieldFilter.eq(\n model.discriminator.field,\n new MongoParamRef(variantEntry.value),\n );\n return this.#cloneWithVariant<V>(\n { filters: [...this.#state.filters, filter] },\n variantName as string,\n );\n }\n\n where(\n filter: MongoWhereFilter<TContract, ModelName> | MongoFilterExpr,\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n if (isMongoFilterExpr(filter)) {\n return this.#clone({ filters: [...this.#state.filters, filter] });\n }\n const compiled = this.#compileWhereObject(filter as Record<string, unknown>);\n return this.#clone({ filters: [...this.#state.filters, ...compiled] });\n }\n\n select(\n ...fields: ModelFieldKeys<TContract, ModelName>[]\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n return this.#clone({ selectedFields: [...(this.#state.selectedFields ?? []), ...fields] });\n }\n\n include<K extends ReferenceRelationKeys<TContract, ModelName> & string>(\n relationName: K,\n ): MongoCollection<TContract, ModelName, TIncludes & Record<K, true>, TVariant> {\n const model = domainModelsAtDefaultNamespace(this.#contract.domain)[\n this.#modelName\n ] as MongoModelDefinition;\n const relation = model.relations?.[relationName];\n if (!relation) {\n throw new Error(`Unknown relation \"${relationName}\" on model \"${this.#modelName as string}\"`);\n }\n\n if (!('on' in relation)) {\n throw new Error(\n `Relation \"${relationName}\" is an embed relation — only reference relations can be included`,\n );\n }\n\n const ref = relation as ContractReferenceRelation;\n const localField = ref.on.localFields[0];\n const foreignField = ref.on.targetFields[0];\n if (\n !localField ||\n !foreignField ||\n ref.on.localFields.length !== 1 ||\n ref.on.targetFields.length !== 1\n ) {\n throw new Error(`Compound references are not yet supported: relation \"${relationName}\"`);\n }\n\n const targetModelName = ref.to.model;\n const targetModel = domainModelsAtDefaultNamespace(this.#contract.domain)[targetModelName] as\n | MongoModelDefinition\n | undefined;\n if (!targetModel) {\n throw new Error(`Target model \"${targetModelName}\" not found for relation \"${relationName}\"`);\n }\n\n const includeExpr: MongoIncludeExpr = {\n relationName,\n from: resolveCollectionName(targetModel, targetModelName),\n localField,\n foreignField,\n cardinality: ref.cardinality,\n };\n\n return this.#clone({\n includes: [...this.#state.includes, includeExpr],\n }) as unknown as MongoCollectionImpl<\n TContract,\n ModelName,\n TIncludes & Record<K, true>,\n TVariant\n >;\n }\n\n orderBy(\n spec: Partial<Record<ModelFieldKeys<TContract, ModelName>, 1 | -1>>,\n ): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n const merged = { ...this.#state.orderBy, ...(spec as Readonly<Record<string, 1 | -1>>) };\n return this.#clone({ orderBy: merged });\n }\n\n take(n: number): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n return this.#clone({ limit: n });\n }\n\n skip(n: number): MongoCollection<TContract, ModelName, TIncludes, TVariant> {\n return this.#clone({ offset: n });\n }\n\n all(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n return this.#execute();\n }\n\n async first(): Promise<IncludedRow<TContract, ModelName, TIncludes> | null> {\n const limited = this.#clone({ limit: 1 });\n const result = limited.#execute();\n for await (const row of result) {\n return row;\n }\n return null;\n }\n\n async create(\n data: ResolvedCreateInput<TContract, ModelName, TVariant>,\n ): Promise<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#rejectIncludes('create');\n const normalized = this.#injectDiscriminator(\n this.#stripUndefined(data as Record<string, unknown>),\n );\n const document = this.#toDocument(normalized);\n const command = new InsertOneCommand(this.#collectionName, document);\n const results = await this.#drainPlan(command);\n const insertedId = (results[0] as { insertedId: unknown }).insertedId;\n return { _id: insertedId, ...normalized } as unknown as IncludedRow<\n TContract,\n ModelName,\n TIncludes\n >;\n }\n\n createAll(\n data: ReadonlyArray<ResolvedCreateInput<TContract, ModelName, TVariant>>,\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#rejectIncludes('createAll');\n const self = this;\n async function* gen(): AsyncGenerator<IncludedRow<TContract, ModelName, TIncludes>> {\n const normalizedRows = data.map((d) =>\n self.#injectDiscriminator(self.#stripUndefined(d as Record<string, unknown>)),\n );\n const documents = normalizedRows.map((d) => self.#toDocument(d));\n const command = new InsertManyCommand(self.#collectionName, documents);\n const results = await self.#drainPlan(command);\n const insertedIds = (results[0] as { insertedIds: readonly unknown[] }).insertedIds;\n for (let i = 0; i < normalizedRows.length; i++) {\n yield { _id: insertedIds[i], ...normalizedRows[i] } as unknown as IncludedRow<\n TContract,\n ModelName,\n TIncludes\n >;\n }\n }\n return new AsyncIterableResult(gen());\n }\n\n async createCount(\n data: ReadonlyArray<ResolvedCreateInput<TContract, ModelName, TVariant>>,\n ): Promise<number> {\n this.#rejectIncludes('createCount');\n const documents = data.map((d) =>\n this.#toDocument(this.#injectDiscriminator(d as Record<string, unknown>)),\n );\n const command = new InsertManyCommand(this.#collectionName, documents);\n const results = await this.#drainPlan(command);\n return (results[0] as { insertedCount: number }).insertedCount;\n }\n\n async update(\n dataOrCallback:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]),\n ): Promise<IncludedRow<TContract, ModelName, TIncludes> | null> {\n this.#requireFilters('update');\n this.#rejectWindowing('update');\n this.#rejectIncludes('update');\n const filter = this.#mergeFilters();\n const updateDoc = this.#resolveUpdateDoc(dataOrCallback);\n const command = new FindOneAndUpdateCommand(this.#collectionName, filter, updateDoc, false);\n const results = await this.#drainPlan(command);\n return (results[0] as IncludedRow<TContract, ModelName, TIncludes>) ?? null;\n }\n\n updateAll(\n dataOrCallback:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]),\n ): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#requireFilters('updateAll');\n this.#rejectWindowing('updateAll');\n const self = this;\n async function* gen(): AsyncGenerator<IncludedRow<TContract, ModelName, TIncludes>> {\n const ids = await self.#readMatchingIds();\n if (ids.length === 0) return;\n\n const filter = self.#mergeFilters();\n const updateDoc = self.#resolveUpdateDoc(dataOrCallback);\n const command = new UpdateManyCommand(self.#collectionName, filter, updateDoc);\n await self.#drainPlan(command);\n\n const idFilter = MongoFieldFilter.in(\n '_id',\n ids.map((id) => new MongoParamRef(id)),\n );\n yield* self.#clone({ filters: [idFilter] }).#execute();\n }\n return new AsyncIterableResult(gen());\n }\n\n async updateCount(\n dataOrCallback:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]),\n ): Promise<number> {\n this.#requireFilters('updateCount');\n this.#rejectWindowing('updateCount');\n this.#rejectIncludes('updateCount');\n const filter = this.#mergeFilters();\n const updateDoc = this.#resolveUpdateDoc(dataOrCallback);\n const command = new UpdateManyCommand(this.#collectionName, filter, updateDoc);\n const results = await this.#drainPlan(command);\n return (results[0] as { modifiedCount: number }).modifiedCount;\n }\n\n async delete(): Promise<IncludedRow<TContract, ModelName, TIncludes> | null> {\n this.#requireFilters('delete');\n this.#rejectWindowing('delete');\n this.#rejectIncludes('delete');\n const filter = this.#mergeFilters();\n const command = new FindOneAndDeleteCommand(this.#collectionName, filter);\n const results = await this.#drainPlan(command);\n return (results[0] as IncludedRow<TContract, ModelName, TIncludes>) ?? null;\n }\n\n deleteAll(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#requireFilters('deleteAll');\n this.#rejectWindowing('deleteAll');\n const self = this;\n async function* gen(): AsyncGenerator<IncludedRow<TContract, ModelName, TIncludes>> {\n const docs: IncludedRow<TContract, ModelName, TIncludes>[] = [];\n for await (const row of self.#execute()) {\n docs.push(row);\n }\n const filter = self.#mergeFilters();\n const command = new DeleteManyCommand(self.#collectionName, filter);\n await self.#drainPlan(command);\n yield* docs;\n }\n return new AsyncIterableResult(gen());\n }\n\n async deleteCount(): Promise<number> {\n this.#requireFilters('deleteCount');\n this.#rejectWindowing('deleteCount');\n this.#rejectIncludes('deleteCount');\n const filter = this.#mergeFilters();\n const command = new DeleteManyCommand(this.#collectionName, filter);\n const results = await this.#drainPlan(command);\n return (results[0] as { deletedCount: number }).deletedCount;\n }\n\n async upsert(input: {\n create: ResolvedCreateInput<TContract, ModelName, TVariant>;\n update:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]);\n }): Promise<IncludedRow<TContract, ModelName, TIncludes>> {\n this.#requireFilters('upsert');\n this.#rejectWindowing('upsert');\n this.#rejectIncludes('upsert');\n const filter = this.#mergeFilters();\n\n const allCreateFields = this.#toDocument(\n this.#injectDiscriminator(input.create as Record<string, unknown>),\n );\n\n let updateDoc: Record<string, Record<string, MongoValue>>;\n if (typeof input.update === 'function') {\n const accessor = createFieldAccessor<TContract, ModelName>();\n const ops = input.update(accessor);\n const idOp = ops.find((op) => op.field === '_id');\n if (idOp) {\n throw new Error('Mutation payloads cannot modify `_id`');\n }\n const dotPathOp = ops.find((op) => op.field.includes('.'));\n if (dotPathOp) {\n throw new Error(\n `upsert() does not support dot-path field operations (found \"${dotPathOp.field}\"). ` +\n 'Dot-path updates conflict with $setOnInsert on the insert path, producing incomplete documents. ' +\n 'Use top-level field operations instead.',\n );\n }\n updateDoc = compileFieldOperations(ops, (field, value, operator) =>\n this.#wrapFieldOpValue(field, value, operator),\n );\n } else {\n const setFields = this.#toSetFields(input.update as Record<string, unknown>);\n updateDoc = {};\n if (Object.keys(setFields).length > 0) {\n updateDoc['$set'] = setFields;\n }\n }\n\n const updatedFields = new Set<string>();\n for (const operatorGroup of Object.values(updateDoc)) {\n for (const fieldPath of Object.keys(operatorGroup)) {\n updatedFields.add(fieldPath.split('.')[0] ?? fieldPath);\n }\n }\n const insertOnlyFields: Record<string, MongoValue> = {};\n for (const [key, value] of Object.entries(allCreateFields)) {\n if (!updatedFields.has(key)) {\n insertOnlyFields[key] = value;\n }\n }\n if (Object.keys(insertOnlyFields).length > 0) {\n updateDoc['$setOnInsert'] = insertOnlyFields;\n }\n\n const command = new FindOneAndUpdateCommand(this.#collectionName, filter, updateDoc, true);\n const results = await this.#drainPlan(command);\n return results[0] as IncludedRow<TContract, ModelName, TIncludes>;\n }\n\n async #readMatchingIds(): Promise<unknown[]> {\n const idQuery = this.#clone({\n includes: [],\n selectedFields: ['_id'],\n orderBy: undefined,\n limit: undefined,\n offset: undefined,\n });\n const ids: unknown[] = [];\n // Strip resultShape so the runtime yields wire-level _id values (e.g. ObjectId)\n // rather than decoded hex strings. The follow-up $in filter in updateAll wraps\n // these in bare MongoParamRefs with no codecId; round-tripping a decoded string\n // back through the adapter would require attaching the field's codecId, which\n // we don't do here. Do not \"tidy\" the destructure away — the prefetch+modify+\n // re-read flow depends on it.\n const { resultShape: _rs, ...planWithoutShape } = idQuery.#compile();\n for await (const row of this.#executor.execute(planWithoutShape)) {\n ids.push((row as Record<string, unknown>)['_id']);\n }\n return ids;\n }\n\n #execute(): AsyncIterableResult<IncludedRow<TContract, ModelName, TIncludes>> {\n const plan = this.#compile();\n return this.#executor.execute(plan);\n }\n\n #compile(): MongoQueryPlan<IncludedRow<TContract, ModelName, TIncludes>> {\n const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName] as\n | MongoModelDefinition\n | undefined;\n if (!model) {\n throw new Error(`Unknown model: \"${this.#modelName}\".`);\n }\n return compileMongoQuery<IncludedRow<TContract, ModelName, TIncludes>>(\n this.#collectionName,\n this.#state,\n this.#contract.storage.storageHash,\n model,\n );\n }\n\n #wrapCommand(command: AnyMongoCommand): MongoQueryPlan {\n return { collection: this.#collectionName, command, meta: this.#planMeta() };\n }\n\n async #drainPlan(command: AnyMongoCommand): Promise<unknown[]> {\n const plan = this.#wrapCommand(command);\n const result = this.#executor.execute(plan);\n const rows: unknown[] = [];\n for await (const row of result) {\n rows.push(row);\n }\n return rows;\n }\n\n #modelFields(): Record<string, ContractField> {\n const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName] as\n | MongoModelDefinition\n | undefined;\n return model?.fields ?? {};\n }\n\n #compileWhereObject(data: Record<string, unknown>): MongoFilterExpr[] {\n const fields = this.#modelFields();\n const filters: MongoFilterExpr[] = [];\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) continue;\n const wrapped = this.#wrapFieldValue(value, fields[key]);\n filters.push(MongoFieldFilter.eq(key, wrapped));\n }\n return filters;\n }\n\n #wrapFieldValue(value: unknown, field: ContractField | undefined): MongoValue {\n if (field === undefined) return new MongoParamRef(value);\n\n if (field.type.kind === 'scalar') {\n return new MongoParamRef(value, { codecId: field.type.codecId });\n }\n\n if (field.type.kind === 'valueObject') {\n const voName = field.type.name;\n const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n if (!voDef || value === null) return new MongoParamRef(value);\n\n if (field.many && Array.isArray(value)) {\n return value.map((item) =>\n this.#wrapValueObject(item as Record<string, unknown>, voDef),\n ) as unknown as MongoValue;\n }\n return this.#wrapValueObject(value as Record<string, unknown>, voDef);\n }\n\n return new MongoParamRef(value);\n }\n\n #wrapValueObject(\n data: Record<string, unknown>,\n voDef: ContractValueObject,\n ): Record<string, MongoValue> {\n const doc: Record<string, MongoValue> = {};\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) continue;\n const fieldDef = voDef.fields[key];\n doc[key] = this.#wrapFieldValue(value, fieldDef);\n }\n return doc;\n }\n\n #toDocument(data: Record<string, unknown>): Record<string, MongoValue> {\n const fields = this.#modelFields();\n const doc: Record<string, MongoValue> = {};\n for (const [key, value] of Object.entries(data)) {\n if (value !== undefined) {\n doc[key] = this.#wrapFieldValue(value, fields[key]);\n }\n }\n return doc;\n }\n\n #toSetFields(data: Record<string, unknown>): Record<string, MongoValue> {\n const fields = this.#modelFields();\n const result: Record<string, MongoValue> = {};\n for (const [key, value] of Object.entries(data)) {\n if (key === '_id' && value !== undefined) {\n throw new Error('Mutation payloads cannot modify `_id`');\n }\n if (value !== undefined) {\n result[key] = this.#wrapFieldValue(value, fields[key]);\n }\n }\n return result;\n }\n\n #stripUndefined(data: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (value !== undefined) {\n result[key] = value;\n }\n }\n return result;\n }\n\n #toUpdateDocument(data: Record<string, unknown>): Record<string, Record<string, MongoValue>> {\n return { $set: this.#toSetFields(data) };\n }\n\n #resolveUpdateDoc(\n dataOrCallback:\n | Partial<DefaultModelRow<TContract, ModelName>>\n | ((u: FieldAccessor<TContract, ModelName>) => FieldOperation[]),\n ): Record<string, Record<string, MongoValue>> {\n if (typeof dataOrCallback === 'function') {\n const accessor = createFieldAccessor<TContract, ModelName>();\n const ops = dataOrCallback(accessor);\n const idOp = ops.find((op) => op.field === '_id');\n if (idOp) {\n throw new Error('Mutation payloads cannot modify `_id`');\n }\n if (ops.length === 0) {\n return { $set: {} };\n }\n return compileFieldOperations(ops, (field, value, operator) =>\n this.#wrapFieldOpValue(field, value, operator),\n );\n }\n return this.#toUpdateDocument(dataOrCallback as Record<string, unknown>);\n }\n\n #wrapFieldOpValue(field: string, value: MongoValue, operator?: string): MongoValue {\n if (operator === '$unset') return value;\n\n const topLevelField = field.split('.')[0] ?? field;\n const fields = this.#modelFields();\n const contractField = fields[topLevelField];\n if (!contractField) return value;\n\n if (field.includes('.')) {\n return this.#wrapDotPathValue(field, value);\n }\n\n if (value instanceof MongoParamRef && contractField.type.kind === 'scalar') {\n return new MongoParamRef(value.value, { codecId: contractField.type.codecId });\n }\n\n if (contractField.type.kind === 'valueObject' && value instanceof MongoParamRef) {\n const raw = value.value;\n if (typeof raw === 'object' && raw !== null && !Array.isArray(raw)) {\n const voName = contractField.type.name;\n const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n if (voDef) {\n return this.#wrapValueObject(raw as Record<string, unknown>, voDef);\n }\n }\n }\n\n return value;\n }\n\n #wrapDotPathValue(dotPath: string, value: MongoValue): MongoValue {\n const parts = dotPath.split('.');\n const fields = this.#modelFields();\n let currentField: ContractField | undefined = parts[0] ? fields[parts[0]] : undefined;\n\n for (let i = 1; i < parts.length; i++) {\n if (!currentField || currentField.type.kind !== 'valueObject') return value;\n const voName = currentField.type.name;\n const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n if (!voDef) return value;\n const partKey = parts[i];\n currentField = partKey ? voDef.fields[partKey] : undefined;\n }\n\n if (currentField?.type.kind === 'scalar' && value instanceof MongoParamRef) {\n return new MongoParamRef(value.value, { codecId: currentField.type.codecId });\n }\n\n if (currentField?.type.kind === 'valueObject' && value instanceof MongoParamRef) {\n const raw = value.value;\n if (typeof raw === 'object' && raw !== null && !Array.isArray(raw)) {\n const voName = currentField.type.name;\n const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n if (voDef) {\n return this.#wrapValueObject(raw as Record<string, unknown>, voDef);\n }\n }\n }\n\n return value;\n }\n\n #mergeFilters(): MongoFilterExpr {\n const [single] = this.#state.filters;\n if (this.#state.filters.length === 1 && single) {\n return single;\n }\n return MongoAndExpr.of([...this.#state.filters]);\n }\n\n #requireFilters(methodName: string): void {\n if (this.#state.filters.length === 0) {\n throw new Error(\n `${methodName}() requires a .where() filter. Call .where() before .${methodName}()`,\n );\n }\n }\n\n #rejectWindowing(methodName: string): void {\n if (\n this.#state.orderBy !== undefined ||\n this.#state.limit !== undefined ||\n this.#state.offset !== undefined\n ) {\n throw new Error(\n `${methodName}() does not support orderBy/skip/take. Remove windowing before calling .${methodName}()`,\n );\n }\n }\n\n #rejectIncludes(methodName: string): void {\n if (this.#state.includes.length > 0) {\n throw new Error(\n `${methodName}() does not support .include(). Remove includes before calling .${methodName}()`,\n );\n }\n }\n\n #planMeta(): PlanMeta {\n return {\n target: 'mongo',\n storageHash: this.#contract.storage.storageHash,\n lane: 'mongo-orm',\n };\n }\n\n #injectDiscriminator(data: Record<string, unknown>): Record<string, unknown> {\n if (!this.#variantName) return data;\n const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName] as\n | MongoModelDefinition\n | undefined;\n if (!model?.discriminator || !model.variants) return data;\n const variantEntry = model.variants[this.#variantName];\n if (!variantEntry) return data;\n return { ...data, [model.discriminator.field]: variantEntry.value };\n }\n\n #clone(\n overrides: Partial<MongoCollectionState>,\n ): MongoCollectionImpl<TContract, ModelName, TIncludes, TVariant> {\n const instance = new MongoCollectionImpl<TContract, ModelName, TIncludes, TVariant>(\n this.#contract,\n this.#modelName,\n this.#executor,\n );\n instance.#state = { ...this.#state, ...overrides };\n instance.#collectionName = this.#collectionName;\n instance.#variantName = this.#variantName;\n return instance;\n }\n\n #cloneWithVariant<VNew extends string>(\n overrides: Partial<MongoCollectionState>,\n variantName: string,\n ): MongoCollectionImpl<TContract, ModelName, TIncludes, VNew> {\n const instance = new MongoCollectionImpl<TContract, ModelName, TIncludes, VNew>(\n this.#contract,\n this.#modelName,\n this.#executor,\n );\n instance.#state = { ...this.#state, ...overrides };\n instance.#collectionName = this.#collectionName;\n instance.#variantName = variantName;\n return instance;\n }\n}\n\nexport function createMongoCollection<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n ModelName extends string & keyof MongoModelsMap<TContract>,\n>(\n contract: TContract,\n modelName: ModelName,\n executor: MongoQueryExecutor,\n): MongoCollection<TContract, ModelName> {\n return new MongoCollectionImpl(contract, modelName, executor);\n}\n","import type {\n MongoContract,\n MongoContractWithTypeMaps,\n MongoTypeMaps,\n RootModelName,\n} from '@prisma-next/mongo-contract';\nimport { blindCast } from '@prisma-next/utils/casts';\nimport type { MongoCollection } from './collection';\nimport { createMongoCollection } from './collection';\nimport type { MongoQueryExecutor } from './executor';\n\nexport interface MongoOrmOptions<TContract extends MongoContract> {\n readonly contract: TContract;\n readonly executor: MongoQueryExecutor;\n}\n\nexport type MongoOrmClient<\n TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>,\n> = {\n readonly [K in keyof TContract['roots'] & string]: MongoCollection<\n TContract,\n RootModelName<TContract, K>\n >;\n};\n\nexport function mongoOrm<TContract extends MongoContractWithTypeMaps<MongoContract, MongoTypeMaps>>(\n options: MongoOrmOptions<TContract>,\n): MongoOrmClient<TContract> {\n const { contract, executor } = options;\n const client: Record<string, unknown> = {};\n\n for (const [rootName, rootRef] of Object.entries(contract.roots)) {\n client[rootName] = createMongoCollection(\n contract,\n blindCast<\n RootModelName<TContract, typeof rootName & keyof TContract['roots'] & string>,\n 'roots entries are CrossReferences; rootRef.model is a valid RootModelName for this contract'\n >(rootRef.model),\n executor,\n );\n }\n\n return client as MongoOrmClient<TContract>;\n}\n","import type { PlanMeta } from '@prisma-next/contract/types';\nimport type { MongoQueryPlan } from '@prisma-next/mongo-query-ast/execution';\nimport {\n RawAggregateCommand,\n RawDeleteManyCommand,\n RawDeleteOneCommand,\n RawFindOneAndDeleteCommand,\n RawFindOneAndUpdateCommand,\n RawInsertManyCommand,\n RawInsertOneCommand,\n RawUpdateManyCommand,\n RawUpdateOneCommand,\n} from '@prisma-next/mongo-query-ast/execution';\nimport type { Document } from '@prisma-next/mongo-value';\n\ninterface Buildable<Row = unknown> {\n build(): MongoQueryPlan<Row>;\n}\n\nexport interface RawMongoCollection {\n aggregate<Row = Record<string, unknown>>(pipeline: ReadonlyArray<Document>): Buildable<Row>;\n\n insertOne(document: Document): Buildable;\n insertMany(documents: ReadonlyArray<Document>): Buildable;\n\n updateOne(filter: Document, update: Document | ReadonlyArray<Document>): Buildable;\n\n updateMany(filter: Document, update: Document | ReadonlyArray<Document>): Buildable;\n\n deleteOne(filter: Document): Buildable;\n deleteMany(filter: Document): Buildable;\n\n findOneAndUpdate(\n filter: Document,\n update: Document | ReadonlyArray<Document>,\n options?: { upsert?: boolean },\n ): Buildable;\n\n findOneAndDelete(filter: Document): Buildable;\n}\n\nexport function createRawMongoCollection(\n collectionName: string,\n meta: PlanMeta,\n): RawMongoCollection {\n function buildable<Row>(command: MongoQueryPlan['command']): Buildable<Row> {\n return {\n build: () => ({ collection: collectionName, command, meta }),\n };\n }\n\n return {\n aggregate<Row = Record<string, unknown>>(pipeline: ReadonlyArray<Document>) {\n return buildable<Row>(new RawAggregateCommand(collectionName, pipeline));\n },\n\n insertOne(document: Document) {\n return buildable(new RawInsertOneCommand(collectionName, document));\n },\n\n insertMany(documents: ReadonlyArray<Document>) {\n return buildable(new RawInsertManyCommand(collectionName, documents));\n },\n\n updateOne(filter: Document, update: Document | ReadonlyArray<Document>) {\n return buildable(new RawUpdateOneCommand(collectionName, filter, update));\n },\n\n updateMany(filter: Document, update: Document | ReadonlyArray<Document>) {\n return buildable(new RawUpdateManyCommand(collectionName, filter, update));\n },\n\n deleteOne(filter: Document) {\n return buildable(new RawDeleteOneCommand(collectionName, filter));\n },\n\n deleteMany(filter: Document) {\n return buildable(new RawDeleteManyCommand(collectionName, filter));\n },\n\n findOneAndUpdate(\n filter: Document,\n update: Document | ReadonlyArray<Document>,\n options?: { upsert?: boolean },\n ) {\n return buildable(\n new RawFindOneAndUpdateCommand(collectionName, filter, update, options?.upsert ?? false),\n );\n },\n\n findOneAndDelete(filter: Document) {\n return buildable(new RawFindOneAndDeleteCommand(collectionName, filter));\n },\n };\n}\n","import { domainModelsAtDefaultNamespace, type PlanMeta } from '@prisma-next/contract/types';\nimport type { MongoContract, MongoModelDefinition } from '@prisma-next/mongo-contract';\nimport { createRawMongoCollection, type RawMongoCollection } from './raw-collection';\n\nexport interface MongoRawClient<TContract extends MongoContract> {\n collection<K extends keyof TContract['roots'] & string>(rootName: K): RawMongoCollection;\n}\n\nexport function mongoRaw<TContract extends MongoContract>(options: {\n contract: TContract;\n}): MongoRawClient<TContract> {\n const { contract } = options;\n\n return {\n collection<K extends keyof TContract['roots'] & string>(rootName: K): RawMongoCollection {\n const modelName = contract.roots[rootName]?.model;\n const models = domainModelsAtDefaultNamespace(contract.domain);\n if (!modelName || !Object.hasOwn(models, modelName)) {\n throw new Error(`Unknown model \"${modelName ?? ''}\" for root \"${rootName}\"`);\n }\n const model = models[modelName] as MongoModelDefinition;\n const collectionName = model.storage.collection ?? modelName;\n\n const meta: PlanMeta = {\n target: 'mongo',\n storageHash: contract.storage.storageHash,\n lane: 'mongo-raw',\n };\n\n return createRawMongoCollection(collectionName, meta);\n },\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,32 +1,32 @@
1
1
  {
2
2
  "name": "@prisma-next/mongo-orm",
3
- "version": "0.12.0-dev.9",
3
+ "version": "0.13.0-dev.1",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "description": "MongoDB ORM client for Prisma Next",
8
8
  "dependencies": {
9
- "@prisma-next/contract": "0.12.0-dev.9",
10
- "@prisma-next/framework-components": "0.12.0-dev.9",
11
- "@prisma-next/mongo-contract": "0.12.0-dev.9",
12
- "@prisma-next/mongo-query-ast": "0.12.0-dev.9",
13
- "@prisma-next/mongo-query-builder": "0.12.0-dev.9",
14
- "@prisma-next/mongo-value": "0.12.0-dev.9",
15
- "@prisma-next/utils": "0.12.0-dev.9"
9
+ "@prisma-next/contract": "0.13.0-dev.1",
10
+ "@prisma-next/framework-components": "0.13.0-dev.1",
11
+ "@prisma-next/mongo-contract": "0.13.0-dev.1",
12
+ "@prisma-next/mongo-query-ast": "0.13.0-dev.1",
13
+ "@prisma-next/mongo-query-builder": "0.13.0-dev.1",
14
+ "@prisma-next/mongo-value": "0.13.0-dev.1",
15
+ "@prisma-next/utils": "0.13.0-dev.1"
16
16
  },
17
17
  "devDependencies": {
18
- "@prisma-next/adapter-mongo": "0.12.0-dev.9",
19
- "@prisma-next/driver-mongo": "0.12.0-dev.9",
20
- "@prisma-next/mongo-runtime": "0.12.0-dev.9",
21
- "@prisma-next/target-mongo": "0.12.0-dev.9",
22
- "@prisma-next/test-utils": "0.12.0-dev.9",
23
- "@prisma-next/tsconfig": "0.12.0-dev.9",
24
- "@prisma-next/tsdown": "0.12.0-dev.9",
18
+ "@prisma-next/adapter-mongo": "0.13.0-dev.1",
19
+ "@prisma-next/driver-mongo": "0.13.0-dev.1",
20
+ "@prisma-next/mongo-runtime": "0.13.0-dev.1",
21
+ "@prisma-next/target-mongo": "0.13.0-dev.1",
22
+ "@prisma-next/test-utils": "0.13.0-dev.1",
23
+ "@prisma-next/tsconfig": "0.13.0-dev.1",
24
+ "@prisma-next/tsdown": "0.13.0-dev.1",
25
25
  "mongodb": "^7.2.0",
26
- "mongodb-memory-server": "11.1.0",
27
- "tsdown": "0.22.0",
26
+ "mongodb-memory-server": "11.2.0",
27
+ "tsdown": "0.22.1",
28
28
  "typescript": "5.9.3",
29
- "vitest": "4.1.6"
29
+ "vitest": "4.1.8"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "typescript": ">=5.9"
@@ -5,7 +5,7 @@ export interface MongoIncludeExpr {
5
5
  readonly from: string;
6
6
  readonly localField: string;
7
7
  readonly foreignField: string;
8
- readonly cardinality: '1:1' | 'N:1' | '1:N' | 'M:N';
8
+ readonly cardinality: '1:1' | 'N:1' | '1:N' | 'N:M';
9
9
  }
10
10
 
11
11
  export interface MongoCollectionState {
package/src/collection.ts CHANGED
@@ -2,8 +2,8 @@ import {
2
2
  type ContractField,
3
3
  type ContractReferenceRelation,
4
4
  type ContractValueObject,
5
- contractModels,
6
- contractValueObjects,
5
+ domainModelsAtDefaultNamespace,
6
+ domainValueObjectsAtDefaultNamespace,
7
7
  type PlanMeta,
8
8
  } from '@prisma-next/contract/types';
9
9
  import { AsyncIterableResult } from '@prisma-next/framework-components/runtime';
@@ -172,7 +172,9 @@ class MongoCollectionImpl<
172
172
  this.#contract = contract;
173
173
  this.#modelName = modelName;
174
174
  this.#executor = executor;
175
- const model = contractModels(contract)[modelName] as MongoModelDefinition;
175
+ const model = domainModelsAtDefaultNamespace(contract.domain)[
176
+ modelName
177
+ ] as MongoModelDefinition;
176
178
  this.#collectionName = resolveCollectionName(model, modelName);
177
179
  this.#state = emptyCollectionState();
178
180
  }
@@ -180,7 +182,7 @@ class MongoCollectionImpl<
180
182
  variant<V extends VariantNames<TContract, ModelName>>(
181
183
  variantName: V,
182
184
  ): MongoCollection<TContract, ModelName, TIncludes, V> {
183
- const model = contractModels(this.#contract)[this.#modelName] as
185
+ const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName] as
184
186
  | MongoModelDefinition
185
187
  | undefined;
186
188
  if (!model?.discriminator || !model.variants) {
@@ -224,7 +226,9 @@ class MongoCollectionImpl<
224
226
  include<K extends ReferenceRelationKeys<TContract, ModelName> & string>(
225
227
  relationName: K,
226
228
  ): MongoCollection<TContract, ModelName, TIncludes & Record<K, true>, TVariant> {
227
- const model = contractModels(this.#contract)[this.#modelName] as MongoModelDefinition;
229
+ const model = domainModelsAtDefaultNamespace(this.#contract.domain)[
230
+ this.#modelName
231
+ ] as MongoModelDefinition;
228
232
  const relation = model.relations?.[relationName];
229
233
  if (!relation) {
230
234
  throw new Error(`Unknown relation "${relationName}" on model "${this.#modelName as string}"`);
@@ -249,7 +253,7 @@ class MongoCollectionImpl<
249
253
  }
250
254
 
251
255
  const targetModelName = ref.to.model;
252
- const targetModel = contractModels(this.#contract)[targetModelName] as
256
+ const targetModel = domainModelsAtDefaultNamespace(this.#contract.domain)[targetModelName] as
253
257
  | MongoModelDefinition
254
258
  | undefined;
255
259
  if (!targetModel) {
@@ -540,7 +544,7 @@ class MongoCollectionImpl<
540
544
  }
541
545
 
542
546
  #compile(): MongoQueryPlan<IncludedRow<TContract, ModelName, TIncludes>> {
543
- const model = contractModels(this.#contract)[this.#modelName] as
547
+ const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName] as
544
548
  | MongoModelDefinition
545
549
  | undefined;
546
550
  if (!model) {
@@ -569,7 +573,7 @@ class MongoCollectionImpl<
569
573
  }
570
574
 
571
575
  #modelFields(): Record<string, ContractField> {
572
- const model = contractModels(this.#contract)[this.#modelName] as
576
+ const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName] as
573
577
  | MongoModelDefinition
574
578
  | undefined;
575
579
  return model?.fields ?? {};
@@ -595,7 +599,7 @@ class MongoCollectionImpl<
595
599
 
596
600
  if (field.type.kind === 'valueObject') {
597
601
  const voName = field.type.name;
598
- const voDef = contractValueObjects(this.#contract)?.[voName];
602
+ const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];
599
603
  if (!voDef || value === null) return new MongoParamRef(value);
600
604
 
601
605
  if (field.many && Array.isArray(value)) {
@@ -703,7 +707,7 @@ class MongoCollectionImpl<
703
707
  const raw = value.value;
704
708
  if (typeof raw === 'object' && raw !== null && !Array.isArray(raw)) {
705
709
  const voName = contractField.type.name;
706
- const voDef = contractValueObjects(this.#contract)?.[voName];
710
+ const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];
707
711
  if (voDef) {
708
712
  return this.#wrapValueObject(raw as Record<string, unknown>, voDef);
709
713
  }
@@ -721,7 +725,7 @@ class MongoCollectionImpl<
721
725
  for (let i = 1; i < parts.length; i++) {
722
726
  if (!currentField || currentField.type.kind !== 'valueObject') return value;
723
727
  const voName = currentField.type.name;
724
- const voDef = contractValueObjects(this.#contract)?.[voName];
728
+ const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];
725
729
  if (!voDef) return value;
726
730
  const partKey = parts[i];
727
731
  currentField = partKey ? voDef.fields[partKey] : undefined;
@@ -735,7 +739,7 @@ class MongoCollectionImpl<
735
739
  const raw = value.value;
736
740
  if (typeof raw === 'object' && raw !== null && !Array.isArray(raw)) {
737
741
  const voName = currentField.type.name;
738
- const voDef = contractValueObjects(this.#contract)?.[voName];
742
+ const voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];
739
743
  if (voDef) {
740
744
  return this.#wrapValueObject(raw as Record<string, unknown>, voDef);
741
745
  }
@@ -791,7 +795,7 @@ class MongoCollectionImpl<
791
795
 
792
796
  #injectDiscriminator(data: Record<string, unknown>): Record<string, unknown> {
793
797
  if (!this.#variantName) return data;
794
- const model = contractModels(this.#contract)[this.#modelName] as
798
+ const model = domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName] as
795
799
  | MongoModelDefinition
796
800
  | undefined;
797
801
  if (!model?.discriminator || !model.variants) return data;
@@ -1,7 +1,7 @@
1
1
  import type {
2
2
  ContractField,
3
3
  ContractValueObject,
4
- ContractValueObjectsMap,
4
+ ContractValueObjectDefinitions,
5
5
  } from '@prisma-next/contract/types';
6
6
  import type {
7
7
  ExtractMongoCodecTypes,
@@ -134,7 +134,7 @@ export type FieldExpression<T = unknown> = {
134
134
  type HasValueObjects = MongoContract;
135
135
 
136
136
  type MergedContractValueObjects<TContract extends HasValueObjects> =
137
- ContractValueObjectsMap<TContract> &
137
+ ContractValueObjectDefinitions<TContract> &
138
138
  (TContract extends { readonly valueObjects?: infer VOs }
139
139
  ? VOs extends Record<string, ContractValueObject>
140
140
  ? VOs
package/src/mongo-raw.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { contractModels, type PlanMeta } from '@prisma-next/contract/types';
1
+ import { domainModelsAtDefaultNamespace, type PlanMeta } from '@prisma-next/contract/types';
2
2
  import type { MongoContract, MongoModelDefinition } from '@prisma-next/mongo-contract';
3
3
  import { createRawMongoCollection, type RawMongoCollection } from './raw-collection';
4
4
 
@@ -14,7 +14,7 @@ export function mongoRaw<TContract extends MongoContract>(options: {
14
14
  return {
15
15
  collection<K extends keyof TContract['roots'] & string>(rootName: K): RawMongoCollection {
16
16
  const modelName = contract.roots[rootName]?.model;
17
- const models = contractModels(contract);
17
+ const models = domainModelsAtDefaultNamespace(contract.domain);
18
18
  if (!modelName || !Object.hasOwn(models, modelName)) {
19
19
  throw new Error(`Unknown model "${modelName ?? ''}" for root "${rootName}"`);
20
20
  }