{"version":3,"sources":["../../../../../src/dbs/adapters/mongodb/changes.ts","../../../../../src/dbs/adapters/base/changes.ts","../../../../../src/dbs/adapters/mongodb/db.ts","../../../../../src/dbs/adapters/mongodb/pipes.ts","../../../../../src/dbs/adapters/mongodb/query.ts"],"sourcesContent":["import { Collection, type Filter } from 'mongodb'\nimport { differ } from 'valleyed'\n\nimport type { MongoDbConfig } from './pipes'\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport { retry } from '../../../utilities'\nimport { DbChange, TopicPrefix } from '../base/changes'\nimport * as core from '../base/core'\nimport type { DbChangeConfig } from '../base/types'\n\nexport class MongoDbChange<Model extends core.Model<{ _id: string }>, Entity extends core.Entity> extends DbChange<Model, Entity> {\n\t#started = false\n\n\tconstructor(\n\t\tconfig: MongoDbConfig,\n\t\tchange: DbChangeConfig,\n\t\tcollection: Collection<Model>,\n\t\tcallbacks: core.DbChangeCallbacks<Model, Entity>,\n\t\tmapper: (model: Model) => Entity,\n\t) {\n\t\tsuper(change, callbacks, mapper)\n\n\t\tconst hydrate = (data: any) =>\n\t\t\tdata._id\n\t\t\t\t? {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t_id: data._id['$oid'] ?? data._id,\n\t\t\t\t\t}\n\t\t\t\t: undefined\n\n\t\tconst dbName = collection.dbName\n\t\tconst colName = collection.collectionName\n\t\tconst dbColName = `${dbName}.${colName}`\n\t\tconst topic = `${TopicPrefix}.${dbColName}`\n\n\t\tconst TestId = '5f5f65717569707065645f5f' // __equipped__\n\t\tconst condition = { _id: TestId } as Filter<Model>\n\n\t\tchange.eventBus.stream(topic as never, { skipScope: true }).subscribe(async (data: DbDocumentChange) => {\n\t\t\tconst op = data.op\n\n\t\t\tlet before = JSON.parse(data.before ?? 'null')\n\t\t\tlet after = JSON.parse(data.after ?? 'null')\n\n\t\t\tif (before) before = hydrate(before)\n\t\t\tif (after) after = hydrate(after)\n\t\t\tif (before?._id === TestId || after?._id === TestId) return\n\n\t\t\tif (op === 'c' && this.callbacks.created && after)\n\t\t\t\tawait this.callbacks.created({\n\t\t\t\t\tbefore: null,\n\t\t\t\t\tafter: this.mapper(after)!,\n\t\t\t\t})\n\t\t\telse if (op === 'u' && this.callbacks.updated && before && after)\n\t\t\t\tawait this.callbacks.updated({\n\t\t\t\t\tbefore: this.mapper(before)!,\n\t\t\t\t\tafter: this.mapper(after)!,\n\t\t\t\t\tchanges: differ.from(differ.diff(before, after)),\n\t\t\t\t})\n\t\t\telse if (op === 'd' && this.callbacks.deleted && before)\n\t\t\t\tawait this.callbacks.deleted({\n\t\t\t\t\tbefore: this.mapper(before)!,\n\t\t\t\t\tafter: null,\n\t\t\t\t})\n\t\t})\n\n\t\tInstance.on('start', async () => {\n\t\t\tif (this.#started) return\n\t\t\tthis.#started = true\n\n\t\t\tawait retry(\n\t\t\t\tasync () => {\n\t\t\t\t\tconst started = await this.configureConnector(topic, {\n\t\t\t\t\t\t'connector.class': 'io.debezium.connector.mongodb.MongoDbConnector',\n\t\t\t\t\t\t'capture.mode': 'change_streams_update_full_with_pre_image',\n\t\t\t\t\t\t'mongodb.connection.string': config.uri,\n\t\t\t\t\t\t'collection.include.list': dbColName,\n\t\t\t\t\t\t'snapshot.mode': 'when_needed',\n\t\t\t\t\t\t'capture.scope': 'collection',\n\t\t\t\t\t\t'capture.target': dbColName,\n\t\t\t\t\t\t'heartbeat.interval.ms': '60000',\n\t\t\t\t\t\t'errors.max.retries': '3',\n\t\t\t\t\t})\n\n\t\t\t\t\tif (started) return { done: true, value: true }\n\t\t\t\t\tawait collection.findOneAndUpdate(condition, { $set: { colName } as any }, { upsert: true })\n\t\t\t\t\tawait collection.findOneAndDelete(condition)\n\t\t\t\t\tInstance.get().log.warn(`Waiting for db changes for ${dbColName} to start...`)\n\t\t\t\t\treturn { done: false }\n\t\t\t\t},\n\t\t\t\t6,\n\t\t\t\t30_000,\n\t\t\t).catch((err) => Instance.crash(new EquippedError(`Failed to start db changes`, { dbColName }, err)))\n\t\t})\n\t}\n}\n\ntype DbDocumentChange = {\n\tbefore: string | null\n\tafter: string | null\n\top: 'c' | 'u' | 'd'\n}\n","import axios from 'axios'\nimport { v } from 'valleyed'\n\nimport * as core from './core'\nimport { dbChangeConfigPipe, type DbChangeConfig } from './types'\nimport { EquippedError } from '../../../errors'\n\nexport const TopicPrefix = 'db-changes'\n\nexport abstract class DbChange<Model extends core.Model<core.IdType>, Entity extends core.Entity> {\n\tconstructor(\n\t\tprotected config: DbChangeConfig,\n\t\tprotected callbacks: core.DbChangeCallbacks<Model, Entity>,\n\t\tprotected mapper: (model: Model) => Entity,\n\t) {\n\t\tthis.config = v.assert(dbChangeConfigPipe(), config)\n\t}\n\n\tprotected async configureConnector(key: string, data: Record<string, string>) {\n\t\tconst instance = axios.create({ baseURL: this.config.debeziumUrl })\n\t\treturn await instance\n\t\t\t.put(`/connectors/${key}/config`, {\n\t\t\t\t'topic.prefix': TopicPrefix,\n\t\t\t\t'topic.creation.enable': 'false',\n\t\t\t\t'topic.creation.default.replication.factor': `-1`,\n\t\t\t\t'topic.creation.default.partitions': '-1',\n\t\t\t\t'key.converter': 'org.apache.kafka.connect.json.JsonConverter',\n\t\t\t\t'key.converter.schemas.enable': 'false',\n\t\t\t\t'value.converter': 'org.apache.kafka.connect.json.JsonConverter',\n\t\t\t\t'value.converter.schemas.enable': 'false',\n\t\t\t\t...data,\n\t\t\t})\n\t\t\t.then(async () => {\n\t\t\t\tconst topics = await instance.get(`/connectors/${key}/topics`)\n\t\t\t\treturn topics.data[key]?.topics?.includes?.(key) ?? false\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tthrow new EquippedError(`Failed to configure watcher`, { key }, err)\n\t\t\t})\n\t}\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport {\n\tClientSession,\n\tCollection,\n\tMongoClient,\n\tObjectId,\n\ttype CollectionInfo,\n\ttype OptionalUnlessRequiredId,\n\ttype SortDirection,\n\ttype WithId,\n} from 'mongodb'\nimport { v } from 'valleyed'\n\nimport { MongoDbChange } from './changes'\nimport { mongoDbConfigPipe, type MongoDbConfig } from './pipes'\nimport { parseMongodbQueryParams } from './query'\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport type { QueryParamsBase } from '../../pipes'\nimport * as core from '../base/core'\nimport { Db } from '../base/db'\nimport type { DbConfig } from '../base/types'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nconst sessionStore = new AsyncLocalStorage<ClientSession | undefined>(undefined)\n\nexport class MongoDb extends Db<{ _id: string }> {\n\tclient: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.mongoConfig = v.assert(mongoDbConfigPipe(), mongoConfig)\n\t\tthis.client = new MongoClient(mongoConfig.uri, { ignoreUndefined: true })\n\t\tInstance.on('start', async () => {\n\t\t\tawait this.client.connect()\n\n\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\treturn acc\n\t\t\t}, {})\n\n\t\t\tconst options = {\n\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t}\n\t\t\tawait Promise.all(\n\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\tconst db = this.client.db(dbName)\n\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t})\n\t\tInstance.on('close', async () => this.client.close())\n\t}\n\n\tasync session<T>(callback: () => Promise<T>) {\n\t\tif (sessionStore.getStore()) return callback()\n\t\tconst session = await this.client.startSession()\n\t\treturn session.withTransaction(async () => sessionStore.run(session, callback))\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tconst db = this.getScopedDb(config.db)\n\t\tthis.#cols.push({ db, col: config.col })\n\t\treturn this.#getTable(config, this.client.db(db).collection<Model>(config.col))\n\t}\n\n\t#getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\t\tconfig: core.Config<Model, Entity>,\n\t\tcollection: Collection<Model>,\n\t) {\n\t\ttype WI = Model | WithId<Model>\n\t\tfunction transform(doc: WI, select?: core.Select<Entity>): Entity\n\t\t// eslint-disable-next-line no-redeclare\n\t\tfunction transform(doc: WI[], select?: core.Select<Entity>): Entity[]\n\t\t// eslint-disable-next-line no-redeclare\n\t\tfunction transform(doc: WI | WI[], select?: core.Select<Entity>) {\n\t\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\t\tconst mapped = docs.map((d) => config.mapper(d as Model, select))\n\t\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t\t}\n\n\t\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\t\tconst base: core.Model<IdType> = {\n\t\t\t\t[idKey]: id,\n\t\t\t\t...(config.options?.skipAudit\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t\t}),\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t...base,\n\t\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t\t}\n\n\t\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date, upsert = false) {\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t$set: {\n\t\t\t\t\t...value.$set,\n\t\t\t\t\t...(upsert || (Object.keys(value).length > 0 && !config.options?.skipAudit) ? { updatedAt: now.getTime() } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst dbThis = this\n\n\t\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\t\tconfig,\n\t\t\textras: { collection },\n\n\t\t\tquery: async (params) => {\n\t\t\t\tconst results = await parseMongodbQueryParams(collection, params as QueryParamsBase)\n\t\t\t\treturn {\n\t\t\t\t\t...results,\n\t\t\t\t\tresults: transform(results.results as any, params.select as core.Select<Entity>),\n\t\t\t\t} as any\n\t\t\t},\n\n\t\t\tfindMany: async (filter, options = {}) => {\n\t\t\t\tconst { select, ...rest } = options\n\t\t\t\tconst projection = select?.length ? Object.fromEntries(select.map((k) => [k, 1])) : undefined\n\t\t\t\tconst sortArray = Array.isArray(rest.sort) ? rest.sort : rest.sort ? [rest.sort] : []\n\t\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\t\tconst docs = await collection\n\t\t\t\t\t.find(filter, {\n\t\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t\t\tlimit: rest.limit,\n\t\t\t\t\t\tsort,\n\t\t\t\t\t\tprojection,\n\t\t\t\t\t})\n\t\t\t\t\t.toArray()\n\t\t\t\treturn transform(docs, select as core.Select<Entity>) as any\n\t\t\t},\n\n\t\t\tfindOne: async (filter: core.Filter<Model>, options = {}) => {\n\t\t\t\tconst result = await table.findMany(filter, { ...options, limit: 1 } as any)\n\t\t\t\treturn (result.at(0) ?? null) as any\n\t\t\t},\n\n\t\t\tfindById: async (id, options = {}) => {\n\t\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>, options as any)\n\t\t\t\treturn result as any\n\t\t\t},\n\n\t\t\tinsertMany: async (values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\tawait collection.insertMany(payload, { session: sessionStore.getStore() })\n\n\t\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any)))\n\t\t\t\treturn insertedData.filter((value) => !!value)\n\t\t\t},\n\n\t\t\tinsertOne: async (values, options = {}) => {\n\t\t\t\tconst result = await table.insertMany([values], options)\n\t\t\t\treturn result[0]\n\t\t\t},\n\n\t\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst session = sessionStore.getStore()\n\t\t\t\tconst data = await collection.find(filter, { session, projection: { [idKey]: 1 } }).toArray()\n\t\t\t\tconst ids = data.map((doc) => doc[idKey])\n\t\t\t\tconst filterUpd = { [idKey]: { $in: ids } } as core.Filter<Model>\n\t\t\t\tawait collection.updateMany(filterUpd, prepUpdateValue(values, now), { session })\n\t\t\t\treturn table.findMany(filterUpd)\n\t\t\t},\n\n\t\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\t\treturnDocument: 'after',\n\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t})\n\t\t\t\treturn doc ? transform(doc, undefined) : null\n\t\t\t},\n\n\t\t\tupdateById: async (id, values, options = {}) => {\n\t\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\t\tfilter,\n\t\t\t\t\t{\n\t\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now, true),\n\t\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t\t},\n\t\t\t\t\t{ returnDocument: 'after', session: sessionStore.getStore(), upsert: true },\n\t\t\t\t)\n\n\t\t\t\treturn transform(doc, undefined)\n\t\t\t},\n\n\t\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\t\tawait collection.deleteMany(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn docs\n\t\t\t},\n\n\t\t\tdeleteOne: async (filter) => {\n\t\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn doc ? transform(doc, undefined) : null\n\t\t\t},\n\n\t\t\tdeleteById: async (id) => {\n\t\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\t\tif (!operations.length) return\n\t\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: sessionStore.getStore() })\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\toperations.forEach((operation, i) => {\n\t\t\t\t\tswitch (operation.op) {\n\t\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'update':\n\t\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now, true),\n\t\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tawait bulk.execute({ session: sessionStore.getStore() })\n\t\t\t},\n\n\t\t\twatch(callbacks) {\n\t\t\t\tif (!dbThis.config.changes)\n\t\t\t\t\tInstance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\t\treturn new MongoDbChange<Model, Entity>(dbThis.mongoConfig, dbThis.config.changes, collection, callbacks, (m) =>\n\t\t\t\t\tconfig.mapper(m),\n\t\t\t\t)\n\t\t\t},\n\t\t}\n\n\t\treturn table\n\t}\n}\n","import { type PipeInput, v } from 'valleyed'\n\nexport const mongoDbConfigPipe = () =>\n\tv.meta(\n\t\tv.object({\n\t\t\turi: v.string(),\n\t\t}),\n\t\t{ title: 'Mongodb Config', $refId: 'MongodbConfig' },\n\t)\n\nexport type MongoDbConfig = PipeInput<ReturnType<typeof mongoDbConfigPipe>>\n","import { Collection } from 'mongodb'\n\nimport { QueryKeys, type QueryParamsBase, type QueryResults, type QueryWhereBlock, type QueryWhereClause } from '../../pipes'\nimport * as core from '../base/core'\n\nexport const parseMongodbQueryParams = async <Model extends core.Model<{ _id: string }>>(\n\tcollection: Collection<Model>,\n\tparams: QueryParamsBase,\n): Promise<QueryResults<Model>> => {\n\t// Handle where/search clauses\n\tconst query = <ReturnType<typeof buildWhereQuery>[]>[]\n\tconst where = buildWhereQuery(params.where, params.whereType)\n\tif (where) query.push(where)\n\tconst auth = buildWhereQuery(params.auth, params.authType)\n\tif (auth) query.push(auth)\n\tif (params.search && params.search.fields.length > 0) {\n\t\tconst search = params.search.fields.map((field) => ({\n\t\t\t[field]: {\n\t\t\t\t$regex: new RegExp(params.search!.value, 'i'),\n\t\t\t},\n\t\t}))\n\t\tquery.push({ $or: search })\n\t}\n\tconst totalClause = {}\n\tif (query.length > 0) totalClause['$and'] = query\n\n\t// Handle sort clauses\n\tconst sort = params.sort.map((p) => [p.field, p.desc ? 'desc' : 'asc'])\n\n\t// Handle limit/offest clause\n\tconst all = params.all ?? false\n\tconst limit = params.limit\n\tconst page = params.page\n\n\tconst total = await collection.countDocuments(totalClause)\n\n\tconst projection = params.select?.length ? Object.fromEntries(params.select.map((k) => [k, 1])) : undefined\n\tlet builtQuery = collection.find(totalClause, { projection })\n\tif (sort.length) builtQuery = builtQuery.sort(Object.fromEntries(sort))\n\tif (!all && limit) {\n\t\tbuiltQuery = builtQuery.limit(limit)\n\t\tif (page) builtQuery = builtQuery.skip((page - 1) * limit)\n\t}\n\n\tconst results = await builtQuery.toArray()\n\tconst start = 1\n\tconst last = Math.ceil(total / limit) || 1\n\tconst next = page >= last ? null : page + 1\n\tconst previous = page <= start ? null : page - 1\n\n\treturn {\n\t\tpages: { start, last, next, previous, current: page },\n\t\tdocs: { limit, total, count: results.length },\n\t\tresults: results as any[],\n\t} satisfies QueryResults<Model>\n}\n\nfunction isWhereBlock(param: QueryWhereClause): param is QueryWhereBlock {\n\treturn Object.values(QueryKeys).includes(param.condition as QueryKeys)\n}\n\nconst buildWhereQuery = (params: QueryWhereClause[], key: QueryKeys = QueryKeys.and): Record<string, Record<string, any>> | null => {\n\tconst where = (Array.isArray(params) ? params : [])\n\t\t.map((param) => {\n\t\t\tif (isWhereBlock(param)) return buildWhereQuery(param.value, param.condition)\n\t\t\tconst { field } = param\n\t\t\tconst checkedField = field === 'id' ? '_id' : (field ?? '')\n\t\t\tconst checkedValue = param.value === undefined ? '' : param.value\n\t\t\treturn {\n\t\t\t\tfield: checkedField,\n\t\t\t\tvalue: checkedValue,\n\t\t\t\tcondition: param.condition,\n\t\t\t\tisWhere: true,\n\t\t\t}\n\t\t})\n\t\t.filter((c) => !!c)\n\t\t.map((c) => {\n\t\t\tif (c.isWhere) return { [`${c.field}`]: { [`$${c.condition}`]: c.value } }\n\t\t\telse return c\n\t\t})\n\n\treturn where.length > 0 ? { [`$${key}`]: where } : null\n}\n"],"mappings":"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","names":["differ","axios","v","TopicPrefix","DbChange","config","callbacks","mapper","v","dbChangeConfigPipe","key","data","instance","axios","err","EquippedError","MongoDbChange","DbChange","#started","config","change","collection","callbacks","mapper","hydrate","data","dbName","colName","dbColName","topic","TopicPrefix","TestId","condition","op","before","after","differ","Instance","retry","err","EquippedError","AsyncLocalStorage","MongoClient","ObjectId","v","v","mongoDbConfigPipe","parseMongodbQueryParams","collection","params","query","where","buildWhereQuery","auth","search","field","totalClause","sort","p","all","limit","page","total","projection","k","builtQuery","results","start","last","next","previous","isWhereBlock","param","QueryKeys","key","checkedField","checkedValue","c","idKey","sessionStore","AsyncLocalStorage","MongoDb","Db","mongoConfig","dbConfig","v","mongoDbConfigPipe","MongoClient","Instance","grouped","#cols","acc","cur","options","dbName","colNames","db","collections","colName","existing","collection","callback","session","ObjectId","config","#getTable","transform","doc","select","mapped","d","prepInsertValue","value","id","now","skipUpdate","base","prepUpdateValue","upsert","dbThis","table","params","results","parseMongodbQueryParams","filter","rest","projection","k","sort","p","docs","values","payload","i","data","ids","filterUpd","operations","bulk","operation","EquippedError","callbacks","MongoDbChange","m"]}