@prisma/orm-target-mongo 8.0.0-rc.18-dev.16 → 8.0.0-rc.18-dev.18

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.
Files changed (46) hide show
  1. package/dist/adapter.mjs +1 -1
  2. package/dist/adapter.mjs.map +1 -1
  3. package/dist/adapter__control.mjs +2 -2
  4. package/dist/adapter__control.mjs.map +1 -1
  5. package/dist/adapter__runtime.mjs +2 -2
  6. package/dist/adapter__runtime.mjs.map +1 -1
  7. package/dist/{codecs-CXPz3PFI.d.mts → codecs-6K6jAnDf.d.mts} +3 -3
  8. package/dist/{codecs-CXPz3PFI.d.mts.map → codecs-6K6jAnDf.d.mts.map} +1 -1
  9. package/dist/codecs-C2G2gCgE-BF_laFUO.mjs +401 -0
  10. package/dist/codecs-C2G2gCgE-BF_laFUO.mjs.map +1 -0
  11. package/dist/{control-L7CfVM6Q.mjs → control-BmURXF7w.mjs} +3 -3
  12. package/dist/{control-L7CfVM6Q.mjs.map → control-BmURXF7w.mjs.map} +1 -1
  13. package/dist/{data-types-CcyIYfyC.d.mts → data-types-BS2Wy4k-.d.mts} +2 -2
  14. package/dist/{data-types-CcyIYfyC.d.mts.map → data-types-BS2Wy4k-.d.mts.map} +1 -1
  15. package/dist/data-types-CfdzqGSQ-NIDeT9x3.mjs +561 -0
  16. package/dist/data-types-CfdzqGSQ-NIDeT9x3.mjs.map +1 -0
  17. package/dist/{descriptor-meta-BtglG_aY-DhbxL8Gw.mjs → descriptor-meta-Da1K6eGI-CuPZuUef.mjs} +3 -3
  18. package/dist/{descriptor-meta-BtglG_aY-DhbxL8Gw.mjs.map → descriptor-meta-Da1K6eGI-CuPZuUef.mjs.map} +1 -1
  19. package/dist/{descriptor-meta-runtime-CwIqqZ8J-C3UNM2K8.mjs → descriptor-meta-runtime-CVlbbuVd-CECirMWv.mjs} +4 -4
  20. package/dist/{descriptor-meta-runtime-CwIqqZ8J-C3UNM2K8.mjs.map → descriptor-meta-runtime-CVlbbuVd-CECirMWv.mjs.map} +1 -1
  21. package/dist/driver.mjs +1 -1
  22. package/dist/driver__control.mjs +1 -1
  23. package/dist/driver__control.mjs.map +1 -1
  24. package/dist/{mongo-adapter-DWNaz2UT-HiI8mJ7J.mjs → mongo-adapter-Bo6ciURK-CtwxEEEl.mjs} +6 -6
  25. package/dist/{mongo-adapter-DWNaz2UT-HiI8mJ7J.mjs.map → mongo-adapter-Bo6ciURK-CtwxEEEl.mjs.map} +1 -1
  26. package/dist/{mongo-driver-1sSQfkdk-D4ft_SLH.mjs → mongo-driver-X3390_vm-Dh9WXgAd.mjs} +3 -3
  27. package/dist/{mongo-driver-1sSQfkdk-D4ft_SLH.mjs.map → mongo-driver-X3390_vm-Dh9WXgAd.mjs.map} +1 -1
  28. package/dist/{prisma6-binding-i6ORtPD9.mjs → prisma6-binding-svUHPAct.mjs} +2 -2
  29. package/dist/{prisma6-binding-i6ORtPD9.mjs.map → prisma6-binding-svUHPAct.mjs.map} +1 -1
  30. package/dist/target.d.mts +2 -2
  31. package/dist/target.mjs +4 -4
  32. package/dist/target__codecs.d.mts +1 -1
  33. package/dist/target__codecs.mjs +1 -1
  34. package/dist/target__control.mjs +1 -1
  35. package/dist/target__data-types.d.mts +1 -1
  36. package/dist/target__data-types.mjs +1 -1
  37. package/dist/target__pack.mjs +1 -1
  38. package/dist/target__pack.mjs.map +1 -1
  39. package/dist/target__prisma6-binding.mjs +1 -1
  40. package/dist/target__runtime.mjs +1 -1
  41. package/dist/target__runtime.mjs.map +1 -1
  42. package/package.json +9 -9
  43. package/dist/codecs-D6yLMoD2-Bn8-UhA5.mjs +0 -854
  44. package/dist/codecs-D6yLMoD2-Bn8-UhA5.mjs.map +0 -1
  45. package/dist/data-types-D7u1m_Jl-C5XUZspA.mjs +0 -47
  46. package/dist/data-types-D7u1m_Jl-C5XUZspA.mjs.map +0 -1
package/dist/adapter.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { p as MONGO_VECTOR_CODEC_ID } from "./codec-ids-WdrumsYA-BkQfspmL.mjs";
2
- import { a as lowerStage, i as lowerPipeline, n as lowerAggExpr, r as lowerFilter, t as createMongoAdapter } from "./mongo-adapter-DWNaz2UT-HiI8mJ7J.mjs";
2
+ import { a as lowerStage, i as lowerPipeline, n as lowerAggExpr, r as lowerFilter, t as createMongoAdapter } from "./mongo-adapter-Bo6ciURK-CtwxEEEl.mjs";
3
3
  //#region ../../../3-mongo-target/2-mongo-adapter/dist/index.mjs
