@payloadcms/db-mongodb 4.0.0-internal.af6aad0 → 4.0.0-internal.b8a92d2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,SAAS,CAAA;AAOjD,eAAO,MAAM,OAAO,EAAE,OA4GrB,CAAA"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,SAAS,CAAA;AAOjD,eAAO,MAAM,OAAO,EAAE,OAkHrB,CAAA"}
package/dist/connect.js CHANGED
@@ -64,8 +64,14 @@ export const connect = async function connect(options = {
64
64
  }
65
65
  }
66
66
  if (this.ensureIndexes) {
67
- await Promise.all(this.payload.config.collections.map(async (coll)=>{
68
- await this.collections[coll.slug]?.ensureIndexes();
67
+ await Promise.all([
68
+ ...this.payload.config.collections.flatMap((collection)=>[
69
+ this.collections[collection.slug],
70
+ this.versions[collection.slug]
71
+ ]),
72
+ ...this.payload.config.globals.map((global)=>this.versions[global.slug])
73
+ ].map(async (model)=>{
74
+ await model?.ensureIndexes();
69
75
  }));
70
76
  }
71
77
  if (process.env.NODE_ENV === 'production' && this.prodMigrations) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/connect.ts"],"sourcesContent":["import type { ConnectOptions } from 'mongoose'\nimport type { Connect, Migration } from 'payload'\n\nimport mongoose from 'mongoose'\nimport { defaultBeginTransaction } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nexport const connect: Connect = async function connect(\n this: MongooseAdapter,\n options = {\n hotReload: false,\n },\n) {\n const { hotReload } = options\n\n if (this.url === false) {\n return\n }\n\n if (typeof this.url !== 'string') {\n throw new Error('Error: missing MongoDB connection URL.')\n }\n\n const urlToConnect = this.url\n\n const connectionOptions: ConnectOptions = {\n autoIndex: true,\n ...this.connectOptions,\n }\n\n if (hotReload) {\n connectionOptions.autoIndex = false\n }\n\n try {\n if (!this.connection) {\n this.connection = await mongoose.createConnection(urlToConnect, connectionOptions).asPromise()\n if (this.afterCreateConnection) {\n await this.afterCreateConnection(this)\n }\n }\n\n await this.connection.openUri(urlToConnect, connectionOptions)\n\n if (this.afterOpenConnection) {\n await this.afterOpenConnection(this)\n }\n\n if (this.useAlternativeDropDatabase) {\n if (this.connection.db) {\n // Firestore doesn't support dropDatabase, so we monkey patch\n // dropDatabase to delete all documents from all collections instead\n this.connection.db.dropDatabase = async function (): Promise<boolean> {\n const existingCollections = await this.listCollections().toArray()\n await Promise.all(\n existingCollections.map(async (collectionInfo) => {\n const collection = this.collection(collectionInfo.name)\n await collection.deleteMany({})\n }),\n )\n return true\n }\n this.connection.dropDatabase = async function () {\n await this.db?.dropDatabase()\n }\n }\n }\n\n // If we are running a replica set with MongoDB Memory Server,\n // wait until the replica set elects a primary before proceeding\n if (this.mongoMemoryServer) {\n this.payload.logger.info(\n 'Waiting for MongoDB Memory Server replica set to elect a primary...',\n )\n await new Promise((resolve) => setTimeout(resolve, 2000))\n }\n\n if (!this.connection.getClient().options.replicaSet) {\n this.transactionOptions = false\n this.beginTransaction = defaultBeginTransaction()\n }\n\n if (!hotReload) {\n if (process.env.PAYLOAD_DROP_DATABASE === 'true') {\n this.payload.logger.info('---- DROPPING DATABASE ----')\n await this.connection.dropDatabase()\n\n this.payload.logger.info('---- DROPPED DATABASE ----')\n }\n }\n\n if (this.ensureIndexes) {\n await Promise.all(\n this.payload.config.collections.map(async (coll) => {\n await this.collections[coll.slug]?.ensureIndexes()\n }),\n )\n }\n\n if (process.env.NODE_ENV === 'production' && this.prodMigrations) {\n await this.migrate({ migrations: this.prodMigrations as unknown as Migration[] })\n }\n } catch (err) {\n let msg = `Error: cannot connect to MongoDB.`\n\n if (typeof err === 'object' && err && 'message' in err && typeof err.message === 'string') {\n msg = `${msg} Details: ${err.message}`\n }\n\n this.payload.logger.error({\n err,\n msg,\n })\n throw new Error(`Error: cannot connect to MongoDB: ${msg}`)\n }\n}\n"],"names":["mongoose","defaultBeginTransaction","connect","options","hotReload","url","Error","urlToConnect","connectionOptions","autoIndex","connectOptions","connection","createConnection","asPromise","afterCreateConnection","openUri","afterOpenConnection","useAlternativeDropDatabase","db","dropDatabase","existingCollections","listCollections","toArray","Promise","all","map","collectionInfo","collection","name","deleteMany","mongoMemoryServer","payload","logger","info","resolve","setTimeout","getClient","replicaSet","transactionOptions","beginTransaction","process","env","PAYLOAD_DROP_DATABASE","ensureIndexes","config","collections","coll","slug","NODE_ENV","prodMigrations","migrate","migrations","err","msg","message","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/connect.ts"],"sourcesContent":["import type { ConnectOptions } from 'mongoose'\nimport type { Connect, Migration } from 'payload'\n\nimport mongoose from 'mongoose'\nimport { defaultBeginTransaction } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nexport const connect: Connect = async function connect(\n this: MongooseAdapter,\n options = {\n hotReload: false,\n },\n) {\n const { hotReload } = options\n\n if (this.url === false) {\n return\n }\n\n if (typeof this.url !== 'string') {\n throw new Error('Error: missing MongoDB connection URL.')\n }\n\n const urlToConnect = this.url\n\n const connectionOptions: ConnectOptions = {\n autoIndex: true,\n ...this.connectOptions,\n }\n\n if (hotReload) {\n connectionOptions.autoIndex = false\n }\n\n try {\n if (!this.connection) {\n this.connection = await mongoose.createConnection(urlToConnect, connectionOptions).asPromise()\n if (this.afterCreateConnection) {\n await this.afterCreateConnection(this)\n }\n }\n\n await this.connection.openUri(urlToConnect, connectionOptions)\n\n if (this.afterOpenConnection) {\n await this.afterOpenConnection(this)\n }\n\n if (this.useAlternativeDropDatabase) {\n if (this.connection.db) {\n // Firestore doesn't support dropDatabase, so we monkey patch\n // dropDatabase to delete all documents from all collections instead\n this.connection.db.dropDatabase = async function (): Promise<boolean> {\n const existingCollections = await this.listCollections().toArray()\n await Promise.all(\n existingCollections.map(async (collectionInfo) => {\n const collection = this.collection(collectionInfo.name)\n await collection.deleteMany({})\n }),\n )\n return true\n }\n this.connection.dropDatabase = async function () {\n await this.db?.dropDatabase()\n }\n }\n }\n\n // If we are running a replica set with MongoDB Memory Server,\n // wait until the replica set elects a primary before proceeding\n if (this.mongoMemoryServer) {\n this.payload.logger.info(\n 'Waiting for MongoDB Memory Server replica set to elect a primary...',\n )\n await new Promise((resolve) => setTimeout(resolve, 2000))\n }\n\n if (!this.connection.getClient().options.replicaSet) {\n this.transactionOptions = false\n this.beginTransaction = defaultBeginTransaction()\n }\n\n if (!hotReload) {\n if (process.env.PAYLOAD_DROP_DATABASE === 'true') {\n this.payload.logger.info('---- DROPPING DATABASE ----')\n await this.connection.dropDatabase()\n\n this.payload.logger.info('---- DROPPED DATABASE ----')\n }\n }\n\n if (this.ensureIndexes) {\n await Promise.all(\n [\n ...this.payload.config.collections.flatMap((collection) => [\n this.collections[collection.slug],\n this.versions[collection.slug],\n ]),\n ...this.payload.config.globals.map((global) => this.versions[global.slug]),\n ].map(async (model) => {\n await model?.ensureIndexes()\n }),\n )\n }\n\n if (process.env.NODE_ENV === 'production' && this.prodMigrations) {\n await this.migrate({ migrations: this.prodMigrations as unknown as Migration[] })\n }\n } catch (err) {\n let msg = `Error: cannot connect to MongoDB.`\n\n if (typeof err === 'object' && err && 'message' in err && typeof err.message === 'string') {\n msg = `${msg} Details: ${err.message}`\n }\n\n this.payload.logger.error({\n err,\n msg,\n })\n throw new Error(`Error: cannot connect to MongoDB: ${msg}`)\n }\n}\n"],"names":["mongoose","defaultBeginTransaction","connect","options","hotReload","url","Error","urlToConnect","connectionOptions","autoIndex","connectOptions","connection","createConnection","asPromise","afterCreateConnection","openUri","afterOpenConnection","useAlternativeDropDatabase","db","dropDatabase","existingCollections","listCollections","toArray","Promise","all","map","collectionInfo","collection","name","deleteMany","mongoMemoryServer","payload","logger","info","resolve","setTimeout","getClient","replicaSet","transactionOptions","beginTransaction","process","env","PAYLOAD_DROP_DATABASE","ensureIndexes","config","collections","flatMap","slug","versions","globals","global","model","NODE_ENV","prodMigrations","migrate","migrations","err","msg","message","error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createMigration.d.ts","sourceRoot":"","sources":["../src/createMigration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,SAAS,CAAA;AAqBrE,eAAO,MAAM,eAAe,EAAE,eAwC7B,CAAA"}
1
+ {"version":3,"file":"createMigration.d.ts","sourceRoot":"","sources":["../src/createMigration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,SAAS,CAAA;AAqBrE,eAAO,MAAM,eAAe,EAAE,eA4C7B,CAAA"}
@@ -36,15 +36,22 @@ export const createMigration = async function createMigration({ file, migrationN
36
36
  const formattedName = migrationName?.replace(/\W/g, '_');
37
37
  const fileName = migrationName ? `${timestamp}_${formattedName}.ts` : `${timestamp}_migration.ts`;
38
38
  const filePath = `${dir}/${fileName}`;
39
- if (!skipEmpty) {
40
- fs.writeFileSync(filePath, migrationFileContent);
39
+ if (skipEmpty) {
40
+ return {
41
+ created: false
42
+ };
41
43
  }
44
+ fs.writeFileSync(filePath, migrationFileContent);
42
45
  writeMigrationIndex({
43
46
  migrationsDir: payload.db.migrationDir
44
47
  });
45
48
  payload.logger.info({
46
49
  msg: `Migration created at ${filePath}`
47
50
  });
51
+ return {
52
+ created: true,
53
+ path: filePath
54
+ };
48
55
  };
49
56
 
50
57
  //# sourceMappingURL=createMigration.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createMigration.ts"],"sourcesContent":["import type { CreateMigration, MigrationTemplateArgs } from 'payload'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport { fileURLToPath } from 'url'\n\nconst migrationTemplate = ({ downSQL, imports, upSQL }: MigrationTemplateArgs): string => `import {\n MigrateDownArgs,\n MigrateUpArgs,\n} from '@payloadcms/db-mongodb'\n${imports ?? ''}\nexport async function up({ payload, req, session }: MigrateUpArgs): Promise<void> {\n${upSQL ?? ` // Migration code`}\n}\n\nexport async function down({ payload, req, session }: MigrateDownArgs): Promise<void> {\n${downSQL ?? ` // Migration code`}\n}\n`\n\nexport const createMigration: CreateMigration = async function createMigration({\n file,\n migrationName,\n payload,\n skipEmpty,\n}) {\n const filename = fileURLToPath(import.meta.url)\n const dirname = path.dirname(filename)\n\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n const predefinedMigration = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n })\n\n const migrationFileContent = migrationTemplate(predefinedMigration)\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n\n const formattedDate = yyymmdd!.replace(/\\D/g, '')\n const formattedTime = hhmmss!.split('.')[0]!.replace(/\\D/g, '')\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const formattedName = migrationName?.replace(/\\W/g, '_')\n const fileName = migrationName ? `${timestamp}_${formattedName}.ts` : `${timestamp}_migration.ts`\n const filePath = `${dir}/${fileName}`\n\n if (!skipEmpty) {\n fs.writeFileSync(filePath, migrationFileContent)\n }\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}` })\n}\n"],"names":["fs","path","getPredefinedMigration","writeMigrationIndex","fileURLToPath","migrationTemplate","downSQL","imports","upSQL","createMigration","file","migrationName","payload","skipEmpty","filename","url","dirname","dir","db","migrationDir","existsSync","mkdirSync","predefinedMigration","migrationFileContent","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","timestamp","formattedName","fileName","filePath","writeFileSync","migrationsDir","logger","info","msg"],"mappings":"AAEA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,sBAAsB,EAAEC,mBAAmB,QAAQ,UAAS;AACrE,SAASC,aAAa,QAAQ,MAAK;AAEnC,MAAMC,oBAAoB,CAAC,EAAEC,OAAO,EAAEC,OAAO,EAAEC,KAAK,EAAyB,GAAa,CAAC;;;;AAI3F,EAAED,WAAW,GAAG;;AAEhB,EAAEC,SAAS,CAAC,mBAAmB,CAAC,CAAC;;;;AAIjC,EAAEF,WAAW,CAAC,mBAAmB,CAAC,CAAC;;AAEnC,CAAC;AAED,OAAO,MAAMG,kBAAmC,eAAeA,gBAAgB,EAC7EC,IAAI,EACJC,aAAa,EACbC,OAAO,EACPC,SAAS,EACV;IACC,MAAMC,WAAWV,cAAc,YAAYW,GAAG;IAC9C,MAAMC,UAAUf,KAAKe,OAAO,CAACF;IAE7B,MAAMG,MAAML,QAAQM,EAAE,CAACC,YAAY;IACnC,IAAI,CAACnB,GAAGoB,UAAU,CAACH,MAAM;QACvBjB,GAAGqB,SAAS,CAACJ;IACf;IACA,MAAMK,sBAAsB,MAAMpB,uBAAuB;QACvDc;QACAN;QACAC;QACAC;IACF;IAEA,MAAMW,uBAAuBlB,kBAAkBiB;IAE/C,MAAM,CAACE,SAASC,OAAO,GAAG,IAAIC,OAAOC,WAAW,GAAGC,KAAK,CAAC;IAEzD,MAAMC,gBAAgBL,QAASM,OAAO,CAAC,OAAO;IAC9C,MAAMC,gBAAgBN,OAAQG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAEE,OAAO,CAAC,OAAO;IAE5D,MAAME,YAAY,GAAGH,cAAc,CAAC,EAAEE,eAAe;IAErD,MAAME,gBAAgBtB,eAAemB,QAAQ,OAAO;IACpD,MAAMI,WAAWvB,gBAAgB,GAAGqB,UAAU,CAAC,EAAEC,cAAc,GAAG,CAAC,GAAG,GAAGD,UAAU,aAAa,CAAC;IACjG,MAAMG,WAAW,GAAGlB,IAAI,CAAC,EAAEiB,UAAU;IAErC,IAAI,CAACrB,WAAW;QACdb,GAAGoC,aAAa,CAACD,UAAUZ;IAC7B;IAEApB,oBAAoB;QAAEkC,eAAezB,QAAQM,EAAE,CAACC,YAAY;IAAC;IAE7DP,QAAQ0B,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,qBAAqB,EAAEL,UAAU;IAAC;AAChE,EAAC"}
1
+ {"version":3,"sources":["../src/createMigration.ts"],"sourcesContent":["import type { CreateMigration, MigrationTemplateArgs } from 'payload'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport { fileURLToPath } from 'url'\n\nconst migrationTemplate = ({ downSQL, imports, upSQL }: MigrationTemplateArgs): string => `import {\n MigrateDownArgs,\n MigrateUpArgs,\n} from '@payloadcms/db-mongodb'\n${imports ?? ''}\nexport async function up({ payload, req, session }: MigrateUpArgs): Promise<void> {\n${upSQL ?? ` // Migration code`}\n}\n\nexport async function down({ payload, req, session }: MigrateDownArgs): Promise<void> {\n${downSQL ?? ` // Migration code`}\n}\n`\n\nexport const createMigration: CreateMigration = async function createMigration({\n file,\n migrationName,\n payload,\n skipEmpty,\n}) {\n const filename = fileURLToPath(import.meta.url)\n const dirname = path.dirname(filename)\n\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n const predefinedMigration = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n })\n\n const migrationFileContent = migrationTemplate(predefinedMigration)\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n\n const formattedDate = yyymmdd!.replace(/\\D/g, '')\n const formattedTime = hhmmss!.split('.')[0]!.replace(/\\D/g, '')\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const formattedName = migrationName?.replace(/\\W/g, '_')\n const fileName = migrationName ? `${timestamp}_${formattedName}.ts` : `${timestamp}_migration.ts`\n const filePath = `${dir}/${fileName}`\n\n if (skipEmpty) {\n return { created: false }\n }\n\n fs.writeFileSync(filePath, migrationFileContent)\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}` })\n\n return { created: true, path: filePath }\n}\n"],"names":["fs","path","getPredefinedMigration","writeMigrationIndex","fileURLToPath","migrationTemplate","downSQL","imports","upSQL","createMigration","file","migrationName","payload","skipEmpty","filename","url","dirname","dir","db","migrationDir","existsSync","mkdirSync","predefinedMigration","migrationFileContent","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","timestamp","formattedName","fileName","filePath","created","writeFileSync","migrationsDir","logger","info","msg"],"mappings":"AAEA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,sBAAsB,EAAEC,mBAAmB,QAAQ,UAAS;AACrE,SAASC,aAAa,QAAQ,MAAK;AAEnC,MAAMC,oBAAoB,CAAC,EAAEC,OAAO,EAAEC,OAAO,EAAEC,KAAK,EAAyB,GAAa,CAAC;;;;AAI3F,EAAED,WAAW,GAAG;;AAEhB,EAAEC,SAAS,CAAC,mBAAmB,CAAC,CAAC;;;;AAIjC,EAAEF,WAAW,CAAC,mBAAmB,CAAC,CAAC;;AAEnC,CAAC;AAED,OAAO,MAAMG,kBAAmC,eAAeA,gBAAgB,EAC7EC,IAAI,EACJC,aAAa,EACbC,OAAO,EACPC,SAAS,EACV;IACC,MAAMC,WAAWV,cAAc,YAAYW,GAAG;IAC9C,MAAMC,UAAUf,KAAKe,OAAO,CAACF;IAE7B,MAAMG,MAAML,QAAQM,EAAE,CAACC,YAAY;IACnC,IAAI,CAACnB,GAAGoB,UAAU,CAACH,MAAM;QACvBjB,GAAGqB,SAAS,CAACJ;IACf;IACA,MAAMK,sBAAsB,MAAMpB,uBAAuB;QACvDc;QACAN;QACAC;QACAC;IACF;IAEA,MAAMW,uBAAuBlB,kBAAkBiB;IAE/C,MAAM,CAACE,SAASC,OAAO,GAAG,IAAIC,OAAOC,WAAW,GAAGC,KAAK,CAAC;IAEzD,MAAMC,gBAAgBL,QAASM,OAAO,CAAC,OAAO;IAC9C,MAAMC,gBAAgBN,OAAQG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAEE,OAAO,CAAC,OAAO;IAE5D,MAAME,YAAY,GAAGH,cAAc,CAAC,EAAEE,eAAe;IAErD,MAAME,gBAAgBtB,eAAemB,QAAQ,OAAO;IACpD,MAAMI,WAAWvB,gBAAgB,GAAGqB,UAAU,CAAC,EAAEC,cAAc,GAAG,CAAC,GAAG,GAAGD,UAAU,aAAa,CAAC;IACjG,MAAMG,WAAW,GAAGlB,IAAI,CAAC,EAAEiB,UAAU;IAErC,IAAIrB,WAAW;QACb,OAAO;YAAEuB,SAAS;QAAM;IAC1B;IAEApC,GAAGqC,aAAa,CAACF,UAAUZ;IAE3BpB,oBAAoB;QAAEmC,eAAe1B,QAAQM,EAAE,CAACC,YAAY;IAAC;IAE7DP,QAAQ2B,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,qBAAqB,EAAEN,UAAU;IAAC;IAE9D,OAAO;QAAEC,SAAS;QAAMnC,MAAMkC;IAAS;AACzC,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAA;AA6C3D,eAAO,MAAM,YAAY,EAAE,YAsQ1B,CAAA"}
1
+ {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../src/findDistinct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,SAAS,CAAA;AA6C3D,eAAO,MAAM,YAAY,EAAE,YA4S1B,CAAA"}
@@ -114,30 +114,74 @@ export const findDistinct = async function(args) {
114
114
  sortProperty = sortWithoutRelationPrefix;
115
115
  }
116
116
  }
117
- relationLookup = rels.reduce((acc, { fieldPath, relationTo })=>{
117
+ relationLookup = [];
118
+ for (const { fieldPath, relationTo } of rels){
118
119
  sortAggregation = sortAggregation.filter((each)=>{
119
120
  if ('$lookup' in each && each.$lookup.as.replace(/^_+/, '') === fieldPath) {
120
121
  return false;
121
122
  }
122
123
  return true;
123
124
  });
124
- const { Model: foreignModel } = getCollection({
125
+ const { collectionConfig: foreignCollectionConfig, Model: foreignModel } = getCollection({
125
126
  adapter: this,
126
127
  collectionSlug: relationTo
127
128
  });
128
- acc.push({
129
+ const relatedAccess = args.relatedAccess?.[fieldPath];
130
+ const relatedAccessQuery = relatedAccess ? await buildQuery({
131
+ adapter: this,
132
+ collectionSlug: relationTo,
133
+ fields: foreignCollectionConfig.flattenedFields,
134
+ locale: args.locale,
135
+ where: relatedAccess
136
+ }) : null;
137
+ relationLookup.push({
129
138
  $lookup: {
130
139
  as: fieldPath,
131
- foreignField: '_id',
132
140
  from: foreignModel.collection.name,
133
- localField: fieldPath
141
+ ...relatedAccessQuery ? {
142
+ let: {
143
+ relatedIDs: `$${fieldPath}`
144
+ },
145
+ pipeline: [
146
+ {
147
+ $match: {
148
+ $and: [
149
+ {
150
+ $expr: {
151
+ $cond: {
152
+ else: {
153
+ $eq: [
154
+ '$_id',
155
+ '$$relatedIDs'
156
+ ]
157
+ },
158
+ if: {
159
+ $isArray: '$$relatedIDs'
160
+ },
161
+ then: {
162
+ $in: [
163
+ '$_id',
164
+ '$$relatedIDs'
165
+ ]
166
+ }
167
+ }
168
+ }
169
+ },
170
+ relatedAccessQuery
171
+ ]
172
+ }
173
+ }
174
+ ]
175
+ } : {
176
+ foreignField: '_id',
177
+ localField: fieldPath
178
+ }
134
179
  }
135
180
  });
136
- acc.push({
181
+ relationLookup.push({
137
182
  $unwind: `$${fieldPath}`
138
183
  });
139
- return acc;
140
- }, []);
184
+ }
141
185
  }
142
186
  let $unwind = '';
143
187
  let $group = null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { PipelineStage } from 'mongoose'\nimport type { FindDistinct, FlattenedField } from 'payload'\n\nimport { getFieldByPath } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\nconst sanitizeGroupID = (id: any) => {\n if (id && typeof id === 'object' && '_field' in id) {\n return id._field\n }\n\n return id\n}\n\nconst getSortAggregation = ({\n fieldPath,\n hasSortAggregationAndHasMany,\n sortDirection,\n sortProperty,\n}: {\n fieldPath: string\n hasSortAggregationAndHasMany: boolean\n sortDirection: -1 | 1\n sortProperty: string\n}): Record<string, -1 | 1> => {\n let resolvedSortProperty: string\n\n if (hasSortAggregationAndHasMany) {\n if (sortProperty === fieldPath) {\n resolvedSortProperty = `_id._field`\n } else {\n resolvedSortProperty = `_id._sort`\n }\n } else {\n resolvedSortProperty = sortProperty === fieldPath ? '_id' : '_sort'\n }\n\n return { [`${resolvedSortProperty}`]: sortDirection }\n}\n\nexport const findDistinct: FindDistinct = async function (this: MongooseAdapter, args) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug: args.collection,\n })\n\n const { where = {} } = args\n\n let sortAggregation: PipelineStage[] = []\n\n const sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n sortAggregation,\n timestamps: true,\n })\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug: args.collection,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n where,\n })\n\n const fieldPathResult = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })\n let fieldPath = args.field\n if (fieldPathResult?.pathHasLocalized && args.locale) {\n fieldPath = fieldPathResult.localizedPath.replace('<locale>', args.locale)\n }\n\n const page = args.page || 1\n\n let sortProperty = Object.keys(sort)[0]! // assert because buildSortParam always returns at least 1 key.\n const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1\n\n let currentFields = collectionConfig.flattenedFields\n let foundField: FlattenedField | null = null\n\n let rels: {\n fieldPath: string\n relationTo: string\n }[] = []\n\n let tempPath = ''\n let insideRelation = false\n\n const segments = args.field.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i]\n const field = currentFields.find((e) => e.name === segment)\n if (rels.length) {\n insideRelation = true\n }\n\n if (!field) {\n break\n }\n\n if (tempPath) {\n tempPath = `${tempPath}.${field.name}`\n } else {\n tempPath = field.name\n }\n\n if ('flattenedFields' in field) {\n currentFields = field.flattenedFields\n continue\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n typeof field.relationTo === 'string'\n ) {\n if (i === segments.length - 2 && segments[i + 1] === 'id') {\n foundField = field\n fieldPath = tempPath\n break\n }\n rels.push({ fieldPath: tempPath, relationTo: field.relationTo })\n currentFields = this.payload.collections[field.relationTo]?.config\n .flattenedFields as FlattenedField[]\n continue\n }\n foundField = field\n }\n\n const resolvedField = foundField || fieldPathResult?.field\n const isHasManyValue = resolvedField && 'hasMany' in resolvedField && resolvedField\n\n let relationLookup: null | PipelineStage[] = null\n\n if (!insideRelation) {\n rels = []\n }\n\n if (rels.length) {\n if (sortProperty.startsWith('_')) {\n const sortWithoutRelationPrefix = sortProperty.replace(/^_+/, '')\n const lastFieldPath = rels.at(-1)?.fieldPath as string\n if (sortWithoutRelationPrefix.startsWith(lastFieldPath)) {\n sortProperty = sortWithoutRelationPrefix\n }\n }\n relationLookup = rels.reduce<PipelineStage[]>((acc, { fieldPath, relationTo }) => {\n sortAggregation = sortAggregation.filter((each) => {\n if ('$lookup' in each && each.$lookup.as.replace(/^_+/, '') === fieldPath) {\n return false\n }\n\n return true\n })\n const { Model: foreignModel } = getCollection({ adapter: this, collectionSlug: relationTo })\n acc.push({\n $lookup: {\n as: fieldPath,\n foreignField: '_id',\n from: foreignModel.collection.name,\n localField: fieldPath,\n },\n })\n acc.push({ $unwind: `$${fieldPath}` })\n return acc\n }, [])\n }\n\n let $unwind: any = ''\n let $group: any = null\n if (\n isHasManyValue &&\n sortAggregation.length &&\n sortAggregation[0] &&\n '$lookup' in sortAggregation[0]\n ) {\n $unwind = { path: `$${sortAggregation[0].$lookup.as}`, preserveNullAndEmptyArrays: true }\n $group = {\n _id: {\n _field: `$${sortAggregation[0].$lookup.as}._id`,\n _sort: `$${sortProperty}`,\n },\n }\n } else if (isHasManyValue) {\n $unwind = { path: `$${args.field}`, preserveNullAndEmptyArrays: true }\n }\n\n if (!$group) {\n $group = {\n _id: `$${fieldPath}`,\n ...(sortProperty === fieldPath\n ? {}\n : {\n _sort: { $max: `$${sortProperty}` },\n }),\n }\n }\n\n const pipeline: PipelineStage[] = [\n {\n $match: query,\n },\n ...(sortAggregation.length > 0 ? sortAggregation : []),\n ...(relationLookup?.length ? relationLookup : []),\n ...($unwind\n ? [\n {\n $unwind,\n },\n ]\n : []),\n {\n $group,\n },\n {\n $sort: getSortAggregation({\n fieldPath,\n hasSortAggregationAndHasMany: Boolean(isHasManyValue) && Boolean(sortAggregation.length),\n sortDirection,\n sortProperty,\n }),\n },\n ]\n\n const session = await getSession(this, args.req)\n\n const getValues = async () => {\n return Model.aggregate(pipeline, { session }).then((res) =>\n res.map((each) => ({\n [args.field]: JSON.parse(JSON.stringify(sanitizeGroupID(each._id))),\n })),\n )\n }\n\n if (args.limit) {\n pipeline.push({\n $skip: (page - 1) * args.limit,\n })\n pipeline.push({ $limit: args.limit })\n\n // Build count pipeline with the same structure as the main pipeline\n // to ensure relationship lookups are included\n const countPipeline: PipelineStage[] = [\n {\n $match: query,\n },\n ...(sortAggregation.length > 0 ? sortAggregation : []),\n ...(relationLookup?.length ? relationLookup : []),\n ...($unwind\n ? [\n {\n $unwind,\n },\n ]\n : []),\n {\n $group,\n },\n { $count: 'count' },\n ]\n\n const totalDocs = await Model.aggregate(countPipeline, {\n session,\n }).then((res) => res[0]?.count ?? 0)\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values: await getValues(),\n }\n }\n\n const values = await getValues()\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["getFieldByPath","buildQuery","buildSortParam","getCollection","getSession","sanitizeGroupID","id","_field","getSortAggregation","fieldPath","hasSortAggregationAndHasMany","sortDirection","sortProperty","resolvedSortProperty","findDistinct","args","collectionConfig","Model","adapter","collectionSlug","collection","where","sortAggregation","sort","config","payload","fields","flattenedFields","locale","field","timestamps","query","fieldPathResult","includeRelationships","path","pathHasLocalized","localizedPath","replace","page","Object","keys","currentFields","foundField","rels","tempPath","insideRelation","segments","split","i","length","segment","find","e","name","type","relationTo","push","collections","resolvedField","isHasManyValue","relationLookup","startsWith","sortWithoutRelationPrefix","lastFieldPath","at","reduce","acc","filter","each","$lookup","as","foreignModel","foreignField","from","localField","$unwind","$group","preserveNullAndEmptyArrays","_id","_sort","$max","pipeline","$match","$sort","Boolean","session","req","getValues","aggregate","then","res","map","JSON","parse","stringify","limit","$skip","$limit","countPipeline","$count","totalDocs","count","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage","values"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/findDistinct.ts"],"sourcesContent":["import type { PipelineStage } from 'mongoose'\nimport type { FindDistinct, FlattenedField } from 'payload'\n\nimport { getFieldByPath } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { getCollection } from './utilities/getEntity.js'\nimport { getSession } from './utilities/getSession.js'\n\nconst sanitizeGroupID = (id: any) => {\n if (id && typeof id === 'object' && '_field' in id) {\n return id._field\n }\n\n return id\n}\n\nconst getSortAggregation = ({\n fieldPath,\n hasSortAggregationAndHasMany,\n sortDirection,\n sortProperty,\n}: {\n fieldPath: string\n hasSortAggregationAndHasMany: boolean\n sortDirection: -1 | 1\n sortProperty: string\n}): Record<string, -1 | 1> => {\n let resolvedSortProperty: string\n\n if (hasSortAggregationAndHasMany) {\n if (sortProperty === fieldPath) {\n resolvedSortProperty = `_id._field`\n } else {\n resolvedSortProperty = `_id._sort`\n }\n } else {\n resolvedSortProperty = sortProperty === fieldPath ? '_id' : '_sort'\n }\n\n return { [`${resolvedSortProperty}`]: sortDirection }\n}\n\nexport const findDistinct: FindDistinct = async function (this: MongooseAdapter, args) {\n const { collectionConfig, Model } = getCollection({\n adapter: this,\n collectionSlug: args.collection,\n })\n\n const { where = {} } = args\n\n let sortAggregation: PipelineStage[] = []\n\n const sort = buildSortParam({\n adapter: this,\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n sort: args.sort ?? args.field,\n sortAggregation,\n timestamps: true,\n })\n\n const query = await buildQuery({\n adapter: this,\n collectionSlug: args.collection,\n fields: collectionConfig.flattenedFields,\n locale: args.locale,\n where,\n })\n\n const fieldPathResult = getFieldByPath({\n config: this.payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })\n let fieldPath = args.field\n if (fieldPathResult?.pathHasLocalized && args.locale) {\n fieldPath = fieldPathResult.localizedPath.replace('<locale>', args.locale)\n }\n\n const page = args.page || 1\n\n let sortProperty = Object.keys(sort)[0]! // assert because buildSortParam always returns at least 1 key.\n const sortDirection = sort[sortProperty] === 'asc' ? 1 : -1\n\n let currentFields = collectionConfig.flattenedFields\n let foundField: FlattenedField | null = null\n\n let rels: {\n fieldPath: string\n relationTo: string\n }[] = []\n\n let tempPath = ''\n let insideRelation = false\n\n const segments = args.field.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i]\n const field = currentFields.find((e) => e.name === segment)\n if (rels.length) {\n insideRelation = true\n }\n\n if (!field) {\n break\n }\n\n if (tempPath) {\n tempPath = `${tempPath}.${field.name}`\n } else {\n tempPath = field.name\n }\n\n if ('flattenedFields' in field) {\n currentFields = field.flattenedFields\n continue\n }\n\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n typeof field.relationTo === 'string'\n ) {\n if (i === segments.length - 2 && segments[i + 1] === 'id') {\n foundField = field\n fieldPath = tempPath\n break\n }\n rels.push({ fieldPath: tempPath, relationTo: field.relationTo })\n currentFields = this.payload.collections[field.relationTo]?.config\n .flattenedFields as FlattenedField[]\n continue\n }\n foundField = field\n }\n\n const resolvedField = foundField || fieldPathResult?.field\n const isHasManyValue = resolvedField && 'hasMany' in resolvedField && resolvedField\n\n let relationLookup: null | PipelineStage[] = null\n\n if (!insideRelation) {\n rels = []\n }\n\n if (rels.length) {\n if (sortProperty.startsWith('_')) {\n const sortWithoutRelationPrefix = sortProperty.replace(/^_+/, '')\n const lastFieldPath = rels.at(-1)?.fieldPath as string\n if (sortWithoutRelationPrefix.startsWith(lastFieldPath)) {\n sortProperty = sortWithoutRelationPrefix\n }\n }\n relationLookup = []\n for (const { fieldPath, relationTo } of rels) {\n sortAggregation = sortAggregation.filter((each) => {\n if ('$lookup' in each && each.$lookup.as.replace(/^_+/, '') === fieldPath) {\n return false\n }\n\n return true\n })\n const { collectionConfig: foreignCollectionConfig, Model: foreignModel } = getCollection({\n adapter: this,\n collectionSlug: relationTo,\n })\n const relatedAccess = args.relatedAccess?.[fieldPath]\n const relatedAccessQuery = relatedAccess\n ? await buildQuery({\n adapter: this,\n collectionSlug: relationTo,\n fields: foreignCollectionConfig.flattenedFields,\n locale: args.locale,\n where: relatedAccess,\n })\n : null\n\n relationLookup.push({\n $lookup: {\n as: fieldPath,\n from: foreignModel.collection.name,\n ...(relatedAccessQuery\n ? {\n let: { relatedIDs: `$${fieldPath}` },\n pipeline: [\n {\n $match: {\n $and: [\n {\n $expr: {\n $cond: {\n else: { $eq: ['$_id', '$$relatedIDs'] },\n if: { $isArray: '$$relatedIDs' },\n then: { $in: ['$_id', '$$relatedIDs'] },\n },\n },\n },\n relatedAccessQuery,\n ],\n },\n },\n ],\n }\n : {\n foreignField: '_id',\n localField: fieldPath,\n }),\n },\n })\n relationLookup.push({ $unwind: `$${fieldPath}` })\n }\n }\n\n let $unwind: any = ''\n let $group: any = null\n if (\n isHasManyValue &&\n sortAggregation.length &&\n sortAggregation[0] &&\n '$lookup' in sortAggregation[0]\n ) {\n $unwind = { path: `$${sortAggregation[0].$lookup.as}`, preserveNullAndEmptyArrays: true }\n $group = {\n _id: {\n _field: `$${sortAggregation[0].$lookup.as}._id`,\n _sort: `$${sortProperty}`,\n },\n }\n } else if (isHasManyValue) {\n $unwind = { path: `$${args.field}`, preserveNullAndEmptyArrays: true }\n }\n\n if (!$group) {\n $group = {\n _id: `$${fieldPath}`,\n ...(sortProperty === fieldPath\n ? {}\n : {\n _sort: { $max: `$${sortProperty}` },\n }),\n }\n }\n\n const pipeline: PipelineStage[] = [\n {\n $match: query,\n },\n ...(sortAggregation.length > 0 ? sortAggregation : []),\n ...(relationLookup?.length ? relationLookup : []),\n ...($unwind\n ? [\n {\n $unwind,\n },\n ]\n : []),\n {\n $group,\n },\n {\n $sort: getSortAggregation({\n fieldPath,\n hasSortAggregationAndHasMany: Boolean(isHasManyValue) && Boolean(sortAggregation.length),\n sortDirection,\n sortProperty,\n }),\n },\n ]\n\n const session = await getSession(this, args.req)\n\n const getValues = async () => {\n return Model.aggregate(pipeline, { session }).then((res) =>\n res.map((each) => ({\n [args.field]: JSON.parse(JSON.stringify(sanitizeGroupID(each._id))),\n })),\n )\n }\n\n if (args.limit) {\n pipeline.push({\n $skip: (page - 1) * args.limit,\n })\n pipeline.push({ $limit: args.limit })\n\n // Build count pipeline with the same structure as the main pipeline\n // to ensure relationship lookups are included\n const countPipeline: PipelineStage[] = [\n {\n $match: query,\n },\n ...(sortAggregation.length > 0 ? sortAggregation : []),\n ...(relationLookup?.length ? relationLookup : []),\n ...($unwind\n ? [\n {\n $unwind,\n },\n ]\n : []),\n {\n $group,\n },\n { $count: 'count' },\n ]\n\n const totalDocs = await Model.aggregate(countPipeline, {\n session,\n }).then((res) => res[0]?.count ?? 0)\n const totalPages = Math.ceil(totalDocs / args.limit)\n const hasPrevPage = page > 1\n const hasNextPage = totalPages > page\n const pagingCounter = (page - 1) * args.limit + 1\n\n return {\n hasNextPage,\n hasPrevPage,\n limit: args.limit,\n nextPage: hasNextPage ? page + 1 : null,\n page,\n pagingCounter,\n prevPage: hasPrevPage ? page - 1 : null,\n totalDocs,\n totalPages,\n values: await getValues(),\n }\n }\n\n const values = await getValues()\n\n return {\n hasNextPage: false,\n hasPrevPage: false,\n limit: 0,\n page: 1,\n pagingCounter: 1,\n totalDocs: values.length,\n totalPages: 1,\n values,\n }\n}\n"],"names":["getFieldByPath","buildQuery","buildSortParam","getCollection","getSession","sanitizeGroupID","id","_field","getSortAggregation","fieldPath","hasSortAggregationAndHasMany","sortDirection","sortProperty","resolvedSortProperty","findDistinct","args","collectionConfig","Model","adapter","collectionSlug","collection","where","sortAggregation","sort","config","payload","fields","flattenedFields","locale","field","timestamps","query","fieldPathResult","includeRelationships","path","pathHasLocalized","localizedPath","replace","page","Object","keys","currentFields","foundField","rels","tempPath","insideRelation","segments","split","i","length","segment","find","e","name","type","relationTo","push","collections","resolvedField","isHasManyValue","relationLookup","startsWith","sortWithoutRelationPrefix","lastFieldPath","at","filter","each","$lookup","as","foreignCollectionConfig","foreignModel","relatedAccess","relatedAccessQuery","from","let","relatedIDs","pipeline","$match","$and","$expr","$cond","else","$eq","if","$isArray","then","$in","foreignField","localField","$unwind","$group","preserveNullAndEmptyArrays","_id","_sort","$max","$sort","Boolean","session","req","getValues","aggregate","res","map","JSON","parse","stringify","limit","$skip","$limit","countPipeline","$count","totalDocs","count","totalPages","Math","ceil","hasPrevPage","hasNextPage","pagingCounter","nextPage","prevPage","values"],"mappings":"AAGA,SAASA,cAAc,QAAQ,UAAS;AAIxC,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,aAAa,QAAQ,2BAA0B;AACxD,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,MAAMC,kBAAkB,CAACC;IACvB,IAAIA,MAAM,OAAOA,OAAO,YAAY,YAAYA,IAAI;QAClD,OAAOA,GAAGC,MAAM;IAClB;IAEA,OAAOD;AACT;AAEA,MAAME,qBAAqB,CAAC,EAC1BC,SAAS,EACTC,4BAA4B,EAC5BC,aAAa,EACbC,YAAY,EAMb;IACC,IAAIC;IAEJ,IAAIH,8BAA8B;QAChC,IAAIE,iBAAiBH,WAAW;YAC9BI,uBAAuB,CAAC,UAAU,CAAC;QACrC,OAAO;YACLA,uBAAuB,CAAC,SAAS,CAAC;QACpC;IACF,OAAO;QACLA,uBAAuBD,iBAAiBH,YAAY,QAAQ;IAC9D;IAEA,OAAO;QAAE,CAAC,GAAGI,sBAAsB,CAAC,EAAEF;IAAc;AACtD;AAEA,OAAO,MAAMG,eAA6B,eAAuCC,IAAI;IACnF,MAAM,EAAEC,gBAAgB,EAAEC,KAAK,EAAE,GAAGd,cAAc;QAChDe,SAAS,IAAI;QACbC,gBAAgBJ,KAAKK,UAAU;IACjC;IAEA,MAAM,EAAEC,QAAQ,CAAC,CAAC,EAAE,GAAGN;IAEvB,IAAIO,kBAAmC,EAAE;IAEzC,MAAMC,OAAOrB,eAAe;QAC1BgB,SAAS,IAAI;QACbM,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BE,QAAQV,iBAAiBW,eAAe;QACxCC,QAAQb,KAAKa,MAAM;QACnBL,MAAMR,KAAKQ,IAAI,IAAIR,KAAKc,KAAK;QAC7BP;QACAQ,YAAY;IACd;IAEA,MAAMC,QAAQ,MAAM9B,WAAW;QAC7BiB,SAAS,IAAI;QACbC,gBAAgBJ,KAAKK,UAAU;QAC/BM,QAAQV,iBAAiBW,eAAe;QACxCC,QAAQb,KAAKa,MAAM;QACnBP;IACF;IAEA,MAAMW,kBAAkBhC,eAAe;QACrCwB,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BE,QAAQV,iBAAiBW,eAAe;QACxCM,sBAAsB;QACtBC,MAAMnB,KAAKc,KAAK;IAClB;IACA,IAAIpB,YAAYM,KAAKc,KAAK;IAC1B,IAAIG,iBAAiBG,oBAAoBpB,KAAKa,MAAM,EAAE;QACpDnB,YAAYuB,gBAAgBI,aAAa,CAACC,OAAO,CAAC,YAAYtB,KAAKa,MAAM;IAC3E;IAEA,MAAMU,OAAOvB,KAAKuB,IAAI,IAAI;IAE1B,IAAI1B,eAAe2B,OAAOC,IAAI,CAACjB,KAAK,CAAC,EAAE,AAAE,+DAA+D;;IACxG,MAAMZ,gBAAgBY,IAAI,CAACX,aAAa,KAAK,QAAQ,IAAI,CAAC;IAE1D,IAAI6B,gBAAgBzB,iBAAiBW,eAAe;IACpD,IAAIe,aAAoC;IAExC,IAAIC,OAGE,EAAE;IAER,IAAIC,WAAW;IACf,IAAIC,iBAAiB;IAErB,MAAMC,WAAW/B,KAAKc,KAAK,CAACkB,KAAK,CAAC;IAElC,IAAK,IAAIC,IAAI,GAAGA,IAAIF,SAASG,MAAM,EAAED,IAAK;QACxC,MAAME,UAAUJ,QAAQ,CAACE,EAAE;QAC3B,MAAMnB,QAAQY,cAAcU,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKH;QACnD,IAAIP,KAAKM,MAAM,EAAE;YACfJ,iBAAiB;QACnB;QAEA,IAAI,CAAChB,OAAO;YACV;QACF;QAEA,IAAIe,UAAU;YACZA,WAAW,GAAGA,SAAS,CAAC,EAAEf,MAAMwB,IAAI,EAAE;QACxC,OAAO;YACLT,WAAWf,MAAMwB,IAAI;QACvB;QAEA,IAAI,qBAAqBxB,OAAO;YAC9BY,gBAAgBZ,MAAMF,eAAe;YACrC;QACF;QAEA,IACE,AAACE,CAAAA,MAAMyB,IAAI,KAAK,kBAAkBzB,MAAMyB,IAAI,KAAK,QAAO,KACxD,OAAOzB,MAAM0B,UAAU,KAAK,UAC5B;YACA,IAAIP,MAAMF,SAASG,MAAM,GAAG,KAAKH,QAAQ,CAACE,IAAI,EAAE,KAAK,MAAM;gBACzDN,aAAab;gBACbpB,YAAYmC;gBACZ;YACF;YACAD,KAAKa,IAAI,CAAC;gBAAE/C,WAAWmC;gBAAUW,YAAY1B,MAAM0B,UAAU;YAAC;YAC9Dd,gBAAgB,IAAI,CAAChB,OAAO,CAACgC,WAAW,CAAC5B,MAAM0B,UAAU,CAAC,EAAE/B,OACzDG;YACH;QACF;QACAe,aAAab;IACf;IAEA,MAAM6B,gBAAgBhB,cAAcV,iBAAiBH;IACrD,MAAM8B,iBAAiBD,iBAAiB,aAAaA,iBAAiBA;IAEtE,IAAIE,iBAAyC;IAE7C,IAAI,CAACf,gBAAgB;QACnBF,OAAO,EAAE;IACX;IAEA,IAAIA,KAAKM,MAAM,EAAE;QACf,IAAIrC,aAAaiD,UAAU,CAAC,MAAM;YAChC,MAAMC,4BAA4BlD,aAAayB,OAAO,CAAC,OAAO;YAC9D,MAAM0B,gBAAgBpB,KAAKqB,EAAE,CAAC,CAAC,IAAIvD;YACnC,IAAIqD,0BAA0BD,UAAU,CAACE,gBAAgB;gBACvDnD,eAAekD;YACjB;QACF;QACAF,iBAAiB,EAAE;QACnB,KAAK,MAAM,EAAEnD,SAAS,EAAE8C,UAAU,EAAE,IAAIZ,KAAM;YAC5CrB,kBAAkBA,gBAAgB2C,MAAM,CAAC,CAACC;gBACxC,IAAI,aAAaA,QAAQA,KAAKC,OAAO,CAACC,EAAE,CAAC/B,OAAO,CAAC,OAAO,QAAQ5B,WAAW;oBACzE,OAAO;gBACT;gBAEA,OAAO;YACT;YACA,MAAM,EAAEO,kBAAkBqD,uBAAuB,EAAEpD,OAAOqD,YAAY,EAAE,GAAGnE,cAAc;gBACvFe,SAAS,IAAI;gBACbC,gBAAgBoC;YAClB;YACA,MAAMgB,gBAAgBxD,KAAKwD,aAAa,EAAE,CAAC9D,UAAU;YACrD,MAAM+D,qBAAqBD,gBACvB,MAAMtE,WAAW;gBACfiB,SAAS,IAAI;gBACbC,gBAAgBoC;gBAChB7B,QAAQ2C,wBAAwB1C,eAAe;gBAC/CC,QAAQb,KAAKa,MAAM;gBACnBP,OAAOkD;YACT,KACA;YAEJX,eAAeJ,IAAI,CAAC;gBAClBW,SAAS;oBACPC,IAAI3D;oBACJgE,MAAMH,aAAalD,UAAU,CAACiC,IAAI;oBAClC,GAAImB,qBACA;wBACEE,KAAK;4BAAEC,YAAY,CAAC,CAAC,EAAElE,WAAW;wBAAC;wBACnCmE,UAAU;4BACR;gCACEC,QAAQ;oCACNC,MAAM;wCACJ;4CACEC,OAAO;gDACLC,OAAO;oDACLC,MAAM;wDAAEC,KAAK;4DAAC;4DAAQ;yDAAe;oDAAC;oDACtCC,IAAI;wDAAEC,UAAU;oDAAe;oDAC/BC,MAAM;wDAAEC,KAAK;4DAAC;4DAAQ;yDAAe;oDAAC;gDACxC;4CACF;wCACF;wCACAd;qCACD;gCACH;4BACF;yBACD;oBACH,IACA;wBACEe,cAAc;wBACdC,YAAY/E;oBACd,CAAC;gBACP;YACF;YACAmD,eAAeJ,IAAI,CAAC;gBAAEiC,SAAS,CAAC,CAAC,EAAEhF,WAAW;YAAC;QACjD;IACF;IAEA,IAAIgF,UAAe;IACnB,IAAIC,SAAc;IAClB,IACE/B,kBACArC,gBAAgB2B,MAAM,IACtB3B,eAAe,CAAC,EAAE,IAClB,aAAaA,eAAe,CAAC,EAAE,EAC/B;QACAmE,UAAU;YAAEvD,MAAM,CAAC,CAAC,EAAEZ,eAAe,CAAC,EAAE,CAAC6C,OAAO,CAACC,EAAE,EAAE;YAAEuB,4BAA4B;QAAK;QACxFD,SAAS;YACPE,KAAK;gBACHrF,QAAQ,CAAC,CAAC,EAAEe,eAAe,CAAC,EAAE,CAAC6C,OAAO,CAACC,EAAE,CAAC,IAAI,CAAC;gBAC/CyB,OAAO,CAAC,CAAC,EAAEjF,cAAc;YAC3B;QACF;IACF,OAAO,IAAI+C,gBAAgB;QACzB8B,UAAU;YAAEvD,MAAM,CAAC,CAAC,EAAEnB,KAAKc,KAAK,EAAE;YAAE8D,4BAA4B;QAAK;IACvE;IAEA,IAAI,CAACD,QAAQ;QACXA,SAAS;YACPE,KAAK,CAAC,CAAC,EAAEnF,WAAW;YACpB,GAAIG,iBAAiBH,YACjB,CAAC,IACD;gBACEoF,OAAO;oBAAEC,MAAM,CAAC,CAAC,EAAElF,cAAc;gBAAC;YACpC,CAAC;QACP;IACF;IAEA,MAAMgE,WAA4B;QAChC;YACEC,QAAQ9C;QACV;WACIT,gBAAgB2B,MAAM,GAAG,IAAI3B,kBAAkB,EAAE;WACjDsC,gBAAgBX,SAASW,iBAAiB,EAAE;WAC5C6B,UACA;YACE;gBACEA;YACF;SACD,GACD,EAAE;QACN;YACEC;QACF;QACA;YACEK,OAAOvF,mBAAmB;gBACxBC;gBACAC,8BAA8BsF,QAAQrC,mBAAmBqC,QAAQ1E,gBAAgB2B,MAAM;gBACvFtC;gBACAC;YACF;QACF;KACD;IAED,MAAMqF,UAAU,MAAM7F,WAAW,IAAI,EAAEW,KAAKmF,GAAG;IAE/C,MAAMC,YAAY;QAChB,OAAOlF,MAAMmF,SAAS,CAACxB,UAAU;YAAEqB;QAAQ,GAAGZ,IAAI,CAAC,CAACgB,MAClDA,IAAIC,GAAG,CAAC,CAACpC,OAAU,CAAA;oBACjB,CAACnD,KAAKc,KAAK,CAAC,EAAE0E,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACpG,gBAAgB6D,KAAK0B,GAAG;gBAClE,CAAA;IAEJ;IAEA,IAAI7E,KAAK2F,KAAK,EAAE;QACd9B,SAASpB,IAAI,CAAC;YACZmD,OAAO,AAACrE,CAAAA,OAAO,CAAA,IAAKvB,KAAK2F,KAAK;QAChC;QACA9B,SAASpB,IAAI,CAAC;YAAEoD,QAAQ7F,KAAK2F,KAAK;QAAC;QAEnC,oEAAoE;QACpE,8CAA8C;QAC9C,MAAMG,gBAAiC;YACrC;gBACEhC,QAAQ9C;YACV;eACIT,gBAAgB2B,MAAM,GAAG,IAAI3B,kBAAkB,EAAE;eACjDsC,gBAAgBX,SAASW,iBAAiB,EAAE;eAC5C6B,UACA;gBACE;oBACEA;gBACF;aACD,GACD,EAAE;YACN;gBACEC;YACF;YACA;gBAAEoB,QAAQ;YAAQ;SACnB;QAED,MAAMC,YAAY,MAAM9F,MAAMmF,SAAS,CAACS,eAAe;YACrDZ;QACF,GAAGZ,IAAI,CAAC,CAACgB,MAAQA,GAAG,CAAC,EAAE,EAAEW,SAAS;QAClC,MAAMC,aAAaC,KAAKC,IAAI,CAACJ,YAAYhG,KAAK2F,KAAK;QACnD,MAAMU,cAAc9E,OAAO;QAC3B,MAAM+E,cAAcJ,aAAa3E;QACjC,MAAMgF,gBAAgB,AAAChF,CAAAA,OAAO,CAAA,IAAKvB,KAAK2F,KAAK,GAAG;QAEhD,OAAO;YACLW;YACAD;YACAV,OAAO3F,KAAK2F,KAAK;YACjBa,UAAUF,cAAc/E,OAAO,IAAI;YACnCA;YACAgF;YACAE,UAAUJ,cAAc9E,OAAO,IAAI;YACnCyE;YACAE;YACAQ,QAAQ,MAAMtB;QAChB;IACF;IAEA,MAAMsB,SAAS,MAAMtB;IAErB,OAAO;QACLkB,aAAa;QACbD,aAAa;QACbV,OAAO;QACPpE,MAAM;QACNgF,eAAe;QACfP,WAAWU,OAAOxE,MAAM;QACxBgE,YAAY;QACZQ;IACF;AACF,EAAC"}
@@ -1,8 +1,10 @@
1
+ import type { MigrationResult } from 'payload';
1
2
  import type { MongooseAdapter } from './index.js';
2
3
  /**
3
4
  * Drop the current database and run all migrate up functions
4
5
  */
5
- export declare function migrateFresh(this: MongooseAdapter, { forceAcceptWarning }: {
6
+ export declare function migrateFresh(this: MongooseAdapter, { forceAcceptWarning, shouldPrompt, }: {
6
7
  forceAcceptWarning?: boolean;
7
- }): Promise<void>;
8
+ shouldPrompt?: boolean;
9
+ }): Promise<MigrationResult>;
8
10
  //# sourceMappingURL=migrateFresh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrateFresh.d.ts","sourceRoot":"","sources":["../src/migrateFresh.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,eAAe,EACrB,EAAE,kBAA0B,EAAE,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,IAAI,CAAC,CAgEf"}
1
+ {"version":3,"file":"migrateFresh.d.ts","sourceRoot":"","sources":["../src/migrateFresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,eAAe,EACrB,EACE,kBAA0B,EAC1B,YAAmB,GACpB,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,eAAe,CAAC,CAiE1B"}
@@ -2,21 +2,28 @@ import { commitTransaction, initTransaction, killTransaction, readMigrationFiles
2
2
  import prompts from 'prompts';
3
3
  /**
4
4
  * Drop the current database and run all migrate up functions
5
- */ export async function migrateFresh({ forceAcceptWarning = false }) {
5
+ */ export async function migrateFresh({ forceAcceptWarning = false, shouldPrompt = true }) {
6
6
  const { payload } = this;
7
7
  if (!forceAcceptWarning) {
8
+ if (!shouldPrompt) {
9
+ return {
10
+ cancelled: true,
11
+ migrated: [],
12
+ rolledBack: []
13
+ };
14
+ }
8
15
  const { confirm: acceptWarning } = await prompts({
9
16
  name: 'confirm',
10
17
  type: 'confirm',
11
18
  initial: false,
12
19
  message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`
13
- }, {
14
- onCancel: ()=>{
15
- process.exit(0);
16
- }
17
20
  });
18
21
  if (!acceptWarning) {
19
- process.exit(0);
22
+ return {
23
+ cancelled: true,
24
+ migrated: [],
25
+ rolledBack: []
26
+ };
20
27
  }
21
28
  }
22
29
  payload.logger.info({
@@ -32,6 +39,7 @@ import prompts from 'prompts';
32
39
  const req = {
33
40
  payload
34
41
  };
42
+ const migrated = [];
35
43
  // Run all migrate up
36
44
  for (const migration of migrationFiles){
37
45
  payload.logger.info({
@@ -53,6 +61,7 @@ import prompts from 'prompts';
53
61
  req
54
62
  });
55
63
  await commitTransaction(req);
64
+ migrated.push(migration.name);
56
65
  payload.logger.info({
57
66
  msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
58
67
  });
@@ -65,6 +74,11 @@ import prompts from 'prompts';
65
74
  throw err;
66
75
  }
67
76
  }
77
+ return {
78
+ batch: 1,
79
+ migrated,
80
+ rolledBack: []
81
+ };
68
82
  }
69
83
 
70
84
  //# sourceMappingURL=migrateFresh.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrateFresh.ts"],"sourcesContent":["import { commitTransaction, initTransaction, killTransaction, readMigrationFiles } from 'payload'\nimport prompts from 'prompts'\n\nimport type { MongooseAdapter } from './index.js'\n\n/**\n * Drop the current database and run all migrate up functions\n */\nexport async function migrateFresh(\n this: MongooseAdapter,\n { forceAcceptWarning = false }: { forceAcceptWarning?: boolean },\n): Promise<void> {\n const { payload } = this\n\n if (!forceAcceptWarning) {\n const { confirm: acceptWarning } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!acceptWarning) {\n process.exit(0)\n }\n }\n\n payload.logger.info({\n msg: `Dropping database.`,\n })\n\n await this.connection.dropDatabase()\n\n const migrationFiles = await readMigrationFiles({ payload })\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const req = { payload }\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.up({ payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch: 1,\n },\n req,\n })\n\n await commitTransaction(req)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: `Error running migration ${migration.name}. Rolling back.`,\n })\n throw err\n }\n }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","readMigrationFiles","prompts","migrateFresh","forceAcceptWarning","payload","confirm","acceptWarning","name","type","initial","message","onCancel","process","exit","logger","info","msg","connection","dropDatabase","migrationFiles","debug","length","req","migration","start","Date","now","up","create","collection","data","batch","err","error"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,eAAe,EAAEC,eAAe,EAAEC,kBAAkB,QAAQ,UAAS;AACjG,OAAOC,aAAa,UAAS;AAI7B;;CAEC,GACD,OAAO,eAAeC,aAEpB,EAAEC,qBAAqB,KAAK,EAAoC;IAEhE,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IAExB,IAAI,CAACD,oBAAoB;QACvB,MAAM,EAAEE,SAASC,aAAa,EAAE,GAAG,MAAML,QACvC;YACEM,MAAM;YACNC,MAAM;YACNC,SAAS;YACTC,SAAS,CAAC,+FAA+F,CAAC;QAC5G,GACA;YACEC,UAAU;gBACRC,QAAQC,IAAI,CAAC;YACf;QACF;QAGF,IAAI,CAACP,eAAe;YAClBM,QAAQC,IAAI,CAAC;QACf;IACF;IAEAT,QAAQU,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,kBAAkB,CAAC;IAC3B;IAEA,MAAM,IAAI,CAACC,UAAU,CAACC,YAAY;IAElC,MAAMC,iBAAiB,MAAMnB,mBAAmB;QAAEI;IAAQ;IAC1DA,QAAQU,MAAM,CAACM,KAAK,CAAC;QACnBJ,KAAK,CAAC,MAAM,EAAEG,eAAeE,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAMC,MAAM;QAAElB;IAAQ;IAEtB,qBAAqB;IACrB,KAAK,MAAMmB,aAAaJ,eAAgB;QACtCf,QAAQU,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEO,UAAUhB,IAAI,EAAE;QAAC;QAC1D,IAAI;YACF,MAAMiB,QAAQC,KAAKC,GAAG;YACtB,MAAM5B,gBAAgBwB;YACtB,MAAMC,UAAUI,EAAE,CAAC;gBAAEvB;gBAASkB;YAAI;YAClC,MAAMlB,QAAQwB,MAAM,CAAC;gBACnBC,YAAY;gBACZC,MAAM;oBACJvB,MAAMgB,UAAUhB,IAAI;oBACpBwB,OAAO;gBACT;gBACAT;YACF;YAEA,MAAMzB,kBAAkByB;YAExBlB,QAAQU,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,WAAW,EAAEO,UAAUhB,IAAI,CAAC,EAAE,EAAEkB,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YAAC;QACtF,EAAE,OAAOQ,KAAc;YACrB,MAAMjC,gBAAgBuB;YACtBlB,QAAQU,MAAM,CAACmB,KAAK,CAAC;gBACnBD;gBACAhB,KAAK,CAAC,wBAAwB,EAAEO,UAAUhB,IAAI,CAAC,eAAe,CAAC;YACjE;YACA,MAAMyB;QACR;IACF;AACF"}
1
+ {"version":3,"sources":["../src/migrateFresh.ts"],"sourcesContent":["import type { MigrationResult } from 'payload'\n\nimport { commitTransaction, initTransaction, killTransaction, readMigrationFiles } from 'payload'\nimport prompts from 'prompts'\n\nimport type { MongooseAdapter } from './index.js'\n\n/**\n * Drop the current database and run all migrate up functions\n */\nexport async function migrateFresh(\n this: MongooseAdapter,\n {\n forceAcceptWarning = false,\n shouldPrompt = true,\n }: { forceAcceptWarning?: boolean; shouldPrompt?: boolean },\n): Promise<MigrationResult> {\n const { payload } = this\n\n if (!forceAcceptWarning) {\n if (!shouldPrompt) {\n return { cancelled: true, migrated: [], rolledBack: [] }\n }\n\n const { confirm: acceptWarning } = await prompts({\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,\n })\n\n if (!acceptWarning) {\n return { cancelled: true, migrated: [], rolledBack: [] }\n }\n }\n\n payload.logger.info({\n msg: `Dropping database.`,\n })\n\n await this.connection.dropDatabase()\n\n const migrationFiles = await readMigrationFiles({ payload })\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const req = { payload }\n const migrated: string[] = []\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.up({ payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch: 1,\n },\n req,\n })\n\n await commitTransaction(req)\n migrated.push(migration.name)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: `Error running migration ${migration.name}. Rolling back.`,\n })\n throw err\n }\n }\n\n return { batch: 1, migrated, rolledBack: [] }\n}\n"],"names":["commitTransaction","initTransaction","killTransaction","readMigrationFiles","prompts","migrateFresh","forceAcceptWarning","shouldPrompt","payload","cancelled","migrated","rolledBack","confirm","acceptWarning","name","type","initial","message","logger","info","msg","connection","dropDatabase","migrationFiles","debug","length","req","migration","start","Date","now","up","create","collection","data","batch","push","err","error"],"mappings":"AAEA,SAASA,iBAAiB,EAAEC,eAAe,EAAEC,eAAe,EAAEC,kBAAkB,QAAQ,UAAS;AACjG,OAAOC,aAAa,UAAS;AAI7B;;CAEC,GACD,OAAO,eAAeC,aAEpB,EACEC,qBAAqB,KAAK,EAC1BC,eAAe,IAAI,EACsC;IAE3D,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IAExB,IAAI,CAACF,oBAAoB;QACvB,IAAI,CAACC,cAAc;YACjB,OAAO;gBAAEE,WAAW;gBAAMC,UAAU,EAAE;gBAAEC,YAAY,EAAE;YAAC;QACzD;QAEA,MAAM,EAAEC,SAASC,aAAa,EAAE,GAAG,MAAMT,QAAQ;YAC/CU,MAAM;YACNC,MAAM;YACNC,SAAS;YACTC,SAAS,CAAC,+FAA+F,CAAC;QAC5G;QAEA,IAAI,CAACJ,eAAe;YAClB,OAAO;gBAAEJ,WAAW;gBAAMC,UAAU,EAAE;gBAAEC,YAAY,EAAE;YAAC;QACzD;IACF;IAEAH,QAAQU,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,kBAAkB,CAAC;IAC3B;IAEA,MAAM,IAAI,CAACC,UAAU,CAACC,YAAY;IAElC,MAAMC,iBAAiB,MAAMpB,mBAAmB;QAAEK;IAAQ;IAC1DA,QAAQU,MAAM,CAACM,KAAK,CAAC;QACnBJ,KAAK,CAAC,MAAM,EAAEG,eAAeE,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAMC,MAAM;QAAElB;IAAQ;IACtB,MAAME,WAAqB,EAAE;IAE7B,qBAAqB;IACrB,KAAK,MAAMiB,aAAaJ,eAAgB;QACtCf,QAAQU,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEO,UAAUb,IAAI,EAAE;QAAC;QAC1D,IAAI;YACF,MAAMc,QAAQC,KAAKC,GAAG;YACtB,MAAM7B,gBAAgByB;YACtB,MAAMC,UAAUI,EAAE,CAAC;gBAAEvB;gBAASkB;YAAI;YAClC,MAAMlB,QAAQwB,MAAM,CAAC;gBACnBC,YAAY;gBACZC,MAAM;oBACJpB,MAAMa,UAAUb,IAAI;oBACpBqB,OAAO;gBACT;gBACAT;YACF;YAEA,MAAM1B,kBAAkB0B;YACxBhB,SAAS0B,IAAI,CAACT,UAAUb,IAAI;YAE5BN,QAAQU,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,WAAW,EAAEO,UAAUb,IAAI,CAAC,EAAE,EAAEe,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YAAC;QACtF,EAAE,OAAOS,KAAc;YACrB,MAAMnC,gBAAgBwB;YACtBlB,QAAQU,MAAM,CAACoB,KAAK,CAAC;gBACnBD;gBACAjB,KAAK,CAAC,wBAAwB,EAAEO,UAAUb,IAAI,CAAC,eAAe,CAAC;YACjE;YACA,MAAMuB;QACR;IACF;IAEA,OAAO;QAAEF,OAAO;QAAGzB;QAAUC,YAAY,EAAE;IAAC;AAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildSearchParams.d.ts","sourceRoot":"","sources":["../../src/queries/buildSearchParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAe,OAAO,EAAE,MAAM,SAAS,CAAA;AAc7E,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,cAAc,EACd,MAAM,EACN,UAAU,EACV,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,GAAG,GACJ,EAAE;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAkUnC"}
1
+ {"version":3,"file":"buildSearchParams.d.ts","sourceRoot":"","sources":["../../src/queries/buildSearchParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAEd,QAAQ,EAER,OAAO,EACR,MAAM,SAAS,CAAA;AAkBhB,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,cAAc,EACd,MAAM,EACN,UAAU,EACV,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,GAAG,GACJ,EAAE;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAmZnC"}