@payloadcms/db-mongodb 3.0.0-canary.8789b0b → 3.0.0-canary.893f1e5

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 (87) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +12 -0
  3. package/dist/connect.js.map +1 -1
  4. package/dist/countGlobalVersions.d.ts +3 -0
  5. package/dist/countGlobalVersions.d.ts.map +1 -0
  6. package/dist/countGlobalVersions.js +33 -0
  7. package/dist/countGlobalVersions.js.map +1 -0
  8. package/dist/countVersions.d.ts +3 -0
  9. package/dist/countVersions.d.ts.map +1 -0
  10. package/dist/countVersions.js +33 -0
  11. package/dist/countVersions.js.map +1 -0
  12. package/dist/create.d.ts.map +1 -1
  13. package/dist/create.js +3 -0
  14. package/dist/create.js.map +1 -1
  15. package/dist/createMigration.d.ts.map +1 -1
  16. package/dist/createMigration.js +6 -4
  17. package/dist/createMigration.js.map +1 -1
  18. package/dist/deleteOne.d.ts.map +1 -1
  19. package/dist/deleteOne.js +10 -2
  20. package/dist/deleteOne.js.map +1 -1
  21. package/dist/find.d.ts.map +1 -1
  22. package/dist/find.js +9 -2
  23. package/dist/find.js.map +1 -1
  24. package/dist/findGlobal.d.ts.map +1 -1
  25. package/dist/findGlobal.js +8 -2
  26. package/dist/findGlobal.js.map +1 -1
  27. package/dist/findGlobalVersions.d.ts.map +1 -1
  28. package/dist/findGlobalVersions.js +7 -1
  29. package/dist/findGlobalVersions.js.map +1 -1
  30. package/dist/findOne.d.ts.map +1 -1
  31. package/dist/findOne.js +9 -1
  32. package/dist/findOne.js.map +1 -1
  33. package/dist/findVersions.d.ts.map +1 -1
  34. package/dist/findVersions.js +8 -2
  35. package/dist/findVersions.js.map +1 -1
  36. package/dist/index.d.ts +8 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +7 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/init.d.ts.map +1 -1
  41. package/dist/init.js +8 -9
  42. package/dist/init.js.map +1 -1
  43. package/dist/models/buildSchema.js +16 -1
  44. package/dist/models/buildSchema.js.map +1 -1
  45. package/dist/queries/buildSearchParams.d.ts.map +1 -1
  46. package/dist/queries/buildSearchParams.js +5 -1
  47. package/dist/queries/buildSearchParams.js.map +1 -1
  48. package/dist/queries/buildSortParam.d.ts +2 -2
  49. package/dist/queries/buildSortParam.d.ts.map +1 -1
  50. package/dist/queries/buildSortParam.js +26 -17
  51. package/dist/queries/buildSortParam.js.map +1 -1
  52. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  53. package/dist/queries/sanitizeQueryValue.js +4 -1
  54. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  55. package/dist/queryDrafts.d.ts.map +1 -1
  56. package/dist/queryDrafts.js +28 -6
  57. package/dist/queryDrafts.js.map +1 -1
  58. package/dist/updateGlobal.d.ts.map +1 -1
  59. package/dist/updateGlobal.js +10 -3
  60. package/dist/updateGlobal.js.map +1 -1
  61. package/dist/updateGlobalVersion.d.ts +1 -1
  62. package/dist/updateGlobalVersion.d.ts.map +1 -1
  63. package/dist/updateGlobalVersion.js +10 -3
  64. package/dist/updateGlobalVersion.js.map +1 -1
  65. package/dist/updateOne.d.ts.map +1 -1
  66. package/dist/updateOne.js +10 -3
  67. package/dist/updateOne.js.map +1 -1
  68. package/dist/updateVersion.d.ts.map +1 -1
  69. package/dist/updateVersion.js +10 -3
  70. package/dist/updateVersion.js.map +1 -1
  71. package/dist/upsert.js +2 -1
  72. package/dist/upsert.js.map +1 -1
  73. package/dist/utilities/buildJoinAggregation.d.ts +4 -1
  74. package/dist/utilities/buildJoinAggregation.d.ts.map +1 -1
  75. package/dist/utilities/buildJoinAggregation.js +20 -9
  76. package/dist/utilities/buildJoinAggregation.js.map +1 -1
  77. package/dist/utilities/buildProjectionFromSelect.d.ts +8 -0
  78. package/dist/utilities/buildProjectionFromSelect.d.ts.map +1 -0
  79. package/dist/utilities/buildProjectionFromSelect.js +171 -0
  80. package/dist/utilities/buildProjectionFromSelect.js.map +1 -0
  81. package/dist/utilities/handleError.js +2 -2
  82. package/dist/utilities/handleError.js.map +1 -1
  83. package/dist/utilities/sanitizeRelationshipIDs.d.ts.map +1 -1
  84. package/dist/utilities/sanitizeRelationshipIDs.js +6 -2
  85. package/dist/utilities/sanitizeRelationshipIDs.js.map +1 -1
  86. package/license.md +22 -0
  87. package/package.json +11 -4
@@ -1,32 +1,41 @@
1
1
  import { getLocalizedSortProperty } from './getLocalizedSortProperty.js';
2
2
  export const buildSortParam = ({ config, fields, locale, sort, timestamps })=>{
3
- let sortProperty;
4
- let sortDirection = 'desc';
5
3
  if (!sort) {
6
4
  if (timestamps) {
7
- sortProperty = 'createdAt';
5
+ sort = '-createdAt';
8
6
  } else {
9
- sortProperty = '_id';
7
+ sort = '-id';
10
8
  }
11
- } else if (sort.indexOf('-') === 0) {
12
- sortProperty = sort.substring(1);
13
- } else {
14
- sortProperty = sort;
15
- sortDirection = 'asc';
16
9
  }
17
- if (sortProperty === 'id') {
18
- sortProperty = '_id';
19
- } else {
20
- sortProperty = getLocalizedSortProperty({
10
+ if (typeof sort === 'string') {
11
+ sort = [
12
+ sort
13
+ ];
14
+ }
15
+ const sorting = sort.reduce((acc, item)=>{
16
+ let sortProperty;
17
+ let sortDirection;
18
+ if (item.indexOf('-') === 0) {
19
+ sortProperty = item.substring(1);
20
+ sortDirection = 'desc';
21
+ } else {
22
+ sortProperty = item;
23
+ sortDirection = 'asc';
24
+ }
25
+ if (sortProperty === 'id') {
26
+ acc['_id'] = sortDirection;
27
+ return acc;
28
+ }
29
+ const localizedProperty = getLocalizedSortProperty({
21
30
  config,
22
31
  fields,
23
32
  locale,
24
33
  segments: sortProperty.split('.')
25
34
  });
26
- }
27
- return {
28
- [sortProperty]: sortDirection
29
- };
35
+ acc[localizedProperty] = sortDirection;
36
+ return acc;
37
+ }, {});
38
+ return sorting;
30
39
  };
31
40
 
32
41
  //# sourceMappingURL=buildSortParam.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/buildSortParam.ts"],"sourcesContent":["import type { PaginateOptions } from 'mongoose'\nimport type { Field, SanitizedConfig } from 'payload'\n\nimport { getLocalizedSortProperty } from './getLocalizedSortProperty.js'\n\ntype Args = {\n config: SanitizedConfig\n fields: Field[]\n locale: string\n sort: string\n timestamps: boolean\n}\n\nexport type SortArgs = {\n direction: SortDirection\n property: string\n}[]\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport const buildSortParam = ({\n config,\n fields,\n locale,\n sort,\n timestamps,\n}: Args): PaginateOptions['sort'] => {\n let sortProperty: string\n let sortDirection: SortDirection = 'desc'\n\n if (!sort) {\n if (timestamps) {\n sortProperty = 'createdAt'\n } else {\n sortProperty = '_id'\n }\n } else if (sort.indexOf('-') === 0) {\n sortProperty = sort.substring(1)\n } else {\n sortProperty = sort\n sortDirection = 'asc'\n }\n\n if (sortProperty === 'id') {\n sortProperty = '_id'\n } else {\n sortProperty = getLocalizedSortProperty({\n config,\n fields,\n locale,\n segments: sortProperty.split('.'),\n })\n }\n\n return { [sortProperty]: sortDirection }\n}\n"],"names":["getLocalizedSortProperty","buildSortParam","config","fields","locale","sort","timestamps","sortProperty","sortDirection","indexOf","substring","segments","split"],"mappings":"AAGA,SAASA,wBAAwB,QAAQ,gCAA+B;AAiBxE,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,MAAM,EACNC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,UAAU,EACL;IACL,IAAIC;IACJ,IAAIC,gBAA+B;IAEnC,IAAI,CAACH,MAAM;QACT,IAAIC,YAAY;YACdC,eAAe;QACjB,OAAO;YACLA,eAAe;QACjB;IACF,OAAO,IAAIF,KAAKI,OAAO,CAAC,SAAS,GAAG;QAClCF,eAAeF,KAAKK,SAAS,CAAC;IAChC,OAAO;QACLH,eAAeF;QACfG,gBAAgB;IAClB;IAEA,IAAID,iBAAiB,MAAM;QACzBA,eAAe;IACjB,OAAO;QACLA,eAAeP,yBAAyB;YACtCE;YACAC;YACAC;YACAO,UAAUJ,aAAaK,KAAK,CAAC;QAC/B;IACF;IAEA,OAAO;QAAE,CAACL,aAAa,EAAEC;IAAc;AACzC,EAAC"}
1
+ {"version":3,"sources":["../../src/queries/buildSortParam.ts"],"sourcesContent":["import type { PaginateOptions } from 'mongoose'\nimport type { Field, SanitizedConfig, Sort } from 'payload'\n\nimport { getLocalizedSortProperty } from './getLocalizedSortProperty.js'\n\ntype Args = {\n config: SanitizedConfig\n fields: Field[]\n locale: string\n sort: Sort\n timestamps: boolean\n}\n\nexport type SortArgs = {\n direction: SortDirection\n property: string\n}[]\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport const buildSortParam = ({\n config,\n fields,\n locale,\n sort,\n timestamps,\n}: Args): PaginateOptions['sort'] => {\n if (!sort) {\n if (timestamps) {\n sort = '-createdAt'\n } else {\n sort = '-id'\n }\n }\n\n if (typeof sort === 'string') {\n sort = [sort]\n }\n\n const sorting = sort.reduce<PaginateOptions['sort']>((acc, item) => {\n let sortProperty: string\n let sortDirection: SortDirection\n if (item.indexOf('-') === 0) {\n sortProperty = item.substring(1)\n sortDirection = 'desc'\n } else {\n sortProperty = item\n sortDirection = 'asc'\n }\n if (sortProperty === 'id') {\n acc['_id'] = sortDirection\n return acc\n }\n const localizedProperty = getLocalizedSortProperty({\n config,\n fields,\n locale,\n segments: sortProperty.split('.'),\n })\n acc[localizedProperty] = sortDirection\n return acc\n }, {})\n\n return sorting\n}\n"],"names":["getLocalizedSortProperty","buildSortParam","config","fields","locale","sort","timestamps","sorting","reduce","acc","item","sortProperty","sortDirection","indexOf","substring","localizedProperty","segments","split"],"mappings":"AAGA,SAASA,wBAAwB,QAAQ,gCAA+B;AAiBxE,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,MAAM,EACNC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,UAAU,EACL;IACL,IAAI,CAACD,MAAM;QACT,IAAIC,YAAY;YACdD,OAAO;QACT,OAAO;YACLA,OAAO;QACT;IACF;IAEA,IAAI,OAAOA,SAAS,UAAU;QAC5BA,OAAO;YAACA;SAAK;IACf;IAEA,MAAME,UAAUF,KAAKG,MAAM,CAA0B,CAACC,KAAKC;QACzD,IAAIC;QACJ,IAAIC;QACJ,IAAIF,KAAKG,OAAO,CAAC,SAAS,GAAG;YAC3BF,eAAeD,KAAKI,SAAS,CAAC;YAC9BF,gBAAgB;QAClB,OAAO;YACLD,eAAeD;YACfE,gBAAgB;QAClB;QACA,IAAID,iBAAiB,MAAM;YACzBF,GAAG,CAAC,MAAM,GAAGG;YACb,OAAOH;QACT;QACA,MAAMM,oBAAoBf,yBAAyB;YACjDE;YACAC;YACAC;YACAY,UAAUL,aAAaM,KAAK,CAAC;QAC/B;QACAR,GAAG,CAACM,kBAAkB,GAAGH;QACzB,OAAOH;IACT,GAAG,CAAC;IAEJ,OAAOF;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAMhD,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AA4BD,eAAO,MAAM,kBAAkB,iDAM5B,sBAAsB,KAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;CAkOd,CAAA"}
1
+ {"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAMhD,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AA4BD,eAAO,MAAM,kBAAkB,iDAM5B,sBAAsB,KAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;CAsOd,CAAA"}
@@ -82,7 +82,10 @@ export const sanitizeQueryValue = ({ field, hasCustomID, operator, path, val })=
82
82
  };
83
83
  }