4
4
  const mongoVectorNearOperation = Object.freeze({
5
5
  self: { codecId: MONGO_VECTOR_CODEC_ID },
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.mjs","names":[],"sources":["../../../../3-mongo-target/2-mongo-adapter/dist/index.mjs"],"sourcesContent":["import { a as lowerStage, i as lowerPipeline, n as lowerAggExpr, r as lowerFilter, t as createMongoAdapter } from \"./mongo-adapter-DWNaz2UT.mjs\";\nimport { MONGO_VECTOR_CODEC_ID } from \"@internal/target-mongo/codec-ids\";\n//#region src/core/operations.ts\nconst mongoVectorNearOperation = Object.freeze({\n\tself: { codecId: MONGO_VECTOR_CODEC_ID },\n\timpl: () => void 0\n});\nconst mongoVectorOperationDescriptors = { near: mongoVectorNearOperation };\n//#endregion\nexport { createMongoAdapter, lowerAggExpr, lowerFilter, lowerPipeline, lowerStage, mongoVectorNearOperation, mongoVectorOperationDescriptors };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;AAGA,MAAM,2BAA2B,OAAO,OAAO;CAC9C,MAAM,EAAE,SAAS,sBAAsB;CACvC,YAAY,KAAK;AAClB,CAAC;AACD,MAAM,kCAAkC,EAAE,MAAM,yBAAyB"}
1
+ {"version":3,"file":"adapter.mjs","names":[],"sources":["../../../../3-mongo-target/2-mongo-adapter/dist/index.mjs"],"sourcesContent":["import { a as lowerStage, i as lowerPipeline, n as lowerAggExpr, r as lowerFilter, t as createMongoAdapter } from \"./mongo-adapter-Bo6ciURK.mjs\";\nimport { MONGO_VECTOR_CODEC_ID } from \"@internal/target-mongo/codec-ids\";\n//#region src/core/operations.ts\nconst mongoVectorNearOperation = Object.freeze({\n\tself: { codecId: MONGO_VECTOR_CODEC_ID },\n\timpl: () => void 0\n});\nconst mongoVectorOperationDescriptors = { near: mongoVectorNearOperation };\n//#endregion\nexport { createMongoAdapter, lowerAggExpr, lowerFilter, lowerPipeline, lowerStage, mongoVectorNearOperation, mongoVectorOperationDescriptors };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;AAGA,MAAM,2BAA2B,OAAO,OAAO;CAC9C,MAAM,EAAE,SAAS,sBAAsB;CACvC,YAAY,KAAK;AAClB,CAAC;AACD,MAAM,kCAAkC,EAAE,MAAM,yBAAyB"}
@@ -1,8 +1,8 @@
1
1
  import { a as MONGO_DECIMAL128_CODEC_ID, c as MONGO_INT64_CODEC_ID, d as MONGO_OBJECTID_CODEC_ID, f as MONGO_STRING_CODEC_ID, i as MONGO_DATE_CODEC_ID, l as MONGO_INT64_NUMBER_CODEC_ID, n as MONGO_BOOLEAN_CODEC_ID, o as MONGO_DOUBLE_CODEC_ID, r as MONGO_BSON_CODEC_ID, s as MONGO_INT32_CODEC_ID, t as MONGO_BINARY_CODEC_ID, u as MONGO_JSON_CODEC_ID } from "./codec-ids-WdrumsYA-BkQfspmL.mjs";
2
- import { t as createMongoAdapter } from "./mongo-adapter-DWNaz2UT-HiI8mJ7J.mjs";
2
+ import { t as createMongoAdapter } from "./mongo-adapter-Bo6ciURK-CtwxEEEl.mjs";
3
3
  import { structuredError } from "@prisma/orm-framework/utils/structured-error";
4
- import { type } from "arktype";
5
4
  import { blindCast } from "@prisma/orm-framework/utils/casts";
5
+ import { type } from "arktype";
6
6
  import { MongoSchemaCollection, MongoSchemaCollectionOptions, MongoSchemaIR, MongoSchemaIndex, MongoSchemaValidator } from "@prisma/orm-family-mongo/schema-ir";
7
7
  import { MongoAggFieldRef, MongoAggLiteral, MongoAggOperator } from "@prisma/orm-family-mongo/query-ast/execution";
8
8
  import { expr, fn } from "@prisma/orm-family-mongo/query-builder";
@@ -1 +1 @@
1
- {"version":3,"file":"adapter__control.mjs","names":["#execute","#adapter","#markerLedgerCollection","#invariantMergeExpr"],"sources":["../../../../3-mongo-target/2-mongo-adapter/dist/control.mjs"],"sourcesContent":["import { t as createMongoAdapter } from \"./mongo-adapter-DWNaz2UT.mjs\";\nimport { MONGO_BINARY_CODEC_ID, MONGO_BOOLEAN_CODEC_ID, MONGO_BSON_CODEC_ID, MONGO_DATE_CODEC_ID, MONGO_DECIMAL128_CODEC_ID, MONGO_DOUBLE_CODEC_ID, MONGO_INT32_CODEC_ID, MONGO_INT64_CODEC_ID, MONGO_INT64_NUMBER_CODEC_ID, MONGO_JSON_CODEC_ID, MONGO_OBJECTID_CODEC_ID, MONGO_STRING_CODEC_ID } from \"@internal/target-mongo/codec-ids\";\nimport { MongoAggFieldRef, MongoAggLiteral, MongoAggOperator } from \"@internal/mongo-query-ast/execution\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { MongoServerError } from \"mongodb\";\nimport { MongoSchemaCollection, MongoSchemaCollectionOptions, MongoSchemaIR, MongoSchemaIndex, MongoSchemaValidator } from \"@internal/mongo-schema-ir\";\nimport { parseMarkerRowSafely, withMarkerReadErrorHandling } from \"@internal/errors/execution\";\nimport { ledgerOriginFromStored } from \"@internal/migration-tools/ledger-origin\";\nimport { expr, fn } from \"@internal/mongo-query-builder\";\nimport { collection } from \"@internal/mongo-query-builder/contract-free\";\nimport { type } from \"arktype\";\n//#region src/core/inspection-executor.ts\n/**\n* Executes the read-only catalog inspections (`listCollections` / `listIndexes`)\n* that migration prechecks/postchecks and operation preview evaluate, directly\n* against `db`. Routing these checks through the adapter's lowering seam is\n* deferred to the `typed-migration-verification-queries` slice.\n*/\nvar MongoInspectionExecutor = class {\n\tdb;\n\tconstructor(db) {\n\t\tthis.db = db;\n\t}\n\tasync listIndexes(cmd) {\n\t\ttry {\n\t\t\treturn await this.db.collection(cmd.collection).listIndexes().toArray();\n\t\t} catch (error) {\n\t\t\tif (error instanceof MongoServerError && error.code === 26) return [];\n\t\t\tthrow error;\n\t\t}\n\t}\n\tasync listCollections(_cmd) {\n\t\treturn this.db.listCollections().toArray();\n\t}\n};\n//#endregion\n//#region src/core/introspect-schema.ts\nconst PRISMA_MIGRATIONS_COLLECTION = \"_prisma_migrations\";\nfunction parseIndexKeys(keySpec) {\n\tconst keys = [];\n\tfor (const [field, direction] of Object.entries(keySpec)) keys.push({\n\t\tfield,\n\t\tdirection\n\t});\n\treturn keys;\n}\n/**\n* Exported for unit tests to exercise the defensive `!key` guard; not part of\n* the public API. Callers in this package use it via the `introspectSchema`\n* pipeline only.\n*/\nfunction isDefaultIdIndex(doc) {\n\tconst key = doc[\"key\"];\n\tif (!key) return false;\n\tconst entries = Object.entries(key);\n\treturn entries.length === 1 && entries[0]?.[0] === \"_id\" && entries[0]?.[1] === 1;\n}\nfunction parseIndex(doc) {\n\tconst keySpec = doc[\"key\"];\n\treturn new MongoSchemaIndex({\n\t\tkeys: parseIndexKeys(keySpec),\n\t\tunique: doc[\"unique\"],\n\t\tsparse: doc[\"sparse\"],\n\t\texpireAfterSeconds: doc[\"expireAfterSeconds\"],\n\t\tpartialFilterExpression: doc[\"partialFilterExpression\"],\n\t\twildcardProjection: doc[\"wildcardProjection\"],\n\t\tcollation: doc[\"collation\"] ? blindCast(doc[\"collation\"]) : void 0,\n\t\tweights: doc[\"weights\"],\n\t\tdefault_language: doc[\"default_language\"],\n\t\tlanguage_override: doc[\"language_override\"]\n\t});\n}\nfunction parseValidator(options) {\n\tconst validator = options[\"validator\"];\n\tif (!validator) return void 0;\n\tconst jsonSchema = validator[\"$jsonSchema\"];\n\tif (!jsonSchema) return void 0;\n\treturn new MongoSchemaValidator({\n\t\tjsonSchema,\n\t\tvalidationLevel: options[\"validationLevel\"] ?? \"strict\",\n\t\tvalidationAction: options[\"validationAction\"] ?? \"error\"\n\t});\n}\nfunction parseCollectionOptions(info) {\n\tconst options = info[\"options\"];\n\tif (!options) return void 0;\n\tconst capped = options[\"capped\"];\n\tconst size = options[\"size\"];\n\tconst max = options[\"max\"];\n\tconst timeseries = options[\"timeseries\"];\n\tconst collation = options[\"collation\"] ? blindCast(options[\"collation\"]) : void 0;\n\tconst changeStreamPreAndPostImages = options[\"changeStreamPreAndPostImages\"];\n\tconst clusteredIndex = options[\"clusteredIndex\"];\n\tif (!(capped || timeseries || collation || changeStreamPreAndPostImages || clusteredIndex)) return void 0;\n\treturn new MongoSchemaCollectionOptions({\n\t\t...capped ? { capped: {\n\t\t\tsize: size ?? 0,\n\t\t\t...max != null ? { max } : {}\n\t\t} } : {},\n\t\t...timeseries ? { timeseries } : {},\n\t\t...collation ? { collation } : {},\n\t\t...changeStreamPreAndPostImages ? { changeStreamPreAndPostImages } : {},\n\t\t...clusteredIndex ? { clusteredIndex } : {}\n\t});\n}\nasync function introspectSchema(db) {\n\tconst collectionInfos = await db.listCollections().toArray();\n\tconst collections = [];\n\tfor (const info of collectionInfos) {\n\t\tconst name = info[\"name\"];\n\t\tconst type = info[\"type\"];\n\t\tif (name === PRISMA_MIGRATIONS_COLLECTION) continue;\n\t\tif (name.startsWith(\"system.\")) continue;\n\t\tif (type === \"view\") continue;\n\t\tconst indexes = (await db.collection(name).listIndexes().toArray()).filter((doc) => !isDefaultIdIndex(doc)).map(parseIndex);\n\t\tconst validator = parseValidator(\"options\" in info ? info[\"options\"] : {});\n\t\tconst options = parseCollectionOptions(info);\n\t\tcollections.push(new MongoSchemaCollection({\n\t\t\tname,\n\t\t\tindexes,\n\t\t\t...validator ? { validator } : {},\n\t\t\t...options ? { options } : {}\n\t\t}));\n\t}\n\treturn new MongoSchemaIR(collections);\n}\n//#endregion\n//#region src/core/errors.ts\nfunction mongoAdapterError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\nfunction describeReceivedValue(value) {\n\tif (value === null) return \"null\";\n\tif (typeof value !== \"object\") return typeof value;\n\treturn `object with keys [${Object.keys(value).join(\", \")}]`;\n}\n//#endregion\n//#region src/core/marker-ledger.ts\nconst COLLECTION = \"_prisma_migrations\";\nconst MONGO_MARKER_COLLECTION = `_prisma_migrations marker documents in ${COLLECTION}`;\nconst MONGO_LEDGER_COLLECTION = `_prisma_migrations ledger documents in ${COLLECTION}`;\nconst MongoMarkerDocSchema = type({\n\tspace: \"string\",\n\tstorageHash: \"string\",\n\tprofileHash: \"string\",\n\t\"contractJson?\": \"unknown | null\",\n\t\"canonicalVersion?\": \"number | null\",\n\t\"updatedAt?\": \"Date\",\n\t\"appTag?\": \"string | null\",\n\t\"meta?\": type({ \"[string]\": \"unknown\" }).or(\"null\"),\n\t\"invariants?\": type(\"string\").array(),\n\t\"+\": \"delete\"\n});\nfunction parseMongoMarkerDoc(doc) {\n\tconst result = MongoMarkerDocSchema(doc);\n\tif (result instanceof type.errors) throw mongoAdapterError(\"CONTRACT.MARKER_ROW_CORRUPT\", `Invalid marker doc on ${COLLECTION}: ${result.summary}`, { meta: {\n\t\tcollection: COLLECTION,\n\t\tdetail: result.summary\n\t} });\n\treturn {\n\t\tstorageHash: result.storageHash,\n\t\tprofileHash: result.profileHash,\n\t\tcontractJson: result.contractJson ?? null,\n\t\tcanonicalVersion: result.canonicalVersion ?? null,\n\t\tupdatedAt: result.updatedAt ?? /* @__PURE__ */ new Date(),\n\t\tappTag: result.appTag ?? null,\n\t\tmeta: result.meta ?? {},\n\t\tinvariants: result.invariants ?? []\n\t};\n}\nfunction parseMongoMarkerDocSafely(doc, space) {\n\treturn parseMarkerRowSafely(doc, parseMongoMarkerDoc, {\n\t\tspace,\n\t\tmarkerLocation: MONGO_MARKER_COLLECTION\n\t});\n}\n//#endregion\n//#region src/core/marker-ledger-collection.ts\nconst MARKER_LEDGER_COLLECTION = \"_prisma_migrations\";\n//#endregion\n//#region src/core/mongo-control-driver.ts\nfunction isMongoControlDriver(driver) {\n\treturn driver.familyId === \"mongo\" && driver.targetId === \"mongo\" && \"execute\" in driver && typeof driver.execute === \"function\";\n}\nfunction requireMongoControlDriver(driver) {\n\tif (!isMongoControlDriver(driver)) throw mongoAdapterError(\"CONFIG.VALIDATION_FAILED\", \"Expected a Mongo control driver created by mongoControlDriver.create() from `@internal/driver-mongo/control`.\", { meta: { received: describeReceivedValue(driver) } });\n\treturn driver;\n}\nfunction extractDb(driver) {\n\treturn requireMongoControlDriver(driver).db;\n}\n//#endregion\n//#region src/core/mongo-control-adapter.ts\n/**\n* Mongo control adapter for control-plane operations like introspection\n* and marker-ledger CAS. Implements the family-level `MongoControlAdapter`\n* SPI. Every marker/ledger operation builds a canonical command inline via\n* the contract-free fluent builder and dispatches it through the family\n* adapter's lowering path (`createMongoAdapter().lower(plan, {})`) onto the\n* Mongo wire transport (`driver.execute(wireCommand)`) — the same route SQL\n* marker/ledger ops take through `adapter.lower()` → `driver.query()`.\n*/\nvar MongoControlAdapterImpl = class {\n\tfamilyId = \"mongo\";\n\ttargetId = \"mongo\";\n\t#adapter = createMongoAdapter();\n\t#markerLedgerCollection = collection(MARKER_LEDGER_COLLECTION);\n\tasync #execute(driver, command) {\n\t\tconst plan = {\n\t\t\tcollection: MARKER_LEDGER_COLLECTION,\n\t\t\tcommand,\n\t\t\tmeta: {\n\t\t\t\ttarget: \"mongo\",\n\t\t\t\ttargetFamily: \"mongo\",\n\t\t\t\tstorageHash: \"\",\n\t\t\t\tlane: \"control\"\n\t\t\t}\n\t\t};\n\t\tconst wireCommand = await this.#adapter.lower(plan, {});\n\t\tif (!isMongoControlDriver(driver)) throw mongoAdapterError(\"CONFIG.VALIDATION_FAILED\", \"Mongo control adapter requires a Mongo control driver with an execute() transport. Provide a MongoControlDriver from `@internal/driver-mongo/control`.\", { meta: { received: describeReceivedValue(driver) } });\n\t\tconst rows = [];\n\t\tfor await (const row of driver.execute(wireCommand)) rows.push(row);\n\t\treturn rows;\n\t}\n\tasync executeDdl(driver, command) {\n\t\tconst wire = await this.#adapter.lower({ command }, {});\n\t\tawait driver.run(wire);\n\t}\n\t/**\n\t* Server-side invariant-merge aggregation expression:\n\t* `$sortArray({ input: $setUnion([$ifNull('$invariants', []), incoming]), sortBy: 1 })`.\n\t*\n\t* Built through the typed agg-expr layer — `fn.setUnion` plus the generic\n\t* `MongoAggOperator` for `$ifNull` / `$sortArray` (neither has a named `fn`\n\t* helper). Returns a `MongoAggOperator` that is passed directly to\n\t* `f.stage.set({ invariants: ... })` in the update pipeline.\n\t*/\n\t#invariantMergeExpr(incoming) {\n\t\tconst existingOrEmpty = MongoAggOperator.of(\"$ifNull\", [MongoAggFieldRef.of(\"invariants\"), MongoAggLiteral.of([])]);\n\t\tconst merged = fn.setUnion({\n\t\t\t_field: {\n\t\t\t\tcodecId: \"mongo/array@1\",\n\t\t\t\tnullable: false\n\t\t\t},\n\t\t\tnode: existingOrEmpty\n\t\t}, {\n\t\t\t_field: {\n\t\t\t\tcodecId: \"mongo/array@1\",\n\t\t\t\tnullable: false\n\t\t\t},\n\t\t\tnode: MongoAggLiteral.of([...incoming])\n\t\t});\n\t\treturn MongoAggOperator.of(\"$sortArray\", {\n\t\t\tinput: merged.node,\n\t\t\tsortBy: MongoAggLiteral.of(1)\n\t\t});\n\t}\n\tasync readMarker(driver, space) {\n\t\tconst doc = (await withMarkerReadErrorHandling(() => this.#execute(driver, this.#markerLedgerCollection.aggregate().match((f) => f._id.eq(space)).match((f) => f.space.eq(space)).limit(1).build()), {\n\t\t\tspace,\n\t\t\tmarkerLocation: MONGO_MARKER_COLLECTION\n\t\t}))[0];\n\t\tif (!doc) return null;\n\t\treturn parseMongoMarkerDocSafely(doc, space);\n\t}\n\tasync readAllMarkers(driver) {\n\t\tconst docs = await withMarkerReadErrorHandling(() => this.#execute(driver, this.#markerLedgerCollection.aggregate().match((f) => f._id.type(\"string\")).match((f) => f.space.type(\"string\")).match((f) => expr(fn.eq(f._id, f.space))).build()), {\n\t\t\tspace: \"app\",\n\t\t\tmarkerLocation: MONGO_MARKER_COLLECTION\n\t\t});\n\t\tconst out = /* @__PURE__ */ new Map();\n\t\tfor (const doc of docs) {\n\t\t\tconst space = doc[\"space\"];\n\t\t\t/* v8 ignore next -- @preserve type-narrowing guard: the $match stage above filters on `space: { $type: 'string' }`, so this branch is unreachable at runtime. The check exists so the `out.set(space, ...)` call below can accept `string`. */\n\t\t\tif (typeof space !== \"string\") continue;\n\t\t\tout.set(space, parseMongoMarkerDocSafely(doc, space));\n\t\t}\n\t\treturn out;\n\t}\n\tasync initMarker(driver, space, destination) {\n\t\tconst document = {\n\t\t\t_id: space,\n\t\t\tspace,\n\t\t\tstorageHash: destination.storageHash,\n\t\t\tprofileHash: destination.profileHash,\n\t\t\tcontractJson: null,\n\t\t\tcanonicalVersion: null,\n\t\t\tupdatedAt: /* @__PURE__ */ new Date(),\n\t\t\tappTag: null,\n\t\t\tmeta: {},\n\t\t\tinvariants: [...destination.invariants ?? []]\n\t\t};\n\t\tawait this.#execute(driver, this.#markerLedgerCollection.insertOne(document));\n\t}\n\tasync updateMarker(driver, space, expectedFrom, destination) {\n\t\tconst { invariants } = destination;\n\t\treturn (await this.#execute(driver, this.#markerLedgerCollection.match((f) => f._id.eq(space)).match((f) => f.space.eq(space)).match((f) => f.storageHash.eq(expectedFrom)).findOneAndUpdate((f) => [f.stage.set(invariants === void 0 ? {\n\t\t\tstorageHash: MongoAggLiteral.of(destination.storageHash),\n\t\t\tprofileHash: MongoAggLiteral.of(destination.profileHash),\n\t\t\tupdatedAt: MongoAggLiteral.of(/* @__PURE__ */ new Date())\n\t\t} : {\n\t\t\tstorageHash: MongoAggLiteral.of(destination.storageHash),\n\t\t\tprofileHash: MongoAggLiteral.of(destination.profileHash),\n\t\t\tupdatedAt: MongoAggLiteral.of(/* @__PURE__ */ new Date()),\n\t\t\tinvariants: this.#invariantMergeExpr(invariants)\n\t\t})], { upsert: false }))).length > 0;\n\t}\n\tasync writeLedgerEntry(driver, space, entry) {\n\t\tconst document = {\n\t\t\ttype: \"ledger\",\n\t\t\tspace,\n\t\t\tedgeId: entry.edgeId,\n\t\t\tfrom: entry.from,\n\t\t\tto: entry.to,\n\t\t\tmigrationName: entry.migrationName,\n\t\t\tmigrationHash: entry.migrationHash,\n\t\t\toperations: blindCast(entry.operations),\n\t\t\tappliedAt: /* @__PURE__ */ new Date()\n\t\t};\n\t\tawait this.#execute(driver, this.#markerLedgerCollection.insertOne(document));\n\t}\n\tasync readLedger(driver, space) {\n\t\tconst ledgerContext = {\n\t\t\tspace: space ?? \"*\",\n\t\t\tmarkerLocation: MONGO_LEDGER_COLLECTION\n\t\t};\n\t\tconst chain = this.#markerLedgerCollection.aggregate().match((f) => f.type.eq(\"ledger\"));\n\t\tconst command = space === void 0 ? chain.sort({ _id: 1 }).build() : chain.match((f) => f.space.eq(space)).sort({ _id: 1 }).build();\n\t\tconst docs = await withMarkerReadErrorHandling(() => this.#execute(driver, command), ledgerContext);\n\t\tconst entries = [];\n\t\tfor (const doc of docs) {\n\t\t\tconst migrationName = doc[\"migrationName\"];\n\t\t\tconst migrationHash = doc[\"migrationHash\"];\n\t\t\tconst from = doc[\"from\"];\n\t\t\tconst to = doc[\"to\"];\n\t\t\tconst docSpace = doc[\"space\"];\n\t\t\tif (typeof migrationName !== \"string\" || typeof migrationHash !== \"string\") continue;\n\t\t\tif (typeof from !== \"string\" || typeof to !== \"string\") continue;\n\t\t\tif (typeof docSpace !== \"string\") continue;\n\t\t\tconst appliedAt = doc[\"appliedAt\"];\n\t\t\tconst appliedAtDate = appliedAt instanceof Date ? appliedAt : appliedAt !== void 0 ? new Date(String(appliedAt)) : /* @__PURE__ */ new Date();\n\t\t\tconst operations = doc[\"operations\"];\n\t\t\tconst opList = Array.isArray(operations) ? operations : [];\n\t\t\tentries.push({\n\t\t\t\tspace: docSpace,\n\t\t\t\tmigrationName,\n\t\t\t\tmigrationHash,\n\t\t\t\tfrom: ledgerOriginFromStored(from),\n\t\t\t\tto,\n\t\t\t\tappliedAt: appliedAtDate,\n\t\t\t\toperationCount: opList.length\n\t\t\t});\n\t\t}\n\t\treturn entries;\n\t}\n\tasync introspectSchema(driver) {\n\t\treturn introspectSchema(extractDb(driver));\n\t}\n\tcreateRunnerDependencies(driver) {\n\t\tconst controlDriver = requireMongoControlDriver(driver);\n\t\treturn {\n\t\t\tinspectionExecutor: new MongoInspectionExecutor(controlDriver.db),\n\t\t\tadapter: this.#adapter,\n\t\t\tdriver: controlDriver,\n\t\t\texecuteDdl: (command) => this.executeDdl(controlDriver, command),\n\t\t\tmarkerOps: {\n\t\t\t\treadMarker: (space) => this.readMarker(controlDriver, space),\n\t\t\t\tinitMarker: (space, destination) => this.initMarker(controlDriver, space, destination),\n\t\t\t\tupdateMarker: (space, expectedFrom, destination) => this.updateMarker(controlDriver, space, expectedFrom, destination),\n\t\t\t\twriteLedgerEntry: (space, entry) => this.writeLedgerEntry(controlDriver, space, entry)\n\t\t\t},\n\t\t\tintrospectSchema: () => this.introspectSchema(controlDriver)\n\t\t};\n\t}\n};\n//#endregion\n//#region src/exports/control.ts\n/**\n* The base PSL scalars as zero-arg type constructors in the unified authoring channel. Each names a codec; the collection validator reads the BSON types from the data type the codec represents, not from the constructor.\n*/\nconst mongoScalarAuthoringTypes = {\n\tString: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Text, stored as BSON string.\",\n\t\toutput: { codecId: MONGO_STRING_CODEC_ID }\n\t},\n\tInt32: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A signed 32-bit integer, stored as BSON int.\",\n\t\toutput: { codecId: MONGO_INT32_CODEC_ID }\n\t},\n\tBool: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A true or false value, stored as BSON bool.\",\n\t\toutput: { codecId: MONGO_BOOLEAN_CODEC_ID }\n\t},\n\tDate: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A date and time with millisecond precision, stored as BSON date.\",\n\t\toutput: { codecId: MONGO_DATE_CODEC_ID }\n\t},\n\tObjectId: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A 12-byte MongoDB identifier, stored as BSON objectId.\",\n\t\toutput: { codecId: MONGO_OBJECTID_CODEC_ID }\n\t},\n\tDouble: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A double-precision floating-point number, stored as BSON double.\",\n\t\toutput: { codecId: MONGO_DOUBLE_CODEC_ID }\n\t},\n\tInt64: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A signed 64-bit integer read as a bigint, stored as BSON long.\",\n\t\toutput: { codecId: MONGO_INT64_CODEC_ID }\n\t},\n\tInt64Number: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A signed 64-bit integer read as a JavaScript number within its safe integer range, stored as BSON long.\",\n\t\toutput: { codecId: MONGO_INT64_NUMBER_CODEC_ID }\n\t},\n\tDecimal128: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A 128-bit decimal read as decimal text without an exponent, stored as BSON decimal.\",\n\t\toutput: { codecId: MONGO_DECIMAL128_CODEC_ID }\n\t},\n\tBinary: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Bytes read as a Uint8Array, stored as BSON binData.\",\n\t\toutput: { codecId: MONGO_BINARY_CODEC_ID }\n\t},\n\tJson: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A JSON value, stored as BSON object, array, string, double, int, long, bool or null; the collection validator admits only those types at the top level, and the codec refuses anything else at any depth.\",\n\t\toutput: { codecId: MONGO_JSON_CODEC_ID }\n\t},\n\tBson: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Any BSON value, read as BsonValue; the collection validator does not constrain it.\",\n\t\toutput: { codecId: MONGO_BSON_CODEC_ID }\n\t},\n\tInt: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Deprecated: use Int32. A signed 32-bit integer, stored as BSON int.\",\n\t\toutput: { codecId: MONGO_INT32_CODEC_ID },\n\t\tdeprecated: { replacement: \"Int32\" }\n\t},\n\tFloat: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Deprecated: use Double. A double-precision floating-point number, stored as BSON double.\",\n\t\toutput: { codecId: MONGO_DOUBLE_CODEC_ID },\n\t\tdeprecated: { replacement: \"Double\" }\n\t},\n\tBoolean: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Deprecated: use Bool. A true or false value, stored as BSON bool.\",\n\t\toutput: { codecId: MONGO_BOOLEAN_CODEC_ID },\n\t\tdeprecated: { replacement: \"Bool\" }\n\t},\n\tDateTime: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Deprecated: use Date. A date and time with millisecond precision, stored as BSON date.\",\n\t\toutput: { codecId: MONGO_DATE_CODEC_ID },\n\t\tdeprecated: { replacement: \"Date\" }\n\t}\n};\nconst mongoAdapterDescriptor = {\n\tkind: \"adapter\",\n\tid: \"mongo\",\n\tfamilyId: \"mongo\",\n\ttargetId: \"mongo\",\n\tversion: \"0.0.1\",\n\tauthoring: { type: mongoScalarAuthoringTypes },\n\ttypes: { codecTypes: {\n\t\timport: {\n\t\t\tpackage: \"@internal/target-mongo/codec-types\",\n\t\t\tnamed: \"CodecTypes\",\n\t\t\talias: \"MongoCodecTypes\"\n\t\t},\n\t\ttypeImports: [{\n\t\t\tpackage: \"@internal/target-mongo/codec-types\",\n\t\t\tnamed: \"Vector\",\n\t\t\talias: \"Vector\"\n\t\t}]\n\t} },\n\tcreate(_stack) {\n\t\treturn new MongoControlAdapterImpl();\n\t}\n};\n//#endregion\nexport { MongoControlAdapterImpl, MongoInspectionExecutor, createMongoAdapter, mongoAdapterDescriptor as default, mongoAdapterDescriptor, extractDb, introspectSchema, isMongoControlDriver, mongoScalarAuthoringTypes };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"adapter__control.mjs","names":["#execute","#adapter","#markerLedgerCollection","#invariantMergeExpr"],"sources":["../../../../3-mongo-target/2-mongo-adapter/dist/control.mjs"],"sourcesContent":["import { t as createMongoAdapter } from \"./mongo-adapter-Bo6ciURK.mjs\";\nimport { MONGO_BINARY_CODEC_ID, MONGO_BOOLEAN_CODEC_ID, MONGO_BSON_CODEC_ID, MONGO_DATE_CODEC_ID, MONGO_DECIMAL128_CODEC_ID, MONGO_DOUBLE_CODEC_ID, MONGO_INT32_CODEC_ID, MONGO_INT64_CODEC_ID, MONGO_INT64_NUMBER_CODEC_ID, MONGO_JSON_CODEC_ID, MONGO_OBJECTID_CODEC_ID, MONGO_STRING_CODEC_ID } from \"@internal/target-mongo/codec-ids\";\nimport { MongoAggFieldRef, MongoAggLiteral, MongoAggOperator } from \"@internal/mongo-query-ast/execution\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { MongoServerError } from \"mongodb\";\nimport { MongoSchemaCollection, MongoSchemaCollectionOptions, MongoSchemaIR, MongoSchemaIndex, MongoSchemaValidator } from \"@internal/mongo-schema-ir\";\nimport { parseMarkerRowSafely, withMarkerReadErrorHandling } from \"@internal/errors/execution\";\nimport { ledgerOriginFromStored } from \"@internal/migration-tools/ledger-origin\";\nimport { expr, fn } from \"@internal/mongo-query-builder\";\nimport { collection } from \"@internal/mongo-query-builder/contract-free\";\nimport { type } from \"arktype\";\n//#region src/core/inspection-executor.ts\n/**\n* Executes the read-only catalog inspections (`listCollections` / `listIndexes`)\n* that migration prechecks/postchecks and operation preview evaluate, directly\n* against `db`. Routing these checks through the adapter's lowering seam is\n* deferred to the `typed-migration-verification-queries` slice.\n*/\nvar MongoInspectionExecutor = class {\n\tdb;\n\tconstructor(db) {\n\t\tthis.db = db;\n\t}\n\tasync listIndexes(cmd) {\n\t\ttry {\n\t\t\treturn await this.db.collection(cmd.collection).listIndexes().toArray();\n\t\t} catch (error) {\n\t\t\tif (error instanceof MongoServerError && error.code === 26) return [];\n\t\t\tthrow error;\n\t\t}\n\t}\n\tasync listCollections(_cmd) {\n\t\treturn this.db.listCollections().toArray();\n\t}\n};\n//#endregion\n//#region src/core/introspect-schema.ts\nconst PRISMA_MIGRATIONS_COLLECTION = \"_prisma_migrations\";\nfunction parseIndexKeys(keySpec) {\n\tconst keys = [];\n\tfor (const [field, direction] of Object.entries(keySpec)) keys.push({\n\t\tfield,\n\t\tdirection\n\t});\n\treturn keys;\n}\n/**\n* Exported for unit tests to exercise the defensive `!key` guard; not part of\n* the public API. Callers in this package use it via the `introspectSchema`\n* pipeline only.\n*/\nfunction isDefaultIdIndex(doc) {\n\tconst key = doc[\"key\"];\n\tif (!key) return false;\n\tconst entries = Object.entries(key);\n\treturn entries.length === 1 && entries[0]?.[0] === \"_id\" && entries[0]?.[1] === 1;\n}\nfunction parseIndex(doc) {\n\tconst keySpec = doc[\"key\"];\n\treturn new MongoSchemaIndex({\n\t\tkeys: parseIndexKeys(keySpec),\n\t\tunique: doc[\"unique\"],\n\t\tsparse: doc[\"sparse\"],\n\t\texpireAfterSeconds: doc[\"expireAfterSeconds\"],\n\t\tpartialFilterExpression: doc[\"partialFilterExpression\"],\n\t\twildcardProjection: doc[\"wildcardProjection\"],\n\t\tcollation: doc[\"collation\"] ? blindCast(doc[\"collation\"]) : void 0,\n\t\tweights: doc[\"weights\"],\n\t\tdefault_language: doc[\"default_language\"],\n\t\tlanguage_override: doc[\"language_override\"]\n\t});\n}\nfunction parseValidator(options) {\n\tconst validator = options[\"validator\"];\n\tif (!validator) return void 0;\n\tconst jsonSchema = validator[\"$jsonSchema\"];\n\tif (!jsonSchema) return void 0;\n\treturn new MongoSchemaValidator({\n\t\tjsonSchema,\n\t\tvalidationLevel: options[\"validationLevel\"] ?? \"strict\",\n\t\tvalidationAction: options[\"validationAction\"] ?? \"error\"\n\t});\n}\nfunction parseCollectionOptions(info) {\n\tconst options = info[\"options\"];\n\tif (!options) return void 0;\n\tconst capped = options[\"capped\"];\n\tconst size = options[\"size\"];\n\tconst max = options[\"max\"];\n\tconst timeseries = options[\"timeseries\"];\n\tconst collation = options[\"collation\"] ? blindCast(options[\"collation\"]) : void 0;\n\tconst changeStreamPreAndPostImages = options[\"changeStreamPreAndPostImages\"];\n\tconst clusteredIndex = options[\"clusteredIndex\"];\n\tif (!(capped || timeseries || collation || changeStreamPreAndPostImages || clusteredIndex)) return void 0;\n\treturn new MongoSchemaCollectionOptions({\n\t\t...capped ? { capped: {\n\t\t\tsize: size ?? 0,\n\t\t\t...max != null ? { max } : {}\n\t\t} } : {},\n\t\t...timeseries ? { timeseries } : {},\n\t\t...collation ? { collation } : {},\n\t\t...changeStreamPreAndPostImages ? { changeStreamPreAndPostImages } : {},\n\t\t...clusteredIndex ? { clusteredIndex } : {}\n\t});\n}\nasync function introspectSchema(db) {\n\tconst collectionInfos = await db.listCollections().toArray();\n\tconst collections = [];\n\tfor (const info of collectionInfos) {\n\t\tconst name = info[\"name\"];\n\t\tconst type = info[\"type\"];\n\t\tif (name === PRISMA_MIGRATIONS_COLLECTION) continue;\n\t\tif (name.startsWith(\"system.\")) continue;\n\t\tif (type === \"view\") continue;\n\t\tconst indexes = (await db.collection(name).listIndexes().toArray()).filter((doc) => !isDefaultIdIndex(doc)).map(parseIndex);\n\t\tconst validator = parseValidator(\"options\" in info ? info[\"options\"] : {});\n\t\tconst options = parseCollectionOptions(info);\n\t\tcollections.push(new MongoSchemaCollection({\n\t\t\tname,\n\t\t\tindexes,\n\t\t\t...validator ? { validator } : {},\n\t\t\t...options ? { options } : {}\n\t\t}));\n\t}\n\treturn new MongoSchemaIR(collections);\n}\n//#endregion\n//#region src/core/errors.ts\nfunction mongoAdapterError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\nfunction describeReceivedValue(value) {\n\tif (value === null) return \"null\";\n\tif (typeof value !== \"object\") return typeof value;\n\treturn `object with keys [${Object.keys(value).join(\", \")}]`;\n}\n//#endregion\n//#region src/core/marker-ledger.ts\nconst COLLECTION = \"_prisma_migrations\";\nconst MONGO_MARKER_COLLECTION = `_prisma_migrations marker documents in ${COLLECTION}`;\nconst MONGO_LEDGER_COLLECTION = `_prisma_migrations ledger documents in ${COLLECTION}`;\nconst MongoMarkerDocSchema = type({\n\tspace: \"string\",\n\tstorageHash: \"string\",\n\tprofileHash: \"string\",\n\t\"contractJson?\": \"unknown | null\",\n\t\"canonicalVersion?\": \"number | null\",\n\t\"updatedAt?\": \"Date\",\n\t\"appTag?\": \"string | null\",\n\t\"meta?\": type({ \"[string]\": \"unknown\" }).or(\"null\"),\n\t\"invariants?\": type(\"string\").array(),\n\t\"+\": \"delete\"\n});\nfunction parseMongoMarkerDoc(doc) {\n\tconst result = MongoMarkerDocSchema(doc);\n\tif (result instanceof type.errors) throw mongoAdapterError(\"CONTRACT.MARKER_ROW_CORRUPT\", `Invalid marker doc on ${COLLECTION}: ${result.summary}`, { meta: {\n\t\tcollection: COLLECTION,\n\t\tdetail: result.summary\n\t} });\n\treturn {\n\t\tstorageHash: result.storageHash,\n\t\tprofileHash: result.profileHash,\n\t\tcontractJson: result.contractJson ?? null,\n\t\tcanonicalVersion: result.canonicalVersion ?? null,\n\t\tupdatedAt: result.updatedAt ?? /* @__PURE__ */ new Date(),\n\t\tappTag: result.appTag ?? null,\n\t\tmeta: result.meta ?? {},\n\t\tinvariants: result.invariants ?? []\n\t};\n}\nfunction parseMongoMarkerDocSafely(doc, space) {\n\treturn parseMarkerRowSafely(doc, parseMongoMarkerDoc, {\n\t\tspace,\n\t\tmarkerLocation: MONGO_MARKER_COLLECTION\n\t});\n}\n//#endregion\n//#region src/core/marker-ledger-collection.ts\nconst MARKER_LEDGER_COLLECTION = \"_prisma_migrations\";\n//#endregion\n//#region src/core/mongo-control-driver.ts\nfunction isMongoControlDriver(driver) {\n\treturn driver.familyId === \"mongo\" && driver.targetId === \"mongo\" && \"execute\" in driver && typeof driver.execute === \"function\";\n}\nfunction requireMongoControlDriver(driver) {\n\tif (!isMongoControlDriver(driver)) throw mongoAdapterError(\"CONFIG.VALIDATION_FAILED\", \"Expected a Mongo control driver created by mongoControlDriver.create() from `@internal/driver-mongo/control`.\", { meta: { received: describeReceivedValue(driver) } });\n\treturn driver;\n}\nfunction extractDb(driver) {\n\treturn requireMongoControlDriver(driver).db;\n}\n//#endregion\n//#region src/core/mongo-control-adapter.ts\n/**\n* Mongo control adapter for control-plane operations like introspection\n* and marker-ledger CAS. Implements the family-level `MongoControlAdapter`\n* SPI. Every marker/ledger operation builds a canonical command inline via\n* the contract-free fluent builder and dispatches it through the family\n* adapter's lowering path (`createMongoAdapter().lower(plan, {})`) onto the\n* Mongo wire transport (`driver.execute(wireCommand)`) — the same route SQL\n* marker/ledger ops take through `adapter.lower()` → `driver.query()`.\n*/\nvar MongoControlAdapterImpl = class {\n\tfamilyId = \"mongo\";\n\ttargetId = \"mongo\";\n\t#adapter = createMongoAdapter();\n\t#markerLedgerCollection = collection(MARKER_LEDGER_COLLECTION);\n\tasync #execute(driver, command) {\n\t\tconst plan = {\n\t\t\tcollection: MARKER_LEDGER_COLLECTION,\n\t\t\tcommand,\n\t\t\tmeta: {\n\t\t\t\ttarget: \"mongo\",\n\t\t\t\ttargetFamily: \"mongo\",\n\t\t\t\tstorageHash: \"\",\n\t\t\t\tlane: \"control\"\n\t\t\t}\n\t\t};\n\t\tconst wireCommand = await this.#adapter.lower(plan, {});\n\t\tif (!isMongoControlDriver(driver)) throw mongoAdapterError(\"CONFIG.VALIDATION_FAILED\", \"Mongo control adapter requires a Mongo control driver with an execute() transport. Provide a MongoControlDriver from `@internal/driver-mongo/control`.\", { meta: { received: describeReceivedValue(driver) } });\n\t\tconst rows = [];\n\t\tfor await (const row of driver.execute(wireCommand)) rows.push(row);\n\t\treturn rows;\n\t}\n\tasync executeDdl(driver, command) {\n\t\tconst wire = await this.#adapter.lower({ command }, {});\n\t\tawait driver.run(wire);\n\t}\n\t/**\n\t* Server-side invariant-merge aggregation expression:\n\t* `$sortArray({ input: $setUnion([$ifNull('$invariants', []), incoming]), sortBy: 1 })`.\n\t*\n\t* Built through the typed agg-expr layer — `fn.setUnion` plus the generic\n\t* `MongoAggOperator` for `$ifNull` / `$sortArray` (neither has a named `fn`\n\t* helper). Returns a `MongoAggOperator` that is passed directly to\n\t* `f.stage.set({ invariants: ... })` in the update pipeline.\n\t*/\n\t#invariantMergeExpr(incoming) {\n\t\tconst existingOrEmpty = MongoAggOperator.of(\"$ifNull\", [MongoAggFieldRef.of(\"invariants\"), MongoAggLiteral.of([])]);\n\t\tconst merged = fn.setUnion({\n\t\t\t_field: {\n\t\t\t\tcodecId: \"mongo/array@1\",\n\t\t\t\tnullable: false\n\t\t\t},\n\t\t\tnode: existingOrEmpty\n\t\t}, {\n\t\t\t_field: {\n\t\t\t\tcodecId: \"mongo/array@1\",\n\t\t\t\tnullable: false\n\t\t\t},\n\t\t\tnode: MongoAggLiteral.of([...incoming])\n\t\t});\n\t\treturn MongoAggOperator.of(\"$sortArray\", {\n\t\t\tinput: merged.node,\n\t\t\tsortBy: MongoAggLiteral.of(1)\n\t\t});\n\t}\n\tasync readMarker(driver, space) {\n\t\tconst doc = (await withMarkerReadErrorHandling(() => this.#execute(driver, this.#markerLedgerCollection.aggregate().match((f) => f._id.eq(space)).match((f) => f.space.eq(space)).limit(1).build()), {\n\t\t\tspace,\n\t\t\tmarkerLocation: MONGO_MARKER_COLLECTION\n\t\t}))[0];\n\t\tif (!doc) return null;\n\t\treturn parseMongoMarkerDocSafely(doc, space);\n\t}\n\tasync readAllMarkers(driver) {\n\t\tconst docs = await withMarkerReadErrorHandling(() => this.#execute(driver, this.#markerLedgerCollection.aggregate().match((f) => f._id.type(\"string\")).match((f) => f.space.type(\"string\")).match((f) => expr(fn.eq(f._id, f.space))).build()), {\n\t\t\tspace: \"app\",\n\t\t\tmarkerLocation: MONGO_MARKER_COLLECTION\n\t\t});\n\t\tconst out = /* @__PURE__ */ new Map();\n\t\tfor (const doc of docs) {\n\t\t\tconst space = doc[\"space\"];\n\t\t\t/* v8 ignore next -- @preserve type-narrowing guard: the $match stage above filters on `space: { $type: 'string' }`, so this branch is unreachable at runtime. The check exists so the `out.set(space, ...)` call below can accept `string`. */\n\t\t\tif (typeof space !== \"string\") continue;\n\t\t\tout.set(space, parseMongoMarkerDocSafely(doc, space));\n\t\t}\n\t\treturn out;\n\t}\n\tasync initMarker(driver, space, destination) {\n\t\tconst document = {\n\t\t\t_id: space,\n\t\t\tspace,\n\t\t\tstorageHash: destination.storageHash,\n\t\t\tprofileHash: destination.profileHash,\n\t\t\tcontractJson: null,\n\t\t\tcanonicalVersion: null,\n\t\t\tupdatedAt: /* @__PURE__ */ new Date(),\n\t\t\tappTag: null,\n\t\t\tmeta: {},\n\t\t\tinvariants: [...destination.invariants ?? []]\n\t\t};\n\t\tawait this.#execute(driver, this.#markerLedgerCollection.insertOne(document));\n\t}\n\tasync updateMarker(driver, space, expectedFrom, destination) {\n\t\tconst { invariants } = destination;\n\t\treturn (await this.#execute(driver, this.#markerLedgerCollection.match((f) => f._id.eq(space)).match((f) => f.space.eq(space)).match((f) => f.storageHash.eq(expectedFrom)).findOneAndUpdate((f) => [f.stage.set(invariants === void 0 ? {\n\t\t\tstorageHash: MongoAggLiteral.of(destination.storageHash),\n\t\t\tprofileHash: MongoAggLiteral.of(destination.profileHash),\n\t\t\tupdatedAt: MongoAggLiteral.of(/* @__PURE__ */ new Date())\n\t\t} : {\n\t\t\tstorageHash: MongoAggLiteral.of(destination.storageHash),\n\t\t\tprofileHash: MongoAggLiteral.of(destination.profileHash),\n\t\t\tupdatedAt: MongoAggLiteral.of(/* @__PURE__ */ new Date()),\n\t\t\tinvariants: this.#invariantMergeExpr(invariants)\n\t\t})], { upsert: false }))).length > 0;\n\t}\n\tasync writeLedgerEntry(driver, space, entry) {\n\t\tconst document = {\n\t\t\ttype: \"ledger\",\n\t\t\tspace,\n\t\t\tedgeId: entry.edgeId,\n\t\t\tfrom: entry.from,\n\t\t\tto: entry.to,\n\t\t\tmigrationName: entry.migrationName,\n\t\t\tmigrationHash: entry.migrationHash,\n\t\t\toperations: blindCast(entry.operations),\n\t\t\tappliedAt: /* @__PURE__ */ new Date()\n\t\t};\n\t\tawait this.#execute(driver, this.#markerLedgerCollection.insertOne(document));\n\t}\n\tasync readLedger(driver, space) {\n\t\tconst ledgerContext = {\n\t\t\tspace: space ?? \"*\",\n\t\t\tmarkerLocation: MONGO_LEDGER_COLLECTION\n\t\t};\n\t\tconst chain = this.#markerLedgerCollection.aggregate().match((f) => f.type.eq(\"ledger\"));\n\t\tconst command = space === void 0 ? chain.sort({ _id: 1 }).build() : chain.match((f) => f.space.eq(space)).sort({ _id: 1 }).build();\n\t\tconst docs = await withMarkerReadErrorHandling(() => this.#execute(driver, command), ledgerContext);\n\t\tconst entries = [];\n\t\tfor (const doc of docs) {\n\t\t\tconst migrationName = doc[\"migrationName\"];\n\t\t\tconst migrationHash = doc[\"migrationHash\"];\n\t\t\tconst from = doc[\"from\"];\n\t\t\tconst to = doc[\"to\"];\n\t\t\tconst docSpace = doc[\"space\"];\n\t\t\tif (typeof migrationName !== \"string\" || typeof migrationHash !== \"string\") continue;\n\t\t\tif (typeof from !== \"string\" || typeof to !== \"string\") continue;\n\t\t\tif (typeof docSpace !== \"string\") continue;\n\t\t\tconst appliedAt = doc[\"appliedAt\"];\n\t\t\tconst appliedAtDate = appliedAt instanceof Date ? appliedAt : appliedAt !== void 0 ? new Date(String(appliedAt)) : /* @__PURE__ */ new Date();\n\t\t\tconst operations = doc[\"operations\"];\n\t\t\tconst opList = Array.isArray(operations) ? operations : [];\n\t\t\tentries.push({\n\t\t\t\tspace: docSpace,\n\t\t\t\tmigrationName,\n\t\t\t\tmigrationHash,\n\t\t\t\tfrom: ledgerOriginFromStored(from),\n\t\t\t\tto,\n\t\t\t\tappliedAt: appliedAtDate,\n\t\t\t\toperationCount: opList.length\n\t\t\t});\n\t\t}\n\t\treturn entries;\n\t}\n\tasync introspectSchema(driver) {\n\t\treturn introspectSchema(extractDb(driver));\n\t}\n\tcreateRunnerDependencies(driver) {\n\t\tconst controlDriver = requireMongoControlDriver(driver);\n\t\treturn {\n\t\t\tinspectionExecutor: new MongoInspectionExecutor(controlDriver.db),\n\t\t\tadapter: this.#adapter,\n\t\t\tdriver: controlDriver,\n\t\t\texecuteDdl: (command) => this.executeDdl(controlDriver, command),\n\t\t\tmarkerOps: {\n\t\t\t\treadMarker: (space) => this.readMarker(controlDriver, space),\n\t\t\t\tinitMarker: (space, destination) => this.initMarker(controlDriver, space, destination),\n\t\t\t\tupdateMarker: (space, expectedFrom, destination) => this.updateMarker(controlDriver, space, expectedFrom, destination),\n\t\t\t\twriteLedgerEntry: (space, entry) => this.writeLedgerEntry(controlDriver, space, entry)\n\t\t\t},\n\t\t\tintrospectSchema: () => this.introspectSchema(controlDriver)\n\t\t};\n\t}\n};\n//#endregion\n//#region src/exports/control.ts\n/**\n* The base PSL scalars as zero-arg type constructors in the unified authoring channel. Each names a codec; the collection validator reads the BSON types from the data type the codec represents, not from the constructor.\n*/\nconst mongoScalarAuthoringTypes = {\n\tString: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Text, stored as BSON string.\",\n\t\toutput: { codecId: MONGO_STRING_CODEC_ID }\n\t},\n\tInt32: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A signed 32-bit integer, stored as BSON int.\",\n\t\toutput: { codecId: MONGO_INT32_CODEC_ID }\n\t},\n\tBool: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A true or false value, stored as BSON bool.\",\n\t\toutput: { codecId: MONGO_BOOLEAN_CODEC_ID }\n\t},\n\tDate: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A date and time with millisecond precision, stored as BSON date.\",\n\t\toutput: { codecId: MONGO_DATE_CODEC_ID }\n\t},\n\tObjectId: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A 12-byte MongoDB identifier, stored as BSON objectId.\",\n\t\toutput: { codecId: MONGO_OBJECTID_CODEC_ID }\n\t},\n\tDouble: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A double-precision floating-point number, stored as BSON double.\",\n\t\toutput: { codecId: MONGO_DOUBLE_CODEC_ID }\n\t},\n\tInt64: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A signed 64-bit integer read as a bigint, stored as BSON long.\",\n\t\toutput: { codecId: MONGO_INT64_CODEC_ID }\n\t},\n\tInt64Number: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A signed 64-bit integer read as a JavaScript number within its safe integer range, stored as BSON long.\",\n\t\toutput: { codecId: MONGO_INT64_NUMBER_CODEC_ID }\n\t},\n\tDecimal128: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A 128-bit decimal read as decimal text without an exponent, stored as BSON decimal.\",\n\t\toutput: { codecId: MONGO_DECIMAL128_CODEC_ID }\n\t},\n\tBinary: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Bytes read as a Uint8Array, stored as BSON binData.\",\n\t\toutput: { codecId: MONGO_BINARY_CODEC_ID }\n\t},\n\tJson: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"A JSON value, stored as BSON object, array, string, double, int, long, bool or null; the collection validator admits only those types at the top level, and the codec refuses anything else at any depth.\",\n\t\toutput: { codecId: MONGO_JSON_CODEC_ID }\n\t},\n\tBson: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Any BSON value, read as BsonValue; the collection validator does not constrain it.\",\n\t\toutput: { codecId: MONGO_BSON_CODEC_ID }\n\t},\n\tInt: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Deprecated: use Int32. A signed 32-bit integer, stored as BSON int.\",\n\t\toutput: { codecId: MONGO_INT32_CODEC_ID },\n\t\tdeprecated: { replacement: \"Int32\" }\n\t},\n\tFloat: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Deprecated: use Double. A double-precision floating-point number, stored as BSON double.\",\n\t\toutput: { codecId: MONGO_DOUBLE_CODEC_ID },\n\t\tdeprecated: { replacement: \"Double\" }\n\t},\n\tBoolean: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Deprecated: use Bool. A true or false value, stored as BSON bool.\",\n\t\toutput: { codecId: MONGO_BOOLEAN_CODEC_ID },\n\t\tdeprecated: { replacement: \"Bool\" }\n\t},\n\tDateTime: {\n\t\tkind: \"typeConstructor\",\n\t\tdocumentation: \"Deprecated: use Date. A date and time with millisecond precision, stored as BSON date.\",\n\t\toutput: { codecId: MONGO_DATE_CODEC_ID },\n\t\tdeprecated: { replacement: \"Date\" }\n\t}\n};\nconst mongoAdapterDescriptor = {\n\tkind: \"adapter\",\n\tid: \"mongo\",\n\tfamilyId: \"mongo\",\n\ttargetId: \"mongo\",\n\tversion: \"0.0.1\",\n\tauthoring: { type: mongoScalarAuthoringTypes },\n\ttypes: { codecTypes: {\n\t\timport: {\n\t\t\tpackage: \"@internal/target-mongo/codec-types\",\n\t\t\tnamed: \"CodecTypes\",\n\t\t\talias: \"MongoCodecTypes\"\n\t\t},\n\t\ttypeImports: [{\n\t\t\tpackage: \"@internal/target-mongo/codec-types\",\n\t\t\tnamed: \"Vector\",\n\t\t\talias: \"Vector\"\n\t\t}]\n\t} },\n\tcreate(_stack) {\n\t\treturn new MongoControlAdapterImpl();\n\t}\n};\n//#endregion\nexport { MongoControlAdapterImpl, MongoInspectionExecutor, createMongoAdapter, mongoAdapterDescriptor as default, mongoAdapterDescriptor, extractDb, introspectSchema, isMongoControlDriver, mongoScalarAuthoringTypes };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { t as buildStandardCodecRegistry } from "./codecs-D6yLMoD2-Bn8-UhA5.mjs";
2
- import { t as createMongoAdapter } from "./mongo-adapter-DWNaz2UT-HiI8mJ7J.mjs";
1
+ import { t as buildStandardCodecRegistry } from "./codecs-C2G2gCgE-BF_laFUO.mjs";
2
+ import { t as createMongoAdapter } from "./mongo-adapter-Bo6ciURK-CtwxEEEl.mjs";
3
3
  import { timestampNowRuntimeGenerator } from "@prisma/orm-family-mongo/family/runtime";
4
4
  //#region ../../../3-mongo-target/2-mongo-adapter/dist/runtime.mjs
5
5
  const mongoRuntimeAdapterDescriptor = {
@@ -1 +1 @@
1
- {"version":3,"file":"adapter__runtime.mjs","names":[],"sources":["../../../../3-mongo-target/2-mongo-adapter/dist/runtime.mjs"],"sourcesContent":["import { t as createMongoAdapter } from \"./mongo-adapter-DWNaz2UT.mjs\";\nimport { buildStandardCodecRegistry } from \"@internal/target-mongo/codecs\";\nimport { timestampNowRuntimeGenerator } from \"@internal/family-mongo/runtime\";\n//#region src/exports/runtime.ts\nconst mongoRuntimeAdapterDescriptor = {\n\tkind: \"adapter\",\n\tid: \"mongo\",\n\tfamilyId: \"mongo\",\n\ttargetId: \"mongo\",\n\tversion: \"0.0.1\",\n\tcodecs: buildStandardCodecRegistry,\n\tmutationDefaultGenerators: () => [timestampNowRuntimeGenerator()],\n\tcreate(_stack) {\n\t\tconst adapter = createMongoAdapter();\n\t\treturn {\n\t\t\tfamilyId: \"mongo\",\n\t\t\ttargetId: \"mongo\",\n\t\t\tlower: adapter.lower.bind(adapter),\n\t\t\tstructuralLower: adapter.structuralLower.bind(adapter),\n\t\t\tresolveParams: adapter.resolveParams.bind(adapter)\n\t\t};\n\t}\n};\n//#endregion\nexport { mongoRuntimeAdapterDescriptor as default };\n\n//# sourceMappingURL=runtime.mjs.map"],"mappings":";;;;AAIA,MAAM,gCAAgC;CACrC,MAAM;CACN,IAAI;CACJ,UAAU;CACV,UAAU;CACV,SAAS;CACT,QAAQ;CACR,iCAAiC,CAAC,6BAA6B,CAAC;CAChE,OAAO,QAAQ;EACd,MAAM,UAAU,mBAAmB;EACnC,OAAO;GACN,UAAU;GACV,UAAU;GACV,OAAO,QAAQ,MAAM,KAAK,OAAO;GACjC,iBAAiB,QAAQ,gBAAgB,KAAK,OAAO;GACrD,eAAe,QAAQ,cAAc,KAAK,OAAO;EAClD;CACD;AACD"}
1
+ {"version":3,"file":"adapter__runtime.mjs","names":[],"sources":["../../../../3-mongo-target/2-mongo-adapter/dist/runtime.mjs"],"sourcesContent":["import { t as createMongoAdapter } from \"./mongo-adapter-Bo6ciURK.mjs\";\nimport { buildStandardCodecRegistry } from \"@internal/target-mongo/codecs\";\nimport { timestampNowRuntimeGenerator } from \"@internal/family-mongo/runtime\";\n//#region src/exports/runtime.ts\nconst mongoRuntimeAdapterDescriptor = {\n\tkind: \"adapter\",\n\tid: \"mongo\",\n\tfamilyId: \"mongo\",\n\ttargetId: \"mongo\",\n\tversion: \"0.0.1\",\n\tcodecs: buildStandardCodecRegistry,\n\tmutationDefaultGenerators: () => [timestampNowRuntimeGenerator()],\n\tcreate(_stack) {\n\t\tconst adapter = createMongoAdapter();\n\t\treturn {\n\t\t\tfamilyId: \"mongo\",\n\t\t\ttargetId: \"mongo\",\n\t\t\tlower: adapter.lower.bind(adapter),\n\t\t\tstructuralLower: adapter.structuralLower.bind(adapter),\n\t\t\tresolveParams: adapter.resolveParams.bind(adapter)\n\t\t};\n\t}\n};\n//#endregion\nexport { mongoRuntimeAdapterDescriptor as default };\n\n//# sourceMappingURL=runtime.mjs.map"],"mappings":";;;;AAIA,MAAM,gCAAgC;CACrC,MAAM;CACN,IAAI;CACJ,UAAU;CACV,UAAU;CACV,SAAS;CACT,QAAQ;CACR,iCAAiC,CAAC,6BAA6B,CAAC;CAChE,OAAO,QAAQ;EACd,MAAM,UAAU,mBAAmB;EACnC,OAAO;GACN,UAAU;GACV,UAAU;GACV,OAAO,QAAQ,MAAM,KAAK,OAAO;GACjC,iBAAiB,QAAQ,gBAAgB,KAAK,OAAO;GACrD,eAAe,QAAQ,cAAc,KAAK,OAAO;EAClD;CACD;AACD"}
@@ -1,6 +1,6 @@
1
1
  import { CodecDescriptor } from "@prisma/orm-framework/components/codec";
2
- import { MongoCodec, MongoCodecRegistry } from "@prisma/orm-family-mongo/codec";
3
2
  import { Binary, Decimal128, Double, Long, ObjectId } from "bson";
3
+ import { MongoCodec, MongoCodecRegistry } from "@prisma/orm-family-mongo/codec";
4
4
  import { JsonValue } from "@prisma/orm-framework/contract/types";
5
5
  import { BsonInputValue, BsonValue } from "@prisma/orm-family-mongo/value";
6
6
  //#region ../../../3-mongo-target/1-mongo-target/dist/codecs.d.mts
@@ -18,7 +18,7 @@ declare const mongoStandardCodecs: readonly [MongoCodec<"mongo/objectId@1", read
18
18
  readonly [key: string]: JsonValue;
19
19
  } | readonly JsonValue[] | null>, MongoCodec<"mongo/bson@1", readonly [], BsonInputValue, BsonInputValue, BsonValue>];
20
20
  /**
21
- * Mongo wire-type codec descriptors. Static metadata for `traits` and `renderOutputType` lives here (the descriptor shape) — `MongoCodec` itself is narrow and only carries the four conversion methods (TML-2357).
21
+ * Mongo wire-type codec descriptors. Static metadata for `traits` and `renderOutputType` lives here (the descriptor shape) — `MongoCodec` itself carries its data type and the four conversion methods (TML-2357).
22
22
  */
23
23
  declare const mongoCodecDescriptors: ReadonlyArray<CodecDescriptor>;
24
24
  /**
@@ -33,4 +33,4 @@ declare function mongoDescriptorById(codecId: string): CodecDescriptor | undefin
33
33
  declare function buildStandardCodecRegistry(): MongoCodecRegistry;
34
34
  //#endregion
35
35
  export { mongoStandardCodecs as i, mongoCodecDescriptors as n, mongoDescriptorById as r, buildStandardCodecRegistry as t };
36
- //# sourceMappingURL=codecs-CXPz3PFI.d.mts.map
36
+ //# sourceMappingURL=codecs-6K6jAnDf.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codecs-CXPz3PFI.d.mts","names":[],"sources":["../../../../3-mongo-target/1-mongo-target/dist/codecs.d.mts"],"mappings":";;;;;;;;;;;;cAWc,+BAA+B,4CAA4C,2BAA2B,mEAAmE,mDAAmD,yBAAyB,kEAAkE,oEAAoE,wCAAwC,MAAM,MAAM,OAAO,oGAAoG,2DAA2D,uBAAuB,iEAAiE,uBAAuB,8CAA8C,6BAA6B,0CAA0C,SAAS,WAAW,kBAAkB,WAAW,kBAAkB,WAAW,mBAAmB;YAC55B,cAAc;aACb;YACD,cAAc;aACb;YACD,cAAc;aACb,qBAAqB,wCAAwC,gBAAgB,gBAAgB;;;;cAI5F,uBAAuB,cAAc;;;;iBAIlC,oBAAoB,kBAAkB;;;;;;iBAMtC,8BAA8B"}
1
+ {"version":3,"file":"codecs-6K6jAnDf.d.mts","names":[],"sources":["../../../../3-mongo-target/1-mongo-target/dist/codecs.d.mts"],"mappings":";;;;;;;;;;;;cAWc,+BAA+B,4CAA4C,2BAA2B,mEAAmE,mDAAmD,yBAAyB,kEAAkE,oEAAoE,wCAAwC,MAAM,MAAM,OAAO,oGAAoG,2DAA2D,uBAAuB,iEAAiE,uBAAuB,8CAA8C,6BAA6B,0CAA0C,SAAS,WAAW,kBAAkB,WAAW,kBAAkB,WAAW,mBAAmB;YAC55B,cAAc;aACb;YACD,cAAc;aACb;YACD,cAAc;aACb,qBAAqB,wCAAwC,gBAAgB,gBAAgB;;;;cAI5F,uBAAuB,cAAc;;;;iBAIlC,oBAAoB,kBAAkB;;;;;;iBAMtC,8BAA8B"}
@@ -0,0 +1,401 @@
1
+ import { a as MONGO_DECIMAL128_CODEC_ID, c as MONGO_INT64_CODEC_ID, d as MONGO_OBJECTID_CODEC_ID, f as MONGO_STRING_CODEC_ID, i as MONGO_DATE_CODEC_ID, l as MONGO_INT64_NUMBER_CODEC_ID, n as MONGO_BOOLEAN_CODEC_ID, o as MONGO_DOUBLE_CODEC_ID, p as MONGO_VECTOR_CODEC_ID, r as MONGO_BSON_CODEC_ID, s as MONGO_INT32_CODEC_ID, t as MONGO_BINARY_CODEC_ID, u as MONGO_JSON_CODEC_ID } from "./codec-ids-WdrumsYA-BkQfspmL.mjs";
2
+ import { t as mongoTargetError } from "./mongo-target-errors-Btf3ML1w-B5EMYbz1.mjs";
3
+ import { A as int64ToJson, B as mongoInt32, C as int32ToJson, D as int64NumberEncode, E as int64NumberDecode, F as mongoBson, G as mongoVector, H as mongoJson, J as objectIdToJson, L as mongoDate, M as isPlainObject, N as mongoBinary, O as int64NumberFromDigits, P as mongoBool, Q as where, R as mongoDecimal128, S as int32Encode, T as int64Encode, U as mongoObjectId, V as mongoInt64, W as mongoString, X as stringEncode, Y as readBsonJson, Z as vectorEncode, _ as decimalTextBigintLiteral, a as booleanEncode, b as doubleEncode, c as bsonTypeTag, d as dateEncode, f as dateToJson, g as decimal128ToJson, h as decimal128Encode, i as binaryToBase64, j as isPlainArray, k as int64NumberToJson, l as child, m as decimal128Decode, n as binaryEncode, o as bsonClassTag, p as dbRefEntries, q as objectIdEncode, r as binaryFromBase64, s as bsonToJson, t as binaryDecode, u as constructorName, v as decimalTextNumberLiteral, w as int64Decode, x as encodeBsonValue, y as decodeBsonValue, z as mongoDouble } from "./data-types-CfdzqGSQ-NIDeT9x3.mjs";
4
+ import { floatToJson, readJsonFloat, renderTsLiteral } from "@prisma/orm-framework/components/codec";
5
+ import { blindCast } from "@prisma/orm-framework/utils/casts";
6
+ import { mongoCodec, newMongoCodecRegistry } from "@prisma/orm-family-mongo/codec";
7
+ import { ifDefined } from "@prisma/orm-framework/utils/defined";
8
+ //#region ../../../3-mongo-target/1-mongo-target/dist/codecs-C2G2gCgE.mjs
9
+ const BSON_TYPE_BY_TAG = {
10
+ ObjectId: "objectId",
11
+ Decimal128: "decimal",
12
+ Binary: "binData",
13
+ BSONRegExp: "regex",
14
+ Timestamp: "timestamp",
15
+ BSONSymbol: "symbol",
16
+ Code: "javascript",
17
+ MinKey: "minKey",
18
+ MaxKey: "maxKey"
19
+ };
20
+ const NOT_FINITE_FIX = "JSON has no NaN or Infinity; store null or a string, or declare the field Bson.";
21
+ const BSON_FIX = "Declare the field Bson to store BSON values.";
22
+ const PLAIN_VALUE_FIX = "Convert it to a plain object or array.";
23
+ const ENCODE_FIX_BY_RECEIVED = {
24
+ Date: "Store the date as an ISO 8601 string, or declare the field Bson.",
25
+ bigint: "Store it as a number in the safe-integer range or as decimal text, or declare the field Int64 or Bson.",
26
+ NaN: NOT_FINITE_FIX,
27
+ Infinity: NOT_FINITE_FIX,
28
+ "-Infinity": NOT_FINITE_FIX,
29
+ undefined: "Leave the key out, or store null.",
30
+ Uint8Array: "Store the bytes as a base64 string, or declare the field Binary or Bson.",
31
+ Buffer: "Store the bytes as a base64 string, or declare the field Binary or Bson.",
32
+ Binary: "Store the bytes as a base64 string, or declare the field Binary or Bson.",
33
+ ObjectId: "Store its hex string, or declare the field ObjectId or Bson.",
34
+ Long: "Store a number in the safe-integer range or decimal text, or declare the field Int64 or Bson.",
35
+ Decimal128: "Store the decimal text, or declare the field Decimal128 or Bson.",
36
+ Int32: "Pass a plain number.",
37
+ Double: "Pass a plain number.",
38
+ RegExp: "Store the pattern as a string, or declare the field Bson.",
39
+ BSONRegExp: "Store the pattern as a string, or declare the field Bson.",
40
+ symbol: "Store a string instead.",
41
+ function: "Store data, not a function.",
42
+ "circular reference": "Remove the cycle; a JSON value is a tree.",
43
+ "sparse array hole": "Fill the hole with null.",
44
+ DBRef: "Write it as a { $ref, $id } document instead."
45
+ };
46
+ function encodeFix(received) {
47
+ return ENCODE_FIX_BY_RECEIVED[received] ?? (Object.hasOwn(BSON_TYPE_BY_TAG, received) ? BSON_FIX : PLAIN_VALUE_FIX);
48
+ }
49
+ function encodeRefused(received, path) {
50
+ throw mongoTargetError("RUNTIME.ENCODE_FAILED", `${MONGO_JSON_CODEC_ID} value must be a JSON value; received ${received} at ${where(path)}. ${encodeFix(received)}`, { meta: {
51
+ codecId: MONGO_JSON_CODEC_ID,
52
+ received,
53
+ valuePath: path
54
+ } });
55
+ }
56
+ function describeNonJson(value) {
57
+ if (value === null || typeof value === "string" || typeof value === "boolean") return void 0;
58
+ if (typeof value === "number") return Number.isFinite(value) ? void 0 : String(value);
59
+ if (typeof value !== "object") return typeof value;
60
+ const tag = bsonTypeTag(value);
61
+ if (tag !== void 0) return tag;
62
+ if (value instanceof Date) return "Date";
63
+ if (isPlainArray(value)) return void 0;
64
+ return isPlainObject(value) ? void 0 : constructorName(value);
65
+ }
66
+ function assertJsonValue(value, path, ancestors) {
67
+ const received = describeNonJson(value);
68
+ if (received !== void 0) encodeRefused(received, path);
69
+ if (typeof value !== "object" || value === null) return;
70
+ if (ancestors.has(value)) encodeRefused("circular reference", path);
71
+ ancestors.add(value);
72
+ if (Array.isArray(value)) for (let index = 0; index < value.length; index++) {
73
+ if (!(index in value)) encodeRefused("sparse array hole", child(path, index));
74
+ assertJsonValue(value[index], child(path, index), ancestors);
75
+ }
76
+ else for (const [key, entry] of Object.entries(value)) assertJsonValue(entry, child(path, key), ancestors);
77
+ ancestors.delete(value);
78
+ }
79
+ /**
80
+ * Returns `value` unchanged when it is a plain JSON value at every depth, and throws `RUNTIME.ENCODE_FAILED` naming the first value that is not, with its path.
81
+ */
82
+ function encodeJsonValue(value) {
83
+ assertJsonValue(value, "", /* @__PURE__ */ new Set());
84
+ return value;
85
+ }
86
+ function decodeRefused(bsonType, path) {
87
+ throw mongoTargetError("RUNTIME.DECODE_FAILED", `${MONGO_JSON_CODEC_ID} wire value contains a non-JSON BSON ${bsonType} at ${where(path)}`, { meta: {
88
+ codecId: MONGO_JSON_CODEC_ID,
89
+ received: bsonType,
90
+ valuePath: path
91
+ } });
92
+ }
93
+ function safeLong(value, path) {
94
+ const number = Number(value);
95
+ return Number.isSafeInteger(number) && BigInt(number) === value ? number : decodeRefused("long", path);
96
+ }
97
+ function finiteDouble(value, path) {
98
+ if (Number.isFinite(value)) return value;
99
+ const received = String(value);
100
+ throw mongoTargetError("RUNTIME.DECODE_FAILED", `${MONGO_JSON_CODEC_ID} wire value contains ${received} at ${where(path)}; a JSON number cannot be NaN or Infinity`, { meta: {
101
+ codecId: MONGO_JSON_CODEC_ID,
102
+ received,
103
+ valuePath: path
104
+ } });
105
+ }
106
+ function decodeEntries(entries, path) {
107
+ return Object.fromEntries(entries.map(([key, entry]) => [key, decodeValue(entry, child(path, key))]));
108
+ }
109
+ function decodeTagged(value, tag, path) {
110
+ switch (tag) {
111
+ case "DBRef": return decodeEntries(dbRefEntries(value), path);
112
+ case "Long": return safeLong(blindCast(value).toBigInt(), path);
113
+ case "Int32":
114
+ case "Double": return finiteDouble(Number(value.valueOf()), path);
115
+ }
116
+ return decodeRefused(BSON_TYPE_BY_TAG[tag] ?? tag, path);
117
+ }
118
+ function decodeValue(value, path) {
119
+ if (value === null || typeof value === "string" || typeof value === "boolean") return value;
120
+ if (typeof value === "number") return finiteDouble(value, path);
121
+ if (typeof value === "bigint") return safeLong(value, path);
122
+ if (typeof value === "undefined") return decodeRefused("undefined", path);
123
+ if (typeof value === "symbol") return decodeRefused("symbol", path);
124
+ if (typeof value === "function") return decodeRefused("javascript", path);
125
+ const tag = bsonClassTag(value);
126
+ if (tag !== void 0) return decodeTagged(value, tag, path);
127
+ if (value instanceof Date) return decodeRefused("date", path);
128
+ if (value instanceof RegExp) return decodeRefused("regex", path);
129
+ if (value instanceof Uint8Array) return decodeRefused("binData", path);
130
+ if (Array.isArray(value)) {
131
+ const decoded = value.map((entry, index) => decodeValue(entry, child(path, index)));
132
+ return decoded.some((entry, index) => entry !== value[index]) ? decoded : value;
133
+ }
134
+ if (!isPlainObject(value)) return decodeRefused(constructorName(value), path);
135
+ const entries = Object.entries(value);
136
+ const decoded = decodeEntries(entries, path);
137
+ return entries.some(([key, entry]) => decoded[key] !== entry) ? decoded : blindCast(value);
138
+ }
139
+ /**
140
+ * Decodes a wire value to the JSON value it holds: a `long` in the safe-integer range and the driver's `Int32` and `Double` wrappers become numbers. Only the objects and arrays around a converted value are copied; a wire value that is already JSON is returned as the same object. Throws `RUNTIME.DECODE_FAILED` naming the BSON type and path of the first value that is not JSON.
141
+ */
142
+ function decodeJsonValue(wire) {
143
+ return decodeValue(wire, "");
144
+ }
145
+ const mongoObjectIdCodec = mongoCodec({
146
+ typeId: MONGO_OBJECTID_CODEC_ID,
147
+ dataType: mongoObjectId,
148
+ fromWire: (wire) => wire.toHexString(),
149
+ toWire: (value) => objectIdEncode(MONGO_OBJECTID_CODEC_ID, value),
150
+ toDataTypeValue: (value) => mongoObjectId.valueFrom(objectIdToJson(MONGO_OBJECTID_CODEC_ID, value), {}),
151
+ fromDataTypeValue: (value) => value.value
152
+ });
153
+ const mongoStringCodec = mongoCodec({
154
+ typeId: MONGO_STRING_CODEC_ID,
155
+ dataType: mongoString,
156
+ fromWire: (wire) => wire,
157
+ toWire: (value) => stringEncode(MONGO_STRING_CODEC_ID, value),
158
+ fromDataTypeValue: (value) => value.value
159
+ });
160
+ const mongoDoubleCodec = mongoCodec({
161
+ typeId: MONGO_DOUBLE_CODEC_ID,
162
+ dataType: mongoDouble,
163
+ fromWire: (wire) => Number(wire),
164
+ toWire: (value) => doubleEncode(MONGO_DOUBLE_CODEC_ID, value),
165
+ toDataTypeValue: (value) => mongoDouble.valueFrom(floatToJson(value), {}),
166
+ fromDataTypeValue: (value) => readJsonFloat(MONGO_DOUBLE_CODEC_ID, value.value)
167
+ });
168
+ const mongoInt32Codec = mongoCodec({
169
+ typeId: MONGO_INT32_CODEC_ID,
170
+ dataType: mongoInt32,
171
+ fromWire: (wire) => wire,
172
+ toWire: (value) => int32Encode(MONGO_INT32_CODEC_ID, value),
173
+ toDataTypeValue: (value) => mongoInt32.valueFrom(int32ToJson(MONGO_INT32_CODEC_ID, value), {}),
174
+ fromDataTypeValue: (value) => value.value
175
+ });
176
+ const mongoBooleanCodec = mongoCodec({
177
+ typeId: MONGO_BOOLEAN_CODEC_ID,
178
+ dataType: mongoBool,
179
+ fromWire: (wire) => wire,
180
+ toWire: (value) => booleanEncode(MONGO_BOOLEAN_CODEC_ID, value),
181
+ fromDataTypeValue: (value) => value.value
182
+ });
183
+ const mongoDateCodec = mongoCodec({
184
+ typeId: MONGO_DATE_CODEC_ID,
185
+ dataType: mongoDate,
186
+ fromWire: (wire) => wire,
187
+ toWire: (value) => dateEncode(MONGO_DATE_CODEC_ID, value),
188
+ toDataTypeValue: (value) => mongoDate.valueFrom(dateToJson(MONGO_DATE_CODEC_ID, value), {}),
189
+ fromDataTypeValue: (value) => new Date(value.value)
190
+ });
191
+ /** The vector codec for a column of `mongo/vector` with `params`. The dimension reaches only the TypeScript type `Vector<n>`. */
192
+ function vectorCodec(params) {
193
+ return mongoCodec({
194
+ typeId: MONGO_VECTOR_CODEC_ID,
195
+ dataType: mongoVector,
196
+ ...ifDefined("params", params),
197
+ fromWire: (wire) => wire,
198
+ toWire: (value) => vectorEncode(MONGO_VECTOR_CODEC_ID, value),
199
+ fromDataTypeValue: (value) => value.value
200
+ });
201
+ }
202
+ const mongoVectorCodec = vectorCodec();
203
+ /**
204
+ * A BSON `long`. The application value is a `bigint`, because a `number` cannot hold the full 64-bit range; its stored form is decimal text.
205
+ */
206
+ const mongoInt64Codec = mongoCodec({
207
+ typeId: MONGO_INT64_CODEC_ID,
208
+ dataType: mongoInt64,
209
+ fromWire: (wire) => int64Decode(MONGO_INT64_CODEC_ID, wire),
210
+ toWire: (value) => int64Encode(MONGO_INT64_CODEC_ID, value),
211
+ toDataTypeValue: (value) => mongoInt64.valueFrom(int64ToJson(MONGO_INT64_CODEC_ID, value), {}),
212
+ fromDataTypeValue: (value) => BigInt(value.value)
213
+ });
214
+ /**
215
+ * A BSON `long` read and written as a `number` from -(2^53 - 1) to 2^53 - 1, the value a Prisma 6 `Int` presents. A value outside that range, or with a fraction, is refused rather than rounded.
216
+ */
217
+ const mongoInt64NumberCodec = mongoCodec({
218
+ typeId: MONGO_INT64_NUMBER_CODEC_ID,
219
+ dataType: mongoInt64,
220
+ fromWire: (wire) => int64NumberDecode(MONGO_INT64_NUMBER_CODEC_ID, wire),
221
+ toWire: (value) => int64NumberEncode(MONGO_INT64_NUMBER_CODEC_ID, value),
222
+ toDataTypeValue: (value) => mongoInt64.valueFrom(int64NumberToJson(MONGO_INT64_NUMBER_CODEC_ID, value), {}),
223
+ fromDataTypeValue: (value) => int64NumberFromDigits(MONGO_INT64_NUMBER_CODEC_ID, value.value)
224
+ });
225
+ /**
226
+ * A BSON `decimal`. The application value and its stored form are the same decimal text, written without an exponent.
227
+ */
228
+ const mongoDecimal128Codec = mongoCodec({
229
+ typeId: MONGO_DECIMAL128_CODEC_ID,
230
+ dataType: mongoDecimal128,
231
+ fromWire: (wire) => decimal128Decode(MONGO_DECIMAL128_CODEC_ID, wire),
232
+ toWire: (value) => decimal128Encode(MONGO_DECIMAL128_CODEC_ID, value),
233
+ toDataTypeValue: (value) => mongoDecimal128.valueFrom(decimal128ToJson(MONGO_DECIMAL128_CODEC_ID, value), {}),
234
+ fromDataTypeValue: (value) => value.value
235
+ });
236
+ /**
237
+ * BSON `binData`. The application value is a `Uint8Array`; its stored form is unwrapped base64.
238
+ */
239
+ const mongoBinaryCodec = mongoCodec({
240
+ typeId: MONGO_BINARY_CODEC_ID,
241
+ dataType: mongoBinary,
242
+ fromWire: (wire) => binaryDecode(MONGO_BINARY_CODEC_ID, wire),
243
+ toWire: (value) => binaryEncode(MONGO_BINARY_CODEC_ID, value),
244
+ toDataTypeValue: (value) => mongoBinary.valueFrom(binaryToBase64(value), {}),
245
+ fromDataTypeValue: (value) => binaryFromBase64(value.value)
246
+ });
247
+ /**
248
+ * A JSON value, stored as the BSON object, array, string, number, boolean or null it maps to. Encode and decode refuse any other value at any depth, naming its path.
249
+ */
250
+ const mongoJsonCodec = mongoCodec({
251
+ typeId: MONGO_JSON_CODEC_ID,
252
+ dataType: mongoJson,
253
+ fromWire: (wire) => decodeJsonValue(wire),
254
+ toWire: (value) => encodeJsonValue(value)
255
+ });
256
+ /**
257
+ * Any BSON value, passed through unchanged except that decode turns a `DBRef` back into the `{ $ref, $id }` document it was stored as. Encode takes a `BsonInputValue` and decode returns a `BsonValue`. Its stored form is canonical MongoDB Extended JSON v2, written with each number and `Uint8Array` as the BSON type the driver stores, so a round trip keeps the BSON bytes but may return wrapper classes such as `Int32` and `Double`.
258
+ */
259
+ const mongoBsonCodec = mongoCodec({
260
+ typeId: MONGO_BSON_CODEC_ID,
261
+ dataType: mongoBson,
262
+ fromWire: (wire) => decodeBsonValue(wire),
263
+ toWire: (value) => encodeBsonValue(value),
264
+ toDataTypeValue: (value) => mongoBson.valueFrom(bsonToJson(value), {}),
265
+ fromDataTypeValue: (value) => readBsonJson(MONGO_BSON_CODEC_ID, value.value)
266
+ });
267
+ /**
268
+ * The canonical set of Mongo wire-type codecs.
269
+ *
270
+ * Single source of truth for both control- and runtime-plane adapter descriptors. Don't duplicate this list — import it.
271
+ */
272
+ const mongoStandardCodecs = [
273
+ mongoObjectIdCodec,
274
+ mongoStringCodec,
275
+ mongoDoubleCodec,
276
+ mongoInt32Codec,
277
+ mongoBooleanCodec,
278
+ mongoDateCodec,
279
+ mongoVectorCodec,
280
+ mongoInt64Codec,
281
+ mongoInt64NumberCodec,
282
+ mongoDecimal128Codec,
283
+ mongoBinaryCodec,
284
+ mongoJsonCodec,
285
+ mongoBsonCodec
286
+ ];
287
+ /**
288
+ * Build a {@link CodecDescriptor} for a Mongo wire-type codec.
289
+ *
290
+ * Wraps an existing {@link MongoCodec} instance into a descriptor whose factory hands out the same shared codec, or, for a codec whose data type has parameters, one built for the column's parameters. Mongo's full migration to descriptor-first authoring is tracked under TML-2324; for now the descriptor view is composed from the existing `mongoCodec()` outputs.
291
+ */
292
+ function descriptorFor(codec, metadata) {
293
+ const renderOutputType = blindCast(metadata.renderOutputType);
294
+ return {
295
+ codecId: codec.id,
296
+ dataType: codec.dataType.id,
297
+ traits: metadata.traits,
298
+ paramsSchema: blindCast(codec.dataType.params),
299
+ isParameterized: codec.dataType.params !== void 0,
300
+ factory: blindCast((params) => {
301
+ const built = metadata.withParams === void 0 || params === void 0 ? codec : metadata.withParams(params);
302
+ return () => built;
303
+ }),
304
+ ...ifDefined("renderOutputType", renderOutputType),
305
+ ...ifDefined("renderValueLiteral", metadata.renderValueLiteral)
306
+ };
307
+ }
308
+ const renderVectorOutputType = (typeParams) => {
309
+ const length = typeParams["length"];
310
+ if (length === void 0) return void 0;
311
+ if (typeof length !== "number" || !Number.isFinite(length) || !Number.isInteger(length) || length <= 0) throw mongoTargetError("RUNTIME.TYPE_PARAMS_INVALID", "renderOutputType: expected positive integer \"length\" for Vector", { meta: {
312
+ typeName: "Vector",
313
+ param: "length",
314
+ received: length
315
+ } });
316
+ return `Vector<${length}>`;
317
+ };
318
+ /**
319
+ * Mongo wire-type codec descriptors. Static metadata for `traits` and `renderOutputType` lives here (the descriptor shape) — `MongoCodec` itself carries its data type and the four conversion methods (TML-2357).
320
+ */
321
+ const mongoCodecDescriptors = [
322
+ descriptorFor(mongoObjectIdCodec, { traits: ["equality"] }),
323
+ descriptorFor(mongoStringCodec, {
324
+ traits: [
325
+ "equality",
326
+ "order",
327
+ "textual"
328
+ ],
329
+ renderValueLiteral: renderTsLiteral
330
+ }),
331
+ descriptorFor(mongoDoubleCodec, {
332
+ traits: [
333
+ "equality",
334
+ "order",
335
+ "numeric"
336
+ ],
337
+ renderValueLiteral: (value) => typeof value === "number" ? String(value) : void 0
338
+ }),
339
+ descriptorFor(mongoInt32Codec, {
340
+ traits: [
341
+ "equality",
342
+ "order",
343
+ "numeric"
344
+ ],
345
+ renderValueLiteral: renderTsLiteral
346
+ }),
347
+ descriptorFor(mongoBooleanCodec, {
348
+ traits: ["equality", "boolean"],
349
+ renderValueLiteral: renderTsLiteral
350
+ }),
351
+ descriptorFor(mongoDateCodec, { traits: ["equality", "order"] }),
352
+ descriptorFor(mongoVectorCodec, {
353
+ traits: ["equality"],
354
+ renderOutputType: renderVectorOutputType,
355
+ withParams: vectorCodec
356
+ }),
357
+ descriptorFor(mongoInt64Codec, {
358
+ traits: [
359
+ "equality",
360
+ "order",
361
+ "numeric"
362
+ ],
363
+ renderValueLiteral: decimalTextBigintLiteral
364
+ }),
365
+ descriptorFor(mongoInt64NumberCodec, {
366
+ traits: [
367
+ "equality",
368
+ "order",
369
+ "numeric"
370
+ ],
371
+ renderValueLiteral: decimalTextNumberLiteral
372
+ }),
373
+ descriptorFor(mongoDecimal128Codec, { traits: [
374
+ "equality",
375
+ "order",
376
+ "numeric"
377
+ ] }),
378
+ descriptorFor(mongoBinaryCodec, { traits: ["equality"] }),
379
+ descriptorFor(mongoJsonCodec, { traits: [] }),
380
+ descriptorFor(mongoBsonCodec, { traits: [] })
381
+ ];
382
+ /**
383
+ * Lookup descriptor metadata by codec id — used by tests and for descriptor-side reads of static metadata.
384
+ */
385
+ function mongoDescriptorById(codecId) {
386
+ return mongoCodecDescriptors.find((d) => d.codecId === codecId);
387
+ }
388
+ /**
389
+ * Build a {@link MongoCodecRegistry} preloaded with the standard Mongo wire-type codecs.
390
+ *
391
+ * Single point of truth for adapter-side codec construction: used by the legacy synchronous `createMongoAdapter()` factory and by the runtime adapter descriptor's `codecs()` getter. Userland code obtains a registry via the framework's execution-stack composition (see `createMongoExecutionContext`) instead of calling this directly.
392
+ */
393
+ function buildStandardCodecRegistry() {
394
+ const registry = newMongoCodecRegistry();
395
+ for (const codec of mongoStandardCodecs) registry.register(codec);
396
+ return registry;
397
+ }
398
+ //#endregion
399
+ export { mongoStandardCodecs as i, mongoCodecDescriptors as n, mongoDescriptorById as r, buildStandardCodecRegistry as t };
400
+
401
+ //# sourceMappingURL=codecs-C2G2gCgE-BF_laFUO.mjs.map