@prisma/orm-family-mongo 8.0.0-rc.1-dev.41 → 8.0.0-rc.1-dev.43
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/orm.d.mts +3 -2
- package/dist/orm.d.mts.map +1 -1
- package/dist/orm.mjs +13 -10
- package/dist/orm.mjs.map +1 -1
- package/dist/runtime.d.mts +23 -14
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +84 -27
- package/dist/runtime.mjs.map +1 -1
- package/package.json +19 -19
package/dist/orm.d.mts
CHANGED
|
@@ -4,12 +4,13 @@ import { c as MongoValue, t as Document } from "./index-wKMm41HC.mjs";
|
|
|
4
4
|
import { B as MongoFilterExpr, rt as MongoQueryPlan } from "./query-plan-C0-Yu8hf-DdilEdW6.mjs";
|
|
5
5
|
import "./execution-CKnUiOfm.mjs";
|
|
6
6
|
import { ContractField, ContractReferenceRelation, ContractValueObject, ContractValueObjectDefinitions } from "@prisma/orm-framework/contract/types";
|
|
7
|
-
import { AsyncIterableResult } from "@prisma/orm-framework/components/runtime";
|
|
7
|
+
import { AsyncIterableResult, RuntimeStatementStats } from "@prisma/orm-framework/components/runtime";
|
|
8
8
|
import { SimplifyDeep } from "@prisma/orm-framework/utils/simplify-deep";
|
|
9
9
|
//#region ../../../2-mongo-family/5-query-builders/orm/dist/index.d.mts
|
|
10
10
|
//#region src/executor.d.ts
|
|
11
11
|
interface MongoQueryExecutor {
|
|
12
|
-
|
|
12
|
+
query<Row>(plan: MongoQueryPlan<Row>): AsyncIterableResult<Row>;
|
|
13
|
+
execute(plan: MongoQueryPlan): Promise<RuntimeStatementStats>;
|
|
13
14
|
}
|
|
14
15
|
//#endregion
|
|
15
16
|
//#region src/field-accessor.d.ts
|
package/dist/orm.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orm.d.mts","names":[],"sources":["../../../../2-mongo-family/5-query-builders/orm/dist/index.d.mts"],"mappings":";;;;;;;;;;UAOU;EACR,
|
|
1
|
+
{"version":3,"file":"orm.d.mts","names":[],"sources":["../../../../2-mongo-family/5-query-builders/orm/dist/index.d.mts"],"mappings":"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"}
|
package/dist/orm.mjs
CHANGED
|
@@ -230,10 +230,10 @@ var MongoCollectionImpl = class MongoCollectionImpl {
|
|
|
230
230
|
return this.#clone({ offset: n });
|
|
231
231
|
}
|
|
232
232
|
all() {
|
|
233
|
-
return this.#
|
|
233
|
+
return this.#query();
|
|
234
234
|
}
|
|
235
235
|
async first() {
|
|
236
|
-
const result = this.#clone({ limit: 1 }).#
|
|
236
|
+
const result = this.#clone({ limit: 1 }).#query();
|
|
237
237
|
for await (const row of result) return row;
|
|
238
238
|
return null;
|
|
239
239
|
}
|
|
@@ -291,7 +291,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
|
|
|
291
291
|
const command = new UpdateManyCommand(self.#collectionName, filter, updateDoc);
|
|
292
292
|
await self.#drainPlan(command);
|
|
293
293
|
const idFilter = MongoFieldFilter.in("_id", ids.map((id) => new MongoParamRef(id)));
|
|
294
|
-
yield* self.#clone({ filters: [idFilter] }).#
|
|
294
|
+
yield* self.#clone({ filters: [idFilter] }).#query();
|
|
295
295
|
}
|
|
296
296
|
return new AsyncIterableResult(gen());
|
|
297
297
|
}
|
|
@@ -302,7 +302,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
|
|
|
302
302
|
const filter = this.#mergeFilters();
|
|
303
303
|
const updateDoc = this.#resolveUpdateDoc(dataOrCallback);
|
|
304
304
|
const command = new UpdateManyCommand(this.#collectionName, filter, updateDoc);
|
|
305
|
-
return
|
|
305
|
+
return (await this.#executePlan(command)).affectedRows;
|
|
306
306
|
}
|
|
307
307
|
async delete() {
|
|
308
308
|
this.#requireFilters("delete");
|
|
@@ -319,7 +319,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
|
|
|
319
319
|
const self = this;
|
|
320
320
|
async function* gen() {
|
|
321
321
|
const docs = [];
|
|
322
|
-
for await (const row of self.#
|
|
322
|
+
for await (const row of self.#query()) docs.push(row);
|
|
323
323
|
const filter = self.#mergeFilters();
|
|
324
324
|
const command = new DeleteManyCommand(self.#collectionName, filter);
|
|
325
325
|
await self.#drainPlan(command);
|
|
@@ -333,7 +333,7 @@ var MongoCollectionImpl = class MongoCollectionImpl {
|
|
|
333
333
|
this.#rejectIncludes("deleteAndCount");
|
|
334
334
|
const filter = this.#mergeFilters();
|
|
335
335
|
const command = new DeleteManyCommand(this.#collectionName, filter);
|
|
336
|
-
return
|
|
336
|
+
return (await this.#executePlan(command)).affectedRows;
|
|
337
337
|
}
|
|
338
338
|
async upsert(input) {
|
|
339
339
|
this.#requireFilters("upsert");
|
|
@@ -375,15 +375,15 @@ var MongoCollectionImpl = class MongoCollectionImpl {
|
|
|
375
375
|
});
|
|
376
376
|
const ids = [];
|
|
377
377
|
const { resultShape: _rs, ...planWithoutShape } = idQuery.#compile();
|
|
378
|
-
for await (const row of this.#executor.
|
|
378
|
+
for await (const row of this.#executor.query(planWithoutShape)) {
|
|
379
379
|
const storageRow = blindCast(row);
|
|
380
380
|
ids.push(storageRow["_id"]);
|
|
381
381
|
}
|
|
382
382
|
return ids;
|
|
383
383
|
}
|
|
384
|
-
#
|
|
384
|
+
#query() {
|
|
385
385
|
const plan = this.#compile();
|
|
386
|
-
return this.#executor.
|
|
386
|
+
return this.#executor.query(plan);
|
|
387
387
|
}
|
|
388
388
|
#compile() {
|
|
389
389
|
const model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);
|
|
@@ -398,9 +398,12 @@ var MongoCollectionImpl = class MongoCollectionImpl {
|
|
|
398
398
|
...ifDefined("resultShape", resultShape)
|
|
399
399
|
};
|
|
400
400
|
}
|
|
401
|
+
#executePlan(command) {
|
|
402
|
+
return this.#executor.execute(this.#wrapCommand(command));
|
|
403
|
+
}
|
|
401
404
|
async #drainPlan(command, resultShape) {
|
|
402
405
|
const plan = this.#wrapCommand(command, resultShape);
|
|
403
|
-
const result = this.#executor.
|
|
406
|
+
const result = this.#executor.query(plan);
|
|
404
407
|
const rows = [];
|
|
405
408
|
for await (const row of result) rows.push(row);
|
|
406
409
|
return rows;
|
package/dist/orm.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orm.mjs","names":["#contract","#modelName","#executor","#collectionName","#state","#cloneWithVariant","#clone","#compileWhereObject","#execute","#rejectIncludes","#injectDiscriminator","#stripUndefined","#toDocument","#drainPlan","#insertOneResultShape","#insertManyResultShape","#requireFilters","#rejectWindowing","#mergeFilters","#resolveUpdateDoc","#modelResultShape","#readMatchingIds","#wrapFieldOpValue","#toSetFields","#compile","#planMeta","#wrapCommand","#modelFields","#idFieldShape","#wrapFieldValue","#wrapValueObject","#toUpdateDocument","#wrapDotPathValue","#variantName"],"sources":["../../../../2-mongo-family/5-query-builders/orm/dist/index.mjs"],"sourcesContent":["import { domainModelsAtDefaultNamespace, domainValueObjectsAtDefaultNamespace } from \"@internal/contract/types\";\nimport { AsyncIterableResult } from \"@internal/framework-components/runtime\";\nimport { 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, freezeMongoResultShape, isMongoFilterExpr } from \"@internal/mongo-query-ast/execution\";\nimport { contractFieldToMongoFieldShape, contractModelToMongoResultShape } from \"@internal/mongo-query-builder\";\nimport { MongoParamRef } from \"@internal/mongo-value\";\nimport { blindCast, castAs } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/collection-state.ts\nfunction emptyCollectionState() {\n\treturn {\n\t\tfilters: [],\n\t\tincludes: [],\n\t\torderBy: void 0,\n\t\tselectedFields: void 0,\n\t\tlimit: void 0,\n\t\toffset: void 0\n\t};\n}\n//#endregion\n//#region src/compile.ts\nfunction compileIncludes(includes) {\n\tconst stages = [];\n\tfor (const inc of includes) {\n\t\tstages.push(new MongoLookupStage({\n\t\t\tfrom: inc.from,\n\t\t\tlocalField: inc.localField,\n\t\t\tforeignField: inc.foreignField,\n\t\t\tas: inc.relationName\n\t\t}));\n\t\tif (inc.cardinality === \"N:1\" || inc.cardinality === \"1:1\") stages.push(new MongoUnwindStage(`$${inc.relationName}`, true));\n\t}\n\treturn stages;\n}\nfunction compileMongoQuery(collection, state, storageHash, model) {\n\tconst stages = [];\n\tconst singleFilter = state.filters.length === 1 ? state.filters[0] : void 0;\n\tif (singleFilter) stages.push(new MongoMatchStage(singleFilter));\n\telse if (state.filters.length > 1) stages.push(new MongoMatchStage(MongoAndExpr.of([...state.filters])));\n\tif (state.includes.length > 0) stages.push(...compileIncludes(state.includes));\n\tif (state.orderBy) stages.push(new MongoSortStage(state.orderBy));\n\tif (state.offset !== void 0) stages.push(new MongoSkipStage(state.offset));\n\tif (state.limit !== void 0) stages.push(new MongoLimitStage(state.limit));\n\tif (state.selectedFields && state.selectedFields.length > 0) {\n\t\tconst projection = {};\n\t\tfor (const field of state.selectedFields) projection[field] = 1;\n\t\tif (!Object.hasOwn(projection, \"_id\")) projection[\"_id\"] = 0;\n\t\tstages.push(new MongoProjectStage(projection));\n\t}\n\tconst meta = {\n\t\ttarget: \"mongo\",\n\t\tstorageHash,\n\t\tlane: \"mongo-orm\"\n\t};\n\tconst command = new AggregateCommand(collection, stages);\n\tconst selection = state.selectedFields !== void 0 && state.selectedFields.length > 0 ? state.selectedFields : void 0;\n\tconst includeRelationNames = state.includes.length > 0 ? state.includes.map((inc) => inc.relationName) : void 0;\n\treturn {\n\t\tcollection,\n\t\tcommand,\n\t\tmeta,\n\t\tresultShape: contractModelToMongoResultShape(model, {\n\t\t\t...ifDefined(\"selection\", selection),\n\t\t\t...ifDefined(\"includeRelationNames\", includeRelationNames)\n\t\t})\n\t};\n}\n//#endregion\n//#region src/field-accessor.ts\nfunction createFieldExpression(fieldPath) {\n\treturn {\n\t\tset(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$set\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tunset() {\n\t\t\treturn {\n\t\t\t\toperator: \"$unset\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(\"\")\n\t\t\t};\n\t\t},\n\t\tinc(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$inc\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tmul(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$mul\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tpush(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$push\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tpull(match) {\n\t\t\treturn {\n\t\t\t\toperator: \"$pull\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(match)\n\t\t\t};\n\t\t},\n\t\taddToSet(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$addToSet\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tpop(end) {\n\t\t\treturn {\n\t\t\t\toperator: \"$pop\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(end)\n\t\t\t};\n\t\t}\n\t};\n}\nfunction createFieldAccessor() {\n\treturn new Proxy((() => {}), {\n\t\tget(_target, prop) {\n\t\t\treturn createFieldExpression(prop);\n\t\t},\n\t\tapply(_target, _thisArg, args) {\n\t\t\treturn createFieldExpression(args[0]);\n\t\t}\n\t});\n}\nfunction compileFieldOperations(ops, wrapValue) {\n\tconst grouped = {};\n\tfor (const op of ops) {\n\t\tlet group = grouped[op.operator];\n\t\tif (!group) {\n\t\t\tgroup = {};\n\t\t\tgrouped[op.operator] = group;\n\t\t}\n\t\tgroup[op.field] = wrapValue(op.field, op.value, op.operator);\n\t}\n\treturn grouped;\n}\n//#endregion\n//#region src/orm-errors.ts\nfunction ormError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/collection.ts\nfunction resolveCollectionName(model, modelName) {\n\treturn model.storage.collection ?? modelName;\n}\nfunction isUnknownRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nvar MongoCollectionImpl = class MongoCollectionImpl {\n\t#contract;\n\t#modelName;\n\t#executor;\n\t#collectionName;\n\t#state;\n\t#variantName;\n\tconstructor(contract, modelName, executor) {\n\t\tthis.#contract = contract;\n\t\tthis.#modelName = modelName;\n\t\tthis.#executor = executor;\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(contract.domain)[modelName]);\n\t\tthis.#collectionName = resolveCollectionName(model, modelName);\n\t\tthis.#state = emptyCollectionState();\n\t}\n\tvariant(variantName) {\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);\n\t\tif (!model?.discriminator || !model.variants) return blindCast(this);\n\t\tconst variantEntry = model.variants[variantName];\n\t\tif (!variantEntry) return blindCast(this);\n\t\tconst filter = MongoFieldFilter.eq(model.discriminator.field, new MongoParamRef(variantEntry.value));\n\t\treturn this.#cloneWithVariant({ filters: [...this.#state.filters, filter] }, variantName);\n\t}\n\twhere(filter) {\n\t\tif (isMongoFilterExpr(filter)) return this.#clone({ filters: [...this.#state.filters, filter] });\n\t\tconst compiled = this.#compileWhereObject(blindCast(filter));\n\t\treturn this.#clone({ filters: [...this.#state.filters, ...compiled] });\n\t}\n\tselect(...fields) {\n\t\treturn this.#clone({ selectedFields: [...this.#state.selectedFields ?? [], ...fields] });\n\t}\n\tinclude(relationName) {\n\t\tconst relation = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]).relations?.[relationName];\n\t\tif (!relation) throw ormError(\"ORM.RELATION_UNKNOWN\", `Unknown relation \"${relationName}\" on model \"${this.#modelName}\"`, { meta: {\n\t\t\tmodel: this.#modelName,\n\t\t\trelation: relationName\n\t\t} });\n\t\tif (!(\"on\" in relation)) throw ormError(\"ORM.INCLUDE_UNSUPPORTED\", `Relation \"${relationName}\" is an embed relation — only reference relations can be included`, { meta: {\n\t\t\tmodel: this.#modelName,\n\t\t\trelation: relationName\n\t\t} });\n\t\tconst ref = relation;\n\t\tconst localField = ref.on.localFields[0];\n\t\tconst foreignField = ref.on.targetFields[0];\n\t\tif (!localField || !foreignField || ref.on.localFields.length !== 1 || ref.on.targetFields.length !== 1) throw ormError(\"ORM.INCLUDE_UNSUPPORTED\", `Compound references are not yet supported: relation \"${relationName}\"`, { meta: {\n\t\t\tmodel: this.#modelName,\n\t\t\trelation: relationName\n\t\t} });\n\t\tconst targetModelName = ref.to.model;\n\t\tconst targetModel = castAs(domainModelsAtDefaultNamespace(this.#contract.domain)[targetModelName]);\n\t\tif (!targetModel) throw new InternalError(`Target model \"${targetModelName}\" not found for relation \"${relationName}\"`);\n\t\tconst includeExpr = {\n\t\t\trelationName,\n\t\t\tfrom: resolveCollectionName(targetModel, targetModelName),\n\t\t\tlocalField,\n\t\t\tforeignField,\n\t\t\tcardinality: ref.cardinality\n\t\t};\n\t\treturn blindCast(this.#clone({ includes: [...this.#state.includes, includeExpr] }));\n\t}\n\torderBy(spec) {\n\t\tconst merged = {\n\t\t\t...this.#state.orderBy,\n\t\t\t...spec\n\t\t};\n\t\treturn this.#clone({ orderBy: merged });\n\t}\n\ttake(n) {\n\t\treturn this.#clone({ limit: n });\n\t}\n\tskip(n) {\n\t\treturn this.#clone({ offset: n });\n\t}\n\tall() {\n\t\treturn this.#execute();\n\t}\n\tasync first() {\n\t\tconst result = this.#clone({ limit: 1 }).#execute();\n\t\tfor await (const row of result) return row;\n\t\treturn null;\n\t}\n\tasync create(data) {\n\t\tthis.#rejectIncludes(\"create\");\n\t\tconst normalized = this.#injectDiscriminator(this.#stripUndefined(blindCast(data)));\n\t\tconst document = this.#toDocument(normalized);\n\t\tconst command = new InsertOneCommand(this.#collectionName, document);\n\t\tconst insertedId = blindCast((await this.#drainPlan(command, this.#insertOneResultShape()))[0]).insertedId;\n\t\treturn blindCast({\n\t\t\t_id: insertedId,\n\t\t\t...normalized\n\t\t});\n\t}\n\tcreateAll(data) {\n\t\tthis.#rejectIncludes(\"createAll\");\n\t\tconst self = this;\n\t\tasync function* gen() {\n\t\t\tconst normalizedRows = data.map((d) => self.#injectDiscriminator(self.#stripUndefined(blindCast(d))));\n\t\t\tconst documents = normalizedRows.map((d) => self.#toDocument(d));\n\t\t\tconst command = new InsertManyCommand(self.#collectionName, documents);\n\t\t\tconst insertedIds = blindCast((await self.#drainPlan(command, self.#insertManyResultShape()))[0]).insertedIds;\n\t\t\tfor (let i = 0; i < normalizedRows.length; i++) yield blindCast({\n\t\t\t\t_id: insertedIds[i],\n\t\t\t\t...normalizedRows[i]\n\t\t\t});\n\t\t}\n\t\treturn new AsyncIterableResult(gen());\n\t}\n\tasync createAndCount(data) {\n\t\tthis.#rejectIncludes(\"createAndCount\");\n\t\tconst documents = data.map((d) => this.#toDocument(this.#injectDiscriminator(blindCast(d))));\n\t\tconst command = new InsertManyCommand(this.#collectionName, documents);\n\t\treturn blindCast((await this.#drainPlan(command))[0]).insertedCount;\n\t}\n\tasync update(dataOrCallback) {\n\t\tthis.#requireFilters(\"update\");\n\t\tthis.#rejectWindowing(\"update\");\n\t\tthis.#rejectIncludes(\"update\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst updateDoc = this.#resolveUpdateDoc(dataOrCallback);\n\t\tconst command = new FindOneAndUpdateCommand(this.#collectionName, filter, updateDoc, false);\n\t\tconst result = (await this.#drainPlan(command, this.#modelResultShape()))[0];\n\t\treturn result === void 0 ? null : blindCast(result);\n\t}\n\tupdateAll(dataOrCallback) {\n\t\tthis.#requireFilters(\"updateAll\");\n\t\tthis.#rejectWindowing(\"updateAll\");\n\t\tconst self = this;\n\t\tasync function* gen() {\n\t\t\tconst ids = await self.#readMatchingIds();\n\t\t\tif (ids.length === 0) return;\n\t\t\tconst filter = self.#mergeFilters();\n\t\t\tconst updateDoc = self.#resolveUpdateDoc(dataOrCallback);\n\t\t\tconst command = new UpdateManyCommand(self.#collectionName, filter, updateDoc);\n\t\t\tawait self.#drainPlan(command);\n\t\t\tconst idFilter = MongoFieldFilter.in(\"_id\", ids.map((id) => new MongoParamRef(id)));\n\t\t\tyield* self.#clone({ filters: [idFilter] }).#execute();\n\t\t}\n\t\treturn new AsyncIterableResult(gen());\n\t}\n\tasync updateAndCount(dataOrCallback) {\n\t\tthis.#requireFilters(\"updateAndCount\");\n\t\tthis.#rejectWindowing(\"updateAndCount\");\n\t\tthis.#rejectIncludes(\"updateAndCount\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst updateDoc = this.#resolveUpdateDoc(dataOrCallback);\n\t\tconst command = new UpdateManyCommand(this.#collectionName, filter, updateDoc);\n\t\treturn blindCast((await this.#drainPlan(command))[0]).modifiedCount;\n\t}\n\tasync delete() {\n\t\tthis.#requireFilters(\"delete\");\n\t\tthis.#rejectWindowing(\"delete\");\n\t\tthis.#rejectIncludes(\"delete\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst command = new FindOneAndDeleteCommand(this.#collectionName, filter);\n\t\tconst result = (await this.#drainPlan(command, this.#modelResultShape()))[0];\n\t\treturn result === void 0 ? null : blindCast(result);\n\t}\n\tdeleteAll() {\n\t\tthis.#requireFilters(\"deleteAll\");\n\t\tthis.#rejectWindowing(\"deleteAll\");\n\t\tconst self = this;\n\t\tasync function* gen() {\n\t\t\tconst docs = [];\n\t\t\tfor await (const row of self.#execute()) docs.push(row);\n\t\t\tconst filter = self.#mergeFilters();\n\t\t\tconst command = new DeleteManyCommand(self.#collectionName, filter);\n\t\t\tawait self.#drainPlan(command);\n\t\t\tyield* docs;\n\t\t}\n\t\treturn new AsyncIterableResult(gen());\n\t}\n\tasync deleteAndCount() {\n\t\tthis.#requireFilters(\"deleteAndCount\");\n\t\tthis.#rejectWindowing(\"deleteAndCount\");\n\t\tthis.#rejectIncludes(\"deleteAndCount\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst command = new DeleteManyCommand(this.#collectionName, filter);\n\t\treturn blindCast((await this.#drainPlan(command))[0]).deletedCount;\n\t}\n\tasync upsert(input) {\n\t\tthis.#requireFilters(\"upsert\");\n\t\tthis.#rejectWindowing(\"upsert\");\n\t\tthis.#rejectIncludes(\"upsert\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst allCreateFields = this.#toDocument(this.#injectDiscriminator(blindCast(input.create)));\n\t\tlet updateDoc;\n\t\tif (typeof input.update === \"function\") {\n\t\t\tconst accessor = createFieldAccessor();\n\t\t\tconst ops = input.update(accessor);\n\t\t\tif (ops.find((op) => op.field === \"_id\")) throw ormError(\"ORM.FIELD_IMMUTABLE\", \"Mutation payloads cannot modify `_id`\", { meta: { field: \"_id\" } });\n\t\t\tconst dotPathOp = ops.find((op) => op.field.includes(\".\"));\n\t\t\tif (dotPathOp) throw ormError(\"ORM.OPERATION_UNSUPPORTED\", `upsert() does not support dot-path field operations (found \"${dotPathOp.field}\"). Dot-path updates conflict with \\$setOnInsert on the insert path, producing incomplete documents. Use top-level field operations instead.`, { meta: {\n\t\t\t\tmethod: \"upsert\",\n\t\t\t\tfield: dotPathOp.field\n\t\t\t} });\n\t\t\tupdateDoc = compileFieldOperations(ops, (field, value, operator) => this.#wrapFieldOpValue(field, value, operator));\n\t\t} else {\n\t\t\tconst setFields = this.#toSetFields(blindCast(input.update));\n\t\t\tupdateDoc = {};\n\t\t\tif (Object.keys(setFields).length > 0) updateDoc[\"$set\"] = setFields;\n\t\t}\n\t\tconst updatedFields = /* @__PURE__ */ new Set();\n\t\tfor (const operatorGroup of Object.values(updateDoc)) for (const fieldPath of Object.keys(operatorGroup)) updatedFields.add(fieldPath.split(\".\")[0] ?? fieldPath);\n\t\tconst insertOnlyFields = {};\n\t\tfor (const [key, value] of Object.entries(allCreateFields)) if (!updatedFields.has(key)) insertOnlyFields[key] = value;\n\t\tif (Object.keys(insertOnlyFields).length > 0) updateDoc[\"$setOnInsert\"] = insertOnlyFields;\n\t\tconst command = new FindOneAndUpdateCommand(this.#collectionName, filter, updateDoc, true);\n\t\treturn blindCast((await this.#drainPlan(command, this.#modelResultShape()))[0]);\n\t}\n\tasync #readMatchingIds() {\n\t\tconst idQuery = this.#clone({\n\t\t\tincludes: [],\n\t\t\tselectedFields: [\"_id\"],\n\t\t\torderBy: void 0,\n\t\t\tlimit: void 0,\n\t\t\toffset: void 0\n\t\t});\n\t\tconst ids = [];\n\t\tconst { resultShape: _rs, ...planWithoutShape } = idQuery.#compile();\n\t\tfor await (const row of this.#executor.execute(planWithoutShape)) {\n\t\t\tconst storageRow = blindCast(row);\n\t\t\tids.push(storageRow[\"_id\"]);\n\t\t}\n\t\treturn ids;\n\t}\n\t#execute() {\n\t\tconst plan = this.#compile();\n\t\treturn this.#executor.execute(plan);\n\t}\n\t#compile() {\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);\n\t\tif (!model) throw ormError(\"ORM.MODEL_UNKNOWN\", `Unknown model: \"${this.#modelName}\".`, { meta: { model: this.#modelName } });\n\t\treturn compileMongoQuery(this.#collectionName, this.#state, this.#contract.storage.storageHash, model);\n\t}\n\t#wrapCommand(command, resultShape) {\n\t\treturn {\n\t\t\tcollection: this.#collectionName,\n\t\t\tcommand,\n\t\t\tmeta: this.#planMeta(),\n\t\t\t...ifDefined(\"resultShape\", resultShape)\n\t\t};\n\t}\n\tasync #drainPlan(command, resultShape) {\n\t\tconst plan = this.#wrapCommand(command, resultShape);\n\t\tconst result = this.#executor.execute(plan);\n\t\tconst rows = [];\n\t\tfor await (const row of result) rows.push(row);\n\t\treturn rows;\n\t}\n\t#modelFields() {\n\t\treturn blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName])?.fields ?? {};\n\t}\n\t#idFieldShape() {\n\t\tconst idField = this.#modelFields()[\"_id\"];\n\t\treturn idField ? contractFieldToMongoFieldShape(idField) : Object.freeze({ kind: \"unknown\" });\n\t}\n\t#insertOneResultShape() {\n\t\treturn freezeMongoResultShape({\n\t\t\tkind: \"document\",\n\t\t\tfields: { insertedId: this.#idFieldShape() }\n\t\t});\n\t}\n\t#insertManyResultShape() {\n\t\treturn freezeMongoResultShape({\n\t\t\tkind: \"document\",\n\t\t\tfields: { insertedIds: {\n\t\t\t\tkind: \"array\",\n\t\t\t\tnullable: false,\n\t\t\t\telement: this.#idFieldShape()\n\t\t\t} }\n\t\t});\n\t}\n\t#modelResultShape() {\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);\n\t\tif (!model) return Object.freeze({ kind: \"unknown\" });\n\t\treturn contractModelToMongoResultShape(model);\n\t}\n\t#compileWhereObject(data) {\n\t\tconst fields = this.#modelFields();\n\t\tconst filters = [];\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tif (value === void 0) continue;\n\t\t\tconst wrapped = this.#wrapFieldValue(value, fields[key]);\n\t\t\tfilters.push(MongoFieldFilter.eq(key, wrapped));\n\t\t}\n\t\treturn filters;\n\t}\n\t#wrapFieldValue(value, field) {\n\t\tif (field === void 0) return new MongoParamRef(value);\n\t\tif (field.type.kind === \"scalar\") return new MongoParamRef(value, { codecId: field.type.codecId });\n\t\tif (field.type.kind === \"valueObject\") {\n\t\t\tconst voName = field.type.name;\n\t\t\tconst voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n\t\t\tif (!voDef || value === null) return new MongoParamRef(value);\n\t\t\tif (field.many && Array.isArray(value)) return value.map((item) => this.#wrapValueObject(blindCast(item), voDef));\n\t\t\treturn this.#wrapValueObject(blindCast(value), voDef);\n\t\t}\n\t\treturn new MongoParamRef(value);\n\t}\n\t#wrapValueObject(data, voDef) {\n\t\tconst doc = {};\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tif (value === void 0) continue;\n\t\t\tconst fieldDef = voDef.fields[key];\n\t\t\tdoc[key] = this.#wrapFieldValue(value, fieldDef);\n\t\t}\n\t\treturn doc;\n\t}\n\t#toDocument(data) {\n\t\tconst fields = this.#modelFields();\n\t\tconst doc = {};\n\t\tfor (const [key, value] of Object.entries(data)) if (value !== void 0) doc[key] = this.#wrapFieldValue(value, fields[key]);\n\t\treturn doc;\n\t}\n\t#toSetFields(data) {\n\t\tconst fields = this.#modelFields();\n\t\tconst result = {};\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tif (key === \"_id\" && value !== void 0) throw ormError(\"ORM.FIELD_IMMUTABLE\", \"Mutation payloads cannot modify `_id`\", { meta: { field: \"_id\" } });\n\t\t\tif (value !== void 0) result[key] = this.#wrapFieldValue(value, fields[key]);\n\t\t}\n\t\treturn result;\n\t}\n\t#stripUndefined(data) {\n\t\tconst result = {};\n\t\tfor (const [key, value] of Object.entries(data)) if (value !== void 0) result[key] = value;\n\t\treturn result;\n\t}\n\t#toUpdateDocument(data) {\n\t\treturn { $set: this.#toSetFields(data) };\n\t}\n\t#resolveUpdateDoc(dataOrCallback) {\n\t\tif (typeof dataOrCallback === \"function\") {\n\t\t\tconst ops = dataOrCallback(createFieldAccessor());\n\t\t\tif (ops.find((op) => op.field === \"_id\")) throw ormError(\"ORM.FIELD_IMMUTABLE\", \"Mutation payloads cannot modify `_id`\", { meta: { field: \"_id\" } });\n\t\t\tif (ops.length === 0) return { $set: {} };\n\t\t\treturn compileFieldOperations(ops, (field, value, operator) => this.#wrapFieldOpValue(field, value, operator));\n\t\t}\n\t\treturn this.#toUpdateDocument(blindCast(dataOrCallback));\n\t}\n\t#wrapFieldOpValue(field, value, operator) {\n\t\tif (operator === \"$unset\") return value;\n\t\tconst topLevelField = field.split(\".\")[0] ?? field;\n\t\tconst contractField = this.#modelFields()[topLevelField];\n\t\tif (!contractField) return value;\n\t\tif (field.includes(\".\")) return this.#wrapDotPathValue(field, value);\n\t\tif (value instanceof MongoParamRef && contractField.type.kind === \"scalar\") return new MongoParamRef(value.value, { codecId: contractField.type.codecId });\n\t\tif (contractField.type.kind === \"valueObject\" && value instanceof MongoParamRef) {\n\t\t\tconst raw = value.value;\n\t\t\tif (isUnknownRecord(raw)) {\n\t\t\t\tconst voName = contractField.type.name;\n\t\t\t\tconst voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n\t\t\t\tif (voDef) return this.#wrapValueObject(raw, voDef);\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\t#wrapDotPathValue(dotPath, value) {\n\t\tconst parts = dotPath.split(\".\");\n\t\tconst fields = this.#modelFields();\n\t\tlet currentField = parts[0] ? fields[parts[0]] : void 0;\n\t\tfor (let i = 1; i < parts.length; i++) {\n\t\t\tif (currentField?.type.kind !== \"valueObject\") return value;\n\t\t\tconst voName = currentField.type.name;\n\t\t\tconst voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n\t\t\tif (!voDef) return value;\n\t\t\tconst partKey = parts[i];\n\t\t\tcurrentField = partKey ? voDef.fields[partKey] : void 0;\n\t\t}\n\t\tif (currentField?.type.kind === \"scalar\" && value instanceof MongoParamRef) return new MongoParamRef(value.value, { codecId: currentField.type.codecId });\n\t\tif (currentField?.type.kind === \"valueObject\" && value instanceof MongoParamRef) {\n\t\t\tconst raw = value.value;\n\t\t\tif (isUnknownRecord(raw)) {\n\t\t\t\tconst voName = currentField.type.name;\n\t\t\t\tconst voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n\t\t\t\tif (voDef) return this.#wrapValueObject(raw, voDef);\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\t#mergeFilters() {\n\t\tconst [single] = this.#state.filters;\n\t\tif (this.#state.filters.length === 1 && single) return single;\n\t\treturn MongoAndExpr.of([...this.#state.filters]);\n\t}\n\t#requireFilters(methodName) {\n\t\tif (this.#state.filters.length === 0) throw ormError(\"ORM.WHERE_MISSING\", `${methodName}() requires a .where() filter. Call .where() before .${methodName}()`, { meta: { method: methodName } });\n\t}\n\t#rejectWindowing(methodName) {\n\t\tif (this.#state.orderBy !== void 0 || this.#state.limit !== void 0 || this.#state.offset !== void 0) throw ormError(\"ORM.OPERATION_UNSUPPORTED\", `${methodName}() does not support orderBy/skip/take. Remove windowing before calling .${methodName}()`, { meta: {\n\t\t\tmethod: methodName,\n\t\t\treason: \"windowing\"\n\t\t} });\n\t}\n\t#rejectIncludes(methodName) {\n\t\tif (this.#state.includes.length > 0) throw ormError(\"ORM.OPERATION_UNSUPPORTED\", `${methodName}() does not support .include(). Remove includes before calling .${methodName}()`, { meta: {\n\t\t\tmethod: methodName,\n\t\t\treason: \"includes\"\n\t\t} });\n\t}\n\t#planMeta() {\n\t\treturn {\n\t\t\ttarget: \"mongo\",\n\t\t\tstorageHash: this.#contract.storage.storageHash,\n\t\t\tlane: \"mongo-orm\"\n\t\t};\n\t}\n\t#injectDiscriminator(data) {\n\t\tif (!this.#variantName) return data;\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);\n\t\tif (!model?.discriminator || !model.variants) return data;\n\t\tconst variantEntry = model.variants[this.#variantName];\n\t\tif (!variantEntry) return data;\n\t\treturn {\n\t\t\t...data,\n\t\t\t[model.discriminator.field]: variantEntry.value\n\t\t};\n\t}\n\t#clone(overrides) {\n\t\tconst instance = new MongoCollectionImpl(this.#contract, this.#modelName, this.#executor);\n\t\tinstance.#state = {\n\t\t\t...this.#state,\n\t\t\t...overrides\n\t\t};\n\t\tinstance.#collectionName = this.#collectionName;\n\t\tinstance.#variantName = this.#variantName;\n\t\treturn instance;\n\t}\n\t#cloneWithVariant(overrides, variantName) {\n\t\tconst instance = new MongoCollectionImpl(this.#contract, this.#modelName, this.#executor);\n\t\tinstance.#state = {\n\t\t\t...this.#state,\n\t\t\t...overrides\n\t\t};\n\t\tinstance.#collectionName = this.#collectionName;\n\t\tinstance.#variantName = variantName;\n\t\treturn instance;\n\t}\n};\nfunction createMongoCollection(contract, modelName, executor) {\n\treturn new MongoCollectionImpl(contract, modelName, executor);\n}\n//#endregion\n//#region src/mongo-orm.ts\nfunction mongoOrm(options) {\n\tconst { contract, executor } = options;\n\tconst client = {};\n\tfor (const [rootName, rootRef] of Object.entries(contract.roots)) client[rootName] = createMongoCollection(contract, blindCast(rootRef.model), executor);\n\treturn client;\n}\n//#endregion\n//#region src/raw-collection.ts\nfunction createRawMongoCollection(collectionName, meta) {\n\tfunction buildable(command) {\n\t\treturn { build: () => ({\n\t\t\tcollection: collectionName,\n\t\t\tcommand,\n\t\t\tmeta\n\t\t}) };\n\t}\n\treturn {\n\t\taggregate(pipeline) {\n\t\t\treturn buildable(new RawAggregateCommand(collectionName, pipeline));\n\t\t},\n\t\tinsertOne(document) {\n\t\t\treturn buildable(new RawInsertOneCommand(collectionName, document));\n\t\t},\n\t\tinsertMany(documents) {\n\t\t\treturn buildable(new RawInsertManyCommand(collectionName, documents));\n\t\t},\n\t\tupdateOne(filter, update) {\n\t\t\treturn buildable(new RawUpdateOneCommand(collectionName, filter, update));\n\t\t},\n\t\tupdateMany(filter, update) {\n\t\t\treturn buildable(new RawUpdateManyCommand(collectionName, filter, update));\n\t\t},\n\t\tdeleteOne(filter) {\n\t\t\treturn buildable(new RawDeleteOneCommand(collectionName, filter));\n\t\t},\n\t\tdeleteMany(filter) {\n\t\t\treturn buildable(new RawDeleteManyCommand(collectionName, filter));\n\t\t},\n\t\tfindOneAndUpdate(filter, update, options) {\n\t\t\treturn buildable(new RawFindOneAndUpdateCommand(collectionName, filter, update, options?.upsert ?? false));\n\t\t},\n\t\tfindOneAndDelete(filter) {\n\t\t\treturn buildable(new RawFindOneAndDeleteCommand(collectionName, filter));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/mongo-raw.ts\nfunction mongoRaw(options) {\n\tconst { contract } = options;\n\treturn { collection(rootName) {\n\t\tconst modelName = contract.roots[rootName]?.model;\n\t\tconst models = domainModelsAtDefaultNamespace(contract.domain);\n\t\tif (!modelName || !Object.hasOwn(models, modelName)) throw ormError(\"ORM.MODEL_UNKNOWN\", `Unknown model \"${modelName ?? \"\"}\" for root \"${rootName}\"`, { meta: {\n\t\t\tmodel: modelName ?? \"\",\n\t\t\troot: rootName\n\t\t} });\n\t\treturn createRawMongoCollection(models[modelName].storage.collection ?? modelName, {\n\t\t\ttarget: \"mongo\",\n\t\t\tstorageHash: contract.storage.storageHash,\n\t\t\tlane: \"mongo-raw\"\n\t\t});\n\t} };\n}\n//#endregion\nexport { compileMongoQuery, createFieldAccessor, createMongoCollection, mongoOrm, mongoRaw };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orm.mjs","names":["#contract","#modelName","#executor","#collectionName","#state","#cloneWithVariant","#clone","#compileWhereObject","#query","#rejectIncludes","#injectDiscriminator","#stripUndefined","#toDocument","#drainPlan","#insertOneResultShape","#insertManyResultShape","#requireFilters","#rejectWindowing","#mergeFilters","#resolveUpdateDoc","#modelResultShape","#readMatchingIds","#executePlan","#wrapFieldOpValue","#toSetFields","#compile","#planMeta","#wrapCommand","#modelFields","#idFieldShape","#wrapFieldValue","#wrapValueObject","#toUpdateDocument","#wrapDotPathValue","#variantName"],"sources":["../../../../2-mongo-family/5-query-builders/orm/dist/index.mjs"],"sourcesContent":["import { domainModelsAtDefaultNamespace, domainValueObjectsAtDefaultNamespace } from \"@internal/contract/types\";\nimport { AsyncIterableResult } from \"@internal/framework-components/runtime\";\nimport { 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, freezeMongoResultShape, isMongoFilterExpr } from \"@internal/mongo-query-ast/execution\";\nimport { contractFieldToMongoFieldShape, contractModelToMongoResultShape } from \"@internal/mongo-query-builder\";\nimport { MongoParamRef } from \"@internal/mongo-value\";\nimport { blindCast, castAs } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/collection-state.ts\nfunction emptyCollectionState() {\n\treturn {\n\t\tfilters: [],\n\t\tincludes: [],\n\t\torderBy: void 0,\n\t\tselectedFields: void 0,\n\t\tlimit: void 0,\n\t\toffset: void 0\n\t};\n}\n//#endregion\n//#region src/compile.ts\nfunction compileIncludes(includes) {\n\tconst stages = [];\n\tfor (const inc of includes) {\n\t\tstages.push(new MongoLookupStage({\n\t\t\tfrom: inc.from,\n\t\t\tlocalField: inc.localField,\n\t\t\tforeignField: inc.foreignField,\n\t\t\tas: inc.relationName\n\t\t}));\n\t\tif (inc.cardinality === \"N:1\" || inc.cardinality === \"1:1\") stages.push(new MongoUnwindStage(`$${inc.relationName}`, true));\n\t}\n\treturn stages;\n}\nfunction compileMongoQuery(collection, state, storageHash, model) {\n\tconst stages = [];\n\tconst singleFilter = state.filters.length === 1 ? state.filters[0] : void 0;\n\tif (singleFilter) stages.push(new MongoMatchStage(singleFilter));\n\telse if (state.filters.length > 1) stages.push(new MongoMatchStage(MongoAndExpr.of([...state.filters])));\n\tif (state.includes.length > 0) stages.push(...compileIncludes(state.includes));\n\tif (state.orderBy) stages.push(new MongoSortStage(state.orderBy));\n\tif (state.offset !== void 0) stages.push(new MongoSkipStage(state.offset));\n\tif (state.limit !== void 0) stages.push(new MongoLimitStage(state.limit));\n\tif (state.selectedFields && state.selectedFields.length > 0) {\n\t\tconst projection = {};\n\t\tfor (const field of state.selectedFields) projection[field] = 1;\n\t\tif (!Object.hasOwn(projection, \"_id\")) projection[\"_id\"] = 0;\n\t\tstages.push(new MongoProjectStage(projection));\n\t}\n\tconst meta = {\n\t\ttarget: \"mongo\",\n\t\tstorageHash,\n\t\tlane: \"mongo-orm\"\n\t};\n\tconst command = new AggregateCommand(collection, stages);\n\tconst selection = state.selectedFields !== void 0 && state.selectedFields.length > 0 ? state.selectedFields : void 0;\n\tconst includeRelationNames = state.includes.length > 0 ? state.includes.map((inc) => inc.relationName) : void 0;\n\treturn {\n\t\tcollection,\n\t\tcommand,\n\t\tmeta,\n\t\tresultShape: contractModelToMongoResultShape(model, {\n\t\t\t...ifDefined(\"selection\", selection),\n\t\t\t...ifDefined(\"includeRelationNames\", includeRelationNames)\n\t\t})\n\t};\n}\n//#endregion\n//#region src/field-accessor.ts\nfunction createFieldExpression(fieldPath) {\n\treturn {\n\t\tset(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$set\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tunset() {\n\t\t\treturn {\n\t\t\t\toperator: \"$unset\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(\"\")\n\t\t\t};\n\t\t},\n\t\tinc(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$inc\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tmul(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$mul\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tpush(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$push\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tpull(match) {\n\t\t\treturn {\n\t\t\t\toperator: \"$pull\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(match)\n\t\t\t};\n\t\t},\n\t\taddToSet(value) {\n\t\t\treturn {\n\t\t\t\toperator: \"$addToSet\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(value)\n\t\t\t};\n\t\t},\n\t\tpop(end) {\n\t\t\treturn {\n\t\t\t\toperator: \"$pop\",\n\t\t\t\tfield: fieldPath,\n\t\t\t\tvalue: new MongoParamRef(end)\n\t\t\t};\n\t\t}\n\t};\n}\nfunction createFieldAccessor() {\n\treturn new Proxy((() => {}), {\n\t\tget(_target, prop) {\n\t\t\treturn createFieldExpression(prop);\n\t\t},\n\t\tapply(_target, _thisArg, args) {\n\t\t\treturn createFieldExpression(args[0]);\n\t\t}\n\t});\n}\nfunction compileFieldOperations(ops, wrapValue) {\n\tconst grouped = {};\n\tfor (const op of ops) {\n\t\tlet group = grouped[op.operator];\n\t\tif (!group) {\n\t\t\tgroup = {};\n\t\t\tgrouped[op.operator] = group;\n\t\t}\n\t\tgroup[op.field] = wrapValue(op.field, op.value, op.operator);\n\t}\n\treturn grouped;\n}\n//#endregion\n//#region src/orm-errors.ts\nfunction ormError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/collection.ts\nfunction resolveCollectionName(model, modelName) {\n\treturn model.storage.collection ?? modelName;\n}\nfunction isUnknownRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nvar MongoCollectionImpl = class MongoCollectionImpl {\n\t#contract;\n\t#modelName;\n\t#executor;\n\t#collectionName;\n\t#state;\n\t#variantName;\n\tconstructor(contract, modelName, executor) {\n\t\tthis.#contract = contract;\n\t\tthis.#modelName = modelName;\n\t\tthis.#executor = executor;\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(contract.domain)[modelName]);\n\t\tthis.#collectionName = resolveCollectionName(model, modelName);\n\t\tthis.#state = emptyCollectionState();\n\t}\n\tvariant(variantName) {\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);\n\t\tif (!model?.discriminator || !model.variants) return blindCast(this);\n\t\tconst variantEntry = model.variants[variantName];\n\t\tif (!variantEntry) return blindCast(this);\n\t\tconst filter = MongoFieldFilter.eq(model.discriminator.field, new MongoParamRef(variantEntry.value));\n\t\treturn this.#cloneWithVariant({ filters: [...this.#state.filters, filter] }, variantName);\n\t}\n\twhere(filter) {\n\t\tif (isMongoFilterExpr(filter)) return this.#clone({ filters: [...this.#state.filters, filter] });\n\t\tconst compiled = this.#compileWhereObject(blindCast(filter));\n\t\treturn this.#clone({ filters: [...this.#state.filters, ...compiled] });\n\t}\n\tselect(...fields) {\n\t\treturn this.#clone({ selectedFields: [...this.#state.selectedFields ?? [], ...fields] });\n\t}\n\tinclude(relationName) {\n\t\tconst relation = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]).relations?.[relationName];\n\t\tif (!relation) throw ormError(\"ORM.RELATION_UNKNOWN\", `Unknown relation \"${relationName}\" on model \"${this.#modelName}\"`, { meta: {\n\t\t\tmodel: this.#modelName,\n\t\t\trelation: relationName\n\t\t} });\n\t\tif (!(\"on\" in relation)) throw ormError(\"ORM.INCLUDE_UNSUPPORTED\", `Relation \"${relationName}\" is an embed relation — only reference relations can be included`, { meta: {\n\t\t\tmodel: this.#modelName,\n\t\t\trelation: relationName\n\t\t} });\n\t\tconst ref = relation;\n\t\tconst localField = ref.on.localFields[0];\n\t\tconst foreignField = ref.on.targetFields[0];\n\t\tif (!localField || !foreignField || ref.on.localFields.length !== 1 || ref.on.targetFields.length !== 1) throw ormError(\"ORM.INCLUDE_UNSUPPORTED\", `Compound references are not yet supported: relation \"${relationName}\"`, { meta: {\n\t\t\tmodel: this.#modelName,\n\t\t\trelation: relationName\n\t\t} });\n\t\tconst targetModelName = ref.to.model;\n\t\tconst targetModel = castAs(domainModelsAtDefaultNamespace(this.#contract.domain)[targetModelName]);\n\t\tif (!targetModel) throw new InternalError(`Target model \"${targetModelName}\" not found for relation \"${relationName}\"`);\n\t\tconst includeExpr = {\n\t\t\trelationName,\n\t\t\tfrom: resolveCollectionName(targetModel, targetModelName),\n\t\t\tlocalField,\n\t\t\tforeignField,\n\t\t\tcardinality: ref.cardinality\n\t\t};\n\t\treturn blindCast(this.#clone({ includes: [...this.#state.includes, includeExpr] }));\n\t}\n\torderBy(spec) {\n\t\tconst merged = {\n\t\t\t...this.#state.orderBy,\n\t\t\t...spec\n\t\t};\n\t\treturn this.#clone({ orderBy: merged });\n\t}\n\ttake(n) {\n\t\treturn this.#clone({ limit: n });\n\t}\n\tskip(n) {\n\t\treturn this.#clone({ offset: n });\n\t}\n\tall() {\n\t\treturn this.#query();\n\t}\n\tasync first() {\n\t\tconst result = this.#clone({ limit: 1 }).#query();\n\t\tfor await (const row of result) return row;\n\t\treturn null;\n\t}\n\tasync create(data) {\n\t\tthis.#rejectIncludes(\"create\");\n\t\tconst normalized = this.#injectDiscriminator(this.#stripUndefined(blindCast(data)));\n\t\tconst document = this.#toDocument(normalized);\n\t\tconst command = new InsertOneCommand(this.#collectionName, document);\n\t\tconst insertedId = blindCast((await this.#drainPlan(command, this.#insertOneResultShape()))[0]).insertedId;\n\t\treturn blindCast({\n\t\t\t_id: insertedId,\n\t\t\t...normalized\n\t\t});\n\t}\n\tcreateAll(data) {\n\t\tthis.#rejectIncludes(\"createAll\");\n\t\tconst self = this;\n\t\tasync function* gen() {\n\t\t\tconst normalizedRows = data.map((d) => self.#injectDiscriminator(self.#stripUndefined(blindCast(d))));\n\t\t\tconst documents = normalizedRows.map((d) => self.#toDocument(d));\n\t\t\tconst command = new InsertManyCommand(self.#collectionName, documents);\n\t\t\tconst insertedIds = blindCast((await self.#drainPlan(command, self.#insertManyResultShape()))[0]).insertedIds;\n\t\t\tfor (let i = 0; i < normalizedRows.length; i++) yield blindCast({\n\t\t\t\t_id: insertedIds[i],\n\t\t\t\t...normalizedRows[i]\n\t\t\t});\n\t\t}\n\t\treturn new AsyncIterableResult(gen());\n\t}\n\tasync createAndCount(data) {\n\t\tthis.#rejectIncludes(\"createAndCount\");\n\t\tconst documents = data.map((d) => this.#toDocument(this.#injectDiscriminator(blindCast(d))));\n\t\tconst command = new InsertManyCommand(this.#collectionName, documents);\n\t\treturn blindCast((await this.#drainPlan(command))[0]).insertedCount;\n\t}\n\tasync update(dataOrCallback) {\n\t\tthis.#requireFilters(\"update\");\n\t\tthis.#rejectWindowing(\"update\");\n\t\tthis.#rejectIncludes(\"update\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst updateDoc = this.#resolveUpdateDoc(dataOrCallback);\n\t\tconst command = new FindOneAndUpdateCommand(this.#collectionName, filter, updateDoc, false);\n\t\tconst result = (await this.#drainPlan(command, this.#modelResultShape()))[0];\n\t\treturn result === void 0 ? null : blindCast(result);\n\t}\n\tupdateAll(dataOrCallback) {\n\t\tthis.#requireFilters(\"updateAll\");\n\t\tthis.#rejectWindowing(\"updateAll\");\n\t\tconst self = this;\n\t\tasync function* gen() {\n\t\t\tconst ids = await self.#readMatchingIds();\n\t\t\tif (ids.length === 0) return;\n\t\t\tconst filter = self.#mergeFilters();\n\t\t\tconst updateDoc = self.#resolveUpdateDoc(dataOrCallback);\n\t\t\tconst command = new UpdateManyCommand(self.#collectionName, filter, updateDoc);\n\t\t\tawait self.#drainPlan(command);\n\t\t\tconst idFilter = MongoFieldFilter.in(\"_id\", ids.map((id) => new MongoParamRef(id)));\n\t\t\tyield* self.#clone({ filters: [idFilter] }).#query();\n\t\t}\n\t\treturn new AsyncIterableResult(gen());\n\t}\n\tasync updateAndCount(dataOrCallback) {\n\t\tthis.#requireFilters(\"updateAndCount\");\n\t\tthis.#rejectWindowing(\"updateAndCount\");\n\t\tthis.#rejectIncludes(\"updateAndCount\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst updateDoc = this.#resolveUpdateDoc(dataOrCallback);\n\t\tconst command = new UpdateManyCommand(this.#collectionName, filter, updateDoc);\n\t\treturn (await this.#executePlan(command)).affectedRows;\n\t}\n\tasync delete() {\n\t\tthis.#requireFilters(\"delete\");\n\t\tthis.#rejectWindowing(\"delete\");\n\t\tthis.#rejectIncludes(\"delete\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst command = new FindOneAndDeleteCommand(this.#collectionName, filter);\n\t\tconst result = (await this.#drainPlan(command, this.#modelResultShape()))[0];\n\t\treturn result === void 0 ? null : blindCast(result);\n\t}\n\tdeleteAll() {\n\t\tthis.#requireFilters(\"deleteAll\");\n\t\tthis.#rejectWindowing(\"deleteAll\");\n\t\tconst self = this;\n\t\tasync function* gen() {\n\t\t\tconst docs = [];\n\t\t\tfor await (const row of self.#query()) docs.push(row);\n\t\t\tconst filter = self.#mergeFilters();\n\t\t\tconst command = new DeleteManyCommand(self.#collectionName, filter);\n\t\t\tawait self.#drainPlan(command);\n\t\t\tyield* docs;\n\t\t}\n\t\treturn new AsyncIterableResult(gen());\n\t}\n\tasync deleteAndCount() {\n\t\tthis.#requireFilters(\"deleteAndCount\");\n\t\tthis.#rejectWindowing(\"deleteAndCount\");\n\t\tthis.#rejectIncludes(\"deleteAndCount\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst command = new DeleteManyCommand(this.#collectionName, filter);\n\t\treturn (await this.#executePlan(command)).affectedRows;\n\t}\n\tasync upsert(input) {\n\t\tthis.#requireFilters(\"upsert\");\n\t\tthis.#rejectWindowing(\"upsert\");\n\t\tthis.#rejectIncludes(\"upsert\");\n\t\tconst filter = this.#mergeFilters();\n\t\tconst allCreateFields = this.#toDocument(this.#injectDiscriminator(blindCast(input.create)));\n\t\tlet updateDoc;\n\t\tif (typeof input.update === \"function\") {\n\t\t\tconst accessor = createFieldAccessor();\n\t\t\tconst ops = input.update(accessor);\n\t\t\tif (ops.find((op) => op.field === \"_id\")) throw ormError(\"ORM.FIELD_IMMUTABLE\", \"Mutation payloads cannot modify `_id`\", { meta: { field: \"_id\" } });\n\t\t\tconst dotPathOp = ops.find((op) => op.field.includes(\".\"));\n\t\t\tif (dotPathOp) throw ormError(\"ORM.OPERATION_UNSUPPORTED\", `upsert() does not support dot-path field operations (found \"${dotPathOp.field}\"). Dot-path updates conflict with \\$setOnInsert on the insert path, producing incomplete documents. Use top-level field operations instead.`, { meta: {\n\t\t\t\tmethod: \"upsert\",\n\t\t\t\tfield: dotPathOp.field\n\t\t\t} });\n\t\t\tupdateDoc = compileFieldOperations(ops, (field, value, operator) => this.#wrapFieldOpValue(field, value, operator));\n\t\t} else {\n\t\t\tconst setFields = this.#toSetFields(blindCast(input.update));\n\t\t\tupdateDoc = {};\n\t\t\tif (Object.keys(setFields).length > 0) updateDoc[\"$set\"] = setFields;\n\t\t}\n\t\tconst updatedFields = /* @__PURE__ */ new Set();\n\t\tfor (const operatorGroup of Object.values(updateDoc)) for (const fieldPath of Object.keys(operatorGroup)) updatedFields.add(fieldPath.split(\".\")[0] ?? fieldPath);\n\t\tconst insertOnlyFields = {};\n\t\tfor (const [key, value] of Object.entries(allCreateFields)) if (!updatedFields.has(key)) insertOnlyFields[key] = value;\n\t\tif (Object.keys(insertOnlyFields).length > 0) updateDoc[\"$setOnInsert\"] = insertOnlyFields;\n\t\tconst command = new FindOneAndUpdateCommand(this.#collectionName, filter, updateDoc, true);\n\t\treturn blindCast((await this.#drainPlan(command, this.#modelResultShape()))[0]);\n\t}\n\tasync #readMatchingIds() {\n\t\tconst idQuery = this.#clone({\n\t\t\tincludes: [],\n\t\t\tselectedFields: [\"_id\"],\n\t\t\torderBy: void 0,\n\t\t\tlimit: void 0,\n\t\t\toffset: void 0\n\t\t});\n\t\tconst ids = [];\n\t\tconst { resultShape: _rs, ...planWithoutShape } = idQuery.#compile();\n\t\tfor await (const row of this.#executor.query(planWithoutShape)) {\n\t\t\tconst storageRow = blindCast(row);\n\t\t\tids.push(storageRow[\"_id\"]);\n\t\t}\n\t\treturn ids;\n\t}\n\t#query() {\n\t\tconst plan = this.#compile();\n\t\treturn this.#executor.query(plan);\n\t}\n\t#compile() {\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);\n\t\tif (!model) throw ormError(\"ORM.MODEL_UNKNOWN\", `Unknown model: \"${this.#modelName}\".`, { meta: { model: this.#modelName } });\n\t\treturn compileMongoQuery(this.#collectionName, this.#state, this.#contract.storage.storageHash, model);\n\t}\n\t#wrapCommand(command, resultShape) {\n\t\treturn {\n\t\t\tcollection: this.#collectionName,\n\t\t\tcommand,\n\t\t\tmeta: this.#planMeta(),\n\t\t\t...ifDefined(\"resultShape\", resultShape)\n\t\t};\n\t}\n\t#executePlan(command) {\n\t\treturn this.#executor.execute(this.#wrapCommand(command));\n\t}\n\tasync #drainPlan(command, resultShape) {\n\t\tconst plan = this.#wrapCommand(command, resultShape);\n\t\tconst result = this.#executor.query(plan);\n\t\tconst rows = [];\n\t\tfor await (const row of result) rows.push(row);\n\t\treturn rows;\n\t}\n\t#modelFields() {\n\t\treturn blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName])?.fields ?? {};\n\t}\n\t#idFieldShape() {\n\t\tconst idField = this.#modelFields()[\"_id\"];\n\t\treturn idField ? contractFieldToMongoFieldShape(idField) : Object.freeze({ kind: \"unknown\" });\n\t}\n\t#insertOneResultShape() {\n\t\treturn freezeMongoResultShape({\n\t\t\tkind: \"document\",\n\t\t\tfields: { insertedId: this.#idFieldShape() }\n\t\t});\n\t}\n\t#insertManyResultShape() {\n\t\treturn freezeMongoResultShape({\n\t\t\tkind: \"document\",\n\t\t\tfields: { insertedIds: {\n\t\t\t\tkind: \"array\",\n\t\t\t\tnullable: false,\n\t\t\t\telement: this.#idFieldShape()\n\t\t\t} }\n\t\t});\n\t}\n\t#modelResultShape() {\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);\n\t\tif (!model) return Object.freeze({ kind: \"unknown\" });\n\t\treturn contractModelToMongoResultShape(model);\n\t}\n\t#compileWhereObject(data) {\n\t\tconst fields = this.#modelFields();\n\t\tconst filters = [];\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tif (value === void 0) continue;\n\t\t\tconst wrapped = this.#wrapFieldValue(value, fields[key]);\n\t\t\tfilters.push(MongoFieldFilter.eq(key, wrapped));\n\t\t}\n\t\treturn filters;\n\t}\n\t#wrapFieldValue(value, field) {\n\t\tif (field === void 0) return new MongoParamRef(value);\n\t\tif (field.type.kind === \"scalar\") return new MongoParamRef(value, { codecId: field.type.codecId });\n\t\tif (field.type.kind === \"valueObject\") {\n\t\t\tconst voName = field.type.name;\n\t\t\tconst voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n\t\t\tif (!voDef || value === null) return new MongoParamRef(value);\n\t\t\tif (field.many && Array.isArray(value)) return value.map((item) => this.#wrapValueObject(blindCast(item), voDef));\n\t\t\treturn this.#wrapValueObject(blindCast(value), voDef);\n\t\t}\n\t\treturn new MongoParamRef(value);\n\t}\n\t#wrapValueObject(data, voDef) {\n\t\tconst doc = {};\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tif (value === void 0) continue;\n\t\t\tconst fieldDef = voDef.fields[key];\n\t\t\tdoc[key] = this.#wrapFieldValue(value, fieldDef);\n\t\t}\n\t\treturn doc;\n\t}\n\t#toDocument(data) {\n\t\tconst fields = this.#modelFields();\n\t\tconst doc = {};\n\t\tfor (const [key, value] of Object.entries(data)) if (value !== void 0) doc[key] = this.#wrapFieldValue(value, fields[key]);\n\t\treturn doc;\n\t}\n\t#toSetFields(data) {\n\t\tconst fields = this.#modelFields();\n\t\tconst result = {};\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tif (key === \"_id\" && value !== void 0) throw ormError(\"ORM.FIELD_IMMUTABLE\", \"Mutation payloads cannot modify `_id`\", { meta: { field: \"_id\" } });\n\t\t\tif (value !== void 0) result[key] = this.#wrapFieldValue(value, fields[key]);\n\t\t}\n\t\treturn result;\n\t}\n\t#stripUndefined(data) {\n\t\tconst result = {};\n\t\tfor (const [key, value] of Object.entries(data)) if (value !== void 0) result[key] = value;\n\t\treturn result;\n\t}\n\t#toUpdateDocument(data) {\n\t\treturn { $set: this.#toSetFields(data) };\n\t}\n\t#resolveUpdateDoc(dataOrCallback) {\n\t\tif (typeof dataOrCallback === \"function\") {\n\t\t\tconst ops = dataOrCallback(createFieldAccessor());\n\t\t\tif (ops.find((op) => op.field === \"_id\")) throw ormError(\"ORM.FIELD_IMMUTABLE\", \"Mutation payloads cannot modify `_id`\", { meta: { field: \"_id\" } });\n\t\t\tif (ops.length === 0) return { $set: {} };\n\t\t\treturn compileFieldOperations(ops, (field, value, operator) => this.#wrapFieldOpValue(field, value, operator));\n\t\t}\n\t\treturn this.#toUpdateDocument(blindCast(dataOrCallback));\n\t}\n\t#wrapFieldOpValue(field, value, operator) {\n\t\tif (operator === \"$unset\") return value;\n\t\tconst topLevelField = field.split(\".\")[0] ?? field;\n\t\tconst contractField = this.#modelFields()[topLevelField];\n\t\tif (!contractField) return value;\n\t\tif (field.includes(\".\")) return this.#wrapDotPathValue(field, value);\n\t\tif (value instanceof MongoParamRef && contractField.type.kind === \"scalar\") return new MongoParamRef(value.value, { codecId: contractField.type.codecId });\n\t\tif (contractField.type.kind === \"valueObject\" && value instanceof MongoParamRef) {\n\t\t\tconst raw = value.value;\n\t\t\tif (isUnknownRecord(raw)) {\n\t\t\t\tconst voName = contractField.type.name;\n\t\t\t\tconst voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n\t\t\t\tif (voDef) return this.#wrapValueObject(raw, voDef);\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\t#wrapDotPathValue(dotPath, value) {\n\t\tconst parts = dotPath.split(\".\");\n\t\tconst fields = this.#modelFields();\n\t\tlet currentField = parts[0] ? fields[parts[0]] : void 0;\n\t\tfor (let i = 1; i < parts.length; i++) {\n\t\t\tif (currentField?.type.kind !== \"valueObject\") return value;\n\t\t\tconst voName = currentField.type.name;\n\t\t\tconst voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n\t\t\tif (!voDef) return value;\n\t\t\tconst partKey = parts[i];\n\t\t\tcurrentField = partKey ? voDef.fields[partKey] : void 0;\n\t\t}\n\t\tif (currentField?.type.kind === \"scalar\" && value instanceof MongoParamRef) return new MongoParamRef(value.value, { codecId: currentField.type.codecId });\n\t\tif (currentField?.type.kind === \"valueObject\" && value instanceof MongoParamRef) {\n\t\t\tconst raw = value.value;\n\t\t\tif (isUnknownRecord(raw)) {\n\t\t\t\tconst voName = currentField.type.name;\n\t\t\t\tconst voDef = domainValueObjectsAtDefaultNamespace(this.#contract.domain)?.[voName];\n\t\t\t\tif (voDef) return this.#wrapValueObject(raw, voDef);\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\t#mergeFilters() {\n\t\tconst [single] = this.#state.filters;\n\t\tif (this.#state.filters.length === 1 && single) return single;\n\t\treturn MongoAndExpr.of([...this.#state.filters]);\n\t}\n\t#requireFilters(methodName) {\n\t\tif (this.#state.filters.length === 0) throw ormError(\"ORM.WHERE_MISSING\", `${methodName}() requires a .where() filter. Call .where() before .${methodName}()`, { meta: { method: methodName } });\n\t}\n\t#rejectWindowing(methodName) {\n\t\tif (this.#state.orderBy !== void 0 || this.#state.limit !== void 0 || this.#state.offset !== void 0) throw ormError(\"ORM.OPERATION_UNSUPPORTED\", `${methodName}() does not support orderBy/skip/take. Remove windowing before calling .${methodName}()`, { meta: {\n\t\t\tmethod: methodName,\n\t\t\treason: \"windowing\"\n\t\t} });\n\t}\n\t#rejectIncludes(methodName) {\n\t\tif (this.#state.includes.length > 0) throw ormError(\"ORM.OPERATION_UNSUPPORTED\", `${methodName}() does not support .include(). Remove includes before calling .${methodName}()`, { meta: {\n\t\t\tmethod: methodName,\n\t\t\treason: \"includes\"\n\t\t} });\n\t}\n\t#planMeta() {\n\t\treturn {\n\t\t\ttarget: \"mongo\",\n\t\t\tstorageHash: this.#contract.storage.storageHash,\n\t\t\tlane: \"mongo-orm\"\n\t\t};\n\t}\n\t#injectDiscriminator(data) {\n\t\tif (!this.#variantName) return data;\n\t\tconst model = blindCast(domainModelsAtDefaultNamespace(this.#contract.domain)[this.#modelName]);\n\t\tif (!model?.discriminator || !model.variants) return data;\n\t\tconst variantEntry = model.variants[this.#variantName];\n\t\tif (!variantEntry) return data;\n\t\treturn {\n\t\t\t...data,\n\t\t\t[model.discriminator.field]: variantEntry.value\n\t\t};\n\t}\n\t#clone(overrides) {\n\t\tconst instance = new MongoCollectionImpl(this.#contract, this.#modelName, this.#executor);\n\t\tinstance.#state = {\n\t\t\t...this.#state,\n\t\t\t...overrides\n\t\t};\n\t\tinstance.#collectionName = this.#collectionName;\n\t\tinstance.#variantName = this.#variantName;\n\t\treturn instance;\n\t}\n\t#cloneWithVariant(overrides, variantName) {\n\t\tconst instance = new MongoCollectionImpl(this.#contract, this.#modelName, this.#executor);\n\t\tinstance.#state = {\n\t\t\t...this.#state,\n\t\t\t...overrides\n\t\t};\n\t\tinstance.#collectionName = this.#collectionName;\n\t\tinstance.#variantName = variantName;\n\t\treturn instance;\n\t}\n};\nfunction createMongoCollection(contract, modelName, executor) {\n\treturn new MongoCollectionImpl(contract, modelName, executor);\n}\n//#endregion\n//#region src/mongo-orm.ts\nfunction mongoOrm(options) {\n\tconst { contract, executor } = options;\n\tconst client = {};\n\tfor (const [rootName, rootRef] of Object.entries(contract.roots)) client[rootName] = createMongoCollection(contract, blindCast(rootRef.model), executor);\n\treturn client;\n}\n//#endregion\n//#region src/raw-collection.ts\nfunction createRawMongoCollection(collectionName, meta) {\n\tfunction buildable(command) {\n\t\treturn { build: () => ({\n\t\t\tcollection: collectionName,\n\t\t\tcommand,\n\t\t\tmeta\n\t\t}) };\n\t}\n\treturn {\n\t\taggregate(pipeline) {\n\t\t\treturn buildable(new RawAggregateCommand(collectionName, pipeline));\n\t\t},\n\t\tinsertOne(document) {\n\t\t\treturn buildable(new RawInsertOneCommand(collectionName, document));\n\t\t},\n\t\tinsertMany(documents) {\n\t\t\treturn buildable(new RawInsertManyCommand(collectionName, documents));\n\t\t},\n\t\tupdateOne(filter, update) {\n\t\t\treturn buildable(new RawUpdateOneCommand(collectionName, filter, update));\n\t\t},\n\t\tupdateMany(filter, update) {\n\t\t\treturn buildable(new RawUpdateManyCommand(collectionName, filter, update));\n\t\t},\n\t\tdeleteOne(filter) {\n\t\t\treturn buildable(new RawDeleteOneCommand(collectionName, filter));\n\t\t},\n\t\tdeleteMany(filter) {\n\t\t\treturn buildable(new RawDeleteManyCommand(collectionName, filter));\n\t\t},\n\t\tfindOneAndUpdate(filter, update, options) {\n\t\t\treturn buildable(new RawFindOneAndUpdateCommand(collectionName, filter, update, options?.upsert ?? false));\n\t\t},\n\t\tfindOneAndDelete(filter) {\n\t\t\treturn buildable(new RawFindOneAndDeleteCommand(collectionName, filter));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/mongo-raw.ts\nfunction mongoRaw(options) {\n\tconst { contract } = options;\n\treturn { collection(rootName) {\n\t\tconst modelName = contract.roots[rootName]?.model;\n\t\tconst models = domainModelsAtDefaultNamespace(contract.domain);\n\t\tif (!modelName || !Object.hasOwn(models, modelName)) throw ormError(\"ORM.MODEL_UNKNOWN\", `Unknown model \"${modelName ?? \"\"}\" for root \"${rootName}\"`, { meta: {\n\t\t\tmodel: modelName ?? \"\",\n\t\t\troot: rootName\n\t\t} });\n\t\treturn createRawMongoCollection(models[modelName].storage.collection ?? modelName, {\n\t\t\ttarget: \"mongo\",\n\t\t\tstorageHash: contract.storage.storageHash,\n\t\t\tlane: \"mongo-raw\"\n\t\t});\n\t} };\n}\n//#endregion\nexport { compileMongoQuery, createFieldAccessor, createMongoCollection, mongoOrm, mongoRaw };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
package/dist/runtime.d.mts
CHANGED
|
@@ -4,7 +4,7 @@ import { ot as MongoResultShape, rt as MongoQueryPlan } from "./query-plan-C0-Yu
|
|
|
4
4
|
import "./execution-CKnUiOfm.mjs";
|
|
5
5
|
import { r as AnyMongoDmlWireCommand } from "./index-BR0ue13b.mjs";
|
|
6
6
|
import { a as MongoLoweredDraft, i as MongoDriver, t as MongoAdapter } from "./index-DAOkcTCK.mjs";
|
|
7
|
-
import { AfterExecuteResult, AsyncIterableResult, ExecutionPlan, ParamRefMutator, RuntimeExecuteOptions, RuntimeMiddleware, RuntimeMiddlewareContext } from "@prisma/orm-framework/components/runtime";
|
|
7
|
+
import { AfterExecuteResult, AfterQueryResult, AsyncIterableResult, ExecuteInterceptResult, ExecutionPlan, ParamRefMutator, QueryInterceptResult, RuntimeExecuteOptions, RuntimeMiddleware, RuntimeMiddlewareContext, RuntimeStatementStats } from "@prisma/orm-framework/components/runtime";
|
|
8
8
|
import { RuntimeAdapterDescriptor, RuntimeAdapterInstance, RuntimeDriverDescriptor, RuntimeDriverInstance, RuntimeExtensionDescriptor, RuntimeExtensionInstance, RuntimeTargetDescriptor, RuntimeTargetInstance, RuntimeTargetInstance as RuntimeTargetInstance$1 } from "@prisma/orm-framework/components/execution";
|
|
9
9
|
//#region ../../../2-mongo-family/7-runtime/dist/index.d.mts
|
|
10
10
|
//#region src/mongo-execution-plan.d.ts
|
|
@@ -195,14 +195,15 @@ declare function createMongoParamRefMutator<TCodecMap extends Record<string, unk
|
|
|
195
195
|
//#endregion
|
|
196
196
|
//#region src/mongo-middleware.d.ts
|
|
197
197
|
/**
|
|
198
|
-
* Per-
|
|
199
|
-
* plan/command lifecycle during `beforeExecute` vs later hooks.
|
|
198
|
+
* Per-operation middleware context for Mongo. See {@link MongoMiddleware} for
|
|
199
|
+
* plan/command lifecycle during `beforeQuery` / `beforeExecute` vs later hooks.
|
|
200
200
|
*/
|
|
201
201
|
interface MongoMiddlewareContext extends RuntimeMiddlewareContext {
|
|
202
202
|
/**
|
|
203
203
|
* Stable digest of `meta.storageHash` plus the **resolved** wire command.
|
|
204
|
-
* Valid only on post-resolution plans (typically `
|
|
205
|
-
* after `resolveParams`). Calling this from
|
|
204
|
+
* Valid only on post-resolution plans (typically `afterQuery`,
|
|
205
|
+
* `afterExecute`, or intercept after `resolveParams`). Calling this from
|
|
206
|
+
* `beforeQuery` or `beforeExecute` throws
|
|
206
207
|
* `RUNTIME.CONTENT_HASH_REQUIRES_RESOLVED_COMMAND` because `plan.command`
|
|
207
208
|
* is still an unresolved draft at that point.
|
|
208
209
|
*/
|
|
@@ -210,21 +211,20 @@ interface MongoMiddlewareContext extends RuntimeMiddlewareContext {
|
|
|
210
211
|
}
|
|
211
212
|
/**
|
|
212
213
|
* Mongo-domain middleware. Extends the framework `RuntimeMiddleware`
|
|
213
|
-
* parameterized over `MongoExecutionPlan` because
|
|
214
|
-
*
|
|
215
|
-
* post-lowering plan.
|
|
214
|
+
* parameterized over `MongoExecutionPlan` because the operation-specific
|
|
215
|
+
* middleware runners invoke the lifecycle hooks with the post-lowering plan.
|
|
216
216
|
*
|
|
217
217
|
* `familyId` is optional so generic cross-family middleware (e.g.
|
|
218
218
|
* telemetry) — which carry no `familyId` — remain assignable. When
|
|
219
219
|
* present, it must be `'mongo'`; the runtime rejects mismatches at
|
|
220
220
|
* construction time via `checkMiddlewareCompatibility`.
|
|
221
221
|
*
|
|
222
|
-
* **Pre-resolve `
|
|
222
|
+
* **Pre-resolve `beforeQuery` contract:** `plan.command` holds the
|
|
223
223
|
* unresolved `MongoLoweredDraft`, not a wire command. Observe and mutate
|
|
224
224
|
* parameters via `params.entries()` / `replaceValue` / `replaceValues` only.
|
|
225
225
|
* Do not inspect `plan.command` structurally or call `ctx.contentHash` in
|
|
226
226
|
* this hook. After the chain, `resolveParams` produces the frozen wire
|
|
227
|
-
* command used in `
|
|
227
|
+
* command used in `afterQuery` and for `contentHash`.
|
|
228
228
|
*/
|
|
229
229
|
interface MongoMiddleware extends RuntimeMiddleware<MongoExecutionPlan> {
|
|
230
230
|
readonly familyId?: 'mongo';
|
|
@@ -232,8 +232,16 @@ interface MongoMiddleware extends RuntimeMiddleware<MongoExecutionPlan> {
|
|
|
232
232
|
* Runs after structural lower, before `resolveParams`. `plan.command` is the
|
|
233
233
|
* unresolved draft; use `params` for param-ref access, not `plan.command`.
|
|
234
234
|
*/
|
|
235
|
-
|
|
235
|
+
beforeQuery?(plan: MongoExecutionPlan, ctx: MongoMiddlewareContext, params?: MongoParamRefMutator): void | Promise<void>;
|
|
236
|
+
interceptQuery?(plan: MongoExecutionPlan, ctx: MongoMiddlewareContext): Promise<QueryInterceptResult | undefined>;
|
|
236
237
|
onRow?(row: Record<string, unknown>, plan: MongoExecutionPlan, ctx: MongoMiddlewareContext): Promise<void>;
|
|
238
|
+
afterQuery?(plan: MongoExecutionPlan, result: AfterQueryResult, ctx: MongoMiddlewareContext): Promise<void>;
|
|
239
|
+
/**
|
|
240
|
+
* Runs after structural lower, before `resolveParams`. `plan.command` is the
|
|
241
|
+
* unresolved draft; use `params` for param-ref access, not `plan.command`.
|
|
242
|
+
*/
|
|
243
|
+
beforeExecute?(plan: MongoExecutionPlan, ctx: MongoMiddlewareContext, params?: MongoParamRefMutator): void | Promise<void>;
|
|
244
|
+
interceptExecute?(plan: MongoExecutionPlan, ctx: MongoMiddlewareContext): Promise<ExecuteInterceptResult | undefined>;
|
|
237
245
|
afterExecute?(plan: MongoExecutionPlan, result: AfterExecuteResult, ctx: MongoMiddlewareContext): Promise<void>;
|
|
238
246
|
}
|
|
239
247
|
//#endregion
|
|
@@ -257,7 +265,7 @@ interface MongoRuntimeOptions {
|
|
|
257
265
|
}
|
|
258
266
|
interface MongoRuntime {
|
|
259
267
|
/**
|
|
260
|
-
*
|
|
268
|
+
* Query a `MongoQueryPlan` and return an async iterable of rows.
|
|
261
269
|
*
|
|
262
270
|
* The optional `options.signal` is threaded through
|
|
263
271
|
* `lower → adapter.lower → resolveValue → codec.encode` so codec authors
|
|
@@ -267,7 +275,7 @@ interface MongoRuntime {
|
|
|
267
275
|
*
|
|
268
276
|
* - **Already-aborted at entry** — first `next()` throws
|
|
269
277
|
* `RUNTIME.ABORTED { phase: 'stream' }` before any work is done.
|
|
270
|
-
* (Inherited from `RuntimeCore.
|
|
278
|
+
* (Inherited from `RuntimeCore.query`.)
|
|
271
279
|
* - **Mid-encode abort** — surfaces as
|
|
272
280
|
* `RUNTIME.ABORTED { phase: 'encode' }` from inside `resolveValue`'s
|
|
273
281
|
* per-level `Promise.all` race.
|
|
@@ -277,7 +285,8 @@ interface MongoRuntime {
|
|
|
277
285
|
* call, so async decoders that respect the signal get cancellation; the
|
|
278
286
|
* runtime itself does not currently emit a `phase: 'decode'` envelope.
|
|
279
287
|
*/
|
|
280
|
-
|
|
288
|
+
query<Row>(plan: MongoQueryPlan<Row>, options?: RuntimeExecuteOptions): AsyncIterableResult<Row>;
|
|
289
|
+
execute(plan: MongoQueryPlan, options?: RuntimeExecuteOptions): Promise<RuntimeStatementStats>;
|
|
281
290
|
close(): Promise<void>;
|
|
282
291
|
}
|
|
283
292
|
declare function createMongoRuntime(options: MongoRuntimeOptions): MongoRuntime;
|
package/dist/runtime.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.mts","names":[],"sources":["../../../../2-mongo-family/7-runtime/dist/index.d.mts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BU,mBAAmB,uBAAuB,cAAc;;;;;;;;;WASvD,SAAS;WACT,cAAc;;;;;;;;;UASf;WACC,cAAc;;UAEf,6BAA6B,oCAAoC,wBAAwB,iCAAiC,aAAa,iCAAiC,oBAAoB,iCAAiC,WAAW,kBAAkB;UAC1P,4BAA4B,4CAA4C,gCAAgC,YAAY;UACpH,8BAA8B,oCAAoC,yBAAyB,gCAAgC,aAAa,4BAA4B,oBAAoB,kCAAkC,WAAW,mBAAmB;UACxP,8BAA8B,4CAA4C,kCAAkC;UAC5G,gCAAgC,4CAA4C,oCAAoC,WAAW,8BAA8B,aAAa;EAC9K,UAAU,8BAA8B;;;;;UAKhC,oBAAoB;WACnB,QAAQ,6BAA6B;WACrC,SAAS,8BAA8B;WACvC,QAAQ,iCAAiC,oBAAoB,+BAA+B;WAC5F,qBAAqB,gCAAgC;;iBAE/C,0BAA0B,oCAAoC;WACpE,QAAQ,6BAA6B;WACrC,SAAS,8BAA8B;WACvC,SAAS,iCAAiC,oBAAoB,+BAA+B;WAC7F,sBAAsB,gCAAgC;IAC7D,oBAAoB;;;;;;UAMd;EACR,IAAI,aAAa;EACjB,IAAI;;;;;;;;;UASI,sBAAsB,qBAAqB;WAC1C,UAAU;WACV,QAAQ;WACR,OAAO,oBAAoB;;iBAErB,4BAA4B,qBAAqB,oCAAoC;WAC3F,UAAU;WACV,OAAO,oBAAoB;IAClC,sBAAsB,WAAW;;;;;;;;;cASvB;;;;;;;;UAQJ,oBAAoB;YAClB,2BAA2B;;;;;;;UAO7B,mBAAmB;WAClB,KAAK,oBAAoB;WACzB;WACA,SAAS;;;;;;;;KAQf,wBAAwB,kBAAkB,8BAA8B,WAAW,qBAAqB,mBAAmB,YAAY,sBAAsB;;;;;;;;;;;;;;;;;;;;UAoBxJ,qBAAqB,kBAAkB,0BAA0B,iCAAiC;EAC1G,WAAW,iBAAiB,wBAAwB;EACpD,aAAa,uBAAuB,oBAAoB,KAAK,oBAAoB,WAAW,UAAU,UAAU;EAChH,aAAa,KAAK,gCAAgC;EAClD,cAAc,SAAS;aACZ,KAAK,2BAA2B;aAChC;;;;;;;;;;UAUH,6BAA6B,kBAAkB,0BAA0B,iCAAiC,qBAAqB;EACvI,gBAAgB;;;;;;;;;;;;;iBAaD,sBAAsB,OAAO,oBAAoB,UAAU;;;;;;;;;iBAS3D,2BAA2B,kBAAkB,0BAA0B,yBAAyB,OAAO,oBAAoB,6BAA6B;;;;;;;UAO/J,+BAA+B
|
|
1
|
+
{"version":3,"file":"runtime.d.mts","names":[],"sources":["../../../../2-mongo-family/7-runtime/dist/index.d.mts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BU,mBAAmB,uBAAuB,cAAc;;;;;;;;;WASvD,SAAS;WACT,cAAc;;;;;;;;;UASf;WACC,cAAc;;UAEf,6BAA6B,oCAAoC,wBAAwB,iCAAiC,aAAa,iCAAiC,oBAAoB,iCAAiC,WAAW,kBAAkB;UAC1P,4BAA4B,4CAA4C,gCAAgC,YAAY;UACpH,8BAA8B,oCAAoC,yBAAyB,gCAAgC,aAAa,4BAA4B,oBAAoB,kCAAkC,WAAW,mBAAmB;UACxP,8BAA8B,4CAA4C,kCAAkC;UAC5G,gCAAgC,4CAA4C,oCAAoC,WAAW,8BAA8B,aAAa;EAC9K,UAAU,8BAA8B;;;;;UAKhC,oBAAoB;WACnB,QAAQ,6BAA6B;WACrC,SAAS,8BAA8B;WACvC,QAAQ,iCAAiC,oBAAoB,+BAA+B;WAC5F,qBAAqB,gCAAgC;;iBAE/C,0BAA0B,oCAAoC;WACpE,QAAQ,6BAA6B;WACrC,SAAS,8BAA8B;WACvC,SAAS,iCAAiC,oBAAoB,+BAA+B;WAC7F,sBAAsB,gCAAgC;IAC7D,oBAAoB;;;;;;UAMd;EACR,IAAI,aAAa;EACjB,IAAI;;;;;;;;;UASI,sBAAsB,qBAAqB;WAC1C,UAAU;WACV,QAAQ;WACR,OAAO,oBAAoB;;iBAErB,4BAA4B,qBAAqB,oCAAoC;WAC3F,UAAU;WACV,OAAO,oBAAoB;IAClC,sBAAsB,WAAW;;;;;;;;;cASvB;;;;;;;;UAQJ,oBAAoB;YAClB,2BAA2B;;;;;;;UAO7B,mBAAmB;WAClB,KAAK,oBAAoB;WACzB;WACA,SAAS;;;;;;;;KAQf,wBAAwB,kBAAkB,8BAA8B,WAAW,qBAAqB,mBAAmB,YAAY,sBAAsB;;;;;;;;;;;;;;;;;;;;UAoBxJ,qBAAqB,kBAAkB,0BAA0B,iCAAiC;EAC1G,WAAW,iBAAiB,wBAAwB;EACpD,aAAa,uBAAuB,oBAAoB,KAAK,oBAAoB,WAAW,UAAU,UAAU;EAChH,aAAa,KAAK,gCAAgC;EAClD,cAAc,SAAS;aACZ,KAAK,2BAA2B;aAChC;;;;;;;;;;UAUH,6BAA6B,kBAAkB,0BAA0B,iCAAiC,qBAAqB;EACvI,gBAAgB;;;;;;;;;;;;;iBAaD,sBAAsB,OAAO,oBAAoB,UAAU;;;;;;;;;iBAS3D,2BAA2B,kBAAkB,0BAA0B,yBAAyB,OAAO,oBAAoB,6BAA6B;;;;;;;UAO/J,+BAA+B;;;;;;;;;EASvC,YAAY,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;UAmB/B,wBAAwB,kBAAkB;WACzC;;;;;EAKT,aAAa,MAAM,oBAAoB,KAAK,wBAAwB,SAAS,8BAA8B;EAC3G,gBAAgB,MAAM,oBAAoB,KAAK,yBAAyB,QAAQ;EAChF,OAAO,KAAK,yBAAyB,MAAM,oBAAoB,KAAK,yBAAyB;EAC7F,YAAY,MAAM,oBAAoB,QAAQ,kBAAkB,KAAK,yBAAyB;;;;;EAK9F,eAAe,MAAM,oBAAoB,KAAK,wBAAwB,SAAS,8BAA8B;EAC7G,kBAAkB,MAAM,oBAAoB,KAAK,yBAAyB,QAAQ;EAClF,cAAc,MAAM,oBAAoB,QAAQ,oBAAoB,KAAK,yBAAyB;;;;;;;;;;;;;;;UAe1F;WACC,SAAS;WACT,QAAQ;WACR,sBAAsB;WACtB;;UAED;;;;;;;;;;;;;;;;;;;;;;EAsBR,MAAM,KAAK,MAAM,eAAe,MAAM,UAAU,wBAAwB,oBAAoB;EAC5F,QAAQ,MAAM,gBAAgB,UAAU,wBAAwB,QAAQ;EACxE,SAAS;;iBAEM,mBAAmB,SAAS,sBAAsB"}
|
package/dist/runtime.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import { isStructuredError } from "@prisma/orm-framework/utils/structured-error"
|
|
|
4
4
|
import { blindCast } from "@prisma/orm-framework/utils/casts";
|
|
5
5
|
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
6
6
|
import { canonicalStringify } from "@prisma/orm-framework/utils/canonical-stringify";
|
|
7
|
-
import { AsyncIterableResult, RuntimeCore, checkAborted, checkMiddlewareCompatibility, runBeforeExecuteChain,
|
|
7
|
+
import { AsyncIterableResult, RuntimeCore, checkAborted, checkMiddlewareCompatibility, runBeforeExecuteChain, runBeforeQueryChain, runExecuteWithMiddleware, runQueryWithMiddleware, runtimeError } from "@prisma/orm-framework/components/runtime";
|
|
8
8
|
import { createExecutionStack } from "@prisma/orm-framework/components/execution";
|
|
9
9
|
import { hashContent } from "@prisma/orm-framework/utils/hash-content";
|
|
10
10
|
import { isPlainRecord } from "@prisma/orm-framework/contract/is-plain-record";
|
|
@@ -160,7 +160,7 @@ function isResolvedMongoWireCommand(command) {
|
|
|
160
160
|
}
|
|
161
161
|
function assertContentHashOnResolvedCommand(command) {
|
|
162
162
|
if (isResolvedMongoWireCommand(command)) return;
|
|
163
|
-
throw runtimeError(RUNTIME_CONTENT_HASH_REQUIRES_RESOLVED_COMMAND, "contentHash and computeMongoContentHash are only valid on a resolved wire command
|
|
163
|
+
throw runtimeError(RUNTIME_CONTENT_HASH_REQUIRES_RESOLVED_COMMAND, "contentHash and computeMongoContentHash are only valid on a resolved wire command after parameter resolution. During a before hook, plan.command holds an unresolved MongoLoweredDraft — use params.entries() and the param mutator instead of contentHash or structural reads of plan.command.", { phase: "beforeExecute" });
|
|
164
164
|
}
|
|
165
165
|
/**
|
|
166
166
|
* Computes a stable content hash for a lowered Mongo execution plan.
|
|
@@ -447,6 +447,24 @@ function createMongoParamRefMutator(draft) {
|
|
|
447
447
|
};
|
|
448
448
|
}
|
|
449
449
|
function noop() {}
|
|
450
|
+
function isUnknownRecord(value) {
|
|
451
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
452
|
+
}
|
|
453
|
+
function statisticsCountField(commandKind) {
|
|
454
|
+
switch (commandKind) {
|
|
455
|
+
case "updateOne":
|
|
456
|
+
case "updateMany": return "modifiedCount";
|
|
457
|
+
case "deleteOne":
|
|
458
|
+
case "deleteMany": return "deletedCount";
|
|
459
|
+
default: return;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
function invalidStatisticsResult(commandKind, countField) {
|
|
463
|
+
return runtimeError("RUNTIME.MONGO_STATISTICS_RESULT_INVALID", `Mongo command '${commandKind}' did not return exactly one numeric '${countField}' result`, {
|
|
464
|
+
commandKind,
|
|
465
|
+
countField
|
|
466
|
+
});
|
|
467
|
+
}
|
|
450
468
|
var MongoRuntimeImpl = class extends RuntimeCore {
|
|
451
469
|
#adapter;
|
|
452
470
|
#driver;
|
|
@@ -477,7 +495,7 @@ var MongoRuntimeImpl = class extends RuntimeCore {
|
|
|
477
495
|
this.#driver = options.driver;
|
|
478
496
|
this.#codecs = options.context.codecs;
|
|
479
497
|
}
|
|
480
|
-
/* v8 ignore start -- one-phase lower satisfies RuntimeCore;
|
|
498
|
+
/* v8 ignore start -- one-phase lower satisfies RuntimeCore; operations use the split preparation pipeline */
|
|
481
499
|
async lower(plan, ctx) {
|
|
482
500
|
return {
|
|
483
501
|
command: await this.#adapter.lower(plan, ctx),
|
|
@@ -489,36 +507,75 @@ var MongoRuntimeImpl = class extends RuntimeCore {
|
|
|
489
507
|
runDriver(exec) {
|
|
490
508
|
return this.#driver.execute(exec.command);
|
|
491
509
|
}
|
|
492
|
-
|
|
493
|
-
|
|
510
|
+
runExecute(exec) {
|
|
511
|
+
return this.#readDriverStatistics(exec);
|
|
512
|
+
}
|
|
513
|
+
createQueryContexts(options) {
|
|
494
514
|
const signal = options?.signal;
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
515
|
+
return {
|
|
516
|
+
codecCtx: signal === void 0 ? {} : { signal },
|
|
517
|
+
middlewareCtx: {
|
|
518
|
+
...this.ctx,
|
|
519
|
+
...ifDefined("signal", signal),
|
|
520
|
+
planExecutionId: crypto.randomUUID()
|
|
521
|
+
}
|
|
499
522
|
};
|
|
523
|
+
}
|
|
524
|
+
prepareQueryExecution(plan, codecCtx, middlewareCtx) {
|
|
525
|
+
return this.prepareOperation(plan, codecCtx, middlewareCtx, runBeforeQueryChain);
|
|
526
|
+
}
|
|
527
|
+
prepareExecuteExecution(plan, codecCtx, middlewareCtx) {
|
|
528
|
+
return this.prepareOperation(plan, codecCtx, middlewareCtx, runBeforeExecuteChain);
|
|
529
|
+
}
|
|
530
|
+
async prepareOperation(plan, codecCtx, middlewareCtx, runBefore) {
|
|
531
|
+
checkAborted(codecCtx, "stream");
|
|
532
|
+
const compiled = await this.runBeforeCompile(plan);
|
|
533
|
+
const draft = this.#adapter.structuralLower(compiled);
|
|
534
|
+
const mutator = createMongoParamRefMutator(draft);
|
|
535
|
+
await runBefore({
|
|
536
|
+
meta: compiled.meta,
|
|
537
|
+
...ifDefined("resultShape", compiled.resultShape),
|
|
538
|
+
command: blindCast(draft)
|
|
539
|
+
}, this.middleware, middlewareCtx, mutator);
|
|
540
|
+
return {
|
|
541
|
+
meta: compiled.meta,
|
|
542
|
+
...ifDefined("resultShape", compiled.resultShape),
|
|
543
|
+
command: await this.#adapter.resolveParams(mutator.currentDraft(), codecCtx)
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
query(plan, options) {
|
|
547
|
+
const self = this;
|
|
548
|
+
const { codecCtx, middlewareCtx } = this.createQueryContexts(options);
|
|
500
549
|
const generator = async function* () {
|
|
501
|
-
|
|
502
|
-
const
|
|
503
|
-
const
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
command: blindCast(draft)
|
|
509
|
-
}, self.middleware, execCtx, mutator);
|
|
510
|
-
const resolvedCommand = await self.#adapter.resolveParams(mutator.currentDraft(), codecCtx);
|
|
511
|
-
const exec = {
|
|
512
|
-
meta: compiled.meta,
|
|
513
|
-
...ifDefined("resultShape", compiled.resultShape),
|
|
514
|
-
command: resolvedCommand
|
|
515
|
-
};
|
|
516
|
-
const stream = runWithMiddleware(exec, self.middleware, execCtx, () => self.runDriver(exec));
|
|
517
|
-
for await (const rawRow of stream) if (exec.resultShape === void 0) yield blindCast(rawRow);
|
|
518
|
-
else yield blindCast(await decodeMongoRow(rawRow, exec.resultShape, self.#codecs, exec.command.collection, codecCtx));
|
|
550
|
+
const exec = await self.prepareQueryExecution(plan, codecCtx, middlewareCtx);
|
|
551
|
+
const stream = runQueryWithMiddleware(exec, self.middleware, middlewareCtx, () => self.runDriver(exec));
|
|
552
|
+
for await (const rawRow of stream) {
|
|
553
|
+
checkAborted(codecCtx, "stream");
|
|
554
|
+
if (exec.resultShape === void 0) yield blindCast(rawRow);
|
|
555
|
+
else yield blindCast(await decodeMongoRow(rawRow, exec.resultShape, self.#codecs, exec.command.collection, codecCtx));
|
|
556
|
+
}
|
|
519
557
|
};
|
|
520
558
|
return new AsyncIterableResult(generator());
|
|
521
559
|
}
|
|
560
|
+
async execute(plan, options) {
|
|
561
|
+
const { codecCtx, middlewareCtx } = this.createQueryContexts(options);
|
|
562
|
+
const exec = await this.prepareExecuteExecution(plan, codecCtx, middlewareCtx);
|
|
563
|
+
checkAborted(codecCtx, "stream");
|
|
564
|
+
return runExecuteWithMiddleware(exec, this.middleware, middlewareCtx, () => this.runExecute(exec));
|
|
565
|
+
}
|
|
566
|
+
async #readDriverStatistics(exec) {
|
|
567
|
+
const countField = statisticsCountField(exec.command.kind);
|
|
568
|
+
if (countField === void 0) throw runtimeError("RUNTIME.MONGO_STATISTICS_UNSUPPORTED", `Mongo command '${exec.command.kind}' does not expose statement statistics`, { commandKind: exec.command.kind });
|
|
569
|
+
let affectedRows;
|
|
570
|
+
for await (const result of this.#driver.execute(exec.command)) {
|
|
571
|
+
if (affectedRows !== void 0 || !isUnknownRecord(result)) throw invalidStatisticsResult(exec.command.kind, countField);
|
|
572
|
+
const count = result[countField];
|
|
573
|
+
if (typeof count !== "number") throw invalidStatisticsResult(exec.command.kind, countField);
|
|
574
|
+
affectedRows = count;
|
|
575
|
+
}
|
|
576
|
+
if (affectedRows === void 0) throw invalidStatisticsResult(exec.command.kind, countField);
|
|
577
|
+
return { affectedRows };
|
|
578
|
+
}
|
|
522
579
|
async close() {
|
|
523
580
|
await this.#driver.close();
|
|
524
581
|
}
|
package/dist/runtime.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.mjs","names":["#adapter","#driver","#codecs"],"sources":["../../../../2-mongo-family/7-runtime/dist/index.mjs"],"sourcesContent":["import { createExecutionStack } from \"@internal/framework-components/execution\";\nimport { AsyncIterableResult, RuntimeCore, checkAborted, checkMiddlewareCompatibility, runBeforeExecuteChain, runWithMiddleware, runtimeError } from \"@internal/framework-components/runtime\";\nimport { newMongoCodecRegistry } from \"@internal/mongo-codec\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { isStructuredError } from \"@internal/utils/structured-error\";\nimport { canonicalStringify } from \"@internal/utils/canonical-stringify\";\nimport { hashContent } from \"@internal/utils/hash-content\";\nimport { isPlainRecord } from \"@internal/contract/is-plain-record\";\nimport { MongoParamRef } from \"@internal/mongo-value\";\n//#region src/mongo-execution-stack.ts\nfunction createMongoExecutionStack(options) {\n\treturn createExecutionStack({\n\t\ttarget: options.target,\n\t\tadapter: options.adapter,\n\t\tdriver: options.driver,\n\t\textensions: options.extensions\n\t});\n}\nfunction createMongoExecutionContext(options) {\n\tconst registry = newMongoCodecRegistry();\n\tconst owners = /* @__PURE__ */ new Map();\n\tconst contributors = [\n\t\toptions.stack.target,\n\t\toptions.stack.adapter,\n\t\t...options.stack.extensions\n\t];\n\tfor (const contributor of contributors) {\n\t\tconst contributed = contributor.codecs();\n\t\tfor (const codec of iterateCodecs(contributed)) {\n\t\t\tconst existingOwner = owners.get(codec.id);\n\t\t\tif (existingOwner !== void 0) throw runtimeError(\"RUNTIME.DUPLICATE_CODEC\", `Duplicate Mongo codec id '${codec.id}' contributed by '${contributor.id}' (already registered by '${existingOwner}').`, {\n\t\t\t\tcodecId: codec.id,\n\t\t\t\texistingOwner,\n\t\t\t\tincomingOwner: contributor.id\n\t\t\t});\n\t\t\tregistry.register(codec);\n\t\t\towners.set(codec.id, contributor.id);\n\t\t}\n\t}\n\treturn Object.freeze({\n\t\tcontract: options.contract,\n\t\tcodecs: registry,\n\t\tstack: options.stack\n\t});\n}\nfunction* iterateCodecs(registry) {\n\tyield* registry.values();\n}\n//#endregion\n//#region src/codecs/decoding.ts\nconst WIRE_PREVIEW_LIMIT = 100;\nfunction previewWireValue(wireValue) {\n\tif (typeof wireValue === \"string\") return wireValue.length > WIRE_PREVIEW_LIMIT ? `${wireValue.substring(0, WIRE_PREVIEW_LIMIT)}...` : wireValue;\n\treturn String(wireValue).substring(0, WIRE_PREVIEW_LIMIT);\n}\n/**\n* Structured envelopes (any error with a dotted `code`, per `isStructuredError`)\n* thrown by a codec body pass through unchanged; everything else is wrapped in\n* a `RUNTIME.DECODE_FAILED` envelope with the original error on `cause`.\n*/\nfunction wrapDecodeFailure(error, collection, path, codecId, wireValue) {\n\tif (isStructuredError(error)) throw error;\n\tconst wrapped = runtimeError(\"RUNTIME.DECODE_FAILED\", `Failed to decode field ${path} in collection '${collection}' with codec '${codecId}': ${error instanceof Error ? error.message : String(error)}`, {\n\t\tcollection,\n\t\tpath,\n\t\tcodec: codecId,\n\t\twirePreview: previewWireValue(wireValue)\n\t});\n\twrapped.cause = error;\n\tthrow wrapped;\n}\nasync function decodeMongoRow(row, shape, registry, collection, ctx = {}) {\n\tif (shape.kind === \"unknown\") return row;\n\tif (typeof row !== \"object\" || row === null) return row;\n\tconst rowObj = row;\n\tconst out = {};\n\tconst tasks = [];\n\tfunction scheduleLeaf(path, codecId, wire, assign) {\n\t\tconst codec = registry.get(codecId);\n\t\tif (!codec) {\n\t\t\tassign(wire);\n\t\t\treturn;\n\t\t}\n\t\ttasks.push((async () => {\n\t\t\ttry {\n\t\t\t\tassign(await codec.decode(wire, ctx));\n\t\t\t} catch (error) {\n\t\t\t\twrapDecodeFailure(error, collection, path, codecId, wire);\n\t\t\t}\n\t\t})());\n\t}\n\tfunction walkField(value, fieldShape, path, assign) {\n\t\tswitch (fieldShape.kind) {\n\t\t\tcase \"unknown\":\n\t\t\t\tassign(value);\n\t\t\t\treturn;\n\t\t\tcase \"leaf\":\n\t\t\t\tif (value === null || value === void 0) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tscheduleLeaf(path, fieldShape.codecId, value, assign);\n\t\t\t\treturn;\n\t\t\tcase \"document\": {\n\t\t\t\tif (value === null || value === void 0) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst vObj = value;\n\t\t\t\tconst nested = { ...vObj };\n\t\t\t\tassign(nested);\n\t\t\t\tfor (const [fk, fShape] of Object.entries(fieldShape.fields)) walkField(vObj[fk], fShape, `${path}.${fk}`, (v) => {\n\t\t\t\t\tnested[fk] = v;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"array\": {\n\t\t\t\tif (value === null || value === void 0) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!Array.isArray(value)) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst arr = [];\n\t\t\t\tassign(arr);\n\t\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\t\tconst el = value[i];\n\t\t\t\t\twalkField(el, fieldShape.element, `${path}.${i}`, (v) => {\n\t\t\t\t\t\tarr[i] = v;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t/* v8 ignore stop */\n\t}\n\tfor (const [k, fShape] of Object.entries(shape.fields)) walkField(rowObj[k], fShape, k, (v) => {\n\t\tout[k] = v;\n\t});\n\tfor (const k of Object.keys(rowObj)) if (!Object.hasOwn(shape.fields, k)) out[k] = rowObj[k];\n\tawait Promise.all(tasks);\n\treturn out;\n}\n//#endregion\n//#region src/content-hash.ts\n/** @internal */\nconst RUNTIME_CONTENT_HASH_REQUIRES_RESOLVED_COMMAND = \"RUNTIME.CONTENT_HASH_REQUIRES_RESOLVED_COMMAND\";\n/**\n* Resolved wire commands are frozen class instances (`InsertOneWireCommand`, …);\n* pre-resolve `beforeExecute` plans hold a plain-object `MongoLoweredDraft` in the\n* command slot. O(1) prototype check — no tree walk on the hot path.\n*/\nfunction isResolvedMongoWireCommand(command) {\n\tif (command === null || typeof command !== \"object\") return false;\n\tconst proto = Object.getPrototypeOf(command);\n\treturn proto !== null && proto !== Object.prototype;\n}\nfunction assertContentHashOnResolvedCommand(command) {\n\tif (isResolvedMongoWireCommand(command)) return;\n\tthrow runtimeError(RUNTIME_CONTENT_HASH_REQUIRES_RESOLVED_COMMAND, \"contentHash and computeMongoContentHash are only valid on a resolved wire command (after param resolution, e.g. from afterExecute). During beforeExecute, plan.command holds an unresolved MongoLoweredDraft — use params.entries() and the param mutator instead of contentHash or structural reads of plan.command.\", { phase: \"beforeExecute\" });\n}\n/**\n* Computes a stable content hash for a lowered Mongo execution plan.\n*\n* Internally builds an unambiguous canonical-stringified preimage from\n* two components:\n*\n* 1. `meta.storageHash` — discriminates by schema. A migration changes the\n* storage hash, which invalidates cached entries automatically (no\n* per-app invalidation logic needed for schema changes).\n* 2. `exec.command` — the wire command. `canonicalStringify` produces a\n* deterministic serialization that is stable across object key\n* insertion order and that distinguishes types JSON would otherwise\n* conflate (e.g. `BigInt(1)` vs `1`, `Date` vs ISO string, `Buffer`\n* vs number array). The spread converts the frozen wire-command\n* class instance (`InsertOneWireCommand`, `AggregateWireCommand`, …)\n* into a plain object exposing its own enumerable properties\n* (`kind`, `collection`, plus the payload-specific fields like\n* `document`/`filter`/`update`/`pipeline`/…), which is what\n* `canonicalStringify` accepts; class instances are rejected\n* outright to prevent silent collisions.\n*\n* Unlike SQL, there is no separate \"rendered statement\" component because\n* a Mongo `MongoExecutionPlan.command` is the wire command itself —\n* canonicalizing it captures both structure and parameters in one pass.\n*\n* The components are wrapped in an object and canonicalized as a single\n* unit (rather than concatenated with a delimiter) so component\n* boundaries are unambiguous and cannot collide with a different split\n* of the same characters.\n*\n* The canonical string is then piped through `hashContent` to produce a\n* bounded, opaque digest. See `@internal/utils/hash-content` for the\n* rationale.\n*\n* @throws {RuntimeErrorEnvelope} {@link RUNTIME_CONTENT_HASH_REQUIRES_RESOLVED_COMMAND}\n* when `exec.command` is still a pre-resolve draft (plain object), e.g. when\n* `contentHash` is called from `beforeExecute`.\n*\n* @internal\n*/\nfunction computeMongoContentHash(exec) {\n\tassertContentHashOnResolvedCommand(exec.command);\n\treturn hashContent(canonicalStringify({\n\t\tstorageHash: exec.meta.storageHash,\n\t\tcommand: { ...exec.command }\n\t}));\n}\n//#endregion\n//#region src/param-ref-mutator.ts\nfunction* flattenDraftSlot(value) {\n\tif (value instanceof MongoParamRef) {\n\t\tyield value;\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tfor (const item of value) yield* flattenDraftSlot(item);\n\t\treturn;\n\t}\n\tif (isPlainRecord(value)) for (const v of Object.values(value)) yield* flattenDraftSlot(v);\n}\n/**\n* Flat walk over a `MongoLoweredDraft` yielding every `MongoParamRef` leaf\n* regardless of nesting — object values, array elements, filter predicate\n* values, update operator values, and pipeline stage values. Raw command\n* variants carry no `MongoParamRef` nodes so they yield zero entries.\n*\n* **Walk parity:** slot traversal matches `resolveDraftSlot` / `resolveParams`\n* — refs appear only in plain-object and array containers; `Date` and other\n* non-plain objects are leaves (not descended into), so middleware sees every\n* ref the resolve pass will encode.\n*/\nfunction* flattenMongoParamRefs(draft) {\n\tswitch (draft.kind) {\n\t\tcase \"insertOne\":\n\t\tcase \"rawInsertOne\":\n\t\t\tyield* flattenDraftSlot(draft.document);\n\t\t\tbreak;\n\t\tcase \"insertMany\":\n\t\tcase \"rawInsertMany\":\n\t\t\tfor (const doc of draft.documents) yield* flattenDraftSlot(doc);\n\t\t\tbreak;\n\t\tcase \"updateOne\":\n\t\tcase \"updateMany\":\n\t\tcase \"rawUpdateOne\":\n\t\tcase \"rawUpdateMany\":\n\t\t\tyield* flattenDraftSlot(draft.filter);\n\t\t\tyield* flattenDraftSlot(draft.update);\n\t\t\tbreak;\n\t\tcase \"findOneAndUpdate\":\n\t\tcase \"rawFindOneAndUpdate\":\n\t\t\tyield* flattenDraftSlot(draft.filter);\n\t\t\tyield* flattenDraftSlot(draft.update);\n\t\t\tbreak;\n\t\tcase \"deleteOne\":\n\t\tcase \"deleteMany\":\n\t\tcase \"rawDeleteOne\":\n\t\tcase \"rawDeleteMany\":\n\t\t\tyield* flattenDraftSlot(draft.filter);\n\t\t\tbreak;\n\t\tcase \"findOneAndDelete\":\n\t\tcase \"rawFindOneAndDelete\":\n\t\t\tyield* flattenDraftSlot(draft.filter);\n\t\t\tbreak;\n\t\tcase \"aggregate\":\n\t\tcase \"rawAggregate\":\n\t\t\tfor (const stage of draft.pipeline) yield* flattenDraftSlot(stage);\n\t\t\tbreak;\n\t}\n}\nfunction substituteSlot(value, overrides) {\n\tif (value instanceof MongoParamRef) {\n\t\tif (overrides.has(value)) {\n\t\t\tconst opts = {};\n\t\t\tif (value.name !== void 0) opts.name = value.name;\n\t\t\tif (value.codecId !== void 0) opts.codecId = value.codecId;\n\t\t\treturn new MongoParamRef(overrides.get(value), opts);\n\t\t}\n\t\treturn value;\n\t}\n\tif (Array.isArray(value)) return value.map((item) => substituteSlot(item, overrides));\n\tif (isPlainRecord(value)) {\n\t\tconst out = {};\n\t\tfor (const [k, v] of Object.entries(value)) out[k] = substituteSlot(v, overrides);\n\t\treturn out;\n\t}\n\treturn value;\n}\nfunction substituteDoc(doc, overrides) {\n\treturn blindCast(substituteSlot(doc, overrides));\n}\nfunction isUpdatePipeline(update) {\n\treturn Array.isArray(update);\n}\nfunction substituteUpdate(update, overrides) {\n\tif (isUpdatePipeline(update)) return update.map((stage) => substituteDoc(stage, overrides));\n\treturn substituteDoc(update, overrides);\n}\nfunction buildMutatedDraft(draft, overrides) {\n\tswitch (draft.kind) {\n\t\tcase \"insertOne\": return {\n\t\t\tkind: \"insertOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tdocument: substituteDoc(draft.document, overrides)\n\t\t};\n\t\tcase \"rawInsertOne\": return {\n\t\t\tkind: \"rawInsertOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tdocument: substituteDoc(draft.document, overrides)\n\t\t};\n\t\tcase \"insertMany\": return {\n\t\t\tkind: \"insertMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tdocuments: draft.documents.map((d) => substituteDoc(d, overrides))\n\t\t};\n\t\tcase \"rawInsertMany\": return {\n\t\t\tkind: \"rawInsertMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tdocuments: draft.documents.map((d) => substituteDoc(d, overrides))\n\t\t};\n\t\tcase \"updateOne\": return {\n\t\t\tkind: \"updateOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides),\n\t\t\tupsert: draft.upsert\n\t\t};\n\t\tcase \"updateMany\": return {\n\t\t\tkind: \"updateMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides),\n\t\t\tupsert: draft.upsert\n\t\t};\n\t\tcase \"rawUpdateOne\": return {\n\t\t\tkind: \"rawUpdateOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides)\n\t\t};\n\t\tcase \"rawUpdateMany\": return {\n\t\t\tkind: \"rawUpdateMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides)\n\t\t};\n\t\tcase \"deleteOne\": return {\n\t\t\tkind: \"deleteOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides)\n\t\t};\n\t\tcase \"deleteMany\": return {\n\t\t\tkind: \"deleteMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides)\n\t\t};\n\t\tcase \"rawDeleteOne\": return {\n\t\t\tkind: \"rawDeleteOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides)\n\t\t};\n\t\tcase \"rawDeleteMany\": return {\n\t\t\tkind: \"rawDeleteMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides)\n\t\t};\n\t\tcase \"findOneAndUpdate\": return {\n\t\t\tkind: \"findOneAndUpdate\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides),\n\t\t\tupsert: draft.upsert,\n\t\t\tsort: draft.sort,\n\t\t\treturnDocument: draft.returnDocument\n\t\t};\n\t\tcase \"rawFindOneAndUpdate\": return {\n\t\t\tkind: \"rawFindOneAndUpdate\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides),\n\t\t\tupsert: draft.upsert,\n\t\t\tsort: draft.sort,\n\t\t\treturnDocument: draft.returnDocument\n\t\t};\n\t\tcase \"findOneAndDelete\": return {\n\t\t\tkind: \"findOneAndDelete\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tsort: draft.sort\n\t\t};\n\t\tcase \"rawFindOneAndDelete\": return {\n\t\t\tkind: \"rawFindOneAndDelete\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tsort: draft.sort\n\t\t};\n\t\tcase \"aggregate\": return {\n\t\t\tkind: \"aggregate\",\n\t\t\tcollection: draft.collection,\n\t\t\tpipeline: draft.pipeline.map((s) => substituteDoc(s, overrides))\n\t\t};\n\t\tcase \"rawAggregate\": return {\n\t\t\tkind: \"rawAggregate\",\n\t\t\tcollection: draft.collection,\n\t\t\tpipeline: draft.pipeline.map((s) => substituteDoc(s, overrides))\n\t\t};\n\t}\n}\n/**\n* Build a {@link MongoParamRefMutatorInternal} for the given lowered draft.\n*\n* The mutator captures the draft by reference and uses `flattenMongoParamRefs`\n* on demand to produce `entries()`. Replacements are stored in a lazily-\n* allocated `Map`; the fast path (no replacements) preserves bit-for-bit\n* reference identity to the original draft in `currentDraft()`.\n*/\nfunction createMongoParamRefMutator(draft) {\n\tconst originalDraft = draft;\n\tlet overrides;\n\tconst ensureOverrides = () => {\n\t\tif (!overrides) overrides = /* @__PURE__ */ new Map();\n\t\treturn overrides;\n\t};\n\tfunction* entries() {\n\t\tfor (const ref of flattenMongoParamRefs(originalDraft)) yield blindCast({\n\t\t\tref: blindCast(ref),\n\t\t\tvalue: overrides?.has(ref) ? overrides.get(ref) : ref.value,\n\t\t\tcodecId: ref.codecId\n\t\t});\n\t}\n\tfunction replaceValue(handle, newValue) {\n\t\tensureOverrides().set(blindCast(handle), newValue);\n\t}\n\tfunction replaceValues(updates) {\n\t\tconst map = ensureOverrides();\n\t\tfor (const { ref, newValue } of updates) map.set(blindCast(ref), newValue);\n\t}\n\treturn {\n\t\tentries,\n\t\treplaceValue: blindCast(replaceValue),\n\t\treplaceValues,\n\t\tcurrentDraft() {\n\t\t\tif (!overrides || overrides.size === 0) return originalDraft;\n\t\t\treturn buildMutatedDraft(originalDraft, overrides);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/mongo-runtime.ts\nfunction noop() {}\nvar MongoRuntimeImpl = class extends RuntimeCore {\n\t#adapter;\n\t#driver;\n\t#codecs;\n\tconstructor(options) {\n\t\tconst middleware = options.middleware ? [...options.middleware] : [];\n\t\tconst targetId = options.context.stack.target.targetId;\n\t\tfor (const mw of middleware) checkMiddlewareCompatibility(mw, \"mongo\", targetId);\n\t\tconst ctx = {\n\t\t\tcontract: options.context.contract,\n\t\t\tmode: options.mode ?? \"strict\",\n\t\t\tnow: () => Date.now(),\n\t\t\tlog: {\n\t\t\t\tinfo: noop,\n\t\t\t\twarn: noop,\n\t\t\t\terror: noop\n\t\t\t},\n\t\t\tcontentHash: (exec) => computeMongoContentHash(blindCast(exec)),\n\t\t\tscope: \"runtime\",\n\t\t\tplanExecutionId: \"\"\n\t\t};\n\t\tsuper({\n\t\t\tmiddleware,\n\t\t\tctx\n\t\t});\n\t\tconst adapterInstance = options.context.stack.adapter.create(options.context.stack);\n\t\tthis.#adapter = adapterInstance;\n\t\tthis.#driver = options.driver;\n\t\tthis.#codecs = options.context.codecs;\n\t}\n\t/* v8 ignore start -- one-phase lower satisfies RuntimeCore; execute uses structuralLower + resolveParams */\n\tasync lower(plan, ctx) {\n\t\treturn {\n\t\t\tcommand: await this.#adapter.lower(plan, ctx),\n\t\t\tmeta: plan.meta,\n\t\t\t...ifDefined(\"resultShape\", plan.resultShape)\n\t\t};\n\t}\n\t/* v8 ignore stop */\n\trunDriver(exec) {\n\t\treturn this.#driver.execute(exec.command);\n\t}\n\texecute(plan, options) {\n\t\tconst self = this;\n\t\tconst signal = options?.signal;\n\t\tconst codecCtx = signal === void 0 ? {} : { signal };\n\t\tconst execCtx = {\n\t\t\t...self.ctx,\n\t\t\tplanExecutionId: crypto.randomUUID()\n\t\t};\n\t\tconst generator = async function* () {\n\t\t\tcheckAborted(codecCtx, \"stream\");\n\t\t\tconst compiled = await self.runBeforeCompile(plan);\n\t\t\tconst draft = self.#adapter.structuralLower(compiled);\n\t\t\tconst mutator = createMongoParamRefMutator(draft);\n\t\t\tawait runBeforeExecuteChain({\n\t\t\t\tmeta: compiled.meta,\n\t\t\t\t...ifDefined(\"resultShape\", compiled.resultShape),\n\t\t\t\tcommand: blindCast(draft)\n\t\t\t}, self.middleware, execCtx, mutator);\n\t\t\tconst resolvedCommand = await self.#adapter.resolveParams(mutator.currentDraft(), codecCtx);\n\t\t\tconst exec = {\n\t\t\t\tmeta: compiled.meta,\n\t\t\t\t...ifDefined(\"resultShape\", compiled.resultShape),\n\t\t\t\tcommand: resolvedCommand\n\t\t\t};\n\t\t\tconst stream = runWithMiddleware(exec, self.middleware, execCtx, () => self.runDriver(exec));\n\t\t\tfor await (const rawRow of stream) if (exec.resultShape === void 0) yield blindCast(rawRow);\n\t\t\telse yield blindCast(await decodeMongoRow(rawRow, exec.resultShape, self.#codecs, exec.command.collection, codecCtx));\n\t\t};\n\t\treturn new AsyncIterableResult(generator());\n\t}\n\tasync close() {\n\t\tawait this.#driver.close();\n\t}\n};\nfunction createMongoRuntime(options) {\n\treturn new MongoRuntimeImpl(options);\n}\n//#endregion\nexport { createMongoExecutionContext, createMongoExecutionStack, createMongoParamRefMutator, createMongoRuntime, flattenMongoParamRefs };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.mjs","names":["#adapter","#driver","#codecs","#readDriverStatistics"],"sources":["../../../../2-mongo-family/7-runtime/dist/index.mjs"],"sourcesContent":["import { createExecutionStack } from \"@internal/framework-components/execution\";\nimport { AsyncIterableResult, RuntimeCore, checkAborted, checkMiddlewareCompatibility, runBeforeExecuteChain, runBeforeQueryChain, runExecuteWithMiddleware, runQueryWithMiddleware, runtimeError } from \"@internal/framework-components/runtime\";\nimport { newMongoCodecRegistry } from \"@internal/mongo-codec\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { isStructuredError } from \"@internal/utils/structured-error\";\nimport { canonicalStringify } from \"@internal/utils/canonical-stringify\";\nimport { hashContent } from \"@internal/utils/hash-content\";\nimport { isPlainRecord } from \"@internal/contract/is-plain-record\";\nimport { MongoParamRef } from \"@internal/mongo-value\";\n//#region src/mongo-execution-stack.ts\nfunction createMongoExecutionStack(options) {\n\treturn createExecutionStack({\n\t\ttarget: options.target,\n\t\tadapter: options.adapter,\n\t\tdriver: options.driver,\n\t\textensions: options.extensions\n\t});\n}\nfunction createMongoExecutionContext(options) {\n\tconst registry = newMongoCodecRegistry();\n\tconst owners = /* @__PURE__ */ new Map();\n\tconst contributors = [\n\t\toptions.stack.target,\n\t\toptions.stack.adapter,\n\t\t...options.stack.extensions\n\t];\n\tfor (const contributor of contributors) {\n\t\tconst contributed = contributor.codecs();\n\t\tfor (const codec of iterateCodecs(contributed)) {\n\t\t\tconst existingOwner = owners.get(codec.id);\n\t\t\tif (existingOwner !== void 0) throw runtimeError(\"RUNTIME.DUPLICATE_CODEC\", `Duplicate Mongo codec id '${codec.id}' contributed by '${contributor.id}' (already registered by '${existingOwner}').`, {\n\t\t\t\tcodecId: codec.id,\n\t\t\t\texistingOwner,\n\t\t\t\tincomingOwner: contributor.id\n\t\t\t});\n\t\t\tregistry.register(codec);\n\t\t\towners.set(codec.id, contributor.id);\n\t\t}\n\t}\n\treturn Object.freeze({\n\t\tcontract: options.contract,\n\t\tcodecs: registry,\n\t\tstack: options.stack\n\t});\n}\nfunction* iterateCodecs(registry) {\n\tyield* registry.values();\n}\n//#endregion\n//#region src/codecs/decoding.ts\nconst WIRE_PREVIEW_LIMIT = 100;\nfunction previewWireValue(wireValue) {\n\tif (typeof wireValue === \"string\") return wireValue.length > WIRE_PREVIEW_LIMIT ? `${wireValue.substring(0, WIRE_PREVIEW_LIMIT)}...` : wireValue;\n\treturn String(wireValue).substring(0, WIRE_PREVIEW_LIMIT);\n}\n/**\n* Structured envelopes (any error with a dotted `code`, per `isStructuredError`)\n* thrown by a codec body pass through unchanged; everything else is wrapped in\n* a `RUNTIME.DECODE_FAILED` envelope with the original error on `cause`.\n*/\nfunction wrapDecodeFailure(error, collection, path, codecId, wireValue) {\n\tif (isStructuredError(error)) throw error;\n\tconst wrapped = runtimeError(\"RUNTIME.DECODE_FAILED\", `Failed to decode field ${path} in collection '${collection}' with codec '${codecId}': ${error instanceof Error ? error.message : String(error)}`, {\n\t\tcollection,\n\t\tpath,\n\t\tcodec: codecId,\n\t\twirePreview: previewWireValue(wireValue)\n\t});\n\twrapped.cause = error;\n\tthrow wrapped;\n}\nasync function decodeMongoRow(row, shape, registry, collection, ctx = {}) {\n\tif (shape.kind === \"unknown\") return row;\n\tif (typeof row !== \"object\" || row === null) return row;\n\tconst rowObj = row;\n\tconst out = {};\n\tconst tasks = [];\n\tfunction scheduleLeaf(path, codecId, wire, assign) {\n\t\tconst codec = registry.get(codecId);\n\t\tif (!codec) {\n\t\t\tassign(wire);\n\t\t\treturn;\n\t\t}\n\t\ttasks.push((async () => {\n\t\t\ttry {\n\t\t\t\tassign(await codec.decode(wire, ctx));\n\t\t\t} catch (error) {\n\t\t\t\twrapDecodeFailure(error, collection, path, codecId, wire);\n\t\t\t}\n\t\t})());\n\t}\n\tfunction walkField(value, fieldShape, path, assign) {\n\t\tswitch (fieldShape.kind) {\n\t\t\tcase \"unknown\":\n\t\t\t\tassign(value);\n\t\t\t\treturn;\n\t\t\tcase \"leaf\":\n\t\t\t\tif (value === null || value === void 0) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tscheduleLeaf(path, fieldShape.codecId, value, assign);\n\t\t\t\treturn;\n\t\t\tcase \"document\": {\n\t\t\t\tif (value === null || value === void 0) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst vObj = value;\n\t\t\t\tconst nested = { ...vObj };\n\t\t\t\tassign(nested);\n\t\t\t\tfor (const [fk, fShape] of Object.entries(fieldShape.fields)) walkField(vObj[fk], fShape, `${path}.${fk}`, (v) => {\n\t\t\t\t\tnested[fk] = v;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"array\": {\n\t\t\t\tif (value === null || value === void 0) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!Array.isArray(value)) {\n\t\t\t\t\tassign(value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst arr = [];\n\t\t\t\tassign(arr);\n\t\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\t\tconst el = value[i];\n\t\t\t\t\twalkField(el, fieldShape.element, `${path}.${i}`, (v) => {\n\t\t\t\t\t\tarr[i] = v;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t/* v8 ignore stop */\n\t}\n\tfor (const [k, fShape] of Object.entries(shape.fields)) walkField(rowObj[k], fShape, k, (v) => {\n\t\tout[k] = v;\n\t});\n\tfor (const k of Object.keys(rowObj)) if (!Object.hasOwn(shape.fields, k)) out[k] = rowObj[k];\n\tawait Promise.all(tasks);\n\treturn out;\n}\n//#endregion\n//#region src/content-hash.ts\n/** @internal */\nconst RUNTIME_CONTENT_HASH_REQUIRES_RESOLVED_COMMAND = \"RUNTIME.CONTENT_HASH_REQUIRES_RESOLVED_COMMAND\";\n/**\n* Resolved wire commands are frozen class instances (`InsertOneWireCommand`, …);\n* pre-resolve `beforeExecute` plans hold a plain-object `MongoLoweredDraft` in the\n* command slot. O(1) prototype check — no tree walk on the hot path.\n*/\nfunction isResolvedMongoWireCommand(command) {\n\tif (command === null || typeof command !== \"object\") return false;\n\tconst proto = Object.getPrototypeOf(command);\n\treturn proto !== null && proto !== Object.prototype;\n}\nfunction assertContentHashOnResolvedCommand(command) {\n\tif (isResolvedMongoWireCommand(command)) return;\n\tthrow runtimeError(RUNTIME_CONTENT_HASH_REQUIRES_RESOLVED_COMMAND, \"contentHash and computeMongoContentHash are only valid on a resolved wire command after parameter resolution. During a before hook, plan.command holds an unresolved MongoLoweredDraft — use params.entries() and the param mutator instead of contentHash or structural reads of plan.command.\", { phase: \"beforeExecute\" });\n}\n/**\n* Computes a stable content hash for a lowered Mongo execution plan.\n*\n* Internally builds an unambiguous canonical-stringified preimage from\n* two components:\n*\n* 1. `meta.storageHash` — discriminates by schema. A migration changes the\n* storage hash, which invalidates cached entries automatically (no\n* per-app invalidation logic needed for schema changes).\n* 2. `exec.command` — the wire command. `canonicalStringify` produces a\n* deterministic serialization that is stable across object key\n* insertion order and that distinguishes types JSON would otherwise\n* conflate (e.g. `BigInt(1)` vs `1`, `Date` vs ISO string, `Buffer`\n* vs number array). The spread converts the frozen wire-command\n* class instance (`InsertOneWireCommand`, `AggregateWireCommand`, …)\n* into a plain object exposing its own enumerable properties\n* (`kind`, `collection`, plus the payload-specific fields like\n* `document`/`filter`/`update`/`pipeline`/…), which is what\n* `canonicalStringify` accepts; class instances are rejected\n* outright to prevent silent collisions.\n*\n* Unlike SQL, there is no separate \"rendered statement\" component because\n* a Mongo `MongoExecutionPlan.command` is the wire command itself —\n* canonicalizing it captures both structure and parameters in one pass.\n*\n* The components are wrapped in an object and canonicalized as a single\n* unit (rather than concatenated with a delimiter) so component\n* boundaries are unambiguous and cannot collide with a different split\n* of the same characters.\n*\n* The canonical string is then piped through `hashContent` to produce a\n* bounded, opaque digest. See `@internal/utils/hash-content` for the\n* rationale.\n*\n* @throws {RuntimeErrorEnvelope} {@link RUNTIME_CONTENT_HASH_REQUIRES_RESOLVED_COMMAND}\n* when `exec.command` is still a pre-resolve draft (plain object), e.g. when\n* `contentHash` is called from `beforeExecute`.\n*\n* @internal\n*/\nfunction computeMongoContentHash(exec) {\n\tassertContentHashOnResolvedCommand(exec.command);\n\treturn hashContent(canonicalStringify({\n\t\tstorageHash: exec.meta.storageHash,\n\t\tcommand: { ...exec.command }\n\t}));\n}\n//#endregion\n//#region src/param-ref-mutator.ts\nfunction* flattenDraftSlot(value) {\n\tif (value instanceof MongoParamRef) {\n\t\tyield value;\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tfor (const item of value) yield* flattenDraftSlot(item);\n\t\treturn;\n\t}\n\tif (isPlainRecord(value)) for (const v of Object.values(value)) yield* flattenDraftSlot(v);\n}\n/**\n* Flat walk over a `MongoLoweredDraft` yielding every `MongoParamRef` leaf\n* regardless of nesting — object values, array elements, filter predicate\n* values, update operator values, and pipeline stage values. Raw command\n* variants carry no `MongoParamRef` nodes so they yield zero entries.\n*\n* **Walk parity:** slot traversal matches `resolveDraftSlot` / `resolveParams`\n* — refs appear only in plain-object and array containers; `Date` and other\n* non-plain objects are leaves (not descended into), so middleware sees every\n* ref the resolve pass will encode.\n*/\nfunction* flattenMongoParamRefs(draft) {\n\tswitch (draft.kind) {\n\t\tcase \"insertOne\":\n\t\tcase \"rawInsertOne\":\n\t\t\tyield* flattenDraftSlot(draft.document);\n\t\t\tbreak;\n\t\tcase \"insertMany\":\n\t\tcase \"rawInsertMany\":\n\t\t\tfor (const doc of draft.documents) yield* flattenDraftSlot(doc);\n\t\t\tbreak;\n\t\tcase \"updateOne\":\n\t\tcase \"updateMany\":\n\t\tcase \"rawUpdateOne\":\n\t\tcase \"rawUpdateMany\":\n\t\t\tyield* flattenDraftSlot(draft.filter);\n\t\t\tyield* flattenDraftSlot(draft.update);\n\t\t\tbreak;\n\t\tcase \"findOneAndUpdate\":\n\t\tcase \"rawFindOneAndUpdate\":\n\t\t\tyield* flattenDraftSlot(draft.filter);\n\t\t\tyield* flattenDraftSlot(draft.update);\n\t\t\tbreak;\n\t\tcase \"deleteOne\":\n\t\tcase \"deleteMany\":\n\t\tcase \"rawDeleteOne\":\n\t\tcase \"rawDeleteMany\":\n\t\t\tyield* flattenDraftSlot(draft.filter);\n\t\t\tbreak;\n\t\tcase \"findOneAndDelete\":\n\t\tcase \"rawFindOneAndDelete\":\n\t\t\tyield* flattenDraftSlot(draft.filter);\n\t\t\tbreak;\n\t\tcase \"aggregate\":\n\t\tcase \"rawAggregate\":\n\t\t\tfor (const stage of draft.pipeline) yield* flattenDraftSlot(stage);\n\t\t\tbreak;\n\t}\n}\nfunction substituteSlot(value, overrides) {\n\tif (value instanceof MongoParamRef) {\n\t\tif (overrides.has(value)) {\n\t\t\tconst opts = {};\n\t\t\tif (value.name !== void 0) opts.name = value.name;\n\t\t\tif (value.codecId !== void 0) opts.codecId = value.codecId;\n\t\t\treturn new MongoParamRef(overrides.get(value), opts);\n\t\t}\n\t\treturn value;\n\t}\n\tif (Array.isArray(value)) return value.map((item) => substituteSlot(item, overrides));\n\tif (isPlainRecord(value)) {\n\t\tconst out = {};\n\t\tfor (const [k, v] of Object.entries(value)) out[k] = substituteSlot(v, overrides);\n\t\treturn out;\n\t}\n\treturn value;\n}\nfunction substituteDoc(doc, overrides) {\n\treturn blindCast(substituteSlot(doc, overrides));\n}\nfunction isUpdatePipeline(update) {\n\treturn Array.isArray(update);\n}\nfunction substituteUpdate(update, overrides) {\n\tif (isUpdatePipeline(update)) return update.map((stage) => substituteDoc(stage, overrides));\n\treturn substituteDoc(update, overrides);\n}\nfunction buildMutatedDraft(draft, overrides) {\n\tswitch (draft.kind) {\n\t\tcase \"insertOne\": return {\n\t\t\tkind: \"insertOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tdocument: substituteDoc(draft.document, overrides)\n\t\t};\n\t\tcase \"rawInsertOne\": return {\n\t\t\tkind: \"rawInsertOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tdocument: substituteDoc(draft.document, overrides)\n\t\t};\n\t\tcase \"insertMany\": return {\n\t\t\tkind: \"insertMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tdocuments: draft.documents.map((d) => substituteDoc(d, overrides))\n\t\t};\n\t\tcase \"rawInsertMany\": return {\n\t\t\tkind: \"rawInsertMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tdocuments: draft.documents.map((d) => substituteDoc(d, overrides))\n\t\t};\n\t\tcase \"updateOne\": return {\n\t\t\tkind: \"updateOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides),\n\t\t\tupsert: draft.upsert\n\t\t};\n\t\tcase \"updateMany\": return {\n\t\t\tkind: \"updateMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides),\n\t\t\tupsert: draft.upsert\n\t\t};\n\t\tcase \"rawUpdateOne\": return {\n\t\t\tkind: \"rawUpdateOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides)\n\t\t};\n\t\tcase \"rawUpdateMany\": return {\n\t\t\tkind: \"rawUpdateMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides)\n\t\t};\n\t\tcase \"deleteOne\": return {\n\t\t\tkind: \"deleteOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides)\n\t\t};\n\t\tcase \"deleteMany\": return {\n\t\t\tkind: \"deleteMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides)\n\t\t};\n\t\tcase \"rawDeleteOne\": return {\n\t\t\tkind: \"rawDeleteOne\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides)\n\t\t};\n\t\tcase \"rawDeleteMany\": return {\n\t\t\tkind: \"rawDeleteMany\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides)\n\t\t};\n\t\tcase \"findOneAndUpdate\": return {\n\t\t\tkind: \"findOneAndUpdate\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides),\n\t\t\tupsert: draft.upsert,\n\t\t\tsort: draft.sort,\n\t\t\treturnDocument: draft.returnDocument\n\t\t};\n\t\tcase \"rawFindOneAndUpdate\": return {\n\t\t\tkind: \"rawFindOneAndUpdate\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tupdate: substituteUpdate(draft.update, overrides),\n\t\t\tupsert: draft.upsert,\n\t\t\tsort: draft.sort,\n\t\t\treturnDocument: draft.returnDocument\n\t\t};\n\t\tcase \"findOneAndDelete\": return {\n\t\t\tkind: \"findOneAndDelete\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tsort: draft.sort\n\t\t};\n\t\tcase \"rawFindOneAndDelete\": return {\n\t\t\tkind: \"rawFindOneAndDelete\",\n\t\t\tcollection: draft.collection,\n\t\t\tfilter: substituteDoc(draft.filter, overrides),\n\t\t\tsort: draft.sort\n\t\t};\n\t\tcase \"aggregate\": return {\n\t\t\tkind: \"aggregate\",\n\t\t\tcollection: draft.collection,\n\t\t\tpipeline: draft.pipeline.map((s) => substituteDoc(s, overrides))\n\t\t};\n\t\tcase \"rawAggregate\": return {\n\t\t\tkind: \"rawAggregate\",\n\t\t\tcollection: draft.collection,\n\t\t\tpipeline: draft.pipeline.map((s) => substituteDoc(s, overrides))\n\t\t};\n\t}\n}\n/**\n* Build a {@link MongoParamRefMutatorInternal} for the given lowered draft.\n*\n* The mutator captures the draft by reference and uses `flattenMongoParamRefs`\n* on demand to produce `entries()`. Replacements are stored in a lazily-\n* allocated `Map`; the fast path (no replacements) preserves bit-for-bit\n* reference identity to the original draft in `currentDraft()`.\n*/\nfunction createMongoParamRefMutator(draft) {\n\tconst originalDraft = draft;\n\tlet overrides;\n\tconst ensureOverrides = () => {\n\t\tif (!overrides) overrides = /* @__PURE__ */ new Map();\n\t\treturn overrides;\n\t};\n\tfunction* entries() {\n\t\tfor (const ref of flattenMongoParamRefs(originalDraft)) yield blindCast({\n\t\t\tref: blindCast(ref),\n\t\t\tvalue: overrides?.has(ref) ? overrides.get(ref) : ref.value,\n\t\t\tcodecId: ref.codecId\n\t\t});\n\t}\n\tfunction replaceValue(handle, newValue) {\n\t\tensureOverrides().set(blindCast(handle), newValue);\n\t}\n\tfunction replaceValues(updates) {\n\t\tconst map = ensureOverrides();\n\t\tfor (const { ref, newValue } of updates) map.set(blindCast(ref), newValue);\n\t}\n\treturn {\n\t\tentries,\n\t\treplaceValue: blindCast(replaceValue),\n\t\treplaceValues,\n\t\tcurrentDraft() {\n\t\t\tif (!overrides || overrides.size === 0) return originalDraft;\n\t\t\treturn buildMutatedDraft(originalDraft, overrides);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/mongo-runtime.ts\nfunction noop() {}\nfunction isUnknownRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction statisticsCountField(commandKind) {\n\tswitch (commandKind) {\n\t\tcase \"updateOne\":\n\t\tcase \"updateMany\": return \"modifiedCount\";\n\t\tcase \"deleteOne\":\n\t\tcase \"deleteMany\": return \"deletedCount\";\n\t\tdefault: return;\n\t}\n}\nfunction invalidStatisticsResult(commandKind, countField) {\n\treturn runtimeError(\"RUNTIME.MONGO_STATISTICS_RESULT_INVALID\", `Mongo command '${commandKind}' did not return exactly one numeric '${countField}' result`, {\n\t\tcommandKind,\n\t\tcountField\n\t});\n}\nvar MongoRuntimeImpl = class extends RuntimeCore {\n\t#adapter;\n\t#driver;\n\t#codecs;\n\tconstructor(options) {\n\t\tconst middleware = options.middleware ? [...options.middleware] : [];\n\t\tconst targetId = options.context.stack.target.targetId;\n\t\tfor (const mw of middleware) checkMiddlewareCompatibility(mw, \"mongo\", targetId);\n\t\tconst ctx = {\n\t\t\tcontract: options.context.contract,\n\t\t\tmode: options.mode ?? \"strict\",\n\t\t\tnow: () => Date.now(),\n\t\t\tlog: {\n\t\t\t\tinfo: noop,\n\t\t\t\twarn: noop,\n\t\t\t\terror: noop\n\t\t\t},\n\t\t\tcontentHash: (exec) => computeMongoContentHash(blindCast(exec)),\n\t\t\tscope: \"runtime\",\n\t\t\tplanExecutionId: \"\"\n\t\t};\n\t\tsuper({\n\t\t\tmiddleware,\n\t\t\tctx\n\t\t});\n\t\tconst adapterInstance = options.context.stack.adapter.create(options.context.stack);\n\t\tthis.#adapter = adapterInstance;\n\t\tthis.#driver = options.driver;\n\t\tthis.#codecs = options.context.codecs;\n\t}\n\t/* v8 ignore start -- one-phase lower satisfies RuntimeCore; operations use the split preparation pipeline */\n\tasync lower(plan, ctx) {\n\t\treturn {\n\t\t\tcommand: await this.#adapter.lower(plan, ctx),\n\t\t\tmeta: plan.meta,\n\t\t\t...ifDefined(\"resultShape\", plan.resultShape)\n\t\t};\n\t}\n\t/* v8 ignore stop */\n\trunDriver(exec) {\n\t\treturn this.#driver.execute(exec.command);\n\t}\n\trunExecute(exec) {\n\t\treturn this.#readDriverStatistics(exec);\n\t}\n\tcreateQueryContexts(options) {\n\t\tconst signal = options?.signal;\n\t\treturn {\n\t\t\tcodecCtx: signal === void 0 ? {} : { signal },\n\t\t\tmiddlewareCtx: {\n\t\t\t\t...this.ctx,\n\t\t\t\t...ifDefined(\"signal\", signal),\n\t\t\t\tplanExecutionId: crypto.randomUUID()\n\t\t\t}\n\t\t};\n\t}\n\tprepareQueryExecution(plan, codecCtx, middlewareCtx) {\n\t\treturn this.prepareOperation(plan, codecCtx, middlewareCtx, runBeforeQueryChain);\n\t}\n\tprepareExecuteExecution(plan, codecCtx, middlewareCtx) {\n\t\treturn this.prepareOperation(plan, codecCtx, middlewareCtx, runBeforeExecuteChain);\n\t}\n\tasync prepareOperation(plan, codecCtx, middlewareCtx, runBefore) {\n\t\tcheckAborted(codecCtx, \"stream\");\n\t\tconst compiled = await this.runBeforeCompile(plan);\n\t\tconst draft = this.#adapter.structuralLower(compiled);\n\t\tconst mutator = createMongoParamRefMutator(draft);\n\t\tawait runBefore({\n\t\t\tmeta: compiled.meta,\n\t\t\t...ifDefined(\"resultShape\", compiled.resultShape),\n\t\t\tcommand: blindCast(draft)\n\t\t}, this.middleware, middlewareCtx, mutator);\n\t\treturn {\n\t\t\tmeta: compiled.meta,\n\t\t\t...ifDefined(\"resultShape\", compiled.resultShape),\n\t\t\tcommand: await this.#adapter.resolveParams(mutator.currentDraft(), codecCtx)\n\t\t};\n\t}\n\tquery(plan, options) {\n\t\tconst self = this;\n\t\tconst { codecCtx, middlewareCtx } = this.createQueryContexts(options);\n\t\tconst generator = async function* () {\n\t\t\tconst exec = await self.prepareQueryExecution(plan, codecCtx, middlewareCtx);\n\t\t\tconst stream = runQueryWithMiddleware(exec, self.middleware, middlewareCtx, () => self.runDriver(exec));\n\t\t\tfor await (const rawRow of stream) {\n\t\t\t\tcheckAborted(codecCtx, \"stream\");\n\t\t\t\tif (exec.resultShape === void 0) yield blindCast(rawRow);\n\t\t\t\telse yield blindCast(await decodeMongoRow(rawRow, exec.resultShape, self.#codecs, exec.command.collection, codecCtx));\n\t\t\t}\n\t\t};\n\t\treturn new AsyncIterableResult(generator());\n\t}\n\tasync execute(plan, options) {\n\t\tconst { codecCtx, middlewareCtx } = this.createQueryContexts(options);\n\t\tconst exec = await this.prepareExecuteExecution(plan, codecCtx, middlewareCtx);\n\t\tcheckAborted(codecCtx, \"stream\");\n\t\treturn runExecuteWithMiddleware(exec, this.middleware, middlewareCtx, () => this.runExecute(exec));\n\t}\n\tasync #readDriverStatistics(exec) {\n\t\tconst countField = statisticsCountField(exec.command.kind);\n\t\tif (countField === void 0) throw runtimeError(\"RUNTIME.MONGO_STATISTICS_UNSUPPORTED\", `Mongo command '${exec.command.kind}' does not expose statement statistics`, { commandKind: exec.command.kind });\n\t\tlet affectedRows;\n\t\tfor await (const result of this.#driver.execute(exec.command)) {\n\t\t\tif (affectedRows !== void 0 || !isUnknownRecord(result)) throw invalidStatisticsResult(exec.command.kind, countField);\n\t\t\tconst count = result[countField];\n\t\t\tif (typeof count !== \"number\") throw invalidStatisticsResult(exec.command.kind, countField);\n\t\t\taffectedRows = count;\n\t\t}\n\t\tif (affectedRows === void 0) throw invalidStatisticsResult(exec.command.kind, countField);\n\t\treturn { affectedRows };\n\t}\n\tasync close() {\n\t\tawait this.#driver.close();\n\t}\n};\nfunction createMongoRuntime(options) {\n\treturn new MongoRuntimeImpl(options);\n}\n//#endregion\nexport { createMongoExecutionContext, createMongoExecutionStack, createMongoParamRefMutator, createMongoRuntime, flattenMongoParamRefs };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/orm-family-mongo",
|
|
3
|
-
"version": "8.0.0-rc.1-dev.
|
|
3
|
+
"version": "8.0.0-rc.1-dev.43",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -9,29 +9,29 @@
|
|
|
9
9
|
"dist"
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@prisma/orm-framework": "8.0.0-rc.1-dev.
|
|
13
|
-
"@prisma/orm-toolchain": "8.0.0-rc.1-dev.
|
|
12
|
+
"@prisma/orm-framework": "8.0.0-rc.1-dev.43",
|
|
13
|
+
"@prisma/orm-toolchain": "8.0.0-rc.1-dev.43",
|
|
14
14
|
"arktype": "^2.2.2",
|
|
15
15
|
"mongodb": "^7.4.0",
|
|
16
16
|
"pathe": "^2.0.3"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@internal/family-mongo": "8.0.0-rc.1-dev.
|
|
20
|
-
"@internal/mongo-codec": "8.0.0-rc.1-dev.
|
|
21
|
-
"@internal/mongo-contract": "8.0.0-rc.1-dev.
|
|
22
|
-
"@internal/mongo-contract-psl": "8.0.0-rc.1-dev.
|
|
23
|
-
"@internal/mongo-contract-ts": "8.0.0-rc.1-dev.
|
|
24
|
-
"@internal/mongo-emitter": "8.0.0-rc.1-dev.
|
|
25
|
-
"@internal/mongo-lowering": "8.0.0-rc.1-dev.
|
|
26
|
-
"@internal/mongo-orm": "8.0.0-rc.1-dev.
|
|
27
|
-
"@internal/mongo-query-ast": "8.0.0-rc.1-dev.
|
|
28
|
-
"@internal/mongo-query-builder": "8.0.0-rc.1-dev.
|
|
29
|
-
"@internal/mongo-runtime": "8.0.0-rc.1-dev.
|
|
30
|
-
"@internal/mongo-schema-ir": "8.0.0-rc.1-dev.
|
|
31
|
-
"@internal/mongo-value": "8.0.0-rc.1-dev.
|
|
32
|
-
"@internal/mongo-wire": "8.0.0-rc.1-dev.
|
|
33
|
-
"@repo/tsconfig": "8.0.0-rc.1-dev.
|
|
34
|
-
"@repo/tsdown": "8.0.0-rc.1-dev.
|
|
19
|
+
"@internal/family-mongo": "8.0.0-rc.1-dev.43",
|
|
20
|
+
"@internal/mongo-codec": "8.0.0-rc.1-dev.43",
|
|
21
|
+
"@internal/mongo-contract": "8.0.0-rc.1-dev.43",
|
|
22
|
+
"@internal/mongo-contract-psl": "8.0.0-rc.1-dev.43",
|
|
23
|
+
"@internal/mongo-contract-ts": "8.0.0-rc.1-dev.43",
|
|
24
|
+
"@internal/mongo-emitter": "8.0.0-rc.1-dev.43",
|
|
25
|
+
"@internal/mongo-lowering": "8.0.0-rc.1-dev.43",
|
|
26
|
+
"@internal/mongo-orm": "8.0.0-rc.1-dev.43",
|
|
27
|
+
"@internal/mongo-query-ast": "8.0.0-rc.1-dev.43",
|
|
28
|
+
"@internal/mongo-query-builder": "8.0.0-rc.1-dev.43",
|
|
29
|
+
"@internal/mongo-runtime": "8.0.0-rc.1-dev.43",
|
|
30
|
+
"@internal/mongo-schema-ir": "8.0.0-rc.1-dev.43",
|
|
31
|
+
"@internal/mongo-value": "8.0.0-rc.1-dev.43",
|
|
32
|
+
"@internal/mongo-wire": "8.0.0-rc.1-dev.43",
|
|
33
|
+
"@repo/tsconfig": "8.0.0-rc.1-dev.43",
|
|
34
|
+
"@repo/tsdown": "8.0.0-rc.1-dev.43",
|
|
35
35
|
"tsdown": "0.22.14",
|
|
36
36
|
"typescript": "5.9.3"
|
|
37
37
|
},
|