@payloadcms/db-mongodb 4.0.0-internal.ea6e8f8 → 4.0.0-internal.ee5d8bd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +0 -1
  3. package/dist/connect.js.map +1 -1
  4. package/dist/count.d.ts.map +1 -1
  5. package/dist/count.js +4 -33
  6. package/dist/count.js.map +1 -1
  7. package/dist/countGlobalVersions.d.ts.map +1 -1
  8. package/dist/countGlobalVersions.js +0 -1
  9. package/dist/countGlobalVersions.js.map +1 -1
  10. package/dist/countVersions.d.ts.map +1 -1
  11. package/dist/countVersions.js +4 -36
  12. package/dist/countVersions.js.map +1 -1
  13. package/dist/createGlobalVersion.d.ts.map +1 -1
  14. package/dist/createGlobalVersion.js +0 -22
  15. package/dist/createGlobalVersion.js.map +1 -1
  16. package/dist/createVersion.d.ts.map +1 -1
  17. package/dist/createVersion.js +3 -16
  18. package/dist/createVersion.js.map +1 -1
  19. package/dist/deleteMany.d.ts.map +1 -1
  20. package/dist/deleteMany.js +0 -1
  21. package/dist/deleteMany.js.map +1 -1
  22. package/dist/deleteOne.d.ts.map +1 -1
  23. package/dist/deleteOne.js +1 -20
  24. package/dist/deleteOne.js.map +1 -1
  25. package/dist/deleteVersions.d.ts.map +1 -1
  26. package/dist/deleteVersions.js +0 -1
  27. package/dist/deleteVersions.js.map +1 -1
  28. package/dist/exports/migration-utils.d.ts +0 -1
  29. package/dist/exports/migration-utils.d.ts.map +1 -1
  30. package/dist/exports/migration-utils.js +0 -1
  31. package/dist/exports/migration-utils.js.map +1 -1
  32. package/dist/find.d.ts.map +1 -1
  33. package/dist/find.js +8 -44
  34. package/dist/find.js.map +1 -1
  35. package/dist/findDistinct.d.ts.map +1 -1
  36. package/dist/findDistinct.js +11 -70
  37. package/dist/findDistinct.js.map +1 -1
  38. package/dist/findGlobal.d.ts.map +1 -1
  39. package/dist/findGlobal.js +5 -34
  40. package/dist/findGlobal.js.map +1 -1
  41. package/dist/findGlobalVersions.d.ts.map +1 -1
  42. package/dist/findGlobalVersions.js +2 -10
  43. package/dist/findGlobalVersions.js.map +1 -1
  44. package/dist/findOne.d.ts.map +1 -1
  45. package/dist/findOne.js +5 -43
  46. package/dist/findOne.js.map +1 -1
  47. package/dist/findVersions.d.ts.map +1 -1
  48. package/dist/findVersions.js +5 -49
  49. package/dist/findVersions.js.map +1 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +0 -4
  52. package/dist/index.js.map +1 -1
  53. package/dist/models/buildGlobalModel.d.ts.map +1 -1
  54. package/dist/models/buildGlobalModel.js +1 -30
  55. package/dist/models/buildGlobalModel.js.map +1 -1
  56. package/dist/models/buildSchema.d.ts.map +1 -1
  57. package/dist/models/buildSchema.js +10 -30
  58. package/dist/models/buildSchema.js.map +1 -1
  59. package/dist/predefinedMigrations/migrateSizesToVariants.js.map +1 -1
  60. package/dist/queries/buildAndOrConditions.d.ts +2 -4
  61. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  62. package/dist/queries/buildAndOrConditions.js +1 -3
  63. package/dist/queries/buildAndOrConditions.js.map +1 -1
  64. package/dist/queries/buildQuery.d.ts +2 -4
  65. package/dist/queries/buildQuery.d.ts.map +1 -1
  66. package/dist/queries/buildQuery.js +1 -3
  67. package/dist/queries/buildQuery.js.map +1 -1
  68. package/dist/queries/buildSearchParams.d.ts +2 -4
  69. package/dist/queries/buildSearchParams.d.ts.map +1 -1
  70. package/dist/queries/buildSearchParams.js +44 -175
  71. package/dist/queries/buildSearchParams.js.map +1 -1
  72. package/dist/queries/getBuildQueryPlugin.d.ts +1 -3
  73. package/dist/queries/getBuildQueryPlugin.d.ts.map +1 -1
  74. package/dist/queries/getBuildQueryPlugin.js +1 -3
  75. package/dist/queries/getBuildQueryPlugin.js.map +1 -1
  76. package/dist/queries/parseParams.d.ts +2 -4
  77. package/dist/queries/parseParams.d.ts.map +1 -1
  78. package/dist/queries/parseParams.js +1 -5
  79. package/dist/queries/parseParams.js.map +1 -1
  80. package/dist/queryDrafts.d.ts.map +1 -1
  81. package/dist/queryDrafts.js +7 -38
  82. package/dist/queryDrafts.js.map +1 -1
  83. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  84. package/dist/transactions/commitTransaction.js +7 -55
  85. package/dist/transactions/commitTransaction.js.map +1 -1
  86. package/dist/transactions/rollbackTransaction.d.ts.map +1 -1
  87. package/dist/transactions/rollbackTransaction.js +9 -10
  88. package/dist/transactions/rollbackTransaction.js.map +1 -1
  89. package/dist/updateGlobal.d.ts.map +1 -1
  90. package/dist/updateGlobal.js +7 -87
  91. package/dist/updateGlobal.js.map +1 -1
  92. package/dist/updateGlobalVersion.d.ts.map +1 -1
  93. package/dist/updateGlobalVersion.js +0 -1
  94. package/dist/updateGlobalVersion.js.map +1 -1
  95. package/dist/updateMany.d.ts.map +1 -1
  96. package/dist/updateMany.js +1 -3
  97. package/dist/updateMany.js.map +1 -1
  98. package/dist/updateOne.d.ts.map +1 -1
  99. package/dist/updateOne.js +2 -28
  100. package/dist/updateOne.js.map +1 -1
  101. package/dist/updateVersion.d.ts.map +1 -1
  102. package/dist/updateVersion.js +0 -1
  103. package/dist/updateVersion.js.map +1 -1
  104. package/dist/utilities/aggregatePaginate.d.ts +1 -2
  105. package/dist/utilities/aggregatePaginate.d.ts.map +1 -1
  106. package/dist/utilities/aggregatePaginate.js +4 -18
  107. package/dist/utilities/aggregatePaginate.js.map +1 -1
  108. package/dist/utilities/buildJoinAggregation.d.ts +2 -4
  109. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
  110. package/dist/utilities/buildJoinAggregation.js +23 -118
  111. package/dist/utilities/buildJoinAggregation.js.map +1 -1
  112. package/dist/utilities/resolveJoins.d.ts +2 -6
  113. package/dist/utilities/resolveJoins.d.ts.map +1 -1
  114. package/dist/utilities/resolveJoins.js +26 -114
  115. package/dist/utilities/resolveJoins.js.map +1 -1
  116. package/package.json +16 -19
  117. package/dist/deleteBranchGlobal.d.ts +0 -10
  118. package/dist/deleteBranchGlobal.d.ts.map +0 -1
  119. package/dist/deleteBranchGlobal.js +0 -22
  120. package/dist/deleteBranchGlobal.js.map +0 -1
  121. package/dist/predefinedMigrations/branching.d.ts +0 -4
  122. package/dist/predefinedMigrations/branching.d.ts.map +0 -1
  123. package/dist/predefinedMigrations/branching.js +0 -9
  124. package/dist/predefinedMigrations/branching.js.map +0 -1
  125. package/dist/predefinedMigrations/migrateBranching.d.ts +0 -15
  126. package/dist/predefinedMigrations/migrateBranching.d.ts.map +0 -1
  127. package/dist/predefinedMigrations/migrateBranching.js +0 -88
  128. package/dist/predefinedMigrations/migrateBranching.js.map +0 -1
  129. package/dist/queries/buildBranchVisibility.d.ts +0 -11
  130. package/dist/queries/buildBranchVisibility.d.ts.map +0 -1
  131. package/dist/queries/buildBranchVisibility.js +0 -204
  132. package/dist/queries/buildBranchVisibility.js.map +0 -1
  133. package/dist/upsertBranchGlobalChange.d.ts +0 -3
  134. package/dist/upsertBranchGlobalChange.d.ts.map +0 -1
  135. package/dist/upsertBranchGlobalChange.js +0 -28
  136. package/dist/upsertBranchGlobalChange.js.map +0 -1
@@ -1,74 +1,16 @@
1
1
  import { Types } from 'mongoose';
2
- import { APIError, escapeRegExp, getFieldByPath, getLocalizedPaths, resolveBranchQuery, resolveBranchReadState, rewriteBranchIDs } from 'payload';
2
+ import { APIError, escapeRegExp, getFieldByPath, getLocalizedPaths } from 'payload';
3
3
  import { hasManyRelationshipOperatorSet, isNestedRelationshipQuery, validOperatorSet } from 'payload/shared';
4
4
  import { getCollection } from '../utilities/getEntity.js';
5
5
  import { isObjectID } from '../utilities/isObjectID.js';
6
- import { buildBranchVisibilityStages } from './buildBranchVisibility.js';
7
6
  import { operatorMap } from './operatorMap.js';
8
7
  import { sanitizeQueryValue } from './sanitizeQueryValue.js';
