payload 3.0.0-beta.106 → 3.0.0-beta.108

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 (232) hide show
  1. package/dist/admin/fields/Join.d.ts +18 -0
  2. package/dist/admin/fields/Join.d.ts.map +1 -0
  3. package/dist/admin/fields/Join.js +3 -0
  4. package/dist/admin/fields/Join.js.map +1 -0
  5. package/dist/admin/types.d.ts +1 -0
  6. package/dist/admin/types.d.ts.map +1 -1
  7. package/dist/admin/types.js.map +1 -1
  8. package/dist/auth/operations/login.d.ts.map +1 -1
  9. package/dist/auth/operations/login.js +1 -0
  10. package/dist/auth/operations/login.js.map +1 -1
  11. package/dist/auth/operations/me.d.ts.map +1 -1
  12. package/dist/auth/operations/me.js +1 -1
  13. package/dist/auth/operations/me.js.map +1 -1
  14. package/dist/auth/operations/refresh.d.ts.map +1 -1
  15. package/dist/auth/operations/refresh.js +1 -0
  16. package/dist/auth/operations/refresh.js.map +1 -1
  17. package/dist/auth/types.d.ts +7 -3
  18. package/dist/auth/types.d.ts.map +1 -1
  19. package/dist/auth/types.js.map +1 -1
  20. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  21. package/dist/bin/generateImportMap/iterateConfig.js +4 -1
  22. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  23. package/dist/bin/loadEnv.d.ts.map +1 -1
  24. package/dist/bin/loadEnv.js +9 -6
  25. package/dist/bin/loadEnv.js.map +1 -1
  26. package/dist/checkPayloadDependencies.d.ts.map +1 -1
  27. package/dist/checkPayloadDependencies.js +1 -44
  28. package/dist/checkPayloadDependencies.js.map +1 -1
  29. package/dist/collections/config/client.d.ts +2 -2
  30. package/dist/collections/config/client.d.ts.map +1 -1
  31. package/dist/collections/config/client.js.map +1 -1
  32. package/dist/collections/config/sanitize.d.ts.map +1 -1
  33. package/dist/collections/config/sanitize.js +6 -1
  34. package/dist/collections/config/sanitize.js.map +1 -1
  35. package/dist/collections/config/types.d.ts +26 -1
  36. package/dist/collections/config/types.d.ts.map +1 -1
  37. package/dist/collections/config/types.js.map +1 -1
  38. package/dist/collections/operations/delete.d.ts +1 -0
  39. package/dist/collections/operations/delete.d.ts.map +1 -1
  40. package/dist/collections/operations/delete.js +12 -1
  41. package/dist/collections/operations/delete.js.map +1 -1
  42. package/dist/collections/operations/deleteByID.d.ts +1 -0
  43. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  44. package/dist/collections/operations/deleteByID.js +12 -1
  45. package/dist/collections/operations/deleteByID.js.map +1 -1
  46. package/dist/collections/operations/find.d.ts +3 -1
  47. package/dist/collections/operations/find.d.ts.map +1 -1
  48. package/dist/collections/operations/find.js +43 -2
  49. package/dist/collections/operations/find.js.map +1 -1
  50. package/dist/collections/operations/findByID.d.ts +3 -1
  51. package/dist/collections/operations/findByID.d.ts.map +1 -1
  52. package/dist/collections/operations/findByID.js +38 -1
  53. package/dist/collections/operations/findByID.js.map +1 -1
  54. package/dist/collections/operations/findVersions.js +1 -1
  55. package/dist/collections/operations/findVersions.js.map +1 -1
  56. package/dist/collections/operations/local/delete.d.ts +1 -0
  57. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  58. package/dist/collections/operations/local/delete.js +2 -1
  59. package/dist/collections/operations/local/delete.js.map +1 -1
  60. package/dist/collections/operations/local/find.d.ts +3 -1
  61. package/dist/collections/operations/local/find.d.ts.map +1 -1
  62. package/dist/collections/operations/local/find.js +3 -1
  63. package/dist/collections/operations/local/find.js.map +1 -1
  64. package/dist/collections/operations/local/findByID.d.ts +5 -3
  65. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  66. package/dist/collections/operations/local/findByID.js +3 -1
  67. package/dist/collections/operations/local/findByID.js.map +1 -1
  68. package/dist/collections/operations/local/update.d.ts +2 -0
  69. package/dist/collections/operations/local/update.d.ts.map +1 -1
  70. package/dist/collections/operations/local/update.js +3 -1
  71. package/dist/collections/operations/local/update.js.map +1 -1
  72. package/dist/collections/operations/update.d.ts +1 -0
  73. package/dist/collections/operations/update.d.ts.map +1 -1
  74. package/dist/collections/operations/update.js +13 -2
  75. package/dist/collections/operations/update.js.map +1 -1
  76. package/dist/collections/operations/updateByID.d.ts +2 -0
  77. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  78. package/dist/collections/operations/updateByID.js +44 -5
  79. package/dist/collections/operations/updateByID.js.map +1 -1
  80. package/dist/config/client.d.ts +1 -1
  81. package/dist/config/client.d.ts.map +1 -1
  82. package/dist/config/client.js +2 -1
  83. package/dist/config/client.js.map +1 -1
  84. package/dist/config/find.d.ts +4 -0
  85. package/dist/config/find.d.ts.map +1 -1
  86. package/dist/config/find.js +18 -25
  87. package/dist/config/find.js.map +1 -1
  88. package/dist/config/sanitize.d.ts.map +1 -1
  89. package/dist/config/sanitize.js +2 -0
  90. package/dist/config/sanitize.js.map +1 -1
  91. package/dist/config/types.d.ts +4 -0
  92. package/dist/config/types.d.ts.map +1 -1
  93. package/dist/config/types.js.map +1 -1
  94. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  95. package/dist/database/queryValidation/validateSearchParams.js +6 -1
  96. package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
  97. package/dist/database/types.d.ts +12 -2
  98. package/dist/database/types.d.ts.map +1 -1
  99. package/dist/database/types.js.map +1 -1
  100. package/dist/errors/InvalidFieldJoin.d.ts +6 -0
  101. package/dist/errors/InvalidFieldJoin.d.ts.map +1 -0
  102. package/dist/errors/InvalidFieldJoin.js +8 -0
  103. package/dist/errors/InvalidFieldJoin.js.map +1 -0
  104. package/dist/errors/Locked.d.ts +5 -0
  105. package/dist/errors/Locked.d.ts.map +1 -0
  106. package/dist/errors/Locked.js +9 -0
  107. package/dist/errors/Locked.js.map +1 -0
  108. package/dist/errors/index.d.ts +1 -0
  109. package/dist/errors/index.d.ts.map +1 -1
  110. package/dist/errors/index.js +1 -0
  111. package/dist/errors/index.js.map +1 -1
  112. package/dist/exports/shared.d.ts +1 -1
  113. package/dist/exports/shared.d.ts.map +1 -1
  114. package/dist/exports/shared.js +1 -1
  115. package/dist/exports/shared.js.map +1 -1
  116. package/dist/fields/config/client.d.ts +1 -1
  117. package/dist/fields/config/client.d.ts.map +1 -1
  118. package/dist/fields/config/client.js.map +1 -1
  119. package/dist/fields/config/sanitize.d.ts +7 -2
  120. package/dist/fields/config/sanitize.d.ts.map +1 -1
  121. package/dist/fields/config/sanitize.js +27 -5
  122. package/dist/fields/config/sanitize.js.map +1 -1
  123. package/dist/fields/config/sanitizeJoinField.d.ts +10 -0
  124. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -0
  125. package/dist/fields/config/sanitizeJoinField.js +65 -0
  126. package/dist/fields/config/sanitizeJoinField.js.map +1 -0
  127. package/dist/fields/config/types.d.ts +107 -47
  128. package/dist/fields/config/types.d.ts.map +1 -1
  129. package/dist/fields/config/types.js +4 -1
  130. package/dist/fields/config/types.js.map +1 -1
  131. package/dist/fields/hooks/afterRead/promise.js +1 -1
  132. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  133. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +2 -2
  134. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  135. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +16 -9
  136. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  137. package/dist/fields/hooks/beforeChange/index.d.ts +1 -2
  138. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  139. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  140. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  141. package/dist/fields/hooks/beforeChange/promise.js +1 -1
  142. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  143. package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
  144. package/dist/fields/hooks/beforeDuplicate/promise.js +31 -30
  145. package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
  146. package/dist/fields/validations.d.ts +11 -1
  147. package/dist/fields/validations.d.ts.map +1 -1
  148. package/dist/fields/validations.js.map +1 -1
  149. package/dist/globals/config/types.d.ts +7 -0
  150. package/dist/globals/config/types.d.ts.map +1 -1
  151. package/dist/globals/config/types.js.map +1 -1
  152. package/dist/globals/operations/findOne.d.ts +1 -0
  153. package/dist/globals/operations/findOne.d.ts.map +1 -1
  154. package/dist/globals/operations/findOne.js +28 -1
  155. package/dist/globals/operations/findOne.js.map +1 -1
  156. package/dist/globals/operations/findVersions.js +1 -1
  157. package/dist/globals/operations/findVersions.js.map +1 -1
  158. package/dist/globals/operations/local/findOne.d.ts +1 -0
  159. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  160. package/dist/globals/operations/local/findOne.js +2 -1
  161. package/dist/globals/operations/local/findOne.js.map +1 -1
  162. package/dist/globals/operations/local/update.d.ts +2 -0
  163. package/dist/globals/operations/local/update.d.ts.map +1 -1
  164. package/dist/globals/operations/local/update.js +3 -1
  165. package/dist/globals/operations/local/update.js.map +1 -1
  166. package/dist/globals/operations/update.d.ts +2 -0
  167. package/dist/globals/operations/update.d.ts.map +1 -1
  168. package/dist/globals/operations/update.js +47 -7
  169. package/dist/globals/operations/update.js.map +1 -1
  170. package/dist/index.d.ts +13 -6
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +29 -10
  173. package/dist/index.js.map +1 -1
  174. package/dist/lockedDocuments/lockedDocumentsCollection.d.ts +4 -0
  175. package/dist/lockedDocuments/lockedDocumentsCollection.d.ts.map +1 -0
  176. package/dist/lockedDocuments/lockedDocumentsCollection.js +31 -0
  177. package/dist/lockedDocuments/lockedDocumentsCollection.js.map +1 -0
  178. package/dist/types/index.d.ts +11 -2
  179. package/dist/types/index.d.ts.map +1 -1
  180. package/dist/types/index.js.map +1 -1
  181. package/dist/utilities/checkDocumentLockStatus.d.ts +13 -0
  182. package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -0
  183. package/dist/utilities/checkDocumentLockStatus.js +66 -0
  184. package/dist/utilities/checkDocumentLockStatus.js.map +1 -0
  185. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  186. package/dist/utilities/configToJSONSchema.js +26 -0
  187. package/dist/utilities/configToJSONSchema.js.map +1 -1
  188. package/dist/utilities/dependencies/getDependencies.d.ts.map +1 -1
  189. package/dist/utilities/dependencies/getDependencies.js +23 -22
  190. package/dist/utilities/dependencies/getDependencies.js.map +1 -1
  191. package/dist/utilities/findUp.d.ts +19 -0
  192. package/dist/utilities/findUp.d.ts.map +1 -0
  193. package/dist/utilities/findUp.js +102 -0
  194. package/dist/utilities/findUp.js.map +1 -0
  195. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  196. package/dist/utilities/telemetry/index.js +9 -10
  197. package/dist/utilities/telemetry/index.js.map +1 -1
  198. package/dist/utilities/traverseFields.d.ts +36 -0
  199. package/dist/utilities/traverseFields.d.ts.map +1 -0
  200. package/dist/utilities/traverseFields.js +81 -0
  201. package/dist/utilities/traverseFields.js.map +1 -0
  202. package/dist/versions/baseFields.d.ts +1 -0
  203. package/dist/versions/baseFields.d.ts.map +1 -1
  204. package/dist/versions/baseFields.js +14 -0
  205. package/dist/versions/baseFields.js.map +1 -1
  206. package/dist/versions/buildCollectionFields.d.ts +2 -1
  207. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  208. package/dist/versions/buildCollectionFields.js +27 -8
  209. package/dist/versions/buildCollectionFields.js.map +1 -1
  210. package/dist/versions/buildGlobalFields.d.ts +2 -1
  211. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  212. package/dist/versions/buildGlobalFields.js +27 -8
  213. package/dist/versions/buildGlobalFields.js.map +1 -1
  214. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  215. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +12 -3
  216. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  217. package/dist/versions/getLatestCollectionVersion.d.ts +2 -1
  218. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  219. package/dist/versions/getLatestCollectionVersion.js +38 -13
  220. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  221. package/dist/versions/getLatestGlobalVersion.d.ts +2 -1
  222. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  223. package/dist/versions/getLatestGlobalVersion.js +12 -4
  224. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  225. package/dist/versions/saveVersion.d.ts +3 -1
  226. package/dist/versions/saveVersion.d.ts.map +1 -1
  227. package/dist/versions/saveVersion.js +44 -20
  228. package/dist/versions/saveVersion.js.map +1 -1
  229. package/dist/versions/types.d.ts +1 -0
  230. package/dist/versions/types.d.ts.map +1 -1
  231. package/dist/versions/types.js.map +1 -1
  232. package/package.json +4 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/collections/operations/local/find.ts"],"sourcesContent":["import type { PaginatedDocs } from '../../../database/types.js'\nimport type { CollectionSlug, Payload, TypedLocale } from '../../../index.js'\nimport type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js'\nimport type { DataFromCollectionSlug } from '../../config/types.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { findOperation } from '../find.js'\n\nexport type Options<TSlug extends CollectionSlug> = {\n collection: TSlug\n /**\n * context, which will then be passed to req.context, which can be read by hooks\n */\n context?: RequestContext\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n fallbackLocale?: TypedLocale\n limit?: number\n locale?: 'all' | TypedLocale\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: string\n user?: Document\n where?: Where\n}\n\nexport async function findLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<PaginatedDocs<DataFromCollectionSlug<TSlug>>> {\n const {\n collection: collectionSlug,\n currentDepth,\n depth,\n disableErrors,\n draft = false,\n limit,\n overrideAccess = true,\n page,\n pagination = true,\n showHiddenFields,\n sort,\n where,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Find Operation.`,\n )\n }\n\n return findOperation<TSlug>({\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft,\n limit,\n overrideAccess,\n page,\n pagination,\n req: await createLocalReq(options, payload),\n showHiddenFields,\n sort,\n where,\n })\n}\n"],"names":["APIError","createLocalReq","findOperation","findLocal","payload","options","collection","collectionSlug","currentDepth","depth","disableErrors","draft","limit","overrideAccess","page","pagination","showHiddenFields","sort","where","collections","String","req"],"mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,aAAa,QAAQ,aAAY;AAyB1C,OAAO,eAAeC,UACpBC,OAAgB,EAChBC,OAAuB;IAEvB,MAAM,EACJC,YAAYC,cAAc,EAC1BC,YAAY,EACZC,KAAK,EACLC,aAAa,EACbC,QAAQ,KAAK,EACbC,KAAK,EACLC,iBAAiB,IAAI,EACrBC,IAAI,EACJC,aAAa,IAAI,EACjBC,gBAAgB,EAChBC,IAAI,EACJC,KAAK,EACN,GAAGb;IAEJ,MAAMC,aAAaF,QAAQe,WAAW,CAACZ,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEoB,OAAOb,gBAAgB,gCAAgC,CAAC;IAExF;IAEA,OAAOL,cAAqB;QAC1BI;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM,KAAK,MAAMpB,eAAeI,SAASD;QACnCY;QACAC;QACAC;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../src/collections/operations/local/find.ts"],"sourcesContent":["import type { PaginatedDocs } from '../../../database/types.js'\nimport type { CollectionSlug, JoinQuery, Payload, TypedLocale } from '../../../index.js'\nimport type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js'\nimport type { DataFromCollectionSlug } from '../../config/types.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { findOperation } from '../find.js'\n\nexport type Options<TSlug extends CollectionSlug> = {\n collection: TSlug\n /**\n * context, which will then be passed to req.context, which can be read by hooks\n */\n context?: RequestContext\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n fallbackLocale?: TypedLocale\n includeLockStatus?: boolean\n joins?: JoinQuery\n limit?: number\n locale?: 'all' | TypedLocale\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: string\n user?: Document\n where?: Where\n}\n\nexport async function findLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<PaginatedDocs<DataFromCollectionSlug<TSlug>>> {\n const {\n collection: collectionSlug,\n currentDepth,\n depth,\n disableErrors,\n draft = false,\n includeLockStatus,\n joins,\n limit,\n overrideAccess = true,\n page,\n pagination = true,\n showHiddenFields,\n sort,\n where,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Find Operation.`,\n )\n }\n\n return findOperation<TSlug>({\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft,\n includeLockStatus,\n joins,\n limit,\n overrideAccess,\n page,\n pagination,\n req: await createLocalReq(options, payload),\n showHiddenFields,\n sort,\n where,\n })\n}\n"],"names":["APIError","createLocalReq","findOperation","findLocal","payload","options","collection","collectionSlug","currentDepth","depth","disableErrors","draft","includeLockStatus","joins","limit","overrideAccess","page","pagination","showHiddenFields","sort","where","collections","String","req"],"mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,aAAa,QAAQ,aAAY;AA2B1C,OAAO,eAAeC,UACpBC,OAAgB,EAChBC,OAAuB;IAEvB,MAAM,EACJC,YAAYC,cAAc,EAC1BC,YAAY,EACZC,KAAK,EACLC,aAAa,EACbC,QAAQ,KAAK,EACbC,iBAAiB,EACjBC,KAAK,EACLC,KAAK,EACLC,iBAAiB,IAAI,EACrBC,IAAI,EACJC,aAAa,IAAI,EACjBC,gBAAgB,EAChBC,IAAI,EACJC,KAAK,EACN,GAAGf;IAEJ,MAAMC,aAAaF,QAAQiB,WAAW,CAACd,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEsB,OAAOf,gBAAgB,gCAAgC,CAAC;IAExF;IAEA,OAAOL,cAAqB;QAC1BI;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAM,KAAK,MAAMtB,eAAeI,SAASD;QACnCc;QACAC;QACAC;IACF;AACF"}
