@prisma/orm-target-mongo 8.0.0-rc.19-dev.2 → 8.0.0-rc.19-dev.4
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/{control-Poy33Wpm.d.mts → control-BjaiAXAN.d.mts} +10 -2
- package/dist/control-BjaiAXAN.d.mts.map +1 -0
- package/dist/{control-zGCK2Hnz.mjs → control-CYS8H_t4.mjs} +72 -21
- package/dist/control-CYS8H_t4.mjs.map +1 -0
- package/dist/driver.mjs +1 -1
- package/dist/driver__control.mjs +1 -1
- package/dist/driver__control.mjs.map +1 -1
- package/dist/{migration-factories-jwrORVMV-BGqJk_WT.mjs → migration-factories-BqROEHRs-C4K_DHy7.mjs} +19 -8
- package/dist/migration-factories-BqROEHRs-C4K_DHy7.mjs.map +1 -0
- package/dist/{mongo-driver-DlvYlRAp-Cz3A68p3.mjs → mongo-driver-JWe2NliD-BOobtzKr.mjs} +3 -3
- package/dist/{mongo-driver-DlvYlRAp-Cz3A68p3.mjs.map → mongo-driver-JWe2NliD-BOobtzKr.mjs.map} +1 -1
- package/dist/target.d.mts +1 -1
- package/dist/target.mjs +2 -2
- package/dist/target__control.d.mts +1 -1
- package/dist/target__control.mjs +1 -1
- package/dist/target__migration.mjs +1 -1
- package/package.json +9 -9
- package/dist/control-Poy33Wpm.d.mts.map +0 -1
- package/dist/control-zGCK2Hnz.mjs.map +0 -1
- package/dist/migration-factories-jwrORVMV-BGqJk_WT.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migration-factories-jwrORVMV-BGqJk_WT.mjs","names":[],"sources":["../../../../3-mongo-target/1-mongo-target/dist/migration-factories-jwrORVMV.mjs"],"sourcesContent":["import { t as mongoTargetError } from \"./mongo-target-errors-Btf3ML1w.mjs\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { MONGO_INDEX_OPTION_KEYS } from \"@internal/mongo-schema-ir\";\nimport { CollModCommand, DropCollectionCommand, DropIndexCommand, ListCollectionsCommand, ListIndexesCommand, MongoAndExpr, MongoExistsExpr, MongoFieldFilter, MongoNotExpr, RenameCollectionCommand, buildIndexOpId, defaultMongoIndexName, keysToKeySpec } from \"@internal/mongo-query-ast/control\";\nimport { RawAggregateCommand, RawUpdateManyCommand } from \"@internal/mongo-query-ast/execution\";\nimport { createFieldAccessor } from \"@internal/mongo-query-builder\";\nimport { collection } from \"@internal/mongo-query-builder/contract-free\";\n//#region src/core/migrations/migration-factories.ts\nfunction isBuildable(value) {\n\tif (typeof value !== \"object\" || value === null || !(\"build\" in value)) return false;\n\treturn typeof Reflect.get(value, \"build\") === \"function\";\n}\nfunction resolveQuery(value) {\n\treturn isBuildable(value) ? value.build() : value;\n}\nconst MATCH_ALL_FILTER = MongoExistsExpr.exists(\"_id\");\nfunction dataTransform(name, options) {\n\tlet precheck = [];\n\tlet postcheck = [];\n\tif (options.check) {\n\t\tconst source = resolveQuery(options.check.source());\n\t\tconst filter = options.check.filter ?? MATCH_ALL_FILTER;\n\t\tconst description = options.check.description ?? `Check for data transform: ${name}`;\n\t\tconst precheckExpect = options.check.expect ?? \"exists\";\n\t\tconst postcheckExpect = precheckExpect === \"exists\" ? \"notExists\" : \"exists\";\n\t\tprecheck = [{\n\t\t\tdescription,\n\t\t\tsource,\n\t\t\tfilter,\n\t\t\texpect: precheckExpect\n\t\t}];\n\t\tpostcheck = [{\n\t\t\tdescription,\n\t\t\tsource,\n\t\t\tfilter,\n\t\t\texpect: postcheckExpect\n\t\t}];\n\t}\n\tconst run = [resolveQuery(options.run())];\n\treturn {\n\t\tid: `data_transform.${name}`,\n\t\tlabel: `Data transform: ${name}`,\n\t\toperationClass: \"data\",\n\t\tname,\n\t\t...ifDefined(\"invariantId\", options.invariantId),\n\t\tprecheck,\n\t\trun,\n\t\tpostcheck\n\t};\n}\nconst REWRITE_PLAN_META = {\n\ttarget: \"mongo\",\n\tstorageHash: \"\",\n\tlane: \"mongo-raw\"\n};\nfunction documentsHolding(fields, filter) {\n\tconst conditions = [...filter === void 0 ? [] : [filter], ...fields.map((field) => ({ [field]: { $exists: true } }))];\n\tconst [only] = conditions;\n\treturn conditions.length === 1 && only !== void 0 ? only : { $and: conditions };\n}\nconst UNREWRITABLE_FIELD_NAMES = [\n\t{\n\t\tmatches: (field) => field === \"\",\n\t\treason: \"it is empty\"\n\t},\n\t{\n\t\tmatches: (field) => field === \"_id\",\n\t\treason: \"MongoDB does not let a document change its _id\"\n\t},\n\t{\n\t\tmatches: (field) => field.includes(\".\"),\n\t\treason: \"MongoDB reads a name containing \\\".\\\" as a path into embedded documents\"\n\t},\n\t{\n\t\tmatches: (field) => field.startsWith(\"$\"),\n\t\treason: \"MongoDB reads a name starting with \\\"$\\\" as an operator\"\n\t}\n];\n/** Why `renameField` and `unsetField` cannot rewrite a field of this name, if they cannot. */\nfunction unrewritableFieldNameReason(field) {\n\treturn UNREWRITABLE_FIELD_NAMES.find((rule) => rule.matches(field))?.reason;\n}\nfunction assertRewritableField(collectionName, field) {\n\tconst reason = unrewritableFieldNameReason(field);\n\tif (reason === void 0) return;\n\tthrow mongoTargetError(\"MIGRATION.FIELD_NAME_UNSUPPORTED\", `Field \"${field}\" in collection ${collectionName} cannot be rewritten: ${reason}.`, { meta: {\n\t\tcollection: collectionName,\n\t\tfield,\n\t\treason\n\t} });\n}\nfunction rewritePlan(collectionName, command) {\n\treturn {\n\t\tcollection: collectionName,\n\t\tcommand,\n\t\tmeta: { ...REWRITE_PLAN_META }\n\t};\n}\nfunction noDocumentHolds(collectionName, fields, filter) {\n\treturn {\n\t\tdescription: `no document in ${collectionName} holds ${fields.length === 1 ? fields[0] : `both ${fields.join(\" and \")}`}`,\n\t\tsource: rewritePlan(collectionName, new RawAggregateCommand(collectionName, [{ $match: documentsHolding(fields, filter) }, { $limit: 1 }])),\n\t\tfilter: MATCH_ALL_FILTER,\n\t\texpect: \"notExists\"\n\t};\n}\nfunction rewriteUpdate(collectionName, field, filter, update) {\n\treturn rewritePlan(collectionName, new RawUpdateManyCommand(collectionName, documentsHolding([field], filter), update, { bypassDocumentValidation: true }));\n}\nfunction idSuffix(filter) {\n\treturn filter === void 0 ? \"\" : `.where(${JSON.stringify(filter)})`;\n}\nfunction valueList(values) {\n\treturn values.map((value) => JSON.stringify(value)).join(\", \");\n}\n/** A field condition in words: `type is \"bug\"`, `type is not \"bug\"`, `type is none of \"bug\", \"task\"`. */\nfunction conditionInWords(field, condition) {\n\tconst excluded = typeof condition === \"object\" && condition !== null && !Array.isArray(condition) ? Reflect.get(condition, \"$nin\") : void 0;\n\tif (Array.isArray(excluded)) return excluded.length === 1 ? `${field} is not ${valueList(excluded)}` : `${field} is none of ${valueList(excluded)}`;\n\treturn typeof condition === \"object\" && condition !== null ? void 0 : `${field} is ${JSON.stringify(condition)}`;\n}\n/** The documents a filter selects, in words where the planner wrote it, for an operation's label. */\nfunction labelSuffix(filter) {\n\tif (filter === void 0) return \"\";\n\tconst words = Object.entries(filter).map(([field, condition]) => conditionInWords(field, condition));\n\treturn words.every((word) => word !== void 0) && words.length > 0 ? ` in documents whose ${words.join(\" and \")}` : ` in documents matching ${JSON.stringify(filter)}`;\n}\nfunction renameField(collectionName, from, to, options) {\n\tassertRewritableField(collectionName, from);\n\tassertRewritableField(collectionName, to);\n\tif (from === to) throw mongoTargetError(\"MIGRATION.INVALID_OPERATION_ENTRY\", `renameField renames field \"${from}\" in collection ${collectionName} to its own name.`, { meta: {\n\t\tcontext: \"renameField\",\n\t\tcollection: collectionName,\n\t\tfield: from,\n\t\treason: \"the new name is the old name\"\n\t} });\n\tconst filter = options?.filter;\n\tconst id = `field.${collectionName}.${from}.rename(${to})${idSuffix(filter)}`;\n\treturn {\n\t\tid,\n\t\tlabel: `Rename field ${from} to ${to} in collection ${collectionName}${labelSuffix(filter)}`,\n\t\toperationClass: \"widening\",\n\t\tname: id,\n\t\tprecheck: [noDocumentHolds(collectionName, [from, to], filter)],\n\t\trun: [rewriteUpdate(collectionName, from, filter, { $rename: { [from]: to } })],\n\t\tpostcheck: [noDocumentHolds(collectionName, [from], filter)]\n\t};\n}\nfunction unsetField(collectionName, field, options) {\n\tassertRewritableField(collectionName, field);\n\tconst filter = options?.filter;\n\tconst id = `field.${collectionName}.${field}.unset${idSuffix(filter)}`;\n\treturn {\n\t\tid,\n\t\tlabel: `Remove field ${field} from collection ${collectionName}${labelSuffix(filter)}`,\n\t\toperationClass: \"destructive\",\n\t\tname: id,\n\t\tprecheck: [],\n\t\trun: [rewriteUpdate(collectionName, field, filter, { $unset: { [field]: \"\" } })],\n\t\tpostcheck: [noDocumentHolds(collectionName, [field], filter)]\n\t};\n}\nfunction formatKeys(keys) {\n\treturn keys.map((k) => `${k.field}:${k.direction}`).join(\", \");\n}\nfunction isTextIndex(keys) {\n\treturn keys.some((k) => k.direction === \"text\");\n}\nfunction keyFilter(keys) {\n\tconst f = createFieldAccessor();\n\treturn isTextIndex(keys) ? f.rawPath(\"key._fts\").eq(\"text\") : f.key.eq(blindCast(keysToKeySpec(keys)));\n}\nfunction documentValue(document) {\n\treturn blindCast(document);\n}\n/** MongoDB stores a text index's text fields as `_fts` and `_ftsx` in the place of the first one. */\nfunction textIndexKeySpec(keys) {\n\tconst spec = {};\n\tfor (const key of keys) if (key.direction !== \"text\") spec[key.field] = key.direction;\n\telse if (!Object.hasOwn(spec, \"_fts\")) Object.assign(spec, {\n\t\t_fts: \"text\",\n\t\t_ftsx: 1\n\t});\n\treturn spec;\n}\n/** MongoDB lists every text field's weight, 1 when none is given, ordered by field name. */\nfunction textIndexWeights(keys, weights) {\n\tconst fields = keys.filter((key) => key.direction === \"text\").map((key) => key.field);\n\treturn Object.fromEntries(fields.sort().map((field) => [field, weights?.[field] ?? 1]));\n}\nfunction flagFilter(field, on) {\n\tconst set = MongoFieldFilter.eq(field, true);\n\treturn on ? set : new MongoNotExpr(set);\n}\nfunction optionFilter(field, value) {\n\treturn value === void 0 ? MongoExistsExpr.notExists(field) : MongoFieldFilter.eq(field, value);\n}\n/**\n* MongoDB completes a collation with its defaults, so only the fields the call gives are compared, as\n* the verifier does. An index with no collation must have none.\n*/\nfunction collationFilters(collation) {\n\tif (collation === void 0) return [MongoExistsExpr.notExists(\"collation\")];\n\treturn Object.entries(collation).map(([option, value]) => MongoFieldFilter.eq(`collation.${option}`, blindCast(value)));\n}\nconst textIndexOnly = (filter) => (options, keys) => isTextIndex(keys) ? filter(options, keys) : [];\nconst INDEX_OPTION_FILTERS = {\n\tunique: (options) => [flagFilter(\"unique\", options?.unique)],\n\tsparse: (options) => [flagFilter(\"sparse\", options?.sparse)],\n\texpireAfterSeconds: (options) => [optionFilter(\"expireAfterSeconds\", options?.expireAfterSeconds)],\n\tpartialFilterExpression: (options) => [optionFilter(\"partialFilterExpression\", options?.partialFilterExpression && documentValue(options.partialFilterExpression))],\n\twildcardProjection: (options) => [optionFilter(\"wildcardProjection\", options?.wildcardProjection && documentValue(options.wildcardProjection))],\n\tcollation: (options) => collationFilters(options?.collation),\n\tweights: textIndexOnly((options, keys) => [MongoFieldFilter.eq(\"weights\", documentValue(textIndexWeights(keys, options?.weights)))]),\n\tdefault_language: textIndexOnly((options) => [MongoFieldFilter.eq(\"default_language\", options?.default_language ?? TEXT_INDEX_DEFAULT_LANGUAGE)]),\n\tlanguage_override: textIndexOnly((options) => [MongoFieldFilter.eq(\"language_override\", options?.language_override ?? TEXT_INDEX_DEFAULT_LANGUAGE_OVERRIDE)])\n};\nfunction indexDefinitionFilter(keys, options) {\n\treturn MongoAndExpr.of([isTextIndex(keys) ? MongoFieldFilter.eq(\"key\", documentValue(textIndexKeySpec(keys))) : keyFilter(keys), ...MONGO_INDEX_OPTION_KEYS.flatMap((option) => INDEX_OPTION_FILTERS[option](options, keys))]);\n}\nconst TEXT_INDEX_DEFAULT_LANGUAGE = \"english\";\nconst TEXT_INDEX_DEFAULT_LANGUAGE_OVERRIDE = \"language\";\nfunction createIndex(collectionName, keys, options) {\n\tconst name = defaultMongoIndexName(keys);\n\tconst filter = keyFilter(keys);\n\treturn {\n\t\tid: buildIndexOpId(\"create\", collectionName, keys),\n\t\tlabel: `Create index on ${collectionName} (${formatKeys(keys)})`,\n\t\toperationClass: \"additive\",\n\t\tprecheck: [{\n\t\t\tdescription: `index does not already exist on ${collectionName}`,\n\t\t\tsource: new ListIndexesCommand(collectionName),\n\t\t\tfilter,\n\t\t\texpect: \"notExists\"\n\t\t}],\n\t\texecute: [{\n\t\t\tdescription: `create index on ${collectionName}`,\n\t\t\tcommand: collection(collectionName).createIndex(keys, {\n\t\t\t\t...options,\n\t\t\t\tname\n\t\t\t})\n\t\t}],\n\t\tpostcheck: [{\n\t\t\tdescription: `index exists on ${collectionName}`,\n\t\t\tsource: new ListIndexesCommand(collectionName),\n\t\t\tfilter: indexDefinitionFilter(keys, options),\n\t\t\texpect: \"exists\"\n\t\t}]\n\t};\n}\nfunction dropIndex(collectionName, keys) {\n\tconst indexName = defaultMongoIndexName(keys);\n\tconst filter = keyFilter(keys);\n\treturn {\n\t\tid: buildIndexOpId(\"drop\", collectionName, keys),\n\t\tlabel: `Drop index on ${collectionName} (${formatKeys(keys)})`,\n\t\toperationClass: \"widening\",\n\t\tprecheck: [{\n\t\t\tdescription: `index exists on ${collectionName}`,\n\t\t\tsource: new ListIndexesCommand(collectionName),\n\t\t\tfilter,\n\t\t\texpect: \"exists\"\n\t\t}],\n\t\texecute: [{\n\t\t\tdescription: `drop index on ${collectionName}`,\n\t\t\tcommand: new DropIndexCommand(collectionName, indexName)\n\t\t}],\n\t\tpostcheck: [{\n\t\t\tdescription: `index no longer exists on ${collectionName}`,\n\t\t\tsource: new ListIndexesCommand(collectionName),\n\t\t\tfilter,\n\t\t\texpect: \"notExists\"\n\t\t}]\n\t};\n}\nfunction createCollection(collectionName, options) {\n\tconst f = createFieldAccessor();\n\treturn {\n\t\tid: `collection.${collectionName}.create`,\n\t\tlabel: `Create collection ${collectionName}`,\n\t\toperationClass: \"additive\",\n\t\tprecheck: [{\n\t\t\tdescription: `collection ${collectionName} does not exist`,\n\t\t\tsource: new ListCollectionsCommand(),\n\t\t\tfilter: f.name.eq(collectionName),\n\t\t\texpect: \"notExists\"\n\t\t}],\n\t\texecute: [{\n\t\t\tdescription: `create collection ${collectionName}`,\n\t\t\tcommand: collection(collectionName).createCollection(options)\n\t\t}],\n\t\tpostcheck: []\n\t};\n}\nfunction dropCollection(collectionName) {\n\treturn {\n\t\tid: `collection.${collectionName}.drop`,\n\t\tlabel: `Drop collection ${collectionName}`,\n\t\toperationClass: \"destructive\",\n\t\tprecheck: [],\n\t\texecute: [{\n\t\t\tdescription: `drop collection ${collectionName}`,\n\t\t\tcommand: new DropCollectionCommand(collectionName)\n\t\t}],\n\t\tpostcheck: []\n\t};\n}\nfunction collectionCheck(name, expect) {\n\treturn {\n\t\tdescription: expect === \"exists\" ? `collection ${name} exists` : `collection ${name} does not exist`,\n\t\tsource: new ListCollectionsCommand(),\n\t\tfilter: MongoFieldFilter.eq(\"name\", name),\n\t\texpect\n\t};\n}\nfunction renameCollection(from, to) {\n\treturn {\n\t\tid: `collection.${from}.rename(${to})`,\n\t\tlabel: `Rename collection ${from} to ${to}`,\n\t\toperationClass: \"widening\",\n\t\tprecheck: [collectionCheck(from, \"exists\"), collectionCheck(to, \"notExists\")],\n\t\texecute: [{\n\t\t\tdescription: `rename collection ${from} to ${to}`,\n\t\t\tcommand: new RenameCollectionCommand(from, to)\n\t\t}],\n\t\tpostcheck: [collectionCheck(to, \"exists\"), collectionCheck(from, \"notExists\")]\n\t};\n}\nfunction setValidation(collectionName, schema, options) {\n\treturn {\n\t\tid: `collection.${collectionName}.setValidation`,\n\t\tlabel: `Set validation on ${collectionName}`,\n\t\toperationClass: \"widening\",\n\t\tprecheck: [],\n\t\texecute: [{\n\t\t\tdescription: `set validation on ${collectionName}`,\n\t\t\tcommand: new CollModCommand(collectionName, {\n\t\t\t\tvalidator: { $jsonSchema: schema },\n\t\t\t\t...ifDefined(\"validationLevel\", options?.validationLevel),\n\t\t\t\t...ifDefined(\"validationAction\", options?.validationAction)\n\t\t\t})\n\t\t}],\n\t\tpostcheck: []\n\t};\n}\n/**\n* Matches the collection's validator body. MongoDB returns the validator through `listCollections`\n* with its keys in the order given, so the order-sensitive comparison holds once the collMod ran; a\n* validator written by hand with another key order only makes the collMod run again.\n*/\nfunction validatorBodyFilter(validator) {\n\tconst { $jsonSchema, ...rest } = validator;\n\treturn $jsonSchema !== void 0 && Object.keys(rest).length === 0 ? MongoFieldFilter.eq(\"options.validator.$jsonSchema\", blindCast($jsonSchema)) : MongoFieldFilter.eq(\"options.validator\", documentValue(validator));\n}\nfunction collMod(collectionName, options, meta) {\n\tconst hasValidator = options.validator != null && Object.keys(options.validator).length > 0;\n\treturn {\n\t\tid: meta?.id ?? `collection.${collectionName}.collMod`,\n\t\tlabel: meta?.label ?? `Modify collection ${collectionName}`,\n\t\toperationClass: meta?.operationClass ?? \"widening\",\n\t\tprecheck: options.validator != null ? [{\n\t\t\tdescription: `collection ${collectionName} exists`,\n\t\t\tsource: new ListCollectionsCommand(),\n\t\t\tfilter: MongoFieldFilter.eq(\"name\", collectionName),\n\t\t\texpect: \"exists\"\n\t\t}] : [],\n\t\texecute: [{\n\t\t\tdescription: `modify ${collectionName}`,\n\t\t\tcommand: new CollModCommand(collectionName, options)\n\t\t}],\n\t\tpostcheck: hasValidator ? [{\n\t\t\tdescription: `validator applied on ${collectionName}`,\n\t\t\tsource: new ListCollectionsCommand(),\n\t\t\tfilter: MongoAndExpr.of([\n\t\t\t\tMongoFieldFilter.eq(\"name\", collectionName),\n\t\t\t\t...options.validationLevel ? [MongoFieldFilter.eq(\"options.validationLevel\", options.validationLevel)] : [],\n\t\t\t\t...options.validationAction ? [MongoFieldFilter.eq(\"options.validationAction\", options.validationAction)] : [],\n\t\t\t\tvalidatorBodyFilter(options.validator ?? {})\n\t\t\t]),\n\t\t\texpect: \"exists\"\n\t\t}] : []\n\t};\n}\nfunction validatedCollection(name, schema, indexes) {\n\treturn [createCollection(name, {\n\t\tvalidator: { $jsonSchema: schema },\n\t\tvalidationLevel: \"strict\",\n\t\tvalidationAction: \"error\"\n\t}), ...indexes.map((idx) => createIndex(name, idx.keys, idx.unique !== void 0 ? { unique: idx.unique } : void 0))];\n}\n//#endregion\nexport { dropCollection as a, renameField as c, unsetField as d, validatedCollection as f, dataTransform as i, setValidation as l, createCollection as n, dropIndex as o, createIndex as r, renameCollection as s, collMod as t, unrewritableFieldNameReason as u };\n\n//# sourceMappingURL=migration-factories-jwrORVMV.mjs.map"],"mappings":"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"}
|