9
- const resolveRelatedBranchQuery = async ({ branch, collectionSlug, payload, req, where })=>{
10
- const adapter = payload.db;
11
- const branchReadState = resolveBranchReadState({
12
- branch,
13
- collectionSlug,
14
- req
15
- });
16
- const resolvedWhere = branchReadState.useBranching ? rewriteBranchIDs(where) : await resolveBranchQuery({
17
- branch,
18
- collectionSlug,
19
- req,
20
- where
21
- });
22
- return {
23
- branchVisibility: branchReadState.useBranching ? buildBranchVisibilityStages({
24
- adapter,
25
- branch: branchReadState.branch,
26
- collectionSlug
27
- }) : [],
28
- where: resolvedWhere ?? {}
29
- };
30
- };
31
- const findRelatedDocuments = async ({ branchVisibility, Model, projection, query })=>{
32
- if (branchVisibility.length) {
33
- return Model.aggregate([
34
- {
35
- $match: query
36
- },
37
- ...branchVisibility,
38
- {
39
- $project: projection
40
- }
41
- ]);
42
- }
43
- return Model.find(query).lean().select(projection);
44
- };
45
- const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query })=>{
46
- if (!branchVisibility.length) {
47
- return Model.distinct(path, query);
48
- }
49
- return Model.aggregate([
50
- {
51
- $match: query
52
- },
53
- ...branchVisibility,
54
- {
55
- $project: {
56
- value: `$${path}`
57
- }
58
- },
59
- {
60
- $unwind: '$value'
61
- },
62
- {
63
- $group: {
64
- _id: '$value'
65
- }
66
- }
67
- ]).then((results)=>results.map(({ _id })=>_id));
8
+ const subQueryOptions = {
9
+ lean: true
68
10
  };
69
11
  /**
70
12
  * Convert the Payload key / value / operator into a MongoDB query
71
- */ export async function buildSearchParam({ branch, collectionSlug, fields, globalSlug, incomingPath, locale, operator, parentIsLocalized, payload, req, val }) {
13
+ */ export async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPath, locale, operator, parentIsLocalized, payload, val }) {
72
14
  // Replace GraphQL nested field double underscore formatting
73
15
  let sanitizedPath = incomingPath.replace(/__/g, '.');
74
16
  if (sanitizedPath === 'id') {
@@ -110,24 +52,20 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
110
52
  const [{ field, path }] = paths;
111
53
  if (hasManyRelationshipOperatorSet.has(operator) && paths.length === 1 && (field.type === 'relationship' || field.type === 'upload') && field.hasMany && typeof field.relationTo === 'string' && isNestedRelationshipQuery(val)) {
112
54
  return buildHasManyRelationshipSearchParam({
113
- branch,
114
55
  field,
115
56
  locale,
116
57
  nestedWhere: val,
117
58
  operator: operator,
118
59
  path,
119
- payload,
120
- req
60
+ payload
121
61
  });
122
62
  }
123
63
  if (operator === 'contains' && paths.length === 1 && field.type === 'join' && typeof field.collection === 'string' && isNestedRelationshipQuery(val)) {
124
64
  return buildJoinContainsSearchParam({
125
- branch,
126
65
  field,
127
66
  locale,
128
67
  nestedWhere: val,
129
- payload,
130
- req
68
+ payload
131
69
  });
132
70
  }
133
71
  if ((operator === 'contains' || operator === 'like' || operator === 'not_like') && (isNestedRelationshipQuery(val) || Array.isArray(val) && val.some((entry)=>isNestedRelationshipQuery(entry)))) {
@@ -166,7 +104,6 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
166
104
  let relationshipQuery = {
167
105
  value: {}
168
106
  };
169
- let relationshipWhere;
170
107
  for (const [i, { collectionSlug, path: subPath }] of pathsToQuery.entries()){
171
108
  // The arrays are reversed together, so both entries describe the same relationship hop.
172
109
  const parentField = parentPaths[i]?.field;
@@ -181,27 +118,17 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
181
118
  collectionSlug
182
119
  });
183
120
  if (i === 0) {
184
- const { branchVisibility, where: relatedWhere } = await resolveRelatedBranchQuery({
185
- branch,
186
- collectionSlug,
121
+ const subQuery = await SubModel.buildQuery({
122
+ locale,
187
123
  payload,
188
- req,
189
124
  where: {
190
125
  [subPath]: {
191
126
  [formattedOperator]: val
192
127
  }
193
128
  }
194
129
  });
195
- const subQuery = await SubModel.buildQuery({
196
- branch,
197
- locale,
198
- payload,
199
- req,
200
- where: relatedWhere ?? {}
201
- });
202
130
  const select = {
203
- _id: true,
204
- _branchDocID: true
131
+ _id: true
205
132
  };
206
133
  let joinPath = null;
207
134
  if (parentField.type === 'join') {
@@ -222,12 +149,7 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
222
149
  if (joinPath) {
223
150
  select[joinPath] = true;
224
151
  }
225
- const result = await findRelatedDocuments({
226
- branchVisibility,
227
- Model: SubModel,
228
- projection: select,
229
- query: subQuery
230
- });
152
+ const result = await SubModel.find(subQuery).lean().select(select);
231
153
  const $in = [];
232
154
  result.forEach((doc)=>{
233
155
  if (joinPath) {
@@ -252,10 +174,9 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
252
174
  $in.push(ref);
253
175
  }
254
176
  } else {
255
- const documentID = doc._branchDocID ?? doc._id;
256
- const stringID = documentID.toString();
177
+ const stringID = doc._id.toString();
257
178
  if (Types.ObjectId.isValid(stringID)) {
258
- $in.push(documentID);
179
+ $in.push(doc._id);
259
180
  } else {
260
181
  $in.push(stringID);
261
182
  }
@@ -271,35 +192,21 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
271
192
  }
272
193
  const nextSubPath = pathsToQuery[i + 1]?.path;
273
194
  if (nextSubPath) {
274
- relationshipWhere = joinPath ? {
275
- id: {
276
- in: $in
277
- }
278
- } : {
279
- [nextSubPath]: {
280
- in: $in
195
+ relationshipQuery = {
196
+ value: joinPath ? {
197
+ _id: {
198
+ $in
199
+ }
200
+ } : {
201
+ [nextSubPath]: {
202
+ $in
203
+ }
281
204
  }
282
205
  };
283
206
  }
284
207
  continue;
285
208
  }
286
- if (!relationshipWhere) {
287
- return undefined;
288
- }
289
- const { branchVisibility, where: relatedWhere } = await resolveRelatedBranchQuery({
290
- branch,
291
- collectionSlug,
292
- payload,
293
- req,
294
- where: relationshipWhere
295
- });
296
- const subQuery = await SubModel.buildQuery({
297
- branch,
298
- locale,
299
- payload,
300
- req,
301
- where: relatedWhere ?? {}
302
- });
209
+ const subQuery = relationshipQuery.value;
303
210
  /**
304
211
  * Follow this join back to its parent IDs.
305
212
  * For example, matching songs yield album IDs, then artist IDs.
@@ -315,12 +222,7 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
315
222
  if (relationshipField.pathHasLocalized && payload.config.localization) {
316
223
  joinPath = joinPath.replace('<locale>', locale || payload.config.localization.defaultLocale);
317
224
  }
318
- const $in = await findRelatedDistinctValues({
319
- branchVisibility,
320
- Model: SubModel,
321
- path: joinPath,
322
- query: subQuery
323
- });
225
+ const $in = await SubModel.distinct(joinPath, subQuery);
324
226
  if (i + 1 === pathsToQuery.length) {
325
227
  return {
326
228
  path: '_id',
@@ -329,23 +231,17 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
329
231
  }
330
232
  };
331
233
  }
332
- relationshipWhere = {
333
- id: {
334
- in: $in
234
+ relationshipQuery = {
235
+ value: {
236
+ _id: {
237
+ $in
238
+ }
335
239
  }
336
240
  };
337
241
  continue;
338
242
  }
339
- const result = await findRelatedDocuments({
340
- branchVisibility,
341
- Model: SubModel,
342
- projection: {
343
- _id: true,
344
- _branchDocID: true
345
- },
346
- query: subQuery
347
- });
348
- const $in = result.map((doc)=>doc._branchDocID ?? doc._id);
243
+ const result = await SubModel.find(subQuery, subQueryOptions);
244
+ const $in = result.map((doc)=>doc._id);
349
245
  // If it is the last recursion
350
246
  // then pass through the search param
351
247
  if (i + 1 === pathsToQuery.length) {
@@ -358,9 +254,11 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
358
254
  } else {
359
255
  const nextSubPath = pathsToQuery[i + 1]?.path;
360
256
  if (nextSubPath) {
361
- relationshipWhere = {
362
- [nextSubPath]: {
363
- in: $in
257
+ relationshipQuery = {
258
+ value: {
259
+ [nextSubPath]: {
260
+ $in
261
+ }
364
262
  }
365
263
  };
366
264
  }
@@ -480,7 +378,7 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
480
378
  * // Simplified MongoDB result, after finding the matching ingredient IDs
481
379
  * { ingredients: { $nin: [unhealthyIngredientID] } }
482
380
  * ```
483
- */ async function buildHasManyRelationshipSearchParam({ branch, field, locale, nestedWhere, operator, path, payload, req }) {
381
+ */ async function buildHasManyRelationshipSearchParam({ field, locale, nestedWhere, operator, path, payload }) {
484
382
  if (field.type !== 'relationship' && field.type !== 'upload' || !field.hasMany || typeof field.relationTo !== 'string' || !isNestedRelationshipQuery(nestedWhere)) {
485
383
  return undefined;
486
384
  }
@@ -489,29 +387,14 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
489
387
  collectionSlug: field.relationTo
490
388
  });
491
389
  const pathLocale = payload.config.localization ? payload.config.localization.localeCodes.find((localeCode)=>path.split('.').at(-1) === localeCode) : undefined;
492
- const { branchVisibility, where: relatedWhere } = await resolveRelatedBranchQuery({
493
- branch,
494
- collectionSlug: field.relationTo,
495
- payload,
496
- req,
497
- where: nestedWhere
498
- });
499
390
  const matchingRelatedDocumentsQuery = await RelatedModel.buildQuery({
500
- branch,
501
391
  locale: pathLocale ?? locale,
502
392
  payload,
503
- req,
504
- where: relatedWhere ?? {}
393
+ where: nestedWhere
505
394
  });
506
- const findRelatedDocumentIDs = async (query)=>(await findRelatedDocuments({
507
- branchVisibility,
508
- Model: RelatedModel,
509
- projection: {
510
- _id: true,
511
- _branchDocID: true
512
- },
513
- query
514
- })).map((document)=>document._branchDocID ?? document._id);
395
+ const findRelatedDocumentIDs = async (query)=>(await RelatedModel.find(query).lean().select({
396
+ _id: true
397
+ })).map((document)=>document._id);
515
398
  switch(operator){
516
399
  case 'contains':
517
400
  {
@@ -526,7 +409,7 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
526
409
  case 'equals':
527
410
  {
528
411
  // Every related document satisfies an empty nested query.
529
- if (!Object.keys(nestedWhere).length) {
412
+ if (!Object.keys(matchingRelatedDocumentsQuery).length) {
530
413
  return {
531
414
  path,
532
415
  value: {
@@ -567,7 +450,7 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
567
450
  * `on` relationship to collect the parent IDs those documents point back to. Because the nested
568
451
  * query resolves against a single joined document, the user's filter and any injected access
569
452
  * constraint must be satisfied by the same document.
570
- */ async function buildJoinContainsSearchParam({ branch, field, locale, nestedWhere, payload, req }) {
453
+ */ async function buildJoinContainsSearchParam({ field, locale, nestedWhere, payload }) {
571
454
  if (field.type !== 'join' || typeof field.collection !== 'string' || !isNestedRelationshipQuery(nestedWhere)) {
572
455
  return undefined;
573
456
  }
@@ -586,26 +469,12 @@ const findRelatedDistinctValues = async ({ branchVisibility, Model, path, query
586
469
  if (relationshipField.pathHasLocalized && payload.config.localization) {
587
470
  joinPath = joinPath.replace('<locale>', locale || payload.config.localization.defaultLocale);
588
471
  }
589
- const { branchVisibility, where: relatedWhere } = await resolveRelatedBranchQuery({
590
- branch,
591
- collectionSlug: field.collection,
592
- payload,
593
- req,
594
- where: nestedWhere
595
- });
596
472
  const subQuery = await JoinedModel.buildQuery({
597
- branch,
598
473
  locale,
599
474
  payload,
600
- req,
601
- where: relatedWhere ?? {}
602
- });
603
- const parentIDs = await findRelatedDistinctValues({
604
- branchVisibility,
605
- Model: JoinedModel,
606
- path: joinPath,
607
- query: subQuery
475
+ where: nestedWhere
608
476
  });
477
+ const parentIDs = await JoinedModel.distinct(joinPath, subQuery);
609
478
  return {
610
479
  path: '_id',
611
480
  value: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/buildSearchParams.ts"],"sourcesContent":["import type { PipelineStage, QueryFilter } from 'mongoose'\nimport type {\n FlattenedField,\n HasManyRelationshipOperator,\n Operator,\n PathToQuery,\n Payload,\n PayloadRequest,\n Where,\n} from 'payload'\n\nimport { Types } from 'mongoose'\nimport {\n APIError,\n escapeRegExp,\n getFieldByPath,\n getLocalizedPaths,\n resolveBranchQuery,\n resolveBranchReadState,\n rewriteBranchIDs,\n} from 'payload'\nimport {\n hasManyRelationshipOperatorSet,\n isNestedRelationshipQuery,\n validOperatorSet,\n} from 'payload/shared'\n\nimport type { MongooseAdapter } from '../index.js'\nimport type { CollectionModel } from '../types.js'\nimport type { OperatorMapKey } from './operatorMap.js'\n\nimport { getCollection } from '../utilities/getEntity.js'\nimport { isObjectID } from '../utilities/isObjectID.js'\nimport { buildBranchVisibilityStages } from './buildBranchVisibility.js'\nimport { operatorMap } from './operatorMap.js'\nimport { sanitizeQueryValue } from './sanitizeQueryValue.js'\n\ntype SearchParam = {\n path?: string\n rawQuery?: unknown\n value?: unknown\n}\n\nconst resolveRelatedBranchQuery = async ({\n branch,\n collectionSlug,\n payload,\n req,\n where,\n}: {\n branch?: false | string\n collectionSlug: string\n payload: Payload\n req?: Partial<PayloadRequest>\n where: Where\n}) => {\n const adapter = payload.db as MongooseAdapter\n const branchReadState = resolveBranchReadState({ branch, collectionSlug, req })\n const resolvedWhere = branchReadState.useBranching\n ? rewriteBranchIDs(where)\n : await resolveBranchQuery({ branch, collectionSlug, req, where })\n\n return {\n branchVisibility: branchReadState.useBranching\n ? buildBranchVisibilityStages({\n adapter,\n branch: branchReadState.branch,\n collectionSlug,\n })\n : [],\n where: resolvedWhere ?? {},\n }\n}\n\nconst findRelatedDocuments = async ({\n branchVisibility,\n Model,\n projection,\n query,\n}: {\n branchVisibility: PipelineStage[]\n Model: CollectionModel\n projection: Record<string, boolean>\n query: Record<string, unknown>\n}) => {\n if (branchVisibility.length) {\n return Model.aggregate([{ $match: query }, ...branchVisibility, { $project: projection }])\n }\n\n return Model.find(query).lean().select(projection)\n}\n\nconst findRelatedDistinctValues = async ({\n branchVisibility,\n Model,\n path,\n query,\n}: {\n branchVisibility: PipelineStage[]\n Model: CollectionModel\n path: string\n query: Record<string, unknown>\n}) => {\n if (!branchVisibility.length) {\n return Model.distinct(path, query)\n }\n\n return Model.aggregate([\n { $match: query },\n ...branchVisibility,\n { $project: { value: `$${path}` } },\n { $unwind: '$value' },\n { $group: { _id: '$value' } },\n ]).then((results) => results.map(({ _id }) => _id))\n}\n\n/**\n * Convert the Payload key / value / operator into a MongoDB query\n */\nexport async function buildSearchParam({\n branch,\n collectionSlug,\n fields,\n globalSlug,\n incomingPath,\n locale,\n operator,\n parentIsLocalized,\n payload,\n req,\n val,\n}: {\n branch?: false | string\n collectionSlug?: string\n fields: FlattenedField[]\n globalSlug?: string\n incomingPath: string\n locale?: string\n operator: Operator\n parentIsLocalized: boolean\n payload: Payload\n req?: Partial<PayloadRequest>\n val: unknown\n}): Promise<SearchParam | undefined> {\n // Replace GraphQL nested field double underscore formatting\n let sanitizedPath = incomingPath.replace(/__/g, '.')\n if (sanitizedPath === 'id') {\n sanitizedPath = '_id'\n }\n\n let paths: PathToQuery[] = []\n\n let hasCustomID = false\n\n if (sanitizedPath === '_id') {\n const customIDFieldType = collectionSlug\n ? payload.collections[collectionSlug]?.customIDType\n : undefined\n\n let idFieldType: 'number' | 'text' = 'text'\n\n if (customIDFieldType) {\n idFieldType = customIDFieldType\n hasCustomID = true\n }\n\n paths.push({\n collectionSlug,\n complete: true,\n field: {\n name: 'id',\n type: idFieldType,\n } as FlattenedField,\n parentIsLocalized: parentIsLocalized ?? false,\n path: '_id',\n })\n } else {\n paths = getLocalizedPaths({\n collectionSlug,\n fields,\n globalSlug,\n incomingPath: sanitizedPath,\n locale,\n parentIsLocalized,\n payload,\n })\n }\n\n if (!paths[0]) {\n return undefined\n }\n\n const [{ field, path }] = paths\n\n if (\n hasManyRelationshipOperatorSet.has(operator as HasManyRelationshipOperator) &&\n paths.length === 1 &&\n (field.type === 'relationship' || field.type === 'upload') &&\n field.hasMany &&\n typeof field.relationTo === 'string' &&\n isNestedRelationshipQuery(val)\n ) {\n return buildHasManyRelationshipSearchParam({\n branch,\n field,\n locale,\n nestedWhere: val,\n operator: operator as HasManyRelationshipOperator,\n path,\n payload,\n req,\n })\n }\n\n if (\n operator === 'contains' &&\n paths.length === 1 &&\n field.type === 'join' &&\n typeof field.collection === 'string' &&\n isNestedRelationshipQuery(val)\n ) {\n return buildJoinContainsSearchParam({\n branch,\n field,\n locale,\n nestedWhere: val,\n payload,\n req,\n })\n }\n\n if (\n (operator === 'contains' || operator === 'like' || operator === 'not_like') &&\n (isNestedRelationshipQuery(val) ||\n (Array.isArray(val) && val.some((entry) => isNestedRelationshipQuery(entry))))\n ) {\n throw new APIError(`Invalid value for \"${operator}\" on path \"${path}\": expected a string.`, 400)\n }\n\n if (path) {\n const sanitizedQueryValue = sanitizeQueryValue({\n field,\n hasCustomID,\n locale,\n operator,\n parentIsLocalized,\n path,\n payload,\n val,\n })\n\n if (!sanitizedQueryValue) {\n return undefined\n }\n\n const { operator: formattedOperator, rawQuery, val: formattedValue } = sanitizedQueryValue\n\n if (rawQuery && paths.length === 1) {\n return { value: rawQuery }\n }\n\n if (!formattedOperator) {\n return undefined\n }\n\n // If there are multiple collections to search through,\n // Recursively build up a list of query constraints\n if (paths.length > 1) {\n // Remove top collection and reverse array\n // to work backwards from top\n const pathsToQuery = paths.slice(1).reverse()\n const parentPaths = paths.slice(0, -1).reverse()\n\n let relationshipQuery: SearchParam = { value: {} }\n let relationshipWhere: undefined | Where\n\n for (const [i, { collectionSlug, path: subPath }] of pathsToQuery.entries()) {\n // The arrays are reversed together, so both entries describe the same relationship hop.\n const parentField = parentPaths[i]?.field\n\n if (!parentField) {\n return undefined\n }\n\n if (!collectionSlug) {\n throw new APIError(`Collection with the slug ${collectionSlug} was not found.`)\n }\n\n const { collectionConfig, Model: SubModel } = getCollection({\n adapter: payload.db as MongooseAdapter,\n collectionSlug,\n })\n\n if (i === 0) {\n const { branchVisibility, where: relatedWhere } = await resolveRelatedBranchQuery({\n branch,\n collectionSlug,\n payload,\n req,\n where: {\n [subPath]: {\n [formattedOperator]: val,\n },\n },\n })\n const subQuery = await SubModel.buildQuery({\n branch,\n locale,\n payload,\n req,\n where: relatedWhere ?? {},\n })\n\n const select: Record<string, boolean> = {\n _id: true,\n _branchDocID: true,\n }\n\n let joinPath: null | string = null\n\n if (parentField.type === 'join') {\n const relationshipField = getFieldByPath({\n fields: collectionConfig.flattenedFields,\n path: parentField.on,\n })\n if (!relationshipField) {\n throw new APIError('Relationship field was not found')\n }\n\n let path = relationshipField.localizedPath\n if (relationshipField.pathHasLocalized && payload.config.localization) {\n path = path.replace('<locale>', locale || payload.config.localization.defaultLocale)\n }\n select[path] = true\n\n joinPath = path\n }\n\n if (joinPath) {\n select[joinPath] = true\n }\n\n const result = await findRelatedDocuments({\n branchVisibility,\n Model: SubModel,\n projection: select,\n query: subQuery,\n })\n\n const $in: unknown[] = []\n\n result.forEach((doc: any) => {\n if (joinPath) {\n let ref = doc\n\n for (const segment of joinPath.split('.')) {\n if (Array.isArray(ref)) {\n ref = ref\n .map((item) => (typeof item === 'object' && item ? item[segment] : undefined))\n .flat()\n .filter((item) => item != null)\n } else if (typeof ref === 'object' && ref) {\n ref = ref[segment]\n } else {\n ref = undefined\n break\n }\n }\n\n if (Array.isArray(ref)) {\n for (const item of ref) {\n if (isObjectID(item)) {\n $in.push(item)\n }\n }\n } else if (isObjectID(ref)) {\n $in.push(ref)\n }\n } else {\n const documentID = doc._branchDocID ?? doc._id\n const stringID = documentID.toString()\n if (Types.ObjectId.isValid(stringID)) {\n $in.push(documentID)\n } else {\n $in.push(stringID)\n }\n }\n })\n\n if (pathsToQuery.length === 1) {\n return {\n path: joinPath ? '_id' : path,\n value: { $in },\n }\n }\n\n const nextSubPath = pathsToQuery[i + 1]?.path\n\n if (nextSubPath) {\n relationshipWhere = joinPath ? { id: { in: $in } } : { [nextSubPath]: { in: $in } }\n }\n\n continue\n }\n\n if (!relationshipWhere) {\n return undefined\n }\n\n const { branchVisibility, where: relatedWhere } = await resolveRelatedBranchQuery({\n branch,\n collectionSlug,\n payload,\n req,\n where: relationshipWhere,\n })\n const subQuery = (await SubModel.buildQuery({\n branch,\n locale,\n payload,\n req,\n where: relatedWhere ?? {},\n })) as QueryFilter<any>\n\n /**\n * Follow this join back to its parent IDs.\n * For example, matching songs yield album IDs, then artist IDs.\n */\n if (parentField.type === 'join') {\n const relationshipField = getFieldByPath({\n fields: collectionConfig.flattenedFields,\n path: parentField.on,\n })\n if (!relationshipField) {\n throw new APIError('Relationship field was not found')\n }\n\n let joinPath = relationshipField.localizedPath\n if (relationshipField.pathHasLocalized && payload.config.localization) {\n joinPath = joinPath.replace(\n '<locale>',\n locale || payload.config.localization.defaultLocale,\n )\n }\n\n const $in = await findRelatedDistinctValues({\n branchVisibility,\n Model: SubModel,\n path: joinPath,\n query: subQuery,\n })\n if (i + 1 === pathsToQuery.length) {\n return { path: '_id', value: { $in } }\n }\n\n relationshipWhere = { id: { in: $in } }\n continue\n }\n\n const result = await findRelatedDocuments({\n branchVisibility,\n Model: SubModel,\n projection: { _id: true, _branchDocID: true },\n query: subQuery,\n })\n\n const $in = result.map((doc) => doc._branchDocID ?? doc._id)\n\n // If it is the last recursion\n // then pass through the search param\n if (i + 1 === pathsToQuery.length) {\n relationshipQuery = {\n path,\n value: { $in },\n }\n } else {\n const nextSubPath = pathsToQuery[i + 1]?.path\n if (nextSubPath) {\n relationshipWhere = { [nextSubPath]: { in: $in } }\n }\n }\n }\n\n return relationshipQuery\n }\n\n if (formattedOperator && validOperatorSet.has(formattedOperator as Operator)) {\n const operatorKey = operatorMap[formattedOperator as OperatorMapKey]\n\n if (field.type === 'relationship' || field.type === 'upload') {\n let hasNumberIDRelation\n let multiIDCondition = '$or'\n if (operatorKey === '$ne') {\n multiIDCondition = '$and'\n }\n\n const result = {\n value: {\n [multiIDCondition]: [{ [path]: { [operatorKey]: formattedValue } }],\n },\n }\n\n if (typeof formattedValue === 'string') {\n if (Types.ObjectId.isValid(formattedValue)) {\n result.value[multiIDCondition]?.push({\n [path]: { [operatorKey]: new Types.ObjectId(formattedValue) },\n })\n } else {\n ;(Array.isArray(field.relationTo) ? field.relationTo : [field.relationTo]).forEach(\n (relationTo) => {\n const isRelatedToCustomNumberID =\n payload.collections[relationTo]?.customIDType === 'number'\n\n if (isRelatedToCustomNumberID) {\n hasNumberIDRelation = true\n }\n },\n )\n\n if (hasNumberIDRelation) {\n result.value[multiIDCondition]?.push({\n [path]: { [operatorKey]: parseFloat(formattedValue) },\n })\n }\n }\n }\n\n const length = result.value[multiIDCondition]?.length\n\n if (typeof length === 'number' && length > 1) {\n return result\n }\n }\n\n if (formattedOperator === 'like' && typeof formattedValue === 'string') {\n const words = formattedValue.split(' ')\n\n const result = {\n value: {\n $and: words.map((word) => ({\n [path]: {\n $options: 'i',\n $regex: escapeRegExp(word),\n },\n })),\n },\n }\n\n return result\n }\n\n if (formattedOperator === 'not_like' && typeof formattedValue === 'string') {\n const words = formattedValue.split(' ')\n\n const result = {\n value: {\n $and: words.map((word) => ({\n [path]: {\n $not: {\n $options: 'i',\n $regex: escapeRegExp(word),\n },\n },\n })),\n },\n }\n\n return result\n }\n\n // Some operators like 'near' need to define a full query\n // so if there is no operator key, just return the value\n if (!operatorKey) {\n return {\n path,\n value: formattedValue,\n }\n }\n\n return {\n path,\n value: { [operatorKey]: formattedValue },\n }\n }\n }\n return undefined\n}\n\n/**\n * Builds a MongoDB condition for an operator containing a nested has-many relationship query.\n *\n * First, it finds IDs from the related collection that match the nested query. The parent\n * collection can then use `$in` or `$nin` against its stored relationship IDs.\n *\n * @example\n * ```ts\n * // Input\n * { ingredients: { not_equals: { isHealthy: { equals: false } } } }\n *\n * // Simplified MongoDB result, after finding the matching ingredient IDs\n * { ingredients: { $nin: [unhealthyIngredientID] } }\n * ```\n */\nasync function buildHasManyRelationshipSearchParam({\n branch,\n field,\n locale,\n nestedWhere,\n operator,\n path,\n payload,\n req,\n}: {\n branch?: false | string\n field: FlattenedField\n locale?: string\n nestedWhere: unknown\n operator: HasManyRelationshipOperator\n path: string\n payload: Payload\n req?: Partial<PayloadRequest>\n}): Promise<SearchParam | undefined> {\n if (\n (field.type !== 'relationship' && field.type !== 'upload') ||\n !field.hasMany ||\n typeof field.relationTo !== 'string' ||\n !isNestedRelationshipQuery(nestedWhere)\n ) {\n return undefined\n }\n\n const { Model: RelatedModel } = getCollection({\n adapter: payload.db as MongooseAdapter,\n collectionSlug: field.relationTo,\n })\n const pathLocale = payload.config.localization\n ? payload.config.localization.localeCodes.find(\n (localeCode) => path.split('.').at(-1) === localeCode,\n )\n : undefined\n const { branchVisibility, where: relatedWhere } = await resolveRelatedBranchQuery({\n branch,\n collectionSlug: field.relationTo,\n payload,\n req,\n where: nestedWhere,\n })\n const matchingRelatedDocumentsQuery = await RelatedModel.buildQuery({\n branch,\n locale: pathLocale ?? locale,\n payload,\n req,\n where: relatedWhere ?? {},\n })\n\n const findRelatedDocumentIDs = async (query: Record<string, unknown>) =>\n (\n await findRelatedDocuments({\n branchVisibility,\n Model: RelatedModel,\n projection: { _id: true, _branchDocID: true },\n query,\n })\n ).map((document) => document._branchDocID ?? document._id)\n\n switch (operator) {\n case 'contains': {\n const matchingRelatedDocumentIDs = await findRelatedDocumentIDs(matchingRelatedDocumentsQuery)\n\n return {\n path,\n value: { $in: matchingRelatedDocumentIDs },\n }\n }\n\n case 'equals': {\n // Every related document satisfies an empty nested query.\n if (!Object.keys(nestedWhere).length) {\n return {\n path,\n value: { $nin: [] },\n }\n }\n\n // MongoDB rejects `$near` and `$text` when they are inverted with `$nor`. Check the parent\n // instead: none of its IDs may fall outside the matching IDs.\n const matchingRelatedDocumentIDs = await findRelatedDocumentIDs(matchingRelatedDocumentsQuery)\n\n return {\n path,\n value: { $not: { $elemMatch: { $nin: matchingRelatedDocumentIDs } } },\n }\n }\n\n case 'not_equals': {\n const matchingRelatedDocumentIDs = await findRelatedDocumentIDs(matchingRelatedDocumentsQuery)\n\n return {\n path,\n value: { $nin: matchingRelatedDocumentIDs },\n }\n }\n }\n}\n\n/**\n * Builds a MongoDB condition for a `contains` query nested on a join field.\n *\n * Finds documents in the joined collection that match the nested query, then follows the join's\n * `on` relationship to collect the parent IDs those documents point back to. Because the nested\n * query resolves against a single joined document, the user's filter and any injected access\n * constraint must be satisfied by the same document.\n */\nasync function buildJoinContainsSearchParam({\n branch,\n field,\n locale,\n nestedWhere,\n payload,\n req,\n}: {\n branch?: false | string\n field: FlattenedField\n locale?: string\n nestedWhere: unknown\n payload: Payload\n req?: Partial<PayloadRequest>\n}): Promise<SearchParam | undefined> {\n if (\n field.type !== 'join' ||\n typeof field.collection !== 'string' ||\n !isNestedRelationshipQuery(nestedWhere)\n ) {\n return undefined\n }\n\n const { collectionConfig, Model: JoinedModel } = getCollection({\n adapter: payload.db as MongooseAdapter,\n collectionSlug: field.collection,\n })\n\n const relationshipField = getFieldByPath({\n fields: collectionConfig.flattenedFields,\n path: field.on,\n })\n\n if (!relationshipField) {\n throw new APIError('Relationship field was not found')\n }\n\n let joinPath = relationshipField.localizedPath\n if (relationshipField.pathHasLocalized && payload.config.localization) {\n joinPath = joinPath.replace('<locale>', locale || payload.config.localization.defaultLocale)\n }\n\n const { branchVisibility, where: relatedWhere } = await resolveRelatedBranchQuery({\n branch,\n collectionSlug: field.collection,\n payload,\n req,\n where: nestedWhere,\n })\n const subQuery = await JoinedModel.buildQuery({\n branch,\n locale,\n payload,\n req,\n where: relatedWhere ?? {},\n })\n\n const parentIDs = await findRelatedDistinctValues({\n branchVisibility,\n Model: JoinedModel,\n path: joinPath,\n query: subQuery,\n })\n\n return {\n path: '_id',\n value: { $in: parentIDs },\n }\n}\n"],"names":["Types","APIError","escapeRegExp","getFieldByPath","getLocalizedPaths","resolveBranchQuery","resolveBranchReadState","rewriteBranchIDs","hasManyRelationshipOperatorSet","isNestedRelationshipQuery","validOperatorSet","getCollection","isObjectID","buildBranchVisibilityStages","operatorMap","sanitizeQueryValue","resolveRelatedBranchQuery","branch","collectionSlug","payload","req","where","adapter","db","branchReadState","resolvedWhere","useBranching","branchVisibility","findRelatedDocuments","Model","projection","query","length","aggregate","$match","$project","find","lean","select","findRelatedDistinctValues","path","distinct","value","$unwind","$group","_id","then","results","map","buildSearchParam","fields","globalSlug","incomingPath","locale","operator","parentIsLocalized","val","sanitizedPath","replace","paths","hasCustomID","customIDFieldType","collections","customIDType","undefined","idFieldType","push","complete","field","name","type","has","hasMany","relationTo","buildHasManyRelationshipSearchParam","nestedWhere","collection","buildJoinContainsSearchParam","Array","isArray","some","entry","sanitizedQueryValue","formattedOperator","rawQuery","formattedValue","pathsToQuery","slice","reverse","parentPaths","relationshipQuery","relationshipWhere","i","subPath","entries","parentField","collectionConfig","SubModel","relatedWhere","subQuery","buildQuery","_branchDocID","joinPath","relationshipField","flattenedFields","on","localizedPath","pathHasLocalized","config","localization","defaultLocale","result","$in","forEach","doc","ref","segment","split","item","flat","filter","documentID","stringID","toString","ObjectId","isValid","nextSubPath","id","in","operatorKey","hasNumberIDRelation","multiIDCondition","isRelatedToCustomNumberID","parseFloat","words","$and","word","$options","$regex","$not","RelatedModel","pathLocale","localeCodes","localeCode","at","matchingRelatedDocumentsQuery","findRelatedDocumentIDs","document","matchingRelatedDocumentIDs","Object","keys","$nin","$elemMatch","JoinedModel","parentIDs"],"mappings":"AAWA,SAASA,KAAK,QAAQ,WAAU;AAChC,SACEC,QAAQ,EACRC,YAAY,EACZC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB,EAClBC,sBAAsB,EACtBC,gBAAgB,QACX,UAAS;AAChB,SACEC,8BAA8B,EAC9BC,yBAAyB,EACzBC,gBAAgB,QACX,iBAAgB;AAMvB,SAASC,aAAa,QAAQ,4BAA2B;AACzD,SAASC,UAAU,QAAQ,6BAA4B;AACvD,SAASC,2BAA2B,QAAQ,6BAA4B;AACxE,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,kBAAkB,QAAQ,0BAAyB;AAQ5D,MAAMC,4BAA4B,OAAO,EACvCC,MAAM,EACNC,cAAc,EACdC,OAAO,EACPC,GAAG,EACHC,KAAK,EAON;IACC,MAAMC,UAAUH,QAAQI,EAAE;IAC1B,MAAMC,kBAAkBlB,uBAAuB;QAAEW;QAAQC;QAAgBE;IAAI;IAC7E,MAAMK,gBAAgBD,gBAAgBE,YAAY,GAC9CnB,iBAAiBc,SACjB,MAAMhB,mBAAmB;QAAEY;QAAQC;QAAgBE;QAAKC;IAAM;IAElE,OAAO;QACLM,kBAAkBH,gBAAgBE,YAAY,GAC1Cb,4BAA4B;YAC1BS;YACAL,QAAQO,gBAAgBP,MAAM;YAC9BC;QACF,KACA,EAAE;QACNG,OAAOI,iBAAiB,CAAC;IAC3B;AACF;AAEA,MAAMG,uBAAuB,OAAO,EAClCD,gBAAgB,EAChBE,KAAK,EACLC,UAAU,EACVC,KAAK,EAMN;IACC,IAAIJ,iBAAiBK,MAAM,EAAE;QAC3B,OAAOH,MAAMI,SAAS,CAAC;YAAC;gBAAEC,QAAQH;YAAM;eAAMJ;YAAkB;gBAAEQ,UAAUL;YAAW;SAAE;IAC3F;IAEA,OAAOD,MAAMO,IAAI,CAACL,OAAOM,IAAI,GAAGC,MAAM,CAACR;AACzC;AAEA,MAAMS,4BAA4B,OAAO,EACvCZ,gBAAgB,EAChBE,KAAK,EACLW,IAAI,EACJT,KAAK,EAMN;IACC,IAAI,CAACJ,iBAAiBK,MAAM,EAAE;QAC5B,OAAOH,MAAMY,QAAQ,CAACD,MAAMT;IAC9B;IAEA,OAAOF,MAAMI,SAAS,CAAC;QACrB;YAAEC,QAAQH;QAAM;WACbJ;QACH;YAAEQ,UAAU;gBAAEO,OAAO,CAAC,CAAC,EAAEF,MAAM;YAAC;QAAE;QAClC;YAAEG,SAAS;QAAS;QACpB;YAAEC,QAAQ;gBAAEC,KAAK;YAAS;QAAE;KAC7B,EAAEC,IAAI,CAAC,CAACC,UAAYA,QAAQC,GAAG,CAAC,CAAC,EAAEH,GAAG,EAAE,GAAKA;AAChD;AAEA;;CAEC,GACD,OAAO,eAAeI,iBAAiB,EACrChC,MAAM,EACNC,cAAc,EACdgC,MAAM,EACNC,UAAU,EACVC,YAAY,EACZC,MAAM,EACNC,QAAQ,EACRC,iBAAiB,EACjBpC,OAAO,EACPC,GAAG,EACHoC,GAAG,EAaJ;IACC,4DAA4D;IAC5D,IAAIC,gBAAgBL,aAAaM,OAAO,CAAC,OAAO;IAChD,IAAID,kBAAkB,MAAM;QAC1BA,gBAAgB;IAClB;IAEA,IAAIE,QAAuB,EAAE;IAE7B,IAAIC,cAAc;IAElB,IAAIH,kBAAkB,OAAO;QAC3B,MAAMI,oBAAoB3C,iBACtBC,QAAQ2C,WAAW,CAAC5C,eAAe,EAAE6C,eACrCC;QAEJ,IAAIC,cAAiC;QAErC,IAAIJ,mBAAmB;YACrBI,cAAcJ;YACdD,cAAc;QAChB;QAEAD,MAAMO,IAAI,CAAC;YACThD;YACAiD,UAAU;YACVC,OAAO;gBACLC,MAAM;gBACNC,MAAML;YACR;YACAV,mBAAmBA,qBAAqB;YACxCf,MAAM;QACR;IACF,OAAO;QACLmB,QAAQvD,kBAAkB;YACxBc;YACAgC;YACAC;YACAC,cAAcK;YACdJ;YACAE;YACApC;QACF;IACF;IAEA,IAAI,CAACwC,KAAK,CAAC,EAAE,EAAE;QACb,OAAOK;IACT;IAEA,MAAM,CAAC,EAAEI,KAAK,EAAE5B,IAAI,EAAE,CAAC,GAAGmB;IAE1B,IACEnD,+BAA+B+D,GAAG,CAACjB,aACnCK,MAAM3B,MAAM,KAAK,KAChBoC,CAAAA,MAAME,IAAI,KAAK,kBAAkBF,MAAME,IAAI,KAAK,QAAO,KACxDF,MAAMI,OAAO,IACb,OAAOJ,MAAMK,UAAU,KAAK,YAC5BhE,0BAA0B+C,MAC1B;QACA,OAAOkB,oCAAoC;YACzCzD;YACAmD;YACAf;YACAsB,aAAanB;YACbF,UAAUA;YACVd;YACArB;YACAC;QACF;IACF;IAEA,IACEkC,aAAa,cACbK,MAAM3B,MAAM,KAAK,KACjBoC,MAAME,IAAI,KAAK,UACf,OAAOF,MAAMQ,UAAU,KAAK,YAC5BnE,0BAA0B+C,MAC1B;QACA,OAAOqB,6BAA6B;YAClC5D;YACAmD;YACAf;YACAsB,aAAanB;YACbrC;YACAC;QACF;IACF;IAEA,IACE,AAACkC,CAAAA,aAAa,cAAcA,aAAa,UAAUA,aAAa,UAAS,KACxE7C,CAAAA,0BAA0B+C,QACxBsB,MAAMC,OAAO,CAACvB,QAAQA,IAAIwB,IAAI,CAAC,CAACC,QAAUxE,0BAA0BwE,OAAO,GAC9E;QACA,MAAM,IAAIhF,SAAS,CAAC,mBAAmB,EAAEqD,SAAS,WAAW,EAAEd,KAAK,qBAAqB,CAAC,EAAE;IAC9F;IAEA,IAAIA,MAAM;QACR,MAAM0C,sBAAsBnE,mBAAmB;YAC7CqD;YACAR;YACAP;YACAC;YACAC;YACAf;YACArB;YACAqC;QACF;QAEA,IAAI,CAAC0B,qBAAqB;YACxB,OAAOlB;QACT;QAEA,MAAM,EAAEV,UAAU6B,iBAAiB,EAAEC,QAAQ,EAAE5B,KAAK6B,cAAc,EAAE,GAAGH;QAEvE,IAAIE,YAAYzB,MAAM3B,MAAM,KAAK,GAAG;YAClC,OAAO;gBAAEU,OAAO0C;YAAS;QAC3B;QAEA,IAAI,CAACD,mBAAmB;YACtB,OAAOnB;QACT;QAEA,uDAAuD;QACvD,mDAAmD;QACnD,IAAIL,MAAM3B,MAAM,GAAG,GAAG;YACpB,0CAA0C;YAC1C,6BAA6B;YAC7B,MAAMsD,eAAe3B,MAAM4B,KAAK,CAAC,GAAGC,OAAO;YAC3C,MAAMC,cAAc9B,MAAM4B,KAAK,CAAC,GAAG,CAAC,GAAGC,OAAO;YAE9C,IAAIE,oBAAiC;gBAAEhD,OAAO,CAAC;YAAE;YACjD,IAAIiD;YAEJ,KAAK,MAAM,CAACC,GAAG,EAAE1E,cAAc,EAAEsB,MAAMqD,OAAO,EAAE,CAAC,IAAIP,aAAaQ,OAAO,GAAI;gBAC3E,wFAAwF;gBACxF,MAAMC,cAAcN,WAAW,CAACG,EAAE,EAAExB;gBAEpC,IAAI,CAAC2B,aAAa;oBAChB,OAAO/B;gBACT;gBAEA,IAAI,CAAC9C,gBAAgB;oBACnB,MAAM,IAAIjB,SAAS,CAAC,yBAAyB,EAAEiB,eAAe,eAAe,CAAC;gBAChF;gBAEA,MAAM,EAAE8E,gBAAgB,EAAEnE,OAAOoE,QAAQ,EAAE,GAAGtF,cAAc;oBAC1DW,SAASH,QAAQI,EAAE;oBACnBL;gBACF;gBAEA,IAAI0E,MAAM,GAAG;oBACX,MAAM,EAAEjE,gBAAgB,EAAEN,OAAO6E,YAAY,EAAE,GAAG,MAAMlF,0BAA0B;wBAChFC;wBACAC;wBACAC;wBACAC;wBACAC,OAAO;4BACL,CAACwE,QAAQ,EAAE;gCACT,CAACV,kBAAkB,EAAE3B;4BACvB;wBACF;oBACF;oBACA,MAAM2C,WAAW,MAAMF,SAASG,UAAU,CAAC;wBACzCnF;wBACAoC;wBACAlC;wBACAC;wBACAC,OAAO6E,gBAAgB,CAAC;oBAC1B;oBAEA,MAAM5D,SAAkC;wBACtCO,KAAK;wBACLwD,cAAc;oBAChB;oBAEA,IAAIC,WAA0B;oBAE9B,IAAIP,YAAYzB,IAAI,KAAK,QAAQ;wBAC/B,MAAMiC,oBAAoBpG,eAAe;4BACvC+C,QAAQ8C,iBAAiBQ,eAAe;4BACxChE,MAAMuD,YAAYU,EAAE;wBACtB;wBACA,IAAI,CAACF,mBAAmB;4BACtB,MAAM,IAAItG,SAAS;wBACrB;wBAEA,IAAIuC,OAAO+D,kBAAkBG,aAAa;wBAC1C,IAAIH,kBAAkBI,gBAAgB,IAAIxF,QAAQyF,MAAM,CAACC,YAAY,EAAE;4BACrErE,OAAOA,KAAKkB,OAAO,CAAC,YAAYL,UAAUlC,QAAQyF,MAAM,CAACC,YAAY,CAACC,aAAa;wBACrF;wBACAxE,MAAM,CAACE,KAAK,GAAG;wBAEf8D,WAAW9D;oBACb;oBAEA,IAAI8D,UAAU;wBACZhE,MAAM,CAACgE,SAAS,GAAG;oBACrB;oBAEA,MAAMS,SAAS,MAAMnF,qBAAqB;wBACxCD;wBACAE,OAAOoE;wBACPnE,YAAYQ;wBACZP,OAAOoE;oBACT;oBAEA,MAAMa,MAAiB,EAAE;oBAEzBD,OAAOE,OAAO,CAAC,CAACC;wBACd,IAAIZ,UAAU;4BACZ,IAAIa,MAAMD;4BAEV,KAAK,MAAME,WAAWd,SAASe,KAAK,CAAC,KAAM;gCACzC,IAAIvC,MAAMC,OAAO,CAACoC,MAAM;oCACtBA,MAAMA,IACHnE,GAAG,CAAC,CAACsE,OAAU,OAAOA,SAAS,YAAYA,OAAOA,IAAI,CAACF,QAAQ,GAAGpD,WAClEuD,IAAI,GACJC,MAAM,CAAC,CAACF,OAASA,QAAQ;gCAC9B,OAAO,IAAI,OAAOH,QAAQ,YAAYA,KAAK;oCACzCA,MAAMA,GAAG,CAACC,QAAQ;gCACpB,OAAO;oCACLD,MAAMnD;oCACN;gCACF;4BACF;4BAEA,IAAIc,MAAMC,OAAO,CAACoC,MAAM;gCACtB,KAAK,MAAMG,QAAQH,IAAK;oCACtB,IAAIvG,WAAW0G,OAAO;wCACpBN,IAAI9C,IAAI,CAACoD;oCACX;gCACF;4BACF,OAAO,IAAI1G,WAAWuG,MAAM;gCAC1BH,IAAI9C,IAAI,CAACiD;4BACX;wBACF,OAAO;4BACL,MAAMM,aAAaP,IAAIb,YAAY,IAAIa,IAAIrE,GAAG;4BAC9C,MAAM6E,WAAWD,WAAWE,QAAQ;4BACpC,IAAI3H,MAAM4H,QAAQ,CAACC,OAAO,CAACH,WAAW;gCACpCV,IAAI9C,IAAI,CAACuD;4BACX,OAAO;gCACLT,IAAI9C,IAAI,CAACwD;4BACX;wBACF;oBACF;oBAEA,IAAIpC,aAAatD,MAAM,KAAK,GAAG;wBAC7B,OAAO;4BACLQ,MAAM8D,WAAW,QAAQ9D;4BACzBE,OAAO;gCAAEsE;4BAAI;wBACf;oBACF;oBAEA,MAAMc,cAAcxC,YAAY,CAACM,IAAI,EAAE,EAAEpD;oBAEzC,IAAIsF,aAAa;wBACfnC,oBAAoBW,WAAW;4BAAEyB,IAAI;gCAAEC,IAAIhB;4BAAI;wBAAE,IAAI;4BAAE,CAACc,YAAY,EAAE;gCAAEE,IAAIhB;4BAAI;wBAAE;oBACpF;oBAEA;gBACF;gBAEA,IAAI,CAACrB,mBAAmB;oBACtB,OAAO3B;gBACT;gBAEA,MAAM,EAAErC,gBAAgB,EAAEN,OAAO6E,YAAY,EAAE,GAAG,MAAMlF,0BAA0B;oBAChFC;oBACAC;oBACAC;oBACAC;oBACAC,OAAOsE;gBACT;gBACA,MAAMQ,WAAY,MAAMF,SAASG,UAAU,CAAC;oBAC1CnF;oBACAoC;oBACAlC;oBACAC;oBACAC,OAAO6E,gBAAgB,CAAC;gBAC1B;gBAEA;;;SAGC,GACD,IAAIH,YAAYzB,IAAI,KAAK,QAAQ;oBAC/B,MAAMiC,oBAAoBpG,eAAe;wBACvC+C,QAAQ8C,iBAAiBQ,eAAe;wBACxChE,MAAMuD,YAAYU,EAAE;oBACtB;oBACA,IAAI,CAACF,mBAAmB;wBACtB,MAAM,IAAItG,SAAS;oBACrB;oBAEA,IAAIqG,WAAWC,kBAAkBG,aAAa;oBAC9C,IAAIH,kBAAkBI,gBAAgB,IAAIxF,QAAQyF,MAAM,CAACC,YAAY,EAAE;wBACrEP,WAAWA,SAAS5C,OAAO,CACzB,YACAL,UAAUlC,QAAQyF,MAAM,CAACC,YAAY,CAACC,aAAa;oBAEvD;oBAEA,MAAME,MAAM,MAAMzE,0BAA0B;wBAC1CZ;wBACAE,OAAOoE;wBACPzD,MAAM8D;wBACNvE,OAAOoE;oBACT;oBACA,IAAIP,IAAI,MAAMN,aAAatD,MAAM,EAAE;wBACjC,OAAO;4BAAEQ,MAAM;4BAAOE,OAAO;gCAAEsE;4BAAI;wBAAE;oBACvC;oBAEArB,oBAAoB;wBAAEoC,IAAI;4BAAEC,IAAIhB;wBAAI;oBAAE;oBACtC;gBACF;gBAEA,MAAMD,SAAS,MAAMnF,qBAAqB;oBACxCD;oBACAE,OAAOoE;oBACPnE,YAAY;wBAAEe,KAAK;wBAAMwD,cAAc;oBAAK;oBAC5CtE,OAAOoE;gBACT;gBAEA,MAAMa,MAAMD,OAAO/D,GAAG,CAAC,CAACkE,MAAQA,IAAIb,YAAY,IAAIa,IAAIrE,GAAG;gBAE3D,8BAA8B;gBAC9B,qCAAqC;gBACrC,IAAI+C,IAAI,MAAMN,aAAatD,MAAM,EAAE;oBACjC0D,oBAAoB;wBAClBlD;wBACAE,OAAO;4BAAEsE;wBAAI;oBACf;gBACF,OAAO;oBACL,MAAMc,cAAcxC,YAAY,CAACM,IAAI,EAAE,EAAEpD;oBACzC,IAAIsF,aAAa;wBACfnC,oBAAoB;4BAAE,CAACmC,YAAY,EAAE;gCAAEE,IAAIhB;4BAAI;wBAAE;oBACnD;gBACF;YACF;YAEA,OAAOtB;QACT;QAEA,IAAIP,qBAAqBzE,iBAAiB6D,GAAG,CAACY,oBAAgC;YAC5E,MAAM8C,cAAcnH,WAAW,CAACqE,kBAAoC;YAEpE,IAAIf,MAAME,IAAI,KAAK,kBAAkBF,MAAME,IAAI,KAAK,UAAU;gBAC5D,IAAI4D;gBACJ,IAAIC,mBAAmB;gBACvB,IAAIF,gBAAgB,OAAO;oBACzBE,mBAAmB;gBACrB;gBAEA,MAAMpB,SAAS;oBACbrE,OAAO;wBACL,CAACyF,iBAAiB,EAAE;4BAAC;gCAAE,CAAC3F,KAAK,EAAE;oCAAE,CAACyF,YAAY,EAAE5C;gCAAe;4BAAE;yBAAE;oBACrE;gBACF;gBAEA,IAAI,OAAOA,mBAAmB,UAAU;oBACtC,IAAIrF,MAAM4H,QAAQ,CAACC,OAAO,CAACxC,iBAAiB;wBAC1C0B,OAAOrE,KAAK,CAACyF,iBAAiB,EAAEjE,KAAK;4BACnC,CAAC1B,KAAK,EAAE;gCAAE,CAACyF,YAAY,EAAE,IAAIjI,MAAM4H,QAAQ,CAACvC;4BAAgB;wBAC9D;oBACF,OAAO;;wBACHP,CAAAA,MAAMC,OAAO,CAACX,MAAMK,UAAU,IAAIL,MAAMK,UAAU,GAAG;4BAACL,MAAMK,UAAU;yBAAC,AAAD,EAAGwC,OAAO,CAChF,CAACxC;4BACC,MAAM2D,4BACJjH,QAAQ2C,WAAW,CAACW,WAAW,EAAEV,iBAAiB;4BAEpD,IAAIqE,2BAA2B;gCAC7BF,sBAAsB;4BACxB;wBACF;wBAGF,IAAIA,qBAAqB;4BACvBnB,OAAOrE,KAAK,CAACyF,iBAAiB,EAAEjE,KAAK;gCACnC,CAAC1B,KAAK,EAAE;oCAAE,CAACyF,YAAY,EAAEI,WAAWhD;gCAAgB;4BACtD;wBACF;oBACF;gBACF;gBAEA,MAAMrD,SAAS+E,OAAOrE,KAAK,CAACyF,iBAAiB,EAAEnG;gBAE/C,IAAI,OAAOA,WAAW,YAAYA,SAAS,GAAG;oBAC5C,OAAO+E;gBACT;YACF;YAEA,IAAI5B,sBAAsB,UAAU,OAAOE,mBAAmB,UAAU;gBACtE,MAAMiD,QAAQjD,eAAegC,KAAK,CAAC;gBAEnC,MAAMN,SAAS;oBACbrE,OAAO;wBACL6F,MAAMD,MAAMtF,GAAG,CAAC,CAACwF,OAAU,CAAA;gCACzB,CAAChG,KAAK,EAAE;oCACNiG,UAAU;oCACVC,QAAQxI,aAAasI;gCACvB;4BACF,CAAA;oBACF;gBACF;gBAEA,OAAOzB;YACT;YAEA,IAAI5B,sBAAsB,cAAc,OAAOE,mBAAmB,UAAU;gBAC1E,MAAMiD,QAAQjD,eAAegC,KAAK,CAAC;gBAEnC,MAAMN,SAAS;oBACbrE,OAAO;wBACL6F,MAAMD,MAAMtF,GAAG,CAAC,CAACwF,OAAU,CAAA;gCACzB,CAAChG,KAAK,EAAE;oCACNmG,MAAM;wCACJF,UAAU;wCACVC,QAAQxI,aAAasI;oCACvB;gCACF;4BACF,CAAA;oBACF;gBACF;gBAEA,OAAOzB;YACT;YAEA,yDAAyD;YACzD,wDAAwD;YACxD,IAAI,CAACkB,aAAa;gBAChB,OAAO;oBACLzF;oBACAE,OAAO2C;gBACT;YACF;YAEA,OAAO;gBACL7C;gBACAE,OAAO;oBAAE,CAACuF,YAAY,EAAE5C;gBAAe;YACzC;QACF;IACF;IACA,OAAOrB;AACT;AAEA;;;;;;;;;;;;;;CAcC,GACD,eAAeU,oCAAoC,EACjDzD,MAAM,EACNmD,KAAK,EACLf,MAAM,EACNsB,WAAW,EACXrB,QAAQ,EACRd,IAAI,EACJrB,OAAO,EACPC,GAAG,EAUJ;IACC,IACE,AAACgD,MAAME,IAAI,KAAK,kBAAkBF,MAAME,IAAI,KAAK,YACjD,CAACF,MAAMI,OAAO,IACd,OAAOJ,MAAMK,UAAU,KAAK,YAC5B,CAAChE,0BAA0BkE,cAC3B;QACA,OAAOX;IACT;IAEA,MAAM,EAAEnC,OAAO+G,YAAY,EAAE,GAAGjI,cAAc;QAC5CW,SAASH,QAAQI,EAAE;QACnBL,gBAAgBkD,MAAMK,UAAU;IAClC;IACA,MAAMoE,aAAa1H,QAAQyF,MAAM,CAACC,YAAY,GAC1C1F,QAAQyF,MAAM,CAACC,YAAY,CAACiC,WAAW,CAAC1G,IAAI,CAC1C,CAAC2G,aAAevG,KAAK6E,KAAK,CAAC,KAAK2B,EAAE,CAAC,CAAC,OAAOD,cAE7C/E;IACJ,MAAM,EAAErC,gBAAgB,EAAEN,OAAO6E,YAAY,EAAE,GAAG,MAAMlF,0BAA0B;QAChFC;QACAC,gBAAgBkD,MAAMK,UAAU;QAChCtD;QACAC;QACAC,OAAOsD;IACT;IACA,MAAMsE,gCAAgC,MAAML,aAAaxC,UAAU,CAAC;QAClEnF;QACAoC,QAAQwF,cAAcxF;QACtBlC;QACAC;QACAC,OAAO6E,gBAAgB,CAAC;IAC1B;IAEA,MAAMgD,yBAAyB,OAAOnH,QACpC,AACE,CAAA,MAAMH,qBAAqB;YACzBD;YACAE,OAAO+G;YACP9G,YAAY;gBAAEe,KAAK;gBAAMwD,cAAc;YAAK;YAC5CtE;QACF,EAAC,EACDiB,GAAG,CAAC,CAACmG,WAAaA,SAAS9C,YAAY,IAAI8C,SAAStG,GAAG;IAE3D,OAAQS;QACN,KAAK;YAAY;gBACf,MAAM8F,6BAA6B,MAAMF,uBAAuBD;gBAEhE,OAAO;oBACLzG;oBACAE,OAAO;wBAAEsE,KAAKoC;oBAA2B;gBAC3C;YACF;QAEA,KAAK;YAAU;gBACb,0DAA0D;gBAC1D,IAAI,CAACC,OAAOC,IAAI,CAAC3E,aAAa3C,MAAM,EAAE;oBACpC,OAAO;wBACLQ;wBACAE,OAAO;4BAAE6G,MAAM,EAAE;wBAAC;oBACpB;gBACF;gBAEA,2FAA2F;gBAC3F,8DAA8D;gBAC9D,MAAMH,6BAA6B,MAAMF,uBAAuBD;gBAEhE,OAAO;oBACLzG;oBACAE,OAAO;wBAAEiG,MAAM;4BAAEa,YAAY;gCAAED,MAAMH;4BAA2B;wBAAE;oBAAE;gBACtE;YACF;QAEA,KAAK;YAAc;gBACjB,MAAMA,6BAA6B,MAAMF,uBAAuBD;gBAEhE,OAAO;oBACLzG;oBACAE,OAAO;wBAAE6G,MAAMH;oBAA2B;gBAC5C;YACF;IACF;AACF;AAEA;;;;;;;CAOC,GACD,eAAevE,6BAA6B,EAC1C5D,MAAM,EACNmD,KAAK,EACLf,MAAM,EACNsB,WAAW,EACXxD,OAAO,EACPC,GAAG,EAQJ;IACC,IACEgD,MAAME,IAAI,KAAK,UACf,OAAOF,MAAMQ,UAAU,KAAK,YAC5B,CAACnE,0BAA0BkE,cAC3B;QACA,OAAOX;IACT;IAEA,MAAM,EAAEgC,gBAAgB,EAAEnE,OAAO4H,WAAW,EAAE,GAAG9I,cAAc;QAC7DW,SAASH,QAAQI,EAAE;QACnBL,gBAAgBkD,MAAMQ,UAAU;IAClC;IAEA,MAAM2B,oBAAoBpG,eAAe;QACvC+C,QAAQ8C,iBAAiBQ,eAAe;QACxChE,MAAM4B,MAAMqC,EAAE;IAChB;IAEA,IAAI,CAACF,mBAAmB;QACtB,MAAM,IAAItG,SAAS;IACrB;IAEA,IAAIqG,WAAWC,kBAAkBG,aAAa;IAC9C,IAAIH,kBAAkBI,gBAAgB,IAAIxF,QAAQyF,MAAM,CAACC,YAAY,EAAE;QACrEP,WAAWA,SAAS5C,OAAO,CAAC,YAAYL,UAAUlC,QAAQyF,MAAM,CAACC,YAAY,CAACC,aAAa;IAC7F;IAEA,MAAM,EAAEnF,gBAAgB,EAAEN,OAAO6E,YAAY,EAAE,GAAG,MAAMlF,0BAA0B;QAChFC;QACAC,gBAAgBkD,MAAMQ,UAAU;QAChCzD;QACAC;QACAC,OAAOsD;IACT;IACA,MAAMwB,WAAW,MAAMsD,YAAYrD,UAAU,CAAC;QAC5CnF;QACAoC;QACAlC;QACAC;QACAC,OAAO6E,gBAAgB,CAAC;IAC1B;IAEA,MAAMwD,YAAY,MAAMnH,0BAA0B;QAChDZ;QACAE,OAAO4H;QACPjH,MAAM8D;QACNvE,OAAOoE;IACT;IAEA,OAAO;QACL3D,MAAM;QACNE,OAAO;YAAEsE,KAAK0C;QAAU;IAC1B;AACF"}
1
+ {"version":3,"sources":["../../src/queries/buildSearchParams.ts"],"sourcesContent":["import type { QueryFilter } from 'mongoose'\nimport type {\n FlattenedField,\n HasManyRelationshipOperator,\n Operator,\n PathToQuery,\n Payload,\n} from 'payload'\n\nimport { Types } from 'mongoose'\nimport { APIError, escapeRegExp, getFieldByPath, getLocalizedPaths } from 'payload'\nimport {\n hasManyRelationshipOperatorSet,\n isNestedRelationshipQuery,\n validOperatorSet,\n} from 'payload/shared'\n\nimport type { MongooseAdapter } from '../index.js'\nimport type { OperatorMapKey } from './operatorMap.js'\n\nimport { getCollection } from '../utilities/getEntity.js'\nimport { isObjectID } from '../utilities/isObjectID.js'\nimport { operatorMap } from './operatorMap.js'\nimport { sanitizeQueryValue } from './sanitizeQueryValue.js'\n\ntype SearchParam = {\n path?: string\n rawQuery?: unknown\n value?: unknown\n}\n\nconst subQueryOptions = {\n lean: true,\n}\n\n/**\n * Convert the Payload key / value / operator into a MongoDB query\n */\nexport async function buildSearchParam({\n collectionSlug,\n fields,\n globalSlug,\n incomingPath,\n locale,\n operator,\n parentIsLocalized,\n payload,\n val,\n}: {\n collectionSlug?: string\n fields: FlattenedField[]\n globalSlug?: string\n incomingPath: string\n locale?: string\n operator: Operator\n parentIsLocalized: boolean\n payload: Payload\n val: unknown\n}): Promise<SearchParam | undefined> {\n // Replace GraphQL nested field double underscore formatting\n let sanitizedPath = incomingPath.replace(/__/g, '.')\n if (sanitizedPath === 'id') {\n sanitizedPath = '_id'\n }\n\n let paths: PathToQuery[] = []\n\n let hasCustomID = false\n\n if (sanitizedPath === '_id') {\n const customIDFieldType = collectionSlug\n ? payload.collections[collectionSlug]?.customIDType\n : undefined\n\n let idFieldType: 'number' | 'text' = 'text'\n\n if (customIDFieldType) {\n idFieldType = customIDFieldType\n hasCustomID = true\n }\n\n paths.push({\n collectionSlug,\n complete: true,\n field: {\n name: 'id',\n type: idFieldType,\n } as FlattenedField,\n parentIsLocalized: parentIsLocalized ?? false,\n path: '_id',\n })\n } else {\n paths = getLocalizedPaths({\n collectionSlug,\n fields,\n globalSlug,\n incomingPath: sanitizedPath,\n locale,\n parentIsLocalized,\n payload,\n })\n }\n\n if (!paths[0]) {\n return undefined\n }\n\n const [{ field, path }] = paths\n\n if (\n hasManyRelationshipOperatorSet.has(operator as HasManyRelationshipOperator) &&\n paths.length === 1 &&\n (field.type === 'relationship' || field.type === 'upload') &&\n field.hasMany &&\n typeof field.relationTo === 'string' &&\n isNestedRelationshipQuery(val)\n ) {\n return buildHasManyRelationshipSearchParam({\n field,\n locale,\n nestedWhere: val,\n operator: operator as HasManyRelationshipOperator,\n path,\n payload,\n })\n }\n\n if (\n operator === 'contains' &&\n paths.length === 1 &&\n field.type === 'join' &&\n typeof field.collection === 'string' &&\n isNestedRelationshipQuery(val)\n ) {\n return buildJoinContainsSearchParam({\n field,\n locale,\n nestedWhere: val,\n payload,\n })\n }\n\n if (\n (operator === 'contains' || operator === 'like' || operator === 'not_like') &&\n (isNestedRelationshipQuery(val) ||\n (Array.isArray(val) && val.some((entry) => isNestedRelationshipQuery(entry))))\n ) {\n throw new APIError(`Invalid value for \"${operator}\" on path \"${path}\": expected a string.`, 400)\n }\n\n if (path) {\n const sanitizedQueryValue = sanitizeQueryValue({\n field,\n hasCustomID,\n locale,\n operator,\n parentIsLocalized,\n path,\n payload,\n val,\n })\n\n if (!sanitizedQueryValue) {\n return undefined\n }\n\n const { operator: formattedOperator, rawQuery, val: formattedValue } = sanitizedQueryValue\n\n if (rawQuery && paths.length === 1) {\n return { value: rawQuery }\n }\n\n if (!formattedOperator) {\n return undefined\n }\n\n // If there are multiple collections to search through,\n // Recursively build up a list of query constraints\n if (paths.length > 1) {\n // Remove top collection and reverse array\n // to work backwards from top\n const pathsToQuery = paths.slice(1).reverse()\n const parentPaths = paths.slice(0, -1).reverse()\n\n let relationshipQuery: SearchParam = {\n value: {},\n }\n\n for (const [i, { collectionSlug, path: subPath }] of pathsToQuery.entries()) {\n // The arrays are reversed together, so both entries describe the same relationship hop.\n const parentField = parentPaths[i]?.field\n\n if (!parentField) {\n return undefined\n }\n\n if (!collectionSlug) {\n throw new APIError(`Collection with the slug ${collectionSlug} was not found.`)\n }\n\n const { collectionConfig, Model: SubModel } = getCollection({\n adapter: payload.db as MongooseAdapter,\n collectionSlug,\n })\n\n if (i === 0) {\n const subQuery = await SubModel.buildQuery({\n locale,\n payload,\n where: {\n [subPath]: {\n [formattedOperator]: val,\n },\n },\n })\n\n const select: Record<string, boolean> = {\n _id: true,\n }\n\n let joinPath: null | string = null\n\n if (parentField.type === 'join') {\n const relationshipField = getFieldByPath({\n fields: collectionConfig.flattenedFields,\n path: parentField.on,\n })\n if (!relationshipField) {\n throw new APIError('Relationship field was not found')\n }\n\n let path = relationshipField.localizedPath\n if (relationshipField.pathHasLocalized && payload.config.localization) {\n path = path.replace('<locale>', locale || payload.config.localization.defaultLocale)\n }\n select[path] = true\n\n joinPath = path\n }\n\n if (joinPath) {\n select[joinPath] = true\n }\n\n const result = await SubModel.find(subQuery).lean().select(select)\n\n const $in: unknown[] = []\n\n result.forEach((doc: any) => {\n if (joinPath) {\n let ref = doc\n\n for (const segment of joinPath.split('.')) {\n if (Array.isArray(ref)) {\n ref = ref\n .map((item) => (typeof item === 'object' && item ? item[segment] : undefined))\n .flat()\n .filter((item) => item != null)\n } else if (typeof ref === 'object' && ref) {\n ref = ref[segment]\n } else {\n ref = undefined\n break\n }\n }\n\n if (Array.isArray(ref)) {\n for (const item of ref) {\n if (isObjectID(item)) {\n $in.push(item)\n }\n }\n } else if (isObjectID(ref)) {\n $in.push(ref)\n }\n } else {\n const stringID = doc._id.toString()\n if (Types.ObjectId.isValid(stringID)) {\n $in.push(doc._id)\n } else {\n $in.push(stringID)\n }\n }\n })\n\n if (pathsToQuery.length === 1) {\n return {\n path: joinPath ? '_id' : path,\n value: { $in },\n }\n }\n\n const nextSubPath = pathsToQuery[i + 1]?.path\n\n if (nextSubPath) {\n relationshipQuery = {\n value: joinPath ? { _id: { $in } } : { [nextSubPath]: { $in } },\n }\n }\n\n continue\n }\n\n const subQuery = relationshipQuery.value as QueryFilter<any>\n\n /**\n * Follow this join back to its parent IDs.\n * For example, matching songs yield album IDs, then artist IDs.\n */\n if (parentField.type === 'join') {\n const relationshipField = getFieldByPath({\n fields: collectionConfig.flattenedFields,\n path: parentField.on,\n })\n if (!relationshipField) {\n throw new APIError('Relationship field was not found')\n }\n\n let joinPath = relationshipField.localizedPath\n if (relationshipField.pathHasLocalized && payload.config.localization) {\n joinPath = joinPath.replace(\n '<locale>',\n locale || payload.config.localization.defaultLocale,\n )\n }\n\n const $in = await SubModel.distinct(joinPath, subQuery)\n if (i + 1 === pathsToQuery.length) {\n return { path: '_id', value: { $in } }\n }\n\n relationshipQuery = { value: { _id: { $in } } }\n continue\n }\n\n const result = await SubModel.find(subQuery, subQueryOptions)\n\n const $in = result.map((doc) => doc._id)\n\n // If it is the last recursion\n // then pass through the search param\n if (i + 1 === pathsToQuery.length) {\n relationshipQuery = {\n path,\n value: { $in },\n }\n } else {\n const nextSubPath = pathsToQuery[i + 1]?.path\n if (nextSubPath) {\n relationshipQuery = {\n value: {\n [nextSubPath]: { $in },\n },\n }\n }\n }\n }\n\n return relationshipQuery\n }\n\n if (formattedOperator && validOperatorSet.has(formattedOperator as Operator)) {\n const operatorKey = operatorMap[formattedOperator as OperatorMapKey]\n\n if (field.type === 'relationship' || field.type === 'upload') {\n let hasNumberIDRelation\n let multiIDCondition = '$or'\n if (operatorKey === '$ne') {\n multiIDCondition = '$and'\n }\n\n const result = {\n value: {\n [multiIDCondition]: [{ [path]: { [operatorKey]: formattedValue } }],\n },\n }\n\n if (typeof formattedValue === 'string') {\n if (Types.ObjectId.isValid(formattedValue)) {\n result.value[multiIDCondition]?.push({\n [path]: { [operatorKey]: new Types.ObjectId(formattedValue) },\n })\n } else {\n ;(Array.isArray(field.relationTo) ? field.relationTo : [field.relationTo]).forEach(\n (relationTo) => {\n const isRelatedToCustomNumberID =\n payload.collections[relationTo]?.customIDType === 'number'\n\n if (isRelatedToCustomNumberID) {\n hasNumberIDRelation = true\n }\n },\n )\n\n if (hasNumberIDRelation) {\n result.value[multiIDCondition]?.push({\n [path]: { [operatorKey]: parseFloat(formattedValue) },\n })\n }\n }\n }\n\n const length = result.value[multiIDCondition]?.length\n\n if (typeof length === 'number' && length > 1) {\n return result\n }\n }\n\n if (formattedOperator === 'like' && typeof formattedValue === 'string') {\n const words = formattedValue.split(' ')\n\n const result = {\n value: {\n $and: words.map((word) => ({\n [path]: {\n $options: 'i',\n $regex: escapeRegExp(word),\n },\n })),\n },\n }\n\n return result\n }\n\n if (formattedOperator === 'not_like' && typeof formattedValue === 'string') {\n const words = formattedValue.split(' ')\n\n const result = {\n value: {\n $and: words.map((word) => ({\n [path]: {\n $not: {\n $options: 'i',\n $regex: escapeRegExp(word),\n },\n },\n })),\n },\n }\n\n return result\n }\n\n // Some operators like 'near' need to define a full query\n // so if there is no operator key, just return the value\n if (!operatorKey) {\n return {\n path,\n value: formattedValue,\n }\n }\n\n return {\n path,\n value: { [operatorKey]: formattedValue },\n }\n }\n }\n return undefined\n}\n\n/**\n * Builds a MongoDB condition for an operator containing a nested has-many relationship query.\n *\n * First, it finds IDs from the related collection that match the nested query. The parent\n * collection can then use `$in` or `$nin` against its stored relationship IDs.\n *\n * @example\n * ```ts\n * // Input\n * { ingredients: { not_equals: { isHealthy: { equals: false } } } }\n *\n * // Simplified MongoDB result, after finding the matching ingredient IDs\n * { ingredients: { $nin: [unhealthyIngredientID] } }\n * ```\n */\nasync function buildHasManyRelationshipSearchParam({\n field,\n locale,\n nestedWhere,\n operator,\n path,\n payload,\n}: {\n field: FlattenedField\n locale?: string\n nestedWhere: unknown\n operator: HasManyRelationshipOperator\n path: string\n payload: Payload\n}): Promise<SearchParam | undefined> {\n if (\n (field.type !== 'relationship' && field.type !== 'upload') ||\n !field.hasMany ||\n typeof field.relationTo !== 'string' ||\n !isNestedRelationshipQuery(nestedWhere)\n ) {\n return undefined\n }\n\n const { Model: RelatedModel } = getCollection({\n adapter: payload.db as MongooseAdapter,\n collectionSlug: field.relationTo,\n })\n const pathLocale = payload.config.localization\n ? payload.config.localization.localeCodes.find(\n (localeCode) => path.split('.').at(-1) === localeCode,\n )\n : undefined\n const matchingRelatedDocumentsQuery = await RelatedModel.buildQuery({\n locale: pathLocale ?? locale,\n payload,\n where: nestedWhere,\n })\n\n const findRelatedDocumentIDs = async (query: Record<string, unknown>) =>\n (await RelatedModel.find(query).lean().select({ _id: true })).map((document) => document._id)\n\n switch (operator) {\n case 'contains': {\n const matchingRelatedDocumentIDs = await findRelatedDocumentIDs(matchingRelatedDocumentsQuery)\n\n return {\n path,\n value: { $in: matchingRelatedDocumentIDs },\n }\n }\n\n case 'equals': {\n // Every related document satisfies an empty nested query.\n if (!Object.keys(matchingRelatedDocumentsQuery).length) {\n return {\n path,\n value: { $nin: [] },\n }\n }\n\n // MongoDB rejects `$near` and `$text` when they are inverted with `$nor`. Check the parent\n // instead: none of its IDs may fall outside the matching IDs.\n const matchingRelatedDocumentIDs = await findRelatedDocumentIDs(matchingRelatedDocumentsQuery)\n\n return {\n path,\n value: { $not: { $elemMatch: { $nin: matchingRelatedDocumentIDs } } },\n }\n }\n\n case 'not_equals': {\n const matchingRelatedDocumentIDs = await findRelatedDocumentIDs(matchingRelatedDocumentsQuery)\n\n return {\n path,\n value: { $nin: matchingRelatedDocumentIDs },\n }\n }\n }\n}\n\n/**\n * Builds a MongoDB condition for a `contains` query nested on a join field.\n *\n * Finds documents in the joined collection that match the nested query, then follows the join's\n * `on` relationship to collect the parent IDs those documents point back to. Because the nested\n * query resolves against a single joined document, the user's filter and any injected access\n * constraint must be satisfied by the same document.\n */\nasync function buildJoinContainsSearchParam({\n field,\n locale,\n nestedWhere,\n payload,\n}: {\n field: FlattenedField\n locale?: string\n nestedWhere: unknown\n payload: Payload\n}): Promise<SearchParam | undefined> {\n if (\n field.type !== 'join' ||\n typeof field.collection !== 'string' ||\n !isNestedRelationshipQuery(nestedWhere)\n ) {\n return undefined\n }\n\n const { collectionConfig, Model: JoinedModel } = getCollection({\n adapter: payload.db as MongooseAdapter,\n collectionSlug: field.collection,\n })\n\n const relationshipField = getFieldByPath({\n fields: collectionConfig.flattenedFields,\n path: field.on,\n })\n\n if (!relationshipField) {\n throw new APIError('Relationship field was not found')\n }\n\n let joinPath = relationshipField.localizedPath\n if (relationshipField.pathHasLocalized && payload.config.localization) {\n joinPath = joinPath.replace('<locale>', locale || payload.config.localization.defaultLocale)\n }\n\n const subQuery = await JoinedModel.buildQuery({\n locale,\n payload,\n where: nestedWhere,\n })\n\n const parentIDs = await JoinedModel.distinct(joinPath, subQuery)\n\n return {\n path: '_id',\n value: { $in: parentIDs },\n }\n}\n"],"names":["Types","APIError","escapeRegExp","getFieldByPath","getLocalizedPaths","hasManyRelationshipOperatorSet","isNestedRelationshipQuery","validOperatorSet","getCollection","isObjectID","operatorMap","sanitizeQueryValue","subQueryOptions","lean","buildSearchParam","collectionSlug","fields","globalSlug","incomingPath","locale","operator","parentIsLocalized","payload","val","sanitizedPath","replace","paths","hasCustomID","customIDFieldType","collections","customIDType","undefined","idFieldType","push","complete","field","name","type","path","has","length","hasMany","relationTo","buildHasManyRelationshipSearchParam","nestedWhere","collection","buildJoinContainsSearchParam","Array","isArray","some","entry","sanitizedQueryValue","formattedOperator","rawQuery","formattedValue","value","pathsToQuery","slice","reverse","parentPaths","relationshipQuery","i","subPath","entries","parentField","collectionConfig","Model","SubModel","adapter","db","subQuery","buildQuery","where","select","_id","joinPath","relationshipField","flattenedFields","on","localizedPath","pathHasLocalized","config","localization","defaultLocale","result","find","$in","forEach","doc","ref","segment","split","map","item","flat","filter","stringID","toString","ObjectId","isValid","nextSubPath","distinct","operatorKey","hasNumberIDRelation","multiIDCondition","isRelatedToCustomNumberID","parseFloat","words","$and","word","$options","$regex","$not","RelatedModel","pathLocale","localeCodes","localeCode","at","matchingRelatedDocumentsQuery","findRelatedDocumentIDs","query","document","matchingRelatedDocumentIDs","Object","keys","$nin","$elemMatch","JoinedModel","parentIDs"],"mappings":"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"}
@@ -1,14 +1,12 @@
1
- import type { FlattenedField, Payload, PayloadRequest, Where } from 'payload';
1
+ import type { FlattenedField, Payload, Where } from 'payload';
2
2
  type GetBuildQueryPluginArgs = {
3
3
  collectionSlug?: string;
4
4
  versionsFields?: FlattenedField[];
5
5
  };
6
6
  export type BuildQueryArgs = {
7
- branch?: false | string;
8
7
  globalSlug?: string;
9
8
  locale?: string;
10
9
  payload: Payload;
11
- req?: Partial<PayloadRequest>;
12
10
  where: Where;
13
11
  };
14
12
  export declare const getBuildQueryPlugin: ({ collectionSlug, versionsFields, }?: GetBuildQueryPluginArgs) => (schema: any) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"getBuildQueryPlugin.d.ts","sourceRoot":"","sources":["../../src/queries/getBuildQueryPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAM7E,KAAK,uBAAuB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAKD,eAAO,MAAM,mBAAmB,yCAG7B,uBAAuB,cACiB,GAAG,SAuD7C,CAAA"}
1
+ {"version":3,"file":"getBuildQueryPlugin.d.ts","sourceRoot":"","sources":["../../src/queries/getBuildQueryPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAM7D,KAAK,uBAAuB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAKD,eAAO,MAAM,mBAAmB,yCAG7B,uBAAuB,cACiB,GAAG,SAmD7C,CAAA"}
@@ -6,7 +6,7 @@ import { parseParams } from './parseParams.js';
6
6
  export const getBuildQueryPlugin = ({ collectionSlug, versionsFields } = {})=>{
7
7
  return function buildQueryPlugin(schema) {
8
8
  const modifiedSchema = schema;
9
- async function schemaBuildQuery({ branch, globalSlug, locale, payload, req, where }) {
9
+ async function schemaBuildQuery({ globalSlug, locale, payload, where }) {
10
10
  let fields = null;
11
11
  if (versionsFields) {
12
12
  fields = versionsFields;
@@ -30,14 +30,12 @@ export const getBuildQueryPlugin = ({ collectionSlug, versionsFields } = {})=>{
30
30
  throw new APIError('Fields are not initialized.');
31
31
  }
32
32
  const result = await parseParams({
33
- branch,
34
33
  collectionSlug,
35
34
  fields,
36
35
  globalSlug,
37
36
  locale,
38
37
  parentIsLocalized: false,
39
38
  payload,
40
- req,
41
39
  where
42
40
  });
43
41
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/getBuildQueryPlugin.ts"],"sourcesContent":["import type { FlattenedField, Payload, PayloadRequest, Where } from 'payload'\n\nimport { APIError } from 'payload'\n\nimport { parseParams } from './parseParams.js'\n\ntype GetBuildQueryPluginArgs = {\n collectionSlug?: string\n versionsFields?: FlattenedField[]\n}\n\nexport type BuildQueryArgs = {\n branch?: false | string\n globalSlug?: string\n locale?: string\n payload: Payload\n req?: Partial<PayloadRequest>\n where: Where\n}\n\n// This plugin asynchronously builds a list of Mongoose query constraints\n// which can then be used in subsequent Mongoose queries.\n// Deprecated in favor of using simpler buildQuery directly\nexport const getBuildQueryPlugin = ({\n collectionSlug,\n versionsFields,\n}: GetBuildQueryPluginArgs = {}) => {\n return function buildQueryPlugin(schema: any) {\n const modifiedSchema = schema\n async function schemaBuildQuery({\n branch,\n globalSlug,\n locale,\n payload,\n req,\n where,\n }: BuildQueryArgs): Promise<Record<string, unknown>> {\n let fields: FlattenedField[] | null = null\n\n if (versionsFields) {\n fields = versionsFields\n } else {\n if (globalSlug) {\n const globalConfig = payload.globals.config.find(({ slug }) => slug === globalSlug)\n\n if (!globalConfig) {\n throw new APIError(`Global with the slug ${globalSlug} was not found`)\n }\n\n fields = globalConfig.flattenedFields\n }\n if (collectionSlug) {\n const collectionConfig = payload.collections[collectionSlug]?.config\n\n if (!collectionConfig) {\n throw new APIError(`Collection with the slug ${globalSlug} was not found`)\n }\n\n fields = collectionConfig.flattenedFields\n }\n }\n\n if (fields === null) {\n throw new APIError('Fields are not initialized.')\n }\n\n const result = await parseParams({\n branch,\n collectionSlug,\n fields,\n globalSlug,\n locale,\n parentIsLocalized: false,\n payload,\n req,\n where,\n })\n\n return result\n }\n modifiedSchema.statics.buildQuery = schemaBuildQuery\n }\n}\n"],"names":["APIError","parseParams","getBuildQueryPlugin","collectionSlug","versionsFields","buildQueryPlugin","schema","modifiedSchema","schemaBuildQuery","branch","globalSlug","locale","payload","req","where","fields","globalConfig","globals","config","find","slug","flattenedFields","collectionConfig","collections","result","parentIsLocalized","statics","buildQuery"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,UAAS;AAElC,SAASC,WAAW,QAAQ,mBAAkB;AAgB9C,yEAAyE;AACzE,yDAAyD;AACzD,2DAA2D;AAC3D,OAAO,MAAMC,sBAAsB,CAAC,EAClCC,cAAc,EACdC,cAAc,EACU,GAAG,CAAC,CAAC;IAC7B,OAAO,SAASC,iBAAiBC,MAAW;QAC1C,MAAMC,iBAAiBD;QACvB,eAAeE,iBAAiB,EAC9BC,MAAM,EACNC,UAAU,EACVC,MAAM,EACNC,OAAO,EACPC,GAAG,EACHC,KAAK,EACU;YACf,IAAIC,SAAkC;YAEtC,IAAIX,gBAAgB;gBAClBW,SAASX;YACX,OAAO;gBACL,IAAIM,YAAY;oBACd,MAAMM,eAAeJ,QAAQK,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASV;oBAExE,IAAI,CAACM,cAAc;wBACjB,MAAM,IAAIhB,SAAS,CAAC,qBAAqB,EAAEU,WAAW,cAAc,CAAC;oBACvE;oBAEAK,SAASC,aAAaK,eAAe;gBACvC;gBACA,IAAIlB,gBAAgB;oBAClB,MAAMmB,mBAAmBV,QAAQW,WAAW,CAACpB,eAAe,EAAEe;oBAE9D,IAAI,CAACI,kBAAkB;wBACrB,MAAM,IAAItB,SAAS,CAAC,yBAAyB,EAAEU,WAAW,cAAc,CAAC;oBAC3E;oBAEAK,SAASO,iBAAiBD,eAAe;gBAC3C;YACF;YAEA,IAAIN,WAAW,MAAM;gBACnB,MAAM,IAAIf,SAAS;YACrB;YAEA,MAAMwB,SAAS,MAAMvB,YAAY;gBAC/BQ;gBACAN;gBACAY;gBACAL;gBACAC;gBACAc,mBAAmB;gBACnBb;gBACAC;gBACAC;YACF;YAEA,OAAOU;QACT;QACAjB,eAAemB,OAAO,CAACC,UAAU,GAAGnB;IACtC;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/queries/getBuildQueryPlugin.ts"],"sourcesContent":["import type { FlattenedField, Payload, Where } from 'payload'\n\nimport { APIError } from 'payload'\n\nimport { parseParams } from './parseParams.js'\n\ntype GetBuildQueryPluginArgs = {\n collectionSlug?: string\n versionsFields?: FlattenedField[]\n}\n\nexport type BuildQueryArgs = {\n globalSlug?: string\n locale?: string\n payload: Payload\n where: Where\n}\n\n// This plugin asynchronously builds a list of Mongoose query constraints\n// which can then be used in subsequent Mongoose queries.\n// Deprecated in favor of using simpler buildQuery directly\nexport const getBuildQueryPlugin = ({\n collectionSlug,\n versionsFields,\n}: GetBuildQueryPluginArgs = {}) => {\n return function buildQueryPlugin(schema: any) {\n const modifiedSchema = schema\n async function schemaBuildQuery({\n globalSlug,\n locale,\n payload,\n where,\n }: BuildQueryArgs): Promise<Record<string, unknown>> {\n let fields: FlattenedField[] | null = null\n\n if (versionsFields) {\n fields = versionsFields\n } else {\n if (globalSlug) {\n const globalConfig = payload.globals.config.find(({ slug }) => slug === globalSlug)\n\n if (!globalConfig) {\n throw new APIError(`Global with the slug ${globalSlug} was not found`)\n }\n\n fields = globalConfig.flattenedFields\n }\n if (collectionSlug) {\n const collectionConfig = payload.collections[collectionSlug]?.config\n\n if (!collectionConfig) {\n throw new APIError(`Collection with the slug ${globalSlug} was not found`)\n }\n\n fields = collectionConfig.flattenedFields\n }\n }\n\n if (fields === null) {\n throw new APIError('Fields are not initialized.')\n }\n\n const result = await parseParams({\n collectionSlug,\n fields,\n globalSlug,\n locale,\n parentIsLocalized: false,\n payload,\n where,\n })\n\n return result\n }\n modifiedSchema.statics.buildQuery = schemaBuildQuery\n }\n}\n"],"names":["APIError","parseParams","getBuildQueryPlugin","collectionSlug","versionsFields","buildQueryPlugin","schema","modifiedSchema","schemaBuildQuery","globalSlug","locale","payload","where","fields","globalConfig","globals","config","find","slug","flattenedFields","collectionConfig","collections","result","parentIsLocalized","statics","buildQuery"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,UAAS;AAElC,SAASC,WAAW,QAAQ,mBAAkB;AAc9C,yEAAyE;AACzE,yDAAyD;AACzD,2DAA2D;AAC3D,OAAO,MAAMC,sBAAsB,CAAC,EAClCC,cAAc,EACdC,cAAc,EACU,GAAG,CAAC,CAAC;IAC7B,OAAO,SAASC,iBAAiBC,MAAW;QAC1C,MAAMC,iBAAiBD;QACvB,eAAeE,iBAAiB,EAC9BC,UAAU,EACVC,MAAM,EACNC,OAAO,EACPC,KAAK,EACU;YACf,IAAIC,SAAkC;YAEtC,IAAIT,gBAAgB;gBAClBS,SAAST;YACX,OAAO;gBACL,IAAIK,YAAY;oBACd,MAAMK,eAAeH,QAAQI,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAAST;oBAExE,IAAI,CAACK,cAAc;wBACjB,MAAM,IAAId,SAAS,CAAC,qBAAqB,EAAES,WAAW,cAAc,CAAC;oBACvE;oBAEAI,SAASC,aAAaK,eAAe;gBACvC;gBACA,IAAIhB,gBAAgB;oBAClB,MAAMiB,mBAAmBT,QAAQU,WAAW,CAAClB,eAAe,EAAEa;oBAE9D,IAAI,CAACI,kBAAkB;wBACrB,MAAM,IAAIpB,SAAS,CAAC,yBAAyB,EAAES,WAAW,cAAc,CAAC;oBAC3E;oBAEAI,SAASO,iBAAiBD,eAAe;gBAC3C;YACF;YAEA,IAAIN,WAAW,MAAM;gBACnB,MAAM,IAAIb,SAAS;YACrB;YAEA,MAAMsB,SAAS,MAAMrB,YAAY;gBAC/BE;gBACAU;gBACAJ;gBACAC;gBACAa,mBAAmB;gBACnBZ;gBACAC;YACF;YAEA,OAAOU;QACT;QACAf,eAAeiB,OAAO,CAACC,UAAU,GAAGjB;IACtC;AACF,EAAC"}
@@ -1,13 +1,11 @@
1
- import type { FlattenedField, Payload, PayloadRequest, Where } from 'payload';
2
- export declare function parseParams({ branch, collectionSlug, fields, globalSlug, locale, parentIsLocalized, payload, req, where, }: {
3
- branch?: false | string;
1
+ import type { FlattenedField, Payload, Where } from 'payload';
2
+ export declare function parseParams({ collectionSlug, fields, globalSlug, locale, parentIsLocalized, payload, where, }: {
4
3
  collectionSlug?: string;
5
4
  fields: FlattenedField[];
6
5
  globalSlug?: string;
7
6
  locale?: string;
8
7
  parentIsLocalized: boolean;
9
8
  payload: Payload;
10
- req?: Partial<PayloadRequest>;
11
9
  where: Where;
12
10
  }): Promise<Record<string, unknown>>;
13
11
  //# sourceMappingURL=parseParams.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAY,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAQvF,wBAAsB,WAAW,CAAC,EAChC,MAAM,EACN,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,GAAG,EACH,KAAK,GACN,EAAE;IACD,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAA;CACb,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyFnC"}
1
+ {"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAY,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAQvE,wBAAsB,WAAW,CAAC,EAChC,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,KAAK,GACN,EAAE;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,OAAO,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,KAAK,CAAA;CACb,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqFnC"}