@@ -1,7 +1,7 @@
1
- import type { CollectionSlug, Payload, TypedLocale } from '../../../index.js';
1
+ import type { CollectionSlug, JoinQuery, Payload, TypedLocale } from '../../../index.js';
2
2
  import type { Document, PayloadRequest, RequestContext } from '../../../types/index.js';
3
3
  import type { DataFromCollectionSlug } from '../../config/types.js';
4
- export type Options<TSlug extends CollectionSlug> = {
4
+ export type Options<TSlug extends CollectionSlug = CollectionSlug> = {
5
5
  collection: TSlug;
6
6
  /**
7
7
  * context, which will then be passed to req.context, which can be read by hooks
@@ -13,11 +13,13 @@ export type Options<TSlug extends CollectionSlug> = {
13
13
  draft?: boolean;
14
14
  fallbackLocale?: TypedLocale;
15
15
  id: number | string;
16
+ includeLockStatus?: boolean;
17
+ joins?: JoinQuery;
16
18
  locale?: 'all' | TypedLocale;
17
19
  overrideAccess?: boolean;
18
20
  req?: PayloadRequest;
19
21
  showHiddenFields?: boolean;
20
22
  user?: Document;
21
23
  };
22
- export default function findByIDLocal<TSlug extends CollectionSlug>(payload: Payload, options: Options<TSlug>): Promise<DataFromCollectionSlug<TSlug>>;
24
+ export default function findByIDLocal<TOptions extends Options>(payload: Payload, options: TOptions): Promise<TOptions['disableErrors'] extends true ? DataFromCollectionSlug<TOptions['collection']> | null : DataFromCollectionSlug<TOptions['collection']>>;
23
25
  //# sourceMappingURL=findByID.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findByID.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/local/findByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAMnE,MAAM,MAAM,OAAO,CAAC,KAAK,SAAS,cAAc,IAAI;IAClD,UAAU,EAAE,KAAK,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,WAAW,CAAA;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,WAAW,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,wBAA8B,aAAa,CAAC,KAAK,SAAS,cAAc,EACtE,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GACtB,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CA+BxC"}
1
+ {"version":3,"file":"findByID.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/local/findByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAMnE,MAAM,MAAM,OAAO,CAAC,KAAK,SAAS,cAAc,GAAG,cAAc,IAAI;IACnE,UAAU,EAAE,KAAK,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,WAAW,CAAA;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,KAAK,GAAG,WAAW,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,wBAA8B,aAAa,CAAC,QAAQ,SAAS,OAAO,EAClE,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,QAAQ,GAChB,OAAO,CACR,QAAQ,CAAC,eAAe,CAAC,SAAS,IAAI,GAClC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,GACrD,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CACnD,CAmCA"}
@@ -2,7 +2,7 @@ import { APIError } from '../../../errors/index.js';
2
2
  import { createLocalReq } from '../../../utilities/createLocalReq.js';
3
3
  import { findByIDOperation } from '../findByID.js';
4
4
  export default async function findByIDLocal(payload, options) {
5
- const { id, collection: collectionSlug, currentDepth, depth, disableErrors = false, draft = false, overrideAccess = true, showHiddenFields } = options;
5
+ const { id, collection: collectionSlug, currentDepth, depth, disableErrors = false, draft = false, includeLockStatus, joins, overrideAccess = true, showHiddenFields } = options;
6
6
  const collection = payload.collections[collectionSlug];
7
7
  if (!collection) {
8
8
  throw new APIError(`The collection with slug ${String(collectionSlug)} can't be found. Find By ID Operation.`);
@@ -14,6 +14,8 @@ export default async function findByIDLocal(payload, options) {
14
14
  depth,
15
15
  disableErrors,
16
16
  draft,
17
+ includeLockStatus,
18
+ joins,
17
19
  overrideAccess,
18
20
  req: await createLocalReq(options, payload),
19
21
  showHiddenFields
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/collections/operations/local/findByID.ts"],"sourcesContent":["import type { CollectionSlug, Payload, TypedLocale } from '../../../index.js'\nimport type { Document, PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { DataFromCollectionSlug } from '../../config/types.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { findByIDOperation } from '../findByID.js'\n\nexport type Options<TSlug extends CollectionSlug> = {\n collection: TSlug\n /**\n * context, which will then be passed to req.context, which can be read by hooks\n */\n context?: RequestContext\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n fallbackLocale?: TypedLocale\n id: number | string\n locale?: 'all' | TypedLocale\n overrideAccess?: boolean\n req?: PayloadRequest\n showHiddenFields?: boolean\n user?: Document\n}\n\nexport default async function findByIDLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<DataFromCollectionSlug<TSlug>> {\n const {\n id,\n collection: collectionSlug,\n currentDepth,\n depth,\n disableErrors = false,\n draft = false,\n overrideAccess = true,\n showHiddenFields,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Find By ID Operation.`,\n )\n }\n\n return findByIDOperation<TSlug>({\n id,\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft,\n overrideAccess,\n req: await createLocalReq(options, payload),\n showHiddenFields,\n })\n}\n"],"names":["APIError","createLocalReq","findByIDOperation","findByIDLocal","payload","options","id","collection","collectionSlug","currentDepth","depth","disableErrors","draft","overrideAccess","showHiddenFields","collections","String","req"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,iBAAiB,QAAQ,iBAAgB;AAqBlD,eAAe,eAAeC,cAC5BC,OAAgB,EAChBC,OAAuB;IAEvB,MAAM,EACJC,EAAE,EACFC,YAAYC,cAAc,EAC1BC,YAAY,EACZC,KAAK,EACLC,gBAAgB,KAAK,EACrBC,QAAQ,KAAK,EACbC,iBAAiB,IAAI,EACrBC,gBAAgB,EACjB,GAAGT;IAEJ,MAAME,aAAaH,QAAQW,WAAW,CAACP,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIP,SACR,CAAC,yBAAyB,EAAEgB,OAAOR,gBAAgB,sCAAsC,CAAC;IAE9F;IAEA,OAAON,kBAAyB;QAC9BI;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAI,KAAK,MAAMhB,eAAeI,SAASD;QACnCU;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../src/collections/operations/local/findByID.ts"],"sourcesContent":["import type { CollectionSlug, JoinQuery, Payload, TypedLocale } from '../../../index.js'\nimport type { Document, PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { DataFromCollectionSlug } from '../../config/types.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { findByIDOperation } from '../findByID.js'\n\nexport type Options<TSlug extends CollectionSlug = CollectionSlug> = {\n collection: TSlug\n /**\n * context, which will then be passed to req.context, which can be read by hooks\n */\n context?: RequestContext\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n fallbackLocale?: TypedLocale\n id: number | string\n includeLockStatus?: boolean\n joins?: JoinQuery\n locale?: 'all' | TypedLocale\n overrideAccess?: boolean\n req?: PayloadRequest\n showHiddenFields?: boolean\n user?: Document\n}\n\nexport default async function findByIDLocal<TOptions extends Options>(\n payload: Payload,\n options: TOptions,\n): Promise<\n TOptions['disableErrors'] extends true\n ? DataFromCollectionSlug<TOptions['collection']> | null\n : DataFromCollectionSlug<TOptions['collection']>\n> {\n const {\n id,\n collection: collectionSlug,\n currentDepth,\n depth,\n disableErrors = false,\n draft = false,\n includeLockStatus,\n joins,\n overrideAccess = true,\n showHiddenFields,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Find By ID Operation.`,\n )\n }\n\n return findByIDOperation<TOptions['collection']>({\n id,\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft,\n includeLockStatus,\n joins,\n overrideAccess,\n req: await createLocalReq(options, payload),\n showHiddenFields,\n })\n}\n"],"names":["APIError","createLocalReq","findByIDOperation","findByIDLocal","payload","options","id","collection","collectionSlug","currentDepth","depth","disableErrors","draft","includeLockStatus","joins","overrideAccess","showHiddenFields","collections","String","req"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,iBAAiB,QAAQ,iBAAgB;AAuBlD,eAAe,eAAeC,cAC5BC,OAAgB,EAChBC,OAAiB;IAMjB,MAAM,EACJC,EAAE,EACFC,YAAYC,cAAc,EAC1BC,YAAY,EACZC,KAAK,EACLC,gBAAgB,KAAK,EACrBC,QAAQ,KAAK,EACbC,iBAAiB,EACjBC,KAAK,EACLC,iBAAiB,IAAI,EACrBC,gBAAgB,EACjB,GAAGX;IAEJ,MAAME,aAAaH,QAAQa,WAAW,CAACT,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIP,SACR,CAAC,yBAAyB,EAAEkB,OAAOV,gBAAgB,sCAAsC,CAAC;IAE9F;IAEA,OAAON,kBAA0C;QAC/CI;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAI,KAAK,MAAMlB,eAAeI,SAASD;QACnCY;IACF;AACF"}
@@ -18,7 +18,9 @@ export type BaseOptions<TSlug extends CollectionSlug> = {
18
18
  filePath?: string;
19
19
  locale?: TypedLocale;
20
20
  overrideAccess?: boolean;
21
+ overrideLock?: boolean;
21
22
  overwriteExistingFiles?: boolean;
23
+ publishSpecificLocale?: string;
22
24
  req?: PayloadRequest;
23
25
  showHiddenFields?: boolean;
24
26
  user?: Document;
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/local/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC9F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAA;AAQ9B,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,cAAc,IAAI;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,KAAK,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,WAAW,CAAA;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,cAAc,IAAI;IACtD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AAEtB,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,cAAc,IAAI;IACtD,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;CACb,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AAEtB,MAAM,MAAM,OAAO,CAAC,KAAK,SAAS,cAAc,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AAE3F,iBAAe,WAAW,CAAC,KAAK,SAAS,cAAc,EACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;AACzC,iBAAe,WAAW,CAAC,KAAK,SAAS,cAAc,EACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,iBAAe,WAAW,CAAC,KAAK,SAAS,cAAc,EACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GACtB,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;AAoDtE,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/local/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC9F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAA;AAQ9B,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,cAAc,IAAI;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,KAAK,CAAA;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,WAAW,CAAA;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,cAAc,IAAI;IACtD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AAEtB,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,cAAc,IAAI;IACtD,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;CACb,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AAEtB,MAAM,MAAM,OAAO,CAAC,KAAK,SAAS,cAAc,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AAE3F,iBAAe,WAAW,CAAC,KAAK,SAAS,cAAc,EACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;AACzC,iBAAe,WAAW,CAAC,KAAK,SAAS,cAAc,EACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,GAC1B,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,iBAAe,WAAW,CAAC,KAAK,SAAS,cAAc,EACrD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GACtB,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;AAwDtE,eAAe,WAAW,CAAA"}
@@ -4,7 +4,7 @@ import { createLocalReq } from '../../../utilities/createLocalReq.js';
4
4
  import { updateOperation } from '../update.js';
5
5
  import { updateByIDOperation } from '../updateByID.js';
6
6
  async function updateLocal(payload, options) {
7
- const { id, autosave, collection: collectionSlug, data, depth, draft, file, filePath, overrideAccess = true, overwriteExistingFiles = false, showHiddenFields, where } = options;
7
+ const { id, autosave, collection: collectionSlug, data, depth, draft, file, filePath, overrideAccess = true, overrideLock, overwriteExistingFiles = false, publishSpecificLocale, showHiddenFields, where } = options;
8
8
  const collection = payload.collections[collectionSlug];
9
9
  if (!collection) {
10
10
  throw new APIError(`The collection with slug ${String(collectionSlug)} can't be found. Update Operation.`);
@@ -19,8 +19,10 @@ async function updateLocal(payload, options) {
19
19
  depth,
20
20
  draft,
21
21
  overrideAccess,
22
+ overrideLock,
22
23
  overwriteExistingFiles,
23
24
  payload,
25
+ publishSpecificLocale,
24
26
  req,
25
27
  showHiddenFields,
26
28
  where
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/collections/operations/local/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { CollectionSlug, Payload, TypedLocale } from '../../../index.js'\nimport type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js'\nimport type { File } from '../../../uploads/types.js'\nimport type {\n BulkOperationResult,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n} from '../../config/types.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { getFileByPath } from '../../../uploads/getFileByPath.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { updateOperation } from '../update.js'\nimport { updateByIDOperation } from '../updateByID.js'\n\nexport type BaseOptions<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: TSlug\n /**\n * context, which will then be passed to req.context, which can be read by hooks\n */\n context?: RequestContext\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n draft?: boolean\n fallbackLocale?: TypedLocale\n file?: File\n filePath?: string\n locale?: TypedLocale\n overrideAccess?: boolean\n overwriteExistingFiles?: boolean\n req?: PayloadRequest\n showHiddenFields?: boolean\n user?: Document\n}\n\nexport type ByIDOptions<TSlug extends CollectionSlug> = {\n id: number | string\n where?: never\n} & BaseOptions<TSlug>\n\nexport type ManyOptions<TSlug extends CollectionSlug> = {\n id?: never\n where: Where\n} & BaseOptions<TSlug>\n\nexport type Options<TSlug extends CollectionSlug> = ByIDOptions<TSlug> | ManyOptions<TSlug>\n\nasync function updateLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: ByIDOptions<TSlug>,\n): Promise<DataFromCollectionSlug<TSlug>>\nasync function updateLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: ManyOptions<TSlug>,\n): Promise<BulkOperationResult<TSlug>>\nasync function updateLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<BulkOperationResult<TSlug> | DataFromCollectionSlug<TSlug>>\nasync function updateLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<BulkOperationResult<TSlug> | DataFromCollectionSlug<TSlug>> {\n const {\n id,\n autosave,\n collection: collectionSlug,\n data,\n depth,\n draft,\n file,\n filePath,\n overrideAccess = true,\n overwriteExistingFiles = false,\n showHiddenFields,\n where,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Update Operation.`,\n )\n }\n\n const req = await createLocalReq(options, payload)\n req.file = file ?? (await getFileByPath(filePath))\n\n const args = {\n id,\n autosave,\n collection,\n data,\n depth,\n draft,\n overrideAccess,\n overwriteExistingFiles,\n payload,\n req,\n showHiddenFields,\n where,\n }\n\n if (options.id) {\n return updateByIDOperation<TSlug>(args)\n }\n return updateOperation<TSlug>(args)\n}\n\nexport default updateLocal\n"],"names":["APIError","getFileByPath","createLocalReq","updateOperation","updateByIDOperation","updateLocal","payload","options","id","autosave","collection","collectionSlug","data","depth","draft","file","filePath","overrideAccess","overwriteExistingFiles","showHiddenFields","where","collections","String","req","args"],"mappings":"AAWA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,aAAa,QAAQ,oCAAmC;AACjE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,eAAc;AAC9C,SAASC,mBAAmB,QAAQ,mBAAkB;AA+CtD,eAAeC,YACbC,OAAgB,EAChBC,OAAuB;IAEvB,MAAM,EACJC,EAAE,EACFC,QAAQ,EACRC,YAAYC,cAAc,EAC1BC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,iBAAiB,IAAI,EACrBC,yBAAyB,KAAK,EAC9BC,gBAAgB,EAChBC,KAAK,EACN,GAAGb;IAEJ,MAAMG,aAAaJ,QAAQe,WAAW,CAACV,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIV,SACR,CAAC,yBAAyB,EAAEsB,OAAOX,gBAAgB,kCAAkC,CAAC;IAE1F;IAEA,MAAMY,MAAM,MAAMrB,eAAeK,SAASD;IAC1CiB,IAAIR,IAAI,GAAGA,QAAS,MAAMd,cAAce;IAExC,MAAMQ,OAAO;QACXhB;QACAC;QACAC;QACAE;QACAC;QACAC;QACAG;QACAC;QACAZ;QACAiB;QACAJ;QACAC;IACF;IAEA,IAAIb,QAAQC,EAAE,EAAE;QACd,OAAOJ,oBAA2BoB;IACpC;IACA,OAAOrB,gBAAuBqB;AAChC;AAEA,eAAenB,YAAW"}
1
+ {"version":3,"sources":["../../../../src/collections/operations/local/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { CollectionSlug, Payload, TypedLocale } from '../../../index.js'\nimport type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js'\nimport type { File } from '../../../uploads/types.js'\nimport type {\n BulkOperationResult,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n} from '../../config/types.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { getFileByPath } from '../../../uploads/getFileByPath.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { updateOperation } from '../update.js'\nimport { updateByIDOperation } from '../updateByID.js'\n\nexport type BaseOptions<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: TSlug\n /**\n * context, which will then be passed to req.context, which can be read by hooks\n */\n context?: RequestContext\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n draft?: boolean\n fallbackLocale?: TypedLocale\n file?: File\n filePath?: string\n locale?: TypedLocale\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n publishSpecificLocale?: string\n req?: PayloadRequest\n showHiddenFields?: boolean\n user?: Document\n}\n\nexport type ByIDOptions<TSlug extends CollectionSlug> = {\n id: number | string\n where?: never\n} & BaseOptions<TSlug>\n\nexport type ManyOptions<TSlug extends CollectionSlug> = {\n id?: never\n where: Where\n} & BaseOptions<TSlug>\n\nexport type Options<TSlug extends CollectionSlug> = ByIDOptions<TSlug> | ManyOptions<TSlug>\n\nasync function updateLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: ByIDOptions<TSlug>,\n): Promise<DataFromCollectionSlug<TSlug>>\nasync function updateLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: ManyOptions<TSlug>,\n): Promise<BulkOperationResult<TSlug>>\nasync function updateLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<BulkOperationResult<TSlug> | DataFromCollectionSlug<TSlug>>\nasync function updateLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: Options<TSlug>,\n): Promise<BulkOperationResult<TSlug> | DataFromCollectionSlug<TSlug>> {\n const {\n id,\n autosave,\n collection: collectionSlug,\n data,\n depth,\n draft,\n file,\n filePath,\n overrideAccess = true,\n overrideLock,\n overwriteExistingFiles = false,\n publishSpecificLocale,\n showHiddenFields,\n where,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Update Operation.`,\n )\n }\n\n const req = await createLocalReq(options, payload)\n req.file = file ?? (await getFileByPath(filePath))\n\n const args = {\n id,\n autosave,\n collection,\n data,\n depth,\n draft,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles,\n payload,\n publishSpecificLocale,\n req,\n showHiddenFields,\n where,\n }\n\n if (options.id) {\n return updateByIDOperation<TSlug>(args)\n }\n return updateOperation<TSlug>(args)\n}\n\nexport default updateLocal\n"],"names":["APIError","getFileByPath","createLocalReq","updateOperation","updateByIDOperation","updateLocal","payload","options","id","autosave","collection","collectionSlug","data","depth","draft","file","filePath","overrideAccess","overrideLock","overwriteExistingFiles","publishSpecificLocale","showHiddenFields","where","collections","String","req","args"],"mappings":"AAWA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,aAAa,QAAQ,oCAAmC;AACjE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,eAAc;AAC9C,SAASC,mBAAmB,QAAQ,mBAAkB;AAiDtD,eAAeC,YACbC,OAAgB,EAChBC,OAAuB;IAEvB,MAAM,EACJC,EAAE,EACFC,QAAQ,EACRC,YAAYC,cAAc,EAC1BC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,iBAAiB,IAAI,EACrBC,YAAY,EACZC,yBAAyB,KAAK,EAC9BC,qBAAqB,EACrBC,gBAAgB,EAChBC,KAAK,EACN,GAAGf;IAEJ,MAAMG,aAAaJ,QAAQiB,WAAW,CAACZ,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIV,SACR,CAAC,yBAAyB,EAAEwB,OAAOb,gBAAgB,kCAAkC,CAAC;IAE1F;IAEA,MAAMc,MAAM,MAAMvB,eAAeK,SAASD;IAC1CmB,IAAIV,IAAI,GAAGA,QAAS,MAAMd,cAAce;IAExC,MAAMU,OAAO;QACXlB;QACAC;QACAC;QACAE;QACAC;QACAC;QACAG;QACAC;QACAC;QACAb;QACAc;QACAK;QACAJ;QACAC;IACF;IAEA,IAAIf,QAAQC,EAAE,EAAE;QACd,OAAOJ,oBAA2BsB;IACpC;IACA,OAAOvB,gBAAuBuB;AAChC;AAEA,eAAerB,YAAW"}
@@ -9,6 +9,7 @@ export type Arguments<TSlug extends CollectionSlug> = {
9
9
  disableVerificationEmail?: boolean;
10
10
  draft?: boolean;
11
11
  overrideAccess?: boolean;
12
+ overrideLock?: boolean;
12
13
  overwriteExistingFiles?: boolean;
13
14
  req: PayloadRequest;
14
15
  showHiddenFields?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,8BAA8B,EAC/B,MAAM,oBAAoB,CAAA;AAuB3B,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,SAAS,cAAc,gBAClD,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAqYpC,CAAA"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,8BAA8B,EAC/B,MAAM,oBAAoB,CAAA;AAwB3B,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,SAAS,cAAc,gBAClD,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAkZpC,CAAA"}
@@ -12,6 +12,7 @@ import { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js';
12
12
  import { generateFileData } from '../../uploads/generateFileData.js';
13
13
  import { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js';
14
14
  import { uploadFiles } from '../../uploads/uploadFiles.js';
15
+ import { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js';
15
16
  import { commitTransaction } from '../../utilities/commitTransaction.js';
16
17
  import { initTransaction } from '../../utilities/initTransaction.js';
17
18
  import { killTransaction } from '../../utilities/killTransaction.js';
@@ -36,7 +37,7 @@ export const updateOperation = async (incomingArgs)=>{
36
37
  req: args.req
37
38
  }) || args;
38
39
  }, Promise.resolve());
39
- const { collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overwriteExistingFiles = false, req: { fallbackLocale, locale, payload: { config }, payload }, req, showHiddenFields, where } = args;
40
+ const { collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overrideLock, overwriteExistingFiles = false, req: { fallbackLocale, locale, payload: { config }, payload }, req, showHiddenFields, where } = args;
40
41
  if (!where) {
41
42
  throw new APIError("Missing 'where' query of documents to update.", httpStatus.BAD_REQUEST);
42
43
  }
@@ -68,7 +69,7 @@ export const updateOperation = async (incomingArgs)=>{
68
69
  collectionConfig: collection.config,
69
70
  overrideAccess,
70
71
  req,
71
- versionFields: buildVersionCollectionFields(collection.config),
72
+ versionFields: buildVersionCollectionFields(payload.config, collection.config),
72
73
  where: versionsWhere
73
74
  });
74
75
  const query = await payload.db.queryDrafts({
@@ -110,6 +111,16 @@ export const updateOperation = async (incomingArgs)=>{
110
111
  ...bulkUpdateData
111
112
  };
112
113
  try {
114
+ // /////////////////////////////////////
115
+ // Handle potentially locked documents
116
+ // /////////////////////////////////////
117
+ await checkDocumentLockStatus({
118
+ id,
119
+ collectionSlug: collectionConfig.slug,
120
+ lockErrorMessage: `Document with ID ${id} is currently locked by another user and cannot be updated.`,
121
+ overrideLock,
122
+ req
123
+ });
113
124
  const originalDoc = await afterRead({
114
125
  collection: collectionConfig,
115
126
  context: req.context,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport httpStatus from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n} from '../config/types.js'\n\nimport { ensureUsernameOrEmail } from '../../auth/ensureUsernameOrEmail.js'\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { APIError } from '../../errors/index.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { uploadFiles } from '../../uploads/uploadFiles.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableVerificationEmail?: boolean\n draft?: boolean\n overrideAccess?: boolean\n overwriteExistingFiles?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n where: Where\n}\n\nexport const updateOperation = async <TSlug extends CollectionSlug>(\n incomingArgs: Arguments<TSlug>,\n): Promise<BulkOperationResult<TSlug>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'update',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n overrideAccess,\n overwriteExistingFiles = false,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n showHiddenFields,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to update.\", httpStatus.BAD_REQUEST)\n }\n\n const { data: bulkUpdateData } = args\n const shouldSaveDraft = Boolean(draftArg && collectionConfig.versions.drafts)\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.update)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n const fullWhere = combineQueries(where, accessResult)\n\n let docs\n\n if (collectionConfig.versions?.drafts && shouldSaveDraft) {\n const versionsWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess,\n req,\n versionFields: buildVersionCollectionFields(collection.config),\n where: versionsWhere,\n })\n\n const query = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n locale,\n pagination: false,\n req,\n where: versionsWhere,\n })\n\n docs = query.docs\n } else {\n const query = await payload.db.find({\n collection: collectionConfig.slug,\n limit: 0,\n locale,\n pagination: false,\n req,\n where: fullWhere,\n })\n\n docs = query.docs\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data: newFileData, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data: bulkUpdateData,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const errors = []\n\n const promises = docs.map(async (doc) => {\n const { id } = doc\n let data = {\n ...newFileData,\n ...bulkUpdateData,\n }\n\n try {\n const originalDoc = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: 0,\n doc,\n draft: draftArg,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess: true,\n req,\n showHiddenFields: true,\n })\n\n await deleteAssociatedFiles({\n collectionConfig,\n config,\n doc,\n files: filesToUpload,\n overrideDelete: false,\n req,\n })\n\n if (args.collection.config.auth) {\n ensureUsernameOrEmail<TSlug>({\n authOptions: args.collection.config.auth,\n collectionSlug: args.collection.config.slug,\n data: args.data,\n operation: 'update',\n originalDoc,\n req: args.req,\n })\n }\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate<DeepPartial<DataFromCollectionSlug<TSlug>>>({\n id,\n collection: collectionConfig,\n context: req.context,\n data,\n doc: originalDoc,\n global: null,\n operation: 'update',\n overrideAccess,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeValidate.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n operation: 'update',\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Write files to local storage\n // /////////////////////////////////////\n\n if (!collectionConfig.upload.disableLocalStorage) {\n await uploadFiles(payload, filesToUpload, req)\n }\n\n // /////////////////////////////////////\n // beforeChange - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n operation: 'update',\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n let result = await beforeChange({\n id,\n collection: collectionConfig,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: doc,\n global: null,\n operation: 'update',\n req,\n skipValidation:\n shouldSaveDraft &&\n collectionConfig.versions.drafts &&\n !collectionConfig.versions.drafts.validate &&\n data._status !== 'published',\n })\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n if (!shouldSaveDraft || data._status === 'published') {\n result = await req.payload.db.updateOne({\n id,\n collection: collectionConfig.slug,\n data: result,\n locale,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n result = await saveVersion({\n id,\n collection: collectionConfig,\n docWithLocales: {\n ...result,\n createdAt: doc.createdAt,\n },\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: result,\n draft: draftArg,\n fallbackLocale: null,\n global: null,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: result,\n global: null,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })) || result\n }, Promise.resolve())\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n } catch (error) {\n errors.push({\n id,\n message: error.message,\n })\n }\n return null\n })\n\n const awaitedDocs = await Promise.all(promises)\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'update',\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["httpStatus","ensureUsernameOrEmail","executeAccess","combineQueries","validateQueryPaths","APIError","afterChange","afterRead","beforeChange","beforeValidate","deleteAssociatedFiles","generateFileData","unlinkTempFiles","uploadFiles","commitTransaction","initTransaction","killTransaction","buildVersionCollectionFields","appendVersionToQueryKey","saveVersion","buildAfterOperation","updateOperation","incomingArgs","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","depth","draft","draftArg","overrideAccess","overwriteExistingFiles","fallbackLocale","locale","payload","showHiddenFields","where","BAD_REQUEST","data","bulkUpdateData","shouldSaveDraft","Boolean","versions","drafts","accessResult","access","update","fullWhere","docs","versionsWhere","versionFields","query","db","queryDrafts","slug","pagination","find","limit","newFileData","files","filesToUpload","throwOnMissingFile","errors","promises","map","doc","id","originalDoc","global","overrideDelete","auth","authOptions","collectionSlug","upload","disableLocalStorage","result","docWithLocales","skipValidation","validate","_status","updateOne","createdAt","previousDoc","error","push","message","awaitedDocs","all","filter"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport httpStatus from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n} from '../config/types.js'\n\nimport { ensureUsernameOrEmail } from '../../auth/ensureUsernameOrEmail.js'\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { APIError } from '../../errors/index.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { uploadFiles } from '../../uploads/uploadFiles.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableVerificationEmail?: boolean\n draft?: boolean\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n where: Where\n}\n\nexport const updateOperation = async <TSlug extends CollectionSlug>(\n incomingArgs: Arguments<TSlug>,\n): Promise<BulkOperationResult<TSlug>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = await initTransaction(args.req)\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n await args.collection.config.hooks.beforeOperation.reduce(async (priorHook, hook) => {\n await priorHook\n\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'update',\n req: args.req,\n })) || args\n }, Promise.resolve())\n\n const {\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n showHiddenFields,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to update.\", httpStatus.BAD_REQUEST)\n }\n\n const { data: bulkUpdateData } = args\n const shouldSaveDraft = Boolean(draftArg && collectionConfig.versions.drafts)\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.update)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n const fullWhere = combineQueries(where, accessResult)\n\n let docs\n\n if (collectionConfig.versions?.drafts && shouldSaveDraft) {\n const versionsWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config),\n where: versionsWhere,\n })\n\n const query = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n locale,\n pagination: false,\n req,\n where: versionsWhere,\n })\n\n docs = query.docs\n } else {\n const query = await payload.db.find({\n collection: collectionConfig.slug,\n limit: 0,\n locale,\n pagination: false,\n req,\n where: fullWhere,\n })\n\n docs = query.docs\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data: newFileData, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data: bulkUpdateData,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const errors = []\n\n const promises = docs.map(async (doc) => {\n const { id } = doc\n let data = {\n ...newFileData,\n ...bulkUpdateData,\n }\n\n try {\n // /////////////////////////////////////\n // Handle potentially locked documents\n // /////////////////////////////////////\n\n await checkDocumentLockStatus({\n id,\n collectionSlug: collectionConfig.slug,\n lockErrorMessage: `Document with ID ${id} is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n const originalDoc = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: 0,\n doc,\n draft: draftArg,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess: true,\n req,\n showHiddenFields: true,\n })\n\n await deleteAssociatedFiles({\n collectionConfig,\n config,\n doc,\n files: filesToUpload,\n overrideDelete: false,\n req,\n })\n\n if (args.collection.config.auth) {\n ensureUsernameOrEmail<TSlug>({\n authOptions: args.collection.config.auth,\n collectionSlug: args.collection.config.slug,\n data: args.data,\n operation: 'update',\n originalDoc,\n req: args.req,\n })\n }\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate<DeepPartial<DataFromCollectionSlug<TSlug>>>({\n id,\n collection: collectionConfig,\n context: req.context,\n data,\n doc: originalDoc,\n global: null,\n operation: 'update',\n overrideAccess,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeValidate.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n operation: 'update',\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Write files to local storage\n // /////////////////////////////////////\n\n if (!collectionConfig.upload.disableLocalStorage) {\n await uploadFiles(payload, filesToUpload, req)\n }\n\n // /////////////////////////////////////\n // beforeChange - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.beforeChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n operation: 'update',\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n let result = await beforeChange({\n id,\n collection: collectionConfig,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: doc,\n global: null,\n operation: 'update',\n req,\n skipValidation:\n shouldSaveDraft &&\n collectionConfig.versions.drafts &&\n !collectionConfig.versions.drafts.validate &&\n data._status !== 'published',\n })\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n if (!shouldSaveDraft || data._status === 'published') {\n result = await req.payload.db.updateOne({\n id,\n collection: collectionConfig.slug,\n data: result,\n locale,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n result = await saveVersion({\n id,\n collection: collectionConfig,\n docWithLocales: {\n ...result,\n createdAt: doc.createdAt,\n },\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth,\n doc: result,\n draft: draftArg,\n fallbackLocale: null,\n global: null,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: result,\n global: null,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Collection\n // /////////////////////////////////////\n\n await collectionConfig.hooks.afterChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })) || result\n }, Promise.resolve())\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n } catch (error) {\n errors.push({\n id,\n message: error.message,\n })\n }\n return null\n })\n\n const awaitedDocs = await Promise.all(promises)\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'update',\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["httpStatus","ensureUsernameOrEmail","executeAccess","combineQueries","validateQueryPaths","APIError","afterChange","afterRead","beforeChange","beforeValidate","deleteAssociatedFiles","generateFileData","unlinkTempFiles","uploadFiles","checkDocumentLockStatus","commitTransaction","initTransaction","killTransaction","buildVersionCollectionFields","appendVersionToQueryKey","saveVersion","buildAfterOperation","updateOperation","incomingArgs","args","shouldCommit","req","collection","config","hooks","beforeOperation","reduce","priorHook","hook","context","operation","Promise","resolve","collectionConfig","depth","draft","draftArg","overrideAccess","overrideLock","overwriteExistingFiles","fallbackLocale","locale","payload","showHiddenFields","where","BAD_REQUEST","data","bulkUpdateData","shouldSaveDraft","Boolean","versions","drafts","accessResult","access","update","fullWhere","docs","versionsWhere","versionFields","query","db","queryDrafts","slug","pagination","find","limit","newFileData","files","filesToUpload","throwOnMissingFile","errors","promises","map","doc","id","collectionSlug","lockErrorMessage","originalDoc","global","overrideDelete","auth","authOptions","upload","disableLocalStorage","result","docWithLocales","skipValidation","validate","_status","updateOne","createdAt","previousDoc","error","push","message","awaitedDocs","all","filter"],"mappings":"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"}
@@ -11,7 +11,9 @@ export type Arguments<TSlug extends CollectionSlug> = {
11
11
  draft?: boolean;
12
12
  id: number | string;
13
13
  overrideAccess?: boolean;
14
+ overrideLock?: boolean;
14
15
  overwriteExistingFiles?: boolean;
16
+ publishSpecificLocale?: string;
15
17
  req: PayloadRequest;
16
18
  showHiddenFields?: boolean;
17
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"updateByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/updateByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,oBAAoB,CAAA;AAuB3B,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,KAAK,SAAS,cAAc,gBACtD,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAiXvC,CAAA"}
1
+ {"version":3,"file":"updateByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/updateByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAMhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,oBAAoB,CAAA;AAwB3B,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,KAAK,SAAS,cAAc,gBACtD,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CA6ZvC,CAAA"}
@@ -13,6 +13,7 @@ import { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js';
13
13
  import { generateFileData } from '../../uploads/generateFileData.js';
14
14
  import { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js';
15
15
  import { uploadFiles } from '../../uploads/uploadFiles.js';
16
+ import { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js';
16
17
  import { commitTransaction } from '../../utilities/commitTransaction.js';
17
18
  import { initTransaction } from '../../utilities/initTransaction.js';
18
19
  import { killTransaction } from '../../utilities/killTransaction.js';
@@ -36,7 +37,10 @@ export const updateByIDOperation = async (incomingArgs)=>{
36
37
  req: args.req
37
38
  }) || args;
38
39
  }, Promise.resolve());
39
- const { id, autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overwriteExistingFiles = false, req: { fallbackLocale, locale, payload: { config }, payload }, req, showHiddenFields } = args;
40
+ if (args.publishSpecificLocale) {
41
+ args.req.locale = args.publishSpecificLocale;
42
+ }
43
+ const { id, autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overrideLock, overwriteExistingFiles = false, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, showHiddenFields } = args;
40
44
  if (!id) {
41
45
  throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST);
42
46
  }
@@ -79,6 +83,16 @@ export const updateByIDOperation = async (incomingArgs)=>{
79
83
  if (!docWithLocales && hasWherePolicy) {
80
84
  throw new Forbidden(req.t);
81
85
  }
86
+ // /////////////////////////////////////
87
+ // Handle potentially locked documents
88
+ // /////////////////////////////////////
89
+ await checkDocumentLockStatus({
90
+ id,
91
+ collectionSlug: collectionConfig.slug,
92
+ lockErrorMessage: `Document with ID ${id} is currently locked by another user and cannot be updated.`,
93
+ overrideLock,
94
+ req
95
+ });
82
96
  const originalDoc = await afterRead({
83
97
  collection: collectionConfig,
84
98
  context: req.context,
@@ -177,17 +191,40 @@ export const updateByIDOperation = async (incomingArgs)=>{
177
191
  // /////////////////////////////////////
178
192
  // beforeChange - Fields
179
193
  // /////////////////////////////////////
180
- let result = await beforeChange({
194
+ let publishedDocWithLocales = docWithLocales;
195
+ let versionSnapshotResult;
196
+ const beforeChangeArgs = {
181
197
  id,
182
198
  collection: collectionConfig,
183
199
  context: req.context,
184
- data,
200
+ data: {
201
+ ...data,
202
+ id
203
+ },
185
204
  doc: originalDoc,
186
- docWithLocales,
205
+ docWithLocales: undefined,
187
206
  global: null,
188
207
  operation: 'update',
189
208
  req,
190
209
  skipValidation: shouldSaveDraft && collectionConfig.versions.drafts && !collectionConfig.versions.drafts.validate && data._status !== 'published'
210
+ };
211
+ if (publishSpecificLocale) {
212
+ publishedDocWithLocales = await getLatestCollectionVersion({
213
+ id,
214
+ config: collectionConfig,
215
+ payload,
216
+ published: true,
217
+ query: findOneArgs,
218
+ req
219
+ });
220
+ versionSnapshotResult = await beforeChange({
221
+ ...beforeChangeArgs,
222
+ docWithLocales
223
+ });
224
+ }
225
+ let result = await beforeChange({
226
+ ...beforeChangeArgs,
227
+ docWithLocales: publishedDocWithLocales
191
228
  });
192
229
  // /////////////////////////////////////
193
230
  // Handle potential password update
@@ -232,7 +269,9 @@ export const updateByIDOperation = async (incomingArgs)=>{
232
269
  },
233
270
  draft: shouldSaveDraft,
234
271
  payload,
235
- req
272
+ publishSpecificLocale,
273
+ req,
274
+ snapshot: versionSnapshotResult
236
275
  });
237
276
  }
238
277
  // /////////////////////////////////////