84
84
  }
85
- } else if (Array.isArray(val)) {
85
+ } else if (Array.isArray(val) || typeof val === 'string' && val.split(',').length > 1) {
86
+ if (typeof val === 'string') {
87
+ formattedValue = createArrayFromCommaDelineated(val);
88
+ }
86
89
  formattedValue = formattedValue.reduce((formattedValues, inVal)=>{
87
90
  const newValues = [
88
91
  inVal
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import type { Field, TabAsField } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport mongoose from 'mongoose'\nimport { createArrayFromCommaDelineated } from 'payload'\n\ntype SanitizeQueryValueArgs = {\n field: Field | TabAsField\n hasCustomID: boolean\n operator: string\n path: string\n val: any\n}\n\nconst buildExistsQuery = (formattedValue, path) => {\n if (formattedValue) {\n return {\n rawQuery: {\n $and: [\n { [path]: { $exists: true } },\n { [path]: { $ne: null } },\n { [path]: { $ne: '' } }, // Exclude null and empty string\n ],\n },\n }\n } else {\n return {\n rawQuery: {\n $or: [\n { [path]: { $exists: false } },\n { [path]: { $eq: null } },\n { [path]: { $eq: '' } }, // Treat empty string as null / undefined\n ],\n },\n }\n }\n}\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\nexport const sanitizeQueryValue = ({\n field,\n hasCustomID,\n operator,\n path,\n val,\n}: SanitizeQueryValueArgs): {\n operator?: string\n rawQuery?: unknown\n val?: unknown\n} => {\n let formattedValue = val\n let formattedOperator = operator\n\n // Disregard invalid _ids\n if (path === '_id') {\n if (typeof val === 'string' && val.split(',').length === 1) {\n if (!hasCustomID) {\n const isValid = mongoose.Types.ObjectId.isValid(val)\n\n if (!isValid) {\n return { operator: formattedOperator, val: undefined }\n } else {\n if (['in', 'not_in'].includes(operator)) {\n formattedValue = createArrayFromCommaDelineated(formattedValue).map((id) =>\n ObjectId(id),\n )\n } else {\n formattedValue = ObjectId(val)\n }\n }\n }\n\n if (field.type === 'number') {\n const parsedNumber = parseFloat(val)\n\n if (Number.isNaN(parsedNumber)) {\n return { operator: formattedOperator, val: undefined }\n }\n }\n } else if (Array.isArray(val)) {\n formattedValue = formattedValue.reduce((formattedValues, inVal) => {\n const newValues = [inVal]\n if (!hasCustomID) {\n if (mongoose.Types.ObjectId.isValid(inVal)) {\n newValues.push(ObjectId(inVal))\n }\n }\n\n if (field.type === 'number') {\n const parsedNumber = parseFloat(inVal)\n if (!Number.isNaN(parsedNumber)) {\n newValues.push(parsedNumber)\n }\n }\n\n return [...formattedValues, ...newValues]\n }, [])\n }\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') {\n formattedValue = true\n }\n if (val.toLowerCase() === 'false') {\n formattedValue = false\n }\n }\n\n if (['all', 'in', 'not_in'].includes(operator) && typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (field.type === 'number') {\n if (typeof formattedValue === 'string' && operator !== 'exists') {\n formattedValue = Number(val)\n }\n\n if (operator === 'exists') {\n formattedValue = val === 'true' ? true : val === 'false' ? false : Boolean(val)\n\n return buildExistsQuery(formattedValue, path)\n }\n }\n\n if (field.type === 'date' && typeof val === 'string' && operator !== 'exists') {\n formattedValue = new Date(val)\n if (Number.isNaN(Date.parse(formattedValue))) {\n return undefined\n }\n }\n\n if (['relationship', 'upload'].includes(field.type)) {\n if (val === 'null') {\n formattedValue = null\n }\n\n // Object equality requires the value to be the first key in the object that is being queried.\n if (\n operator === 'equals' &&\n formattedValue &&\n typeof formattedValue === 'object' &&\n formattedValue.value &&\n formattedValue.relationTo\n ) {\n const { value } = formattedValue\n const isValid = mongoose.Types.ObjectId.isValid(value)\n\n if (isValid) {\n formattedValue.value = ObjectId(value)\n }\n\n return {\n rawQuery: {\n $and: [\n { [`${path}.value`]: { $eq: formattedValue.value } },\n { [`${path}.relationTo`]: { $eq: formattedValue.relationTo } },\n ],\n },\n }\n }\n\n if (['in', 'not_in'].includes(operator) && Array.isArray(formattedValue)) {\n formattedValue = formattedValue.reduce((formattedValues, inVal) => {\n const newValues = [inVal]\n if (mongoose.Types.ObjectId.isValid(inVal)) {\n newValues.push(ObjectId(inVal))\n }\n\n const parsedNumber = parseFloat(inVal)\n if (!Number.isNaN(parsedNumber)) {\n newValues.push(parsedNumber)\n }\n\n return [...formattedValues, ...newValues]\n }, [])\n }\n\n if (operator === 'contains' && typeof formattedValue === 'string') {\n if (mongoose.Types.ObjectId.isValid(formattedValue)) {\n formattedValue = ObjectId(formattedValue)\n }\n }\n }\n\n // Set up specific formatting necessary by operators\n\n if (operator === 'near') {\n let lng\n let lat\n let maxDistance\n let minDistance\n\n if (Array.isArray(formattedValue)) {\n ;[lng, lat, maxDistance, minDistance] = formattedValue\n }\n\n if (typeof formattedValue === 'string') {\n ;[lng, lat, maxDistance, minDistance] = createArrayFromCommaDelineated(formattedValue)\n }\n\n if (lng == null || lat == null || (maxDistance == null && minDistance == null)) {\n formattedValue = undefined\n } else {\n formattedValue = {\n $geometry: { type: 'Point', coordinates: [parseFloat(lng), parseFloat(lat)] },\n }\n\n if (maxDistance) {\n formattedValue.$maxDistance = parseFloat(maxDistance)\n }\n if (minDistance) {\n formattedValue.$minDistance = parseFloat(minDistance)\n }\n }\n }\n\n if (operator === 'within' || operator === 'intersects') {\n formattedValue = {\n $geometry: formattedValue,\n }\n }\n\n if (path !== '_id' || (path === '_id' && hasCustomID && field.type === 'text')) {\n if (operator === 'contains' && !mongoose.Types.ObjectId.isValid(formattedValue)) {\n formattedValue = {\n $options: 'i',\n $regex: formattedValue.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'),\n }\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n\n return buildExistsQuery(formattedValue, path)\n }\n }\n\n if (\n (path === '_id' || path === 'parent') &&\n operator === 'like' &&\n formattedValue.length === 24 &&\n !hasCustomID\n ) {\n formattedOperator = 'equals'\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n\n // Clearable fields\n if (['relationship', 'select', 'upload'].includes(field.type)) {\n if (formattedValue) {\n return {\n rawQuery: {\n $and: [{ [path]: { $exists: true } }, { [path]: { $ne: null } }],\n },\n }\n } else {\n return {\n rawQuery: {\n $or: [{ [path]: { $exists: false } }, { [path]: { $eq: null } }],\n },\n }\n }\n }\n }\n\n return { operator: formattedOperator, val: formattedValue }\n}\n"],"names":["ObjectIdImport","mongoose","createArrayFromCommaDelineated","buildExistsQuery","formattedValue","path","rawQuery","$and","$exists","$ne","$or","$eq","ObjectId","default","sanitizeQueryValue","field","hasCustomID","operator","val","formattedOperator","split","length","isValid","Types","undefined","includes","map","id","type","parsedNumber","parseFloat","Number","isNaN","Array","isArray","reduce","formattedValues","inVal","newValues","push","toLowerCase","arrayVal","Boolean","Date","parse","value","relationTo","lng","lat","maxDistance","minDistance","$geometry","coordinates","$maxDistance","$minDistance","$options","$regex","replace"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/queries/sanitizeQueryValue.ts"],"sourcesContent":["import type { Field, TabAsField } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport mongoose from 'mongoose'\nimport { createArrayFromCommaDelineated } from 'payload'\n\ntype SanitizeQueryValueArgs = {\n field: Field | TabAsField\n hasCustomID: boolean\n operator: string\n path: string\n val: any\n}\n\nconst buildExistsQuery = (formattedValue, path) => {\n if (formattedValue) {\n return {\n rawQuery: {\n $and: [\n { [path]: { $exists: true } },\n { [path]: { $ne: null } },\n { [path]: { $ne: '' } }, // Exclude null and empty string\n ],\n },\n }\n } else {\n return {\n rawQuery: {\n $or: [\n { [path]: { $exists: false } },\n { [path]: { $eq: null } },\n { [path]: { $eq: '' } }, // Treat empty string as null / undefined\n ],\n },\n }\n }\n}\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\nexport const sanitizeQueryValue = ({\n field,\n hasCustomID,\n operator,\n path,\n val,\n}: SanitizeQueryValueArgs): {\n operator?: string\n rawQuery?: unknown\n val?: unknown\n} => {\n let formattedValue = val\n let formattedOperator = operator\n\n // Disregard invalid _ids\n if (path === '_id') {\n if (typeof val === 'string' && val.split(',').length === 1) {\n if (!hasCustomID) {\n const isValid = mongoose.Types.ObjectId.isValid(val)\n\n if (!isValid) {\n return { operator: formattedOperator, val: undefined }\n } else {\n if (['in', 'not_in'].includes(operator)) {\n formattedValue = createArrayFromCommaDelineated(formattedValue).map((id) =>\n ObjectId(id),\n )\n } else {\n formattedValue = ObjectId(val)\n }\n }\n }\n\n if (field.type === 'number') {\n const parsedNumber = parseFloat(val)\n\n if (Number.isNaN(parsedNumber)) {\n return { operator: formattedOperator, val: undefined }\n }\n }\n } else if (Array.isArray(val) || (typeof val === 'string' && val.split(',').length > 1)) {\n if (typeof val === 'string') {\n formattedValue = createArrayFromCommaDelineated(val)\n }\n\n formattedValue = formattedValue.reduce((formattedValues, inVal) => {\n const newValues = [inVal]\n if (!hasCustomID) {\n if (mongoose.Types.ObjectId.isValid(inVal)) {\n newValues.push(ObjectId(inVal))\n }\n }\n\n if (field.type === 'number') {\n const parsedNumber = parseFloat(inVal)\n if (!Number.isNaN(parsedNumber)) {\n newValues.push(parsedNumber)\n }\n }\n\n return [...formattedValues, ...newValues]\n }, [])\n }\n }\n\n // Cast incoming values as proper searchable types\n if (field.type === 'checkbox' && typeof val === 'string') {\n if (val.toLowerCase() === 'true') {\n formattedValue = true\n }\n if (val.toLowerCase() === 'false') {\n formattedValue = false\n }\n }\n\n if (['all', 'in', 'not_in'].includes(operator) && typeof formattedValue === 'string') {\n formattedValue = createArrayFromCommaDelineated(formattedValue)\n\n if (field.type === 'number') {\n formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))\n }\n }\n\n if (field.type === 'number') {\n if (typeof formattedValue === 'string' && operator !== 'exists') {\n formattedValue = Number(val)\n }\n\n if (operator === 'exists') {\n formattedValue = val === 'true' ? true : val === 'false' ? false : Boolean(val)\n\n return buildExistsQuery(formattedValue, path)\n }\n }\n\n if (field.type === 'date' && typeof val === 'string' && operator !== 'exists') {\n formattedValue = new Date(val)\n if (Number.isNaN(Date.parse(formattedValue))) {\n return undefined\n }\n }\n\n if (['relationship', 'upload'].includes(field.type)) {\n if (val === 'null') {\n formattedValue = null\n }\n\n // Object equality requires the value to be the first key in the object that is being queried.\n if (\n operator === 'equals' &&\n formattedValue &&\n typeof formattedValue === 'object' &&\n formattedValue.value &&\n formattedValue.relationTo\n ) {\n const { value } = formattedValue\n const isValid = mongoose.Types.ObjectId.isValid(value)\n\n if (isValid) {\n formattedValue.value = ObjectId(value)\n }\n\n return {\n rawQuery: {\n $and: [\n { [`${path}.value`]: { $eq: formattedValue.value } },\n { [`${path}.relationTo`]: { $eq: formattedValue.relationTo } },\n ],\n },\n }\n }\n\n if (['in', 'not_in'].includes(operator) && Array.isArray(formattedValue)) {\n formattedValue = formattedValue.reduce((formattedValues, inVal) => {\n const newValues = [inVal]\n if (mongoose.Types.ObjectId.isValid(inVal)) {\n newValues.push(ObjectId(inVal))\n }\n\n const parsedNumber = parseFloat(inVal)\n if (!Number.isNaN(parsedNumber)) {\n newValues.push(parsedNumber)\n }\n\n return [...formattedValues, ...newValues]\n }, [])\n }\n\n if (operator === 'contains' && typeof formattedValue === 'string') {\n if (mongoose.Types.ObjectId.isValid(formattedValue)) {\n formattedValue = ObjectId(formattedValue)\n }\n }\n }\n\n // Set up specific formatting necessary by operators\n\n if (operator === 'near') {\n let lng\n let lat\n let maxDistance\n let minDistance\n\n if (Array.isArray(formattedValue)) {\n ;[lng, lat, maxDistance, minDistance] = formattedValue\n }\n\n if (typeof formattedValue === 'string') {\n ;[lng, lat, maxDistance, minDistance] = createArrayFromCommaDelineated(formattedValue)\n }\n\n if (lng == null || lat == null || (maxDistance == null && minDistance == null)) {\n formattedValue = undefined\n } else {\n formattedValue = {\n $geometry: { type: 'Point', coordinates: [parseFloat(lng), parseFloat(lat)] },\n }\n\n if (maxDistance) {\n formattedValue.$maxDistance = parseFloat(maxDistance)\n }\n if (minDistance) {\n formattedValue.$minDistance = parseFloat(minDistance)\n }\n }\n }\n\n if (operator === 'within' || operator === 'intersects') {\n formattedValue = {\n $geometry: formattedValue,\n }\n }\n\n if (path !== '_id' || (path === '_id' && hasCustomID && field.type === 'text')) {\n if (operator === 'contains' && !mongoose.Types.ObjectId.isValid(formattedValue)) {\n formattedValue = {\n $options: 'i',\n $regex: formattedValue.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'),\n }\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n\n return buildExistsQuery(formattedValue, path)\n }\n }\n\n if (\n (path === '_id' || path === 'parent') &&\n operator === 'like' &&\n formattedValue.length === 24 &&\n !hasCustomID\n ) {\n formattedOperator = 'equals'\n }\n\n if (operator === 'exists') {\n formattedValue = formattedValue === 'true' || formattedValue === true\n\n // Clearable fields\n if (['relationship', 'select', 'upload'].includes(field.type)) {\n if (formattedValue) {\n return {\n rawQuery: {\n $and: [{ [path]: { $exists: true } }, { [path]: { $ne: null } }],\n },\n }\n } else {\n return {\n rawQuery: {\n $or: [{ [path]: { $exists: false } }, { [path]: { $eq: null } }],\n },\n }\n }\n }\n }\n\n return { operator: formattedOperator, val: formattedValue }\n}\n"],"names":["ObjectIdImport","mongoose","createArrayFromCommaDelineated","buildExistsQuery","formattedValue","path","rawQuery","$and","$exists","$ne","$or","$eq","ObjectId","default","sanitizeQueryValue","field","hasCustomID","operator","val","formattedOperator","split","length","isValid","Types","undefined","includes","map","id","type","parsedNumber","parseFloat","Number","isNaN","Array","isArray","reduce","formattedValues","inVal","newValues","push","toLowerCase","arrayVal","Boolean","Date","parse","value","relationTo","lng","lat","maxDistance","minDistance","$geometry","coordinates","$maxDistance","$minDistance","$options","$regex","replace"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,SAAS,CAAA;AAU1D,eAAO,MAAM,WAAW,EAAE,WAiGzB,CAAA"}
1
+ {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,SAAS,CAAA;AAY1D,eAAO,MAAM,WAAW,EAAE,WAsIzB,CAAA"}
@@ -1,8 +1,10 @@
1
- import { combineQueries, flattenWhereToOperators } from 'payload';
1
+ import { buildVersionCollectionFields, combineQueries, flattenWhereToOperators } from 'payload';
2
2
  import { buildSortParam } from './queries/buildSortParam.js';
3
+ import { buildJoinAggregation } from './utilities/buildJoinAggregation.js';
4
+ import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
3
5
  import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js';
4
6
  import { withSession } from './withSession.js';
5
- export const queryDrafts = async function queryDrafts({ collection, limit, locale, page, pagination, req = {}, sort: sortArg, where }) {
7
+ export const queryDrafts = async function queryDrafts({ collection, joins, limit, locale, page, pagination, req = {}, select, sort: sortArg, where }) {
6
8
  const VersionModel = this.versions[collection];
7
9
  const collectionConfig = this.payload.collections[collection].config;
8
10
  const options = await withSession(this, req);
@@ -31,6 +33,11 @@ export const queryDrafts = async function queryDrafts({ collection, limit, local
31
33
  payload: this.payload,
32
34
  where: combinedWhere
33
35
  });
36
+ const projection = buildProjectionFromSelect({
37
+ adapter: this,
38
+ fields: buildVersionCollectionFields(this.payload.config, collectionConfig),
39
+ select
40
+ });
34
41
  // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.
35
42
  const useEstimatedCount = hasNearConstraint || !versionQuery || Object.keys(versionQuery).length === 0;
36
43
  const paginationOptions = {
@@ -40,6 +47,7 @@ export const queryDrafts = async function queryDrafts({ collection, limit, local
40
47
  options,
41
48
  page,
42
49
  pagination,
50
+ projection,
43
51
  sort,
44
52
  useEstimatedCount
45
53
  };
@@ -68,7 +76,23 @@ export const queryDrafts = async function queryDrafts({ collection, limit, local
68
76
  // limit must also be set here, it's ignored when pagination is false
69
77
  paginationOptions.options.limit = limit;
70
78
  }
71
- const result = await VersionModel.paginate(versionQuery, paginationOptions);
79
+ let result;
80
+ const aggregate = await buildJoinAggregation({
81
+ adapter: this,
82
+ collection,
83
+ collectionConfig,
84
+ joins,
85
+ locale,
86
+ projection,
87
+ query: versionQuery,
88
+ versions: true
89
+ });
90
+ // build join aggregation
91
+ if (aggregate) {
92
+ result = await VersionModel.aggregatePaginate(VersionModel.aggregate(aggregate), paginationOptions);
93
+ } else {
94
+ result = await VersionModel.paginate(versionQuery, paginationOptions);
95
+ }
72
96
  const docs = JSON.parse(JSON.stringify(result.docs));
73
97
  return {
74
98
  ...result,
@@ -76,9 +100,7 @@ export const queryDrafts = async function queryDrafts({ collection, limit, local
76
100
  doc = {
77
101
  _id: doc.parent,
78
102
  id: doc.parent,
79
- ...doc.version,
80
- createdAt: doc.createdAt,
81
- updatedAt: doc.updatedAt
103
+ ...doc.version
82
104
  };
83
105
  return sanitizeInternalFields(doc);
84
106
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PaginateOptions } from 'mongoose'\nimport type { PayloadRequest, QueryDrafts } from 'payload'\n\nimport { combineQueries, flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { withSession } from './withSession.js'\n\nexport const queryDrafts: QueryDrafts = async function queryDrafts(\n this: MongooseAdapter,\n { collection, limit, locale, page, pagination, req = {} as PayloadRequest, sort: sortArg, where },\n) {\n const VersionModel = this.versions[collection]\n const collectionConfig = this.payload.collections[collection].config\n const options = await withSession(this, req)\n\n let hasNearConstraint\n let sort\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n if (!hasNearConstraint) {\n sort = buildSortParam({\n config: this.payload.config,\n fields: collectionConfig.fields,\n locale,\n sort: sortArg || collectionConfig.defaultSort,\n timestamps: true,\n })\n }\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const versionQuery = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n where: combinedWhere,\n })\n\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount =\n hasNearConstraint || !versionQuery || Object.keys(versionQuery).length === 0\n const paginationOptions: PaginateOptions = {\n forceCountFn: hasNearConstraint,\n lean: true,\n leanWithId: true,\n options,\n page,\n pagination,\n sort,\n useEstimatedCount,\n }\n\n if (this.collation) {\n const defaultLocale = 'en'\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (\n !useEstimatedCount &&\n Object.keys(versionQuery).length === 0 &&\n this.disableIndexHints !== true\n ) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n VersionModel.countDocuments(versionQuery, {\n hint: { _id: 1 },\n }),\n )\n }\n }\n\n if (limit > 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n paginationOptions.options.limit = limit\n }\n\n const result = await VersionModel.paginate(versionQuery, paginationOptions)\n const docs = JSON.parse(JSON.stringify(result.docs))\n\n return {\n ...result,\n docs: docs.map((doc) => {\n doc = {\n _id: doc.parent,\n id: doc.parent,\n ...doc.version,\n createdAt: doc.createdAt,\n updatedAt: doc.updatedAt,\n }\n\n return sanitizeInternalFields(doc)\n }),\n }\n}\n"],"names":["combineQueries","flattenWhereToOperators","buildSortParam","sanitizeInternalFields","withSession","queryDrafts","collection","limit","locale","page","pagination","req","sort","sortArg","where","VersionModel","versions","collectionConfig","payload","collections","config","options","hasNearConstraint","constraints","some","prop","Object","keys","key","fields","defaultSort","timestamps","combinedWhere","latest","equals","versionQuery","buildQuery","useEstimatedCount","length","paginationOptions","forceCountFn","lean","leanWithId","collation","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","paginate","docs","JSON","parse","stringify","map","doc","parent","id","version","createdAt","updatedAt"],"mappings":"AAGA,SAASA,cAAc,EAAEC,uBAAuB,QAAQ,UAAS;AAIjE,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,MAAM,CAAC,CAAmB,EAAEC,MAAMC,OAAO,EAAEC,KAAK,EAAE;IAEjG,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACV,WAAW;IAC9C,MAAMW,mBAAmB,IAAI,CAACC,OAAO,CAACC,WAAW,CAACb,WAAW,CAACc,MAAM;IACpE,MAAMC,UAAU,MAAMjB,YAAY,IAAI,EAAEO;IAExC,IAAIW;IACJ,IAAIV;IAEJ,IAAIE,OAAO;QACT,MAAMS,cAActB,wBAAwBa;QAC5CQ,oBAAoBC,YAAYC,IAAI,CAAC,CAACC,OAASC,OAAOC,IAAI,CAACF,MAAMD,IAAI,CAAC,CAACI,MAAQA,QAAQ;IACzF;IAEA,IAAI,CAACN,mBAAmB;QACtBV,OAAOV,eAAe;YACpBkB,QAAQ,IAAI,CAACF,OAAO,CAACE,MAAM;YAC3BS,QAAQZ,iBAAiBY,MAAM;YAC/BrB;YACAI,MAAMC,WAAWI,iBAAiBa,WAAW;YAC7CC,YAAY;QACd;IACF;IAEA,MAAMC,gBAAgBhC,eAAe;QAAEiC,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGpB;IAEnE,MAAMqB,eAAe,MAAMpB,aAAaqB,UAAU,CAAC;QACjD5B;QACAU,SAAS,IAAI,CAACA,OAAO;QACrBJ,OAAOkB;IACT;IAEA,4HAA4H;IAC5H,MAAMK,oBACJf,qBAAqB,CAACa,gBAAgBT,OAAOC,IAAI,CAACQ,cAAcG,MAAM,KAAK;IAC7E,MAAMC,oBAAqC;QACzCC,cAAclB;QACdmB,MAAM;QACNC,YAAY;QACZrB;QACAZ;QACAC;QACAE;QACAyB;IACF;IAEA,IAAI,IAAI,CAACM,SAAS,EAAE;QAClB,MAAMC,gBAAgB;QACtBL,kBAAkBI,SAAS,GAAG;YAC5BnC,QAAQA,UAAUA,WAAW,SAASA,WAAW,MAAMA,SAASoC;YAChE,GAAG,IAAI,CAACD,SAAS;QACnB;IACF;IAEA,IACE,CAACN,qBACDX,OAAOC,IAAI,CAACQ,cAAcG,MAAM,KAAK,KACrC,IAAI,CAACO,iBAAiB,KAAK,MAC3B;QACA,mHAAmH;QACnH,qHAAqH;QACrH,mHAAmH;QACnH,4BAA4B;QAC5BN,kBAAkBO,gBAAgB,GAAG;YACnC,OAAOC,QAAQC,OAAO,CACpBjC,aAAakC,cAAc,CAACd,cAAc;gBACxCe,MAAM;oBAAEC,KAAK;gBAAE;YACjB;QAEJ;IACF;IAEA,IAAI5C,QAAQ,GAAG;QACbgC,kBAAkBhC,KAAK,GAAGA;QAC1B,qEAAqE;QACrEgC,kBAAkBlB,OAAO,CAACd,KAAK,GAAGA;IACpC;IAEA,MAAM6C,SAAS,MAAMrC,aAAasC,QAAQ,CAAClB,cAAcI;IACzD,MAAMe,OAAOC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACL,OAAOE,IAAI;IAElD,OAAO;QACL,GAAGF,MAAM;QACTE,MAAMA,KAAKI,GAAG,CAAC,CAACC;YACdA,MAAM;gBACJR,KAAKQ,IAAIC,MAAM;gBACfC,IAAIF,IAAIC,MAAM;gBACd,GAAGD,IAAIG,OAAO;gBACdC,WAAWJ,IAAII,SAAS;gBACxBC,WAAWL,IAAIK,SAAS;YAC1B;YAEA,OAAO7D,uBAAuBwD;QAChC;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/queryDrafts.ts"],"sourcesContent":["import type { PaginateOptions } from 'mongoose'\nimport type { PayloadRequest, QueryDrafts } from 'payload'\n\nimport { buildVersionCollectionFields, combineQueries, flattenWhereToOperators } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildSortParam } from './queries/buildSortParam.js'\nimport { buildJoinAggregation } from './utilities/buildJoinAggregation.js'\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { withSession } from './withSession.js'\n\nexport const queryDrafts: QueryDrafts = async function queryDrafts(\n this: MongooseAdapter,\n {\n collection,\n joins,\n limit,\n locale,\n page,\n pagination,\n req = {} as PayloadRequest,\n select,\n sort: sortArg,\n where,\n },\n) {\n const VersionModel = this.versions[collection]\n const collectionConfig = this.payload.collections[collection].config\n const options = await withSession(this, req)\n\n let hasNearConstraint\n let sort\n\n if (where) {\n const constraints = flattenWhereToOperators(where)\n hasNearConstraint = constraints.some((prop) => Object.keys(prop).some((key) => key === 'near'))\n }\n\n if (!hasNearConstraint) {\n sort = buildSortParam({\n config: this.payload.config,\n fields: collectionConfig.fields,\n locale,\n sort: sortArg || collectionConfig.defaultSort,\n timestamps: true,\n })\n }\n\n const combinedWhere = combineQueries({ latest: { equals: true } }, where)\n\n const versionQuery = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n where: combinedWhere,\n })\n\n const projection = buildProjectionFromSelect({\n adapter: this,\n fields: buildVersionCollectionFields(this.payload.config, collectionConfig),\n select,\n })\n // useEstimatedCount is faster, but not accurate, as it ignores any filters. It is thus set to true if there are no filters.\n const useEstimatedCount =\n hasNearConstraint || !versionQuery || Object.keys(versionQuery).length === 0\n const paginationOptions: PaginateOptions = {\n forceCountFn: hasNearConstraint,\n lean: true,\n leanWithId: true,\n options,\n page,\n pagination,\n projection,\n sort,\n useEstimatedCount,\n }\n\n if (this.collation) {\n const defaultLocale = 'en'\n paginationOptions.collation = {\n locale: locale && locale !== 'all' && locale !== '*' ? locale : defaultLocale,\n ...this.collation,\n }\n }\n\n if (\n !useEstimatedCount &&\n Object.keys(versionQuery).length === 0 &&\n this.disableIndexHints !== true\n ) {\n // Improve the performance of the countDocuments query which is used if useEstimatedCount is set to false by adding\n // a hint. By default, if no hint is provided, MongoDB does not use an indexed field to count the returned documents,\n // which makes queries very slow. This only happens when no query (filter) is provided. If one is provided, it uses\n // the correct indexed field\n paginationOptions.useCustomCountFn = () => {\n return Promise.resolve(\n VersionModel.countDocuments(versionQuery, {\n hint: { _id: 1 },\n }),\n )\n }\n }\n\n if (limit > 0) {\n paginationOptions.limit = limit\n // limit must also be set here, it's ignored when pagination is false\n paginationOptions.options.limit = limit\n }\n\n let result\n\n const aggregate = await buildJoinAggregation({\n adapter: this,\n collection,\n collectionConfig,\n joins,\n locale,\n projection,\n query: versionQuery,\n versions: true,\n })\n\n // build join aggregation\n if (aggregate) {\n result = await VersionModel.aggregatePaginate(\n VersionModel.aggregate(aggregate),\n paginationOptions,\n )\n } else {\n result = await VersionModel.paginate(versionQuery, paginationOptions)\n }\n\n const docs = JSON.parse(JSON.stringify(result.docs))\n\n return {\n ...result,\n docs: docs.map((doc) => {\n doc = {\n _id: doc.parent,\n id: doc.parent,\n ...doc.version,\n }\n\n return sanitizeInternalFields(doc)\n }),\n }\n}\n"],"names":["buildVersionCollectionFields","combineQueries","flattenWhereToOperators","buildSortParam","buildJoinAggregation","buildProjectionFromSelect","sanitizeInternalFields","withSession","queryDrafts","collection","joins","limit","locale","page","pagination","req","select","sort","sortArg","where","VersionModel","versions","collectionConfig","payload","collections","config","options","hasNearConstraint","constraints","some","prop","Object","keys","key","fields","defaultSort","timestamps","combinedWhere","latest","equals","versionQuery","buildQuery","projection","adapter","useEstimatedCount","length","paginationOptions","forceCountFn","lean","leanWithId","collation","defaultLocale","disableIndexHints","useCustomCountFn","Promise","resolve","countDocuments","hint","_id","result","aggregate","query","aggregatePaginate","paginate","docs","JSON","parse","stringify","map","doc","parent","id","version"],"mappings":"AAGA,SAASA,4BAA4B,EAAEC,cAAc,EAAEC,uBAAuB,QAAQ,UAAS;AAI/F,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,cAA2B,eAAeA,YAErD,EACEC,UAAU,EACVC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,IAAI,EACJC,UAAU,EACVC,MAAM,CAAC,CAAmB,EAC1BC,MAAM,EACNC,MAAMC,OAAO,EACbC,KAAK,EACN;IAED,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACZ,WAAW;IAC9C,MAAMa,mBAAmB,IAAI,CAACC,OAAO,CAACC,WAAW,CAACf,WAAW,CAACgB,MAAM;IACpE,MAAMC,UAAU,MAAMnB,YAAY,IAAI,EAAEQ;IAExC,IAAIY;IACJ,IAAIV;IAEJ,IAAIE,OAAO;QACT,MAAMS,cAAc1B,wBAAwBiB;QAC5CQ,oBAAoBC,YAAYC,IAAI,CAAC,CAACC,OAASC,OAAOC,IAAI,CAACF,MAAMD,IAAI,CAAC,CAACI,MAAQA,QAAQ;IACzF;IAEA,IAAI,CAACN,mBAAmB;QACtBV,OAAOd,eAAe;YACpBsB,QAAQ,IAAI,CAACF,OAAO,CAACE,MAAM;YAC3BS,QAAQZ,iBAAiBY,MAAM;YAC/BtB;YACAK,MAAMC,WAAWI,iBAAiBa,WAAW;YAC7CC,YAAY;QACd;IACF;IAEA,MAAMC,gBAAgBpC,eAAe;QAAEqC,QAAQ;YAAEC,QAAQ;QAAK;IAAE,GAAGpB;IAEnE,MAAMqB,eAAe,MAAMpB,aAAaqB,UAAU,CAAC;QACjD7B;QACAW,SAAS,IAAI,CAACA,OAAO;QACrBJ,OAAOkB;IACT;IAEA,MAAMK,aAAarC,0BAA0B;QAC3CsC,SAAS,IAAI;QACbT,QAAQlC,6BAA6B,IAAI,CAACuB,OAAO,CAACE,MAAM,EAAEH;QAC1DN;IACF;IACA,4HAA4H;IAC5H,MAAM4B,oBACJjB,qBAAqB,CAACa,gBAAgBT,OAAOC,IAAI,CAACQ,cAAcK,MAAM,KAAK;IAC7E,MAAMC,oBAAqC;QACzCC,cAAcpB;QACdqB,MAAM;QACNC,YAAY;QACZvB;QACAb;QACAC;QACA4B;QACAzB;QACA2B;IACF;IAEA,IAAI,IAAI,CAACM,SAAS,EAAE;QAClB,MAAMC,gBAAgB;QACtBL,kBAAkBI,SAAS,GAAG;YAC5BtC,QAAQA,UAAUA,WAAW,SAASA,WAAW,MAAMA,SAASuC;YAChE,GAAG,IAAI,CAACD,SAAS;QACnB;IACF;IAEA,IACE,CAACN,qBACDb,OAAOC,IAAI,CAACQ,cAAcK,MAAM,KAAK,KACrC,IAAI,CAACO,iBAAiB,KAAK,MAC3B;QACA,mHAAmH;QACnH,qHAAqH;QACrH,mHAAmH;QACnH,4BAA4B;QAC5BN,kBAAkBO,gBAAgB,GAAG;YACnC,OAAOC,QAAQC,OAAO,CACpBnC,aAAaoC,cAAc,CAAChB,cAAc;gBACxCiB,MAAM;oBAAEC,KAAK;gBAAE;YACjB;QAEJ;IACF;IAEA,IAAI/C,QAAQ,GAAG;QACbmC,kBAAkBnC,KAAK,GAAGA;QAC1B,qEAAqE;QACrEmC,kBAAkBpB,OAAO,CAACf,KAAK,GAAGA;IACpC;IAEA,IAAIgD;IAEJ,MAAMC,YAAY,MAAMxD,qBAAqB;QAC3CuC,SAAS,IAAI;QACblC;QACAa;QACAZ;QACAE;QACA8B;QACAmB,OAAOrB;QACPnB,UAAU;IACZ;IAEA,yBAAyB;IACzB,IAAIuC,WAAW;QACbD,SAAS,MAAMvC,aAAa0C,iBAAiB,CAC3C1C,aAAawC,SAAS,CAACA,YACvBd;IAEJ,OAAO;QACLa,SAAS,MAAMvC,aAAa2C,QAAQ,CAACvB,cAAcM;IACrD;IAEA,MAAMkB,OAAOC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACR,OAAOK,IAAI;IAElD,OAAO;QACL,GAAGL,MAAM;QACTK,MAAMA,KAAKI,GAAG,CAAC,CAACC;YACdA,MAAM;gBACJX,KAAKW,IAAIC,MAAM;gBACfC,IAAIF,IAAIC,MAAM;gBACd,GAAGD,IAAIG,OAAO;YAChB;YAEA,OAAOlE,uBAAuB+D;QAChC;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateGlobal.d.ts","sourceRoot":"","sources":["../src/updateGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,SAAS,CAAA;AAQ3D,eAAO,MAAM,YAAY,EAAE,YA4B1B,CAAA"}
1
+ {"version":3,"file":"updateGlobal.d.ts","sourceRoot":"","sources":["../src/updateGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,SAAS,CAAA;AAS3D,eAAO,MAAM,YAAY,EAAE,YA+B1B,CAAA"}
@@ -1,18 +1,25 @@
1
+ import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
1
2
  import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js';
2
3
  import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
3
4
  import { withSession } from './withSession.js';
4
- export const updateGlobal = async function updateGlobal({ slug, data, req = {} }) {
5
+ export const updateGlobal = async function updateGlobal({ slug, data, req = {}, select }) {
5
6
  const Model = this.globals;
7
+ const fields = this.payload.config.globals.find((global)=>global.slug === slug).fields;
6
8
  const options = {
7
9
  ...await withSession(this, req),
8
10
  lean: true,
9
- new: true
11
+ new: true,
12
+ projection: buildProjectionFromSelect({
13
+ adapter: this,
14
+ fields,
15
+ select
16
+ })
10
17
  };
11
18
  let result;
12
19
  const sanitizedData = sanitizeRelationshipIDs({
13
20
  config: this.payload.config,
14
21
  data,
15
- fields: this.payload.config.globals.find((global)=>global.slug === slug).fields
22
+ fields
16
23
  });
17
24
  result = await Model.findOneAndUpdate({
18
25
  globalType: slug
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateGlobal.ts"],"sourcesContent":["import type { PayloadRequest, UpdateGlobal } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const updateGlobal: UpdateGlobal = async function updateGlobal(\n this: MongooseAdapter,\n { slug, data, req = {} as PayloadRequest },\n) {\n const Model = this.globals\n const options = {\n ...(await withSession(this, req)),\n lean: true,\n new: true,\n }\n\n let result\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data,\n fields: this.payload.config.globals.find((global) => global.slug === slug).fields,\n })\n\n result = await Model.findOneAndUpdate({ globalType: slug }, sanitizedData, options)\n\n result = JSON.parse(JSON.stringify(result))\n\n // custom id type reset\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["sanitizeInternalFields","sanitizeRelationshipIDs","withSession","updateGlobal","slug","data","req","Model","globals","options","lean","new","result","sanitizedData","config","payload","fields","find","global","findOneAndUpdate","globalType","JSON","parse","stringify","id","_id"],"mappings":"AAIA,SAASA,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,IAAI,EAAEC,IAAI,EAAEC,MAAM,CAAC,CAAmB,EAAE;IAE1C,MAAMC,QAAQ,IAAI,CAACC,OAAO;IAC1B,MAAMC,UAAU;QACd,GAAI,MAAMP,YAAY,IAAI,EAAEI,IAAI;QAChCI,MAAM;QACNC,KAAK;IACP;IAEA,IAAIC;IAEJ,MAAMC,gBAAgBZ,wBAAwB;QAC5Ca,QAAQ,IAAI,CAACC,OAAO,CAACD,MAAM;QAC3BT;QACAW,QAAQ,IAAI,CAACD,OAAO,CAACD,MAAM,CAACN,OAAO,CAACS,IAAI,CAAC,CAACC,SAAWA,OAAOd,IAAI,KAAKA,MAAMY,MAAM;IACnF;IAEAJ,SAAS,MAAML,MAAMY,gBAAgB,CAAC;QAAEC,YAAYhB;IAAK,GAAGS,eAAeJ;IAE3EG,SAASS,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACX;IAEnC,uBAAuB;IACvBA,OAAOY,EAAE,GAAGZ,OAAOa,GAAG;IACtBb,SAASZ,uBAAuBY;IAEhC,OAAOA;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/updateGlobal.ts"],"sourcesContent":["import type { PayloadRequest, UpdateGlobal } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const updateGlobal: UpdateGlobal = async function updateGlobal(\n this: MongooseAdapter,\n { slug, data, req = {} as PayloadRequest, select },\n) {\n const Model = this.globals\n const fields = this.payload.config.globals.find((global) => global.slug === slug).fields\n\n const options = {\n ...(await withSession(this, req)),\n lean: true,\n new: true,\n projection: buildProjectionFromSelect({ adapter: this, fields, select }),\n }\n\n let result\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data,\n fields,\n })\n\n result = await Model.findOneAndUpdate({ globalType: slug }, sanitizedData, options)\n\n result = JSON.parse(JSON.stringify(result))\n\n // custom id type reset\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["buildProjectionFromSelect","sanitizeInternalFields","sanitizeRelationshipIDs","withSession","updateGlobal","slug","data","req","select","Model","globals","fields","payload","config","find","global","options","lean","new","projection","adapter","result","sanitizedData","findOneAndUpdate","globalType","JSON","parse","stringify","id","_id"],"mappings":"AAIA,SAASA,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,eAA6B,eAAeA,aAEvD,EAAEC,IAAI,EAAEC,IAAI,EAAEC,MAAM,CAAC,CAAmB,EAAEC,MAAM,EAAE;IAElD,MAAMC,QAAQ,IAAI,CAACC,OAAO;IAC1B,MAAMC,SAAS,IAAI,CAACC,OAAO,CAACC,MAAM,CAACH,OAAO,CAACI,IAAI,CAAC,CAACC,SAAWA,OAAOV,IAAI,KAAKA,MAAMM,MAAM;IAExF,MAAMK,UAAU;QACd,GAAI,MAAMb,YAAY,IAAI,EAAEI,IAAI;QAChCU,MAAM;QACNC,KAAK;QACLC,YAAYnB,0BAA0B;YAAEoB,SAAS,IAAI;YAAET;YAAQH;QAAO;IACxE;IAEA,IAAIa;IAEJ,MAAMC,gBAAgBpB,wBAAwB;QAC5CW,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM;QAC3BP;QACAK;IACF;IAEAU,SAAS,MAAMZ,MAAMc,gBAAgB,CAAC;QAAEC,YAAYnB;IAAK,GAAGiB,eAAeN;IAE3EK,SAASI,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACN;IAEnC,uBAAuB;IACvBA,OAAOO,EAAE,GAAGP,OAAOQ,GAAG;IACtBR,SAASpB,uBAAuBoB;IAEhC,OAAOA;AACT,EAAC"}
@@ -1,4 +1,4 @@
1
1
  import { type TypeWithID, type UpdateGlobalVersionArgs } from 'payload';
2
2
  import type { MongooseAdapter } from './index.js';
3
- export declare function updateGlobalVersion<T extends TypeWithID>(this: MongooseAdapter, { id, global: globalSlug, locale, req, versionData, where, }: UpdateGlobalVersionArgs<T>): Promise<any>;
3
+ export declare function updateGlobalVersion<T extends TypeWithID>(this: MongooseAdapter, { id, global: globalSlug, locale, req, select, versionData, where, }: UpdateGlobalVersionArgs<T>): Promise<any>;
4
4
  //# sourceMappingURL=updateGlobalVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateGlobalVersion.d.ts","sourceRoot":"","sources":["../src/updateGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC7B,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAKjD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,eAAe,EACrB,EACE,EAAE,EACF,MAAM,EAAE,UAAU,EAClB,MAAM,EACN,GAA0B,EAC1B,WAAW,EACX,KAAK,GACN,EAAE,uBAAuB,CAAC,CAAC,CAAC,gBAqC9B"}
1
+ {"version":3,"file":"updateGlobalVersion.d.ts","sourceRoot":"","sources":["../src/updateGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC7B,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,eAAe,EACrB,EACE,EAAE,EACF,MAAM,EAAE,UAAU,EAClB,MAAM,EACN,GAA0B,EAC1B,MAAM,EACN,WAAW,EACX,KAAK,GACN,EAAE,uBAAuB,CAAC,CAAC,CAAC,gBAwC9B"}
@@ -1,17 +1,24 @@
1
1
  import { buildVersionGlobalFields } from 'payload';
2
+ import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
2
3
  import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
3
4
  import { withSession } from './withSession.js';
4
- export async function updateGlobalVersion({ id, global: globalSlug, locale, req = {}, versionData, where }) {
5
+ export async function updateGlobalVersion({ id, global: globalSlug, locale, req = {}, select, versionData, where }) {
5
6
  const VersionModel = this.versions[globalSlug];
6
7
  const whereToUse = where || {
7
8
  id: {
8
9
  equals: id
9
10
  }
10
11
  };
12
+ const fields = buildVersionGlobalFields(this.payload.config, this.payload.config.globals.find((global)=>global.slug === globalSlug));
11
13
  const options = {
12
14
  ...await withSession(this, req),
13
15
  lean: true,
14
- new: true
16
+ new: true,
17
+ projection: buildProjectionFromSelect({
18
+ adapter: this,
19
+ fields,
20
+ select
21
+ })
15
22
  };
16
23
  const query = await VersionModel.buildQuery({
17
24
  locale,
@@ -21,7 +28,7 @@ export async function updateGlobalVersion({ id, global: globalSlug, locale, req
21
28
  const sanitizedData = sanitizeRelationshipIDs({
22
29
  config: this.payload.config,
23
30
  data: versionData,
24
- fields: buildVersionGlobalFields(this.payload.config, this.payload.config.globals.find((global)=>global.slug === globalSlug))
31
+ fields
25
32
  });
26
33
  const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options);
27
34
  const result = JSON.parse(JSON.stringify(doc));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import {\n buildVersionGlobalFields,\n type PayloadRequest,\n type TypeWithID,\n type UpdateGlobalVersionArgs,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport async function updateGlobalVersion<T extends TypeWithID>(\n this: MongooseAdapter,\n {\n id,\n global: globalSlug,\n locale,\n req = {} as PayloadRequest,\n versionData,\n where,\n }: UpdateGlobalVersionArgs<T>,\n) {\n const VersionModel = this.versions[globalSlug]\n const whereToUse = where || { id: { equals: id } }\n const options = {\n ...(await withSession(this, req)),\n lean: true,\n new: true,\n }\n\n const query = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n where: whereToUse,\n })\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: versionData,\n fields: buildVersionGlobalFields(\n this.payload.config,\n this.payload.config.globals.find((global) => global.slug === globalSlug),\n ),\n })\n\n const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options)\n\n const result = JSON.parse(JSON.stringify(doc))\n\n const verificationToken = doc._verificationToken\n\n // custom id type reset\n result.id = result._id\n if (verificationToken) {\n result._verificationToken = verificationToken\n }\n return result\n}\n"],"names":["buildVersionGlobalFields","sanitizeRelationshipIDs","withSession","updateGlobalVersion","id","global","globalSlug","locale","req","versionData","where","VersionModel","versions","whereToUse","equals","options","lean","new","query","buildQuery","payload","sanitizedData","config","data","fields","globals","find","slug","doc","findOneAndUpdate","result","JSON","parse","stringify","verificationToken","_verificationToken","_id"],"mappings":"AAAA,SACEA,wBAAwB,QAInB,UAAS;AAIhB,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,eAAeC,oBAEpB,EACEC,EAAE,EACFC,QAAQC,UAAU,EAClBC,MAAM,EACNC,MAAM,CAAC,CAAmB,EAC1BC,WAAW,EACXC,KAAK,EACsB;IAE7B,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACN,WAAW;IAC9C,MAAMO,aAAaH,SAAS;QAAEN,IAAI;YAAEU,QAAQV;QAAG;IAAE;IACjD,MAAMW,UAAU;QACd,GAAI,MAAMb,YAAY,IAAI,EAAEM,IAAI;QAChCQ,MAAM;QACNC,KAAK;IACP;IAEA,MAAMC,QAAQ,MAAMP,aAAaQ,UAAU,CAAC;QAC1CZ;QACAa,SAAS,IAAI,CAACA,OAAO;QACrBV,OAAOG;IACT;IAEA,MAAMQ,gBAAgBpB,wBAAwB;QAC5CqB,QAAQ,IAAI,CAACF,OAAO,CAACE,MAAM;QAC3BC,MAAMd;QACNe,QAAQxB,yBACN,IAAI,CAACoB,OAAO,CAACE,MAAM,EACnB,IAAI,CAACF,OAAO,CAACE,MAAM,CAACG,OAAO,CAACC,IAAI,CAAC,CAACrB,SAAWA,OAAOsB,IAAI,KAAKrB;IAEjE;IAEA,MAAMsB,MAAM,MAAMjB,aAAakB,gBAAgB,CAACX,OAAOG,eAAeN;IAEtE,MAAMe,SAASC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACL;IAEzC,MAAMM,oBAAoBN,IAAIO,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAO1B,EAAE,GAAG0B,OAAOM,GAAG;IACtB,IAAIF,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT"}
1
+ {"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import {\n buildVersionGlobalFields,\n type PayloadRequest,\n type TypeWithID,\n type UpdateGlobalVersionArgs,\n} from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport async function updateGlobalVersion<T extends TypeWithID>(\n this: MongooseAdapter,\n {\n id,\n global: globalSlug,\n locale,\n req = {} as PayloadRequest,\n select,\n versionData,\n where,\n }: UpdateGlobalVersionArgs<T>,\n) {\n const VersionModel = this.versions[globalSlug]\n const whereToUse = where || { id: { equals: id } }\n const fields = buildVersionGlobalFields(\n this.payload.config,\n this.payload.config.globals.find((global) => global.slug === globalSlug),\n )\n\n const options = {\n ...(await withSession(this, req)),\n lean: true,\n new: true,\n projection: buildProjectionFromSelect({ adapter: this, fields, select }),\n }\n\n const query = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n where: whereToUse,\n })\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: versionData,\n fields,\n })\n\n const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options)\n\n const result = JSON.parse(JSON.stringify(doc))\n\n const verificationToken = doc._verificationToken\n\n // custom id type reset\n result.id = result._id\n if (verificationToken) {\n result._verificationToken = verificationToken\n }\n return result\n}\n"],"names":["buildVersionGlobalFields","buildProjectionFromSelect","sanitizeRelationshipIDs","withSession","updateGlobalVersion","id","global","globalSlug","locale","req","select","versionData","where","VersionModel","versions","whereToUse","equals","fields","payload","config","globals","find","slug","options","lean","new","projection","adapter","query","buildQuery","sanitizedData","data","doc","findOneAndUpdate","result","JSON","parse","stringify","verificationToken","_verificationToken","_id"],"mappings":"AAAA,SACEA,wBAAwB,QAInB,UAAS;AAIhB,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,eAAeC,oBAEpB,EACEC,EAAE,EACFC,QAAQC,UAAU,EAClBC,MAAM,EACNC,MAAM,CAAC,CAAmB,EAC1BC,MAAM,EACNC,WAAW,EACXC,KAAK,EACsB;IAE7B,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACP,WAAW;IAC9C,MAAMQ,aAAaH,SAAS;QAAEP,IAAI;YAAEW,QAAQX;QAAG;IAAE;IACjD,MAAMY,SAASjB,yBACb,IAAI,CAACkB,OAAO,CAACC,MAAM,EACnB,IAAI,CAACD,OAAO,CAACC,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,CAACf,SAAWA,OAAOgB,IAAI,KAAKf;IAG/D,MAAMgB,UAAU;QACd,GAAI,MAAMpB,YAAY,IAAI,EAAEM,IAAI;QAChCe,MAAM;QACNC,KAAK;QACLC,YAAYzB,0BAA0B;YAAE0B,SAAS,IAAI;YAAEV;YAAQP;QAAO;IACxE;IAEA,MAAMkB,QAAQ,MAAMf,aAAagB,UAAU,CAAC;QAC1CrB;QACAU,SAAS,IAAI,CAACA,OAAO;QACrBN,OAAOG;IACT;IAEA,MAAMe,gBAAgB5B,wBAAwB;QAC5CiB,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM;QAC3BY,MAAMpB;QACNM;IACF;IAEA,MAAMe,MAAM,MAAMnB,aAAaoB,gBAAgB,CAACL,OAAOE,eAAeP;IAEtE,MAAMW,SAASC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACL;IAEzC,MAAMM,oBAAoBN,IAAIO,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAO7B,EAAE,GAAG6B,OAAOM,GAAG;IACtB,IAAIF,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../src/updateOne.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,SAAS,EAAE,MAAM,SAAS,CAAA;AASxD,eAAO,MAAM,SAAS,EAAE,SA8CvB,CAAA"}
1
+ {"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../src/updateOne.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,SAAS,EAAE,MAAM,SAAS,CAAA;AAUxD,eAAO,MAAM,SAAS,EAAE,SAiDvB,CAAA"}
package/dist/updateOne.js CHANGED
@@ -1,19 +1,26 @@
1
+ import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
1
2
  import { handleError } from './utilities/handleError.js';
2
3
  import { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js';
3
4
  import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
4
5
  import { withSession } from './withSession.js';
5
- export const updateOne = async function updateOne({ id, collection, data, locale, options: optionsArgs = {}, req = {}, where: whereArg }) {
6
+ export const updateOne = async function updateOne({ id, collection, data, locale, options: optionsArgs = {}, req = {}, select, where: whereArg }) {
6
7
  const where = id ? {
7
8
  id: {
8
9
  equals: id
9
10
  }
10
11
  } : whereArg;
11
12
  const Model = this.collections[collection];
13
+ const fields = this.payload.collections[collection].config.fields;
12
14
  const options = {
13
15
  ...optionsArgs,
14
16
  ...await withSession(this, req),
15
17
  lean: true,
16
- new: true
18
+ new: true,
19
+ projection: buildProjectionFromSelect({
20
+ adapter: this,
21
+ fields,
22
+ select
23
+ })
17
24
  };
18
25
  const query = await Model.buildQuery({
19
26
  locale,
@@ -24,7 +31,7 @@ export const updateOne = async function updateOne({ id, collection, data, locale
24
31
  const sanitizedData = sanitizeRelationshipIDs({
25
32
  config: this.payload.config,
26
33
  data,
27
- fields: this.payload.collections[collection].config.fields
34
+ fields
28
35
  });
29
36
  try {
30
37
  result = await Model.findOneAndUpdate(query, sanitizedData, options);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { PayloadRequest, UpdateOne } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { handleError } from './utilities/handleError.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: MongooseAdapter,\n {\n id,\n collection,\n data,\n locale,\n options: optionsArgs = {},\n req = {} as PayloadRequest,\n where: whereArg,\n },\n) {\n const where = id ? { id: { equals: id } } : whereArg\n const Model = this.collections[collection]\n const options: QueryOptions = {\n ...optionsArgs,\n ...(await withSession(this, req)),\n lean: true,\n new: true,\n }\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n where,\n })\n\n let result\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data,\n fields: this.payload.collections[collection].config.fields,\n })\n\n try {\n result = await Model.findOneAndUpdate(query, sanitizedData, options)\n } catch (error) {\n handleError({ collection, error, req })\n }\n\n result = JSON.parse(JSON.stringify(result))\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["handleError","sanitizeInternalFields","sanitizeRelationshipIDs","withSession","updateOne","id","collection","data","locale","options","optionsArgs","req","where","whereArg","equals","Model","collections","lean","new","query","buildQuery","payload","result","sanitizedData","config","fields","findOneAndUpdate","error","JSON","parse","stringify","_id"],"mappings":"AAKA,SAASA,WAAW,QAAQ,6BAA4B;AACxD,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EACEC,EAAE,EACFC,UAAU,EACVC,IAAI,EACJC,MAAM,EACNC,SAASC,cAAc,CAAC,CAAC,EACzBC,MAAM,CAAC,CAAmB,EAC1BC,OAAOC,QAAQ,EAChB;IAED,MAAMD,QAAQP,KAAK;QAAEA,IAAI;YAAES,QAAQT;QAAG;IAAE,IAAIQ;IAC5C,MAAME,QAAQ,IAAI,CAACC,WAAW,CAACV,WAAW;IAC1C,MAAMG,UAAwB;QAC5B,GAAGC,WAAW;QACd,GAAI,MAAMP,YAAY,IAAI,EAAEQ,IAAI;QAChCM,MAAM;QACNC,KAAK;IACP;IAEA,MAAMC,QAAQ,MAAMJ,MAAMK,UAAU,CAAC;QACnCZ;QACAa,SAAS,IAAI,CAACA,OAAO;QACrBT;IACF;IAEA,IAAIU;IAEJ,MAAMC,gBAAgBrB,wBAAwB;QAC5CsB,QAAQ,IAAI,CAACH,OAAO,CAACG,MAAM;QAC3BjB;QACAkB,QAAQ,IAAI,CAACJ,OAAO,CAACL,WAAW,CAACV,WAAW,CAACkB,MAAM,CAACC,MAAM;IAC5D;IAEA,IAAI;QACFH,SAAS,MAAMP,MAAMW,gBAAgB,CAACP,OAAOI,eAAed;IAC9D,EAAE,OAAOkB,OAAO;QACd3B,YAAY;YAAEM;YAAYqB;YAAOhB;QAAI;IACvC;IAEAW,SAASM,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACR;IACnCA,OAAOjB,EAAE,GAAGiB,OAAOS,GAAG;IACtBT,SAASrB,uBAAuBqB;IAEhC,OAAOA;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { QueryOptions } from 'mongoose'\nimport type { PayloadRequest, UpdateOne } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { handleError } from './utilities/handleError.js'\nimport { sanitizeInternalFields } from './utilities/sanitizeInternalFields.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: MongooseAdapter,\n {\n id,\n collection,\n data,\n locale,\n options: optionsArgs = {},\n req = {} as PayloadRequest,\n select,\n where: whereArg,\n },\n) {\n const where = id ? { id: { equals: id } } : whereArg\n const Model = this.collections[collection]\n const fields = this.payload.collections[collection].config.fields\n const options: QueryOptions = {\n ...optionsArgs,\n ...(await withSession(this, req)),\n lean: true,\n new: true,\n projection: buildProjectionFromSelect({ adapter: this, fields, select }),\n }\n\n const query = await Model.buildQuery({\n locale,\n payload: this.payload,\n where,\n })\n\n let result\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data,\n fields,\n })\n\n try {\n result = await Model.findOneAndUpdate(query, sanitizedData, options)\n } catch (error) {\n handleError({ collection, error, req })\n }\n\n result = JSON.parse(JSON.stringify(result))\n result.id = result._id\n result = sanitizeInternalFields(result)\n\n return result\n}\n"],"names":["buildProjectionFromSelect","handleError","sanitizeInternalFields","sanitizeRelationshipIDs","withSession","updateOne","id","collection","data","locale","options","optionsArgs","req","select","where","whereArg","equals","Model","collections","fields","payload","config","lean","new","projection","adapter","query","buildQuery","result","sanitizedData","findOneAndUpdate","error","JSON","parse","stringify","_id"],"mappings":"AAKA,SAASA,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,sBAAsB,QAAQ,wCAAuC;AAC9E,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EACEC,EAAE,EACFC,UAAU,EACVC,IAAI,EACJC,MAAM,EACNC,SAASC,cAAc,CAAC,CAAC,EACzBC,MAAM,CAAC,CAAmB,EAC1BC,MAAM,EACNC,OAAOC,QAAQ,EAChB;IAED,MAAMD,QAAQR,KAAK;QAAEA,IAAI;YAAEU,QAAQV;QAAG;IAAE,IAAIS;IAC5C,MAAME,QAAQ,IAAI,CAACC,WAAW,CAACX,WAAW;IAC1C,MAAMY,SAAS,IAAI,CAACC,OAAO,CAACF,WAAW,CAACX,WAAW,CAACc,MAAM,CAACF,MAAM;IACjE,MAAMT,UAAwB;QAC5B,GAAGC,WAAW;QACd,GAAI,MAAMP,YAAY,IAAI,EAAEQ,IAAI;QAChCU,MAAM;QACNC,KAAK;QACLC,YAAYxB,0BAA0B;YAAEyB,SAAS,IAAI;YAAEN;YAAQN;QAAO;IACxE;IAEA,MAAMa,QAAQ,MAAMT,MAAMU,UAAU,CAAC;QACnClB;QACAW,SAAS,IAAI,CAACA,OAAO;QACrBN;IACF;IAEA,IAAIc;IAEJ,MAAMC,gBAAgB1B,wBAAwB;QAC5CkB,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM;QAC3Bb;QACAW;IACF;IAEA,IAAI;QACFS,SAAS,MAAMX,MAAMa,gBAAgB,CAACJ,OAAOG,eAAenB;IAC9D,EAAE,OAAOqB,OAAO;QACd9B,YAAY;YAAEM;YAAYwB;YAAOnB;QAAI;IACvC;IAEAgB,SAASI,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACN;IACnCA,OAAOtB,EAAE,GAAGsB,OAAOO,GAAG;IACtBP,SAAS1B,uBAAuB0B;IAEhC,OAAOA;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAO/F,eAAO,MAAM,aAAa,EAAE,aAuC3B,CAAA"}
1
+ {"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,SAAS,CAAA;AAQ/F,eAAO,MAAM,aAAa,EAAE,aA0C3B,CAAA"}
@@ -1,17 +1,24 @@
1
1
  import { buildVersionCollectionFields } from 'payload';
2
+ import { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js';
2
3
  import { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js';
3
4
  import { withSession } from './withSession.js';
4
- export const updateVersion = async function updateVersion({ id, collection, locale, req = {}, versionData, where }) {
5
+ export const updateVersion = async function updateVersion({ id, collection, locale, req = {}, select, versionData, where }) {
5
6
  const VersionModel = this.versions[collection];
6
7
  const whereToUse = where || {
7
8
  id: {
8
9
  equals: id
9
10
  }
10
11
  };
12
+ const fields = buildVersionCollectionFields(this.payload.config, this.payload.collections[collection].config);
11
13
  const options = {
12
14
  ...await withSession(this, req),
13
15
  lean: true,
14
- new: true
16
+ new: true,
17
+ projection: buildProjectionFromSelect({
18
+ adapter: this,
19
+ fields,
20
+ select
21
+ })
15
22
  };
16
23
  const query = await VersionModel.buildQuery({
17
24
  locale,
@@ -21,7 +28,7 @@ export const updateVersion = async function updateVersion({ id, collection, loca
21
28
  const sanitizedData = sanitizeRelationshipIDs({
22
29
  config: this.payload.config,
23
30
  data: versionData,
24
- fields: buildVersionCollectionFields(this.payload.config, this.payload.collections[collection].config)
31
+ fields
25
32
  });
26
33
  const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options);
27
34
  const result = JSON.parse(JSON.stringify(doc));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import { buildVersionCollectionFields, type PayloadRequest, type UpdateVersion } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const updateVersion: UpdateVersion = async function updateVersion(\n this: MongooseAdapter,\n { id, collection, locale, req = {} as PayloadRequest, versionData, where },\n) {\n const VersionModel = this.versions[collection]\n const whereToUse = where || { id: { equals: id } }\n const options = {\n ...(await withSession(this, req)),\n lean: true,\n new: true,\n }\n\n const query = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n where: whereToUse,\n })\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: versionData,\n fields: buildVersionCollectionFields(\n this.payload.config,\n this.payload.collections[collection].config,\n ),\n })\n\n const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options)\n\n const result = JSON.parse(JSON.stringify(doc))\n\n const verificationToken = doc._verificationToken\n\n // custom id type reset\n result.id = result._id\n if (verificationToken) {\n result._verificationToken = verificationToken\n }\n return result\n}\n"],"names":["buildVersionCollectionFields","sanitizeRelationshipIDs","withSession","updateVersion","id","collection","locale","req","versionData","where","VersionModel","versions","whereToUse","equals","options","lean","new","query","buildQuery","payload","sanitizedData","config","data","fields","collections","doc","findOneAndUpdate","result","JSON","parse","stringify","verificationToken","_verificationToken","_id"],"mappings":"AAAA,SAASA,4BAA4B,QAAiD,UAAS;AAI/F,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,UAAU,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,WAAW,EAAEC,KAAK,EAAE;IAE1E,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACN,WAAW;IAC9C,MAAMO,aAAaH,SAAS;QAAEL,IAAI;YAAES,QAAQT;QAAG;IAAE;IACjD,MAAMU,UAAU;QACd,GAAI,MAAMZ,YAAY,IAAI,EAAEK,IAAI;QAChCQ,MAAM;QACNC,KAAK;IACP;IAEA,MAAMC,QAAQ,MAAMP,aAAaQ,UAAU,CAAC;QAC1CZ;QACAa,SAAS,IAAI,CAACA,OAAO;QACrBV,OAAOG;IACT;IAEA,MAAMQ,gBAAgBnB,wBAAwB;QAC5CoB,QAAQ,IAAI,CAACF,OAAO,CAACE,MAAM;QAC3BC,MAAMd;QACNe,QAAQvB,6BACN,IAAI,CAACmB,OAAO,CAACE,MAAM,EACnB,IAAI,CAACF,OAAO,CAACK,WAAW,CAACnB,WAAW,CAACgB,MAAM;IAE/C;IAEA,MAAMI,MAAM,MAAMf,aAAagB,gBAAgB,CAACT,OAAOG,eAAeN;IAEtE,MAAMa,SAASC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACL;IAEzC,MAAMM,oBAAoBN,IAAIO,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAOvB,EAAE,GAAGuB,OAAOM,GAAG;IACtB,IAAIF,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import { buildVersionCollectionFields, type PayloadRequest, type UpdateVersion } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nimport { buildProjectionFromSelect } from './utilities/buildProjectionFromSelect.js'\nimport { sanitizeRelationshipIDs } from './utilities/sanitizeRelationshipIDs.js'\nimport { withSession } from './withSession.js'\n\nexport const updateVersion: UpdateVersion = async function updateVersion(\n this: MongooseAdapter,\n { id, collection, locale, req = {} as PayloadRequest, select, versionData, where },\n) {\n const VersionModel = this.versions[collection]\n const whereToUse = where || { id: { equals: id } }\n const fields = buildVersionCollectionFields(\n this.payload.config,\n this.payload.collections[collection].config,\n )\n\n const options = {\n ...(await withSession(this, req)),\n lean: true,\n new: true,\n projection: buildProjectionFromSelect({ adapter: this, fields, select }),\n }\n\n const query = await VersionModel.buildQuery({\n locale,\n payload: this.payload,\n where: whereToUse,\n })\n\n const sanitizedData = sanitizeRelationshipIDs({\n config: this.payload.config,\n data: versionData,\n fields,\n })\n\n const doc = await VersionModel.findOneAndUpdate(query, sanitizedData, options)\n\n const result = JSON.parse(JSON.stringify(doc))\n\n const verificationToken = doc._verificationToken\n\n // custom id type reset\n result.id = result._id\n if (verificationToken) {\n result._verificationToken = verificationToken\n }\n return result\n}\n"],"names":["buildVersionCollectionFields","buildProjectionFromSelect","sanitizeRelationshipIDs","withSession","updateVersion","id","collection","locale","req","select","versionData","where","VersionModel","versions","whereToUse","equals","fields","payload","config","collections","options","lean","new","projection","adapter","query","buildQuery","sanitizedData","data","doc","findOneAndUpdate","result","JSON","parse","stringify","verificationToken","_verificationToken","_id"],"mappings":"AAAA,SAASA,4BAA4B,QAAiD,UAAS;AAI/F,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,UAAU,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,MAAM,EAAEC,WAAW,EAAEC,KAAK,EAAE;IAElF,MAAMC,eAAe,IAAI,CAACC,QAAQ,CAACP,WAAW;IAC9C,MAAMQ,aAAaH,SAAS;QAAEN,IAAI;YAAEU,QAAQV;QAAG;IAAE;IACjD,MAAMW,SAAShB,6BACb,IAAI,CAACiB,OAAO,CAACC,MAAM,EACnB,IAAI,CAACD,OAAO,CAACE,WAAW,CAACb,WAAW,CAACY,MAAM;IAG7C,MAAME,UAAU;QACd,GAAI,MAAMjB,YAAY,IAAI,EAAEK,IAAI;QAChCa,MAAM;QACNC,KAAK;QACLC,YAAYtB,0BAA0B;YAAEuB,SAAS,IAAI;YAAER;YAAQP;QAAO;IACxE;IAEA,MAAMgB,QAAQ,MAAMb,aAAac,UAAU,CAAC;QAC1CnB;QACAU,SAAS,IAAI,CAACA,OAAO;QACrBN,OAAOG;IACT;IAEA,MAAMa,gBAAgBzB,wBAAwB;QAC5CgB,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM;QAC3BU,MAAMlB;QACNM;IACF;IAEA,MAAMa,MAAM,MAAMjB,aAAakB,gBAAgB,CAACL,OAAOE,eAAeP;IAEtE,MAAMW,SAASC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACL;IAEzC,MAAMM,oBAAoBN,IAAIO,kBAAkB;IAEhD,uBAAuB;IACvBL,OAAO1B,EAAE,GAAG0B,OAAOM,GAAG;IACtB,IAAIF,mBAAmB;QACrBJ,OAAOK,kBAAkB,GAAGD;IAC9B;IACA,OAAOJ;AACT,EAAC"}
package/dist/upsert.js CHANGED
@@ -1,4 +1,4 @@
1
- export const upsert = async function upsert({ collection, data, locale, req = {}, where }) {
1
+ export const upsert = async function upsert({ collection, data, locale, req = {}, select, where }) {
2
2
  return this.updateOne({
3
3
  collection,
4
4
  data,
@@ -7,6 +7,7 @@ export const upsert = async function upsert({ collection, data, locale, req = {}
7
7
  upsert: true
8
8
  },
9
9
  req,
10
+ select,
10
11
  where
11
12
  });
12
13
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/upsert.ts"],"sourcesContent":["import type { PayloadRequest, Upsert } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nexport const upsert: Upsert = async function upsert(\n this: MongooseAdapter,\n { collection, data, locale, req = {} as PayloadRequest, where },\n) {\n return this.updateOne({ collection, data, locale, options: { upsert: true }, req, where })\n}\n"],"names":["upsert","collection","data","locale","req","where","updateOne","options"],"mappings":"AAIA,OAAO,MAAMA,SAAiB,eAAeA,OAE3C,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,KAAK,EAAE;IAE/D,OAAO,IAAI,CAACC,SAAS,CAAC;QAAEL;QAAYC;QAAMC;QAAQI,SAAS;YAAEP,QAAQ;QAAK;QAAGI;QAAKC;IAAM;AAC1F,EAAC"}
1
+ {"version":3,"sources":["../src/upsert.ts"],"sourcesContent":["import type { PayloadRequest, Upsert } from 'payload'\n\nimport type { MongooseAdapter } from './index.js'\n\nexport const upsert: Upsert = async function upsert(\n this: MongooseAdapter,\n { collection, data, locale, req = {} as PayloadRequest, select, where },\n) {\n return this.updateOne({ collection, data, locale, options: { upsert: true }, req, select, where })\n}\n"],"names":["upsert","collection","data","locale","req","select","where","updateOne","options"],"mappings":"AAIA,OAAO,MAAMA,SAAiB,eAAeA,OAE3C,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAmB,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAEvE,OAAO,IAAI,CAACC,SAAS,CAAC;QAAEN;QAAYC;QAAMC;QAAQK,SAAS;YAAER,QAAQ;QAAK;QAAGI;QAAKC;QAAQC;IAAM;AAClG,EAAC"}
@@ -8,8 +8,11 @@ type BuildJoinAggregationArgs = {
8
8
  joins: JoinQuery;
9
9
  limit?: number;
10
10
  locale: string;
11
+ projection?: Record<string, true>;
11
12
  query?: Where;
13
+ /** whether the query is from drafts */
14
+ versions?: boolean;
12
15
  };
13
- export declare const buildJoinAggregation: ({ adapter, collection, collectionConfig, joins, limit, locale, query, }: BuildJoinAggregationArgs) => Promise<PipelineStage[] | undefined>;
16
+ export declare const buildJoinAggregation: ({ adapter, collection, collectionConfig, joins, limit, locale, projection, query, versions, }: BuildJoinAggregationArgs) => Promise<PipelineStage[] | undefined>;
14
17
  export {};
15
18
  //# sourceMappingURL=buildJoinAggregation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildJoinAggregation.d.ts","sourceRoot":"","sources":["../../src/utilities/buildJoinAggregation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,cAAc,CAAA;IAC1B,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,KAAK,EAAE,SAAS,CAAA;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IAEd,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,eAAO,MAAM,oBAAoB,4EAQ9B,wBAAwB,KAAG,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CAmJhE,CAAA"}
1
+ {"version":3,"file":"buildJoinAggregation.d.ts","sourceRoot":"","sources":["../../src/utilities/buildJoinAggregation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,EAAE,cAAc,CAAA;IAC1B,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,KAAK,EAAE,SAAS,CAAA;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAEjC,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,kGAU9B,wBAAwB,KAAG,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CA+JhE,CAAA"}