payload 3.89.0-internal.95c9cba → 3.90.0

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 (468) hide show
  1. package/dist/admin/forms/Field.d.ts +2 -0
  2. package/dist/admin/forms/Field.d.ts.map +1 -1
  3. package/dist/admin/forms/Field.js.map +1 -1
  4. package/dist/admin/forms/Form.d.ts +2 -0
  5. package/dist/admin/forms/Form.d.ts.map +1 -1
  6. package/dist/admin/forms/Form.js.map +1 -1
  7. package/dist/admin/functions/index.d.ts +3 -1
  8. package/dist/admin/functions/index.d.ts.map +1 -1
  9. package/dist/admin/functions/index.js.map +1 -1
  10. package/dist/admin/views/dashboard.d.ts +1 -1
  11. package/dist/admin/views/dashboard.d.ts.map +1 -1
  12. package/dist/admin/views/dashboard.js.map +1 -1
  13. package/dist/auth/applyUserReadAccess.d.ts +15 -0
  14. package/dist/auth/applyUserReadAccess.d.ts.map +1 -0
  15. package/dist/auth/applyUserReadAccess.js +41 -0
  16. package/dist/auth/applyUserReadAccess.js.map +1 -0
  17. package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.d.ts +4 -0
  18. package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.d.ts.map +1 -0
  19. package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.js +20 -0
  20. package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.js.map +1 -0
  21. package/dist/auth/baseFields/apiKey/encryptAPIKey.d.ts +4 -0
  22. package/dist/auth/baseFields/apiKey/encryptAPIKey.d.ts.map +1 -0
  23. package/dist/auth/baseFields/apiKey/encryptAPIKey.js +16 -0
  24. package/dist/auth/baseFields/apiKey/encryptAPIKey.js.map +1 -0
  25. package/dist/auth/baseFields/apiKey/index.d.ts +6 -0
  26. package/dist/auth/baseFields/apiKey/index.d.ts.map +1 -0
  27. package/dist/auth/baseFields/apiKey/index.js +112 -0
  28. package/dist/auth/baseFields/apiKey/index.js.map +1 -0
  29. package/dist/auth/baseFields/apiKey/omitAPIKey.d.ts +4 -0
  30. package/dist/auth/baseFields/apiKey/omitAPIKey.d.ts.map +1 -0
  31. package/dist/auth/baseFields/apiKey/omitAPIKey.js +8 -0
  32. package/dist/auth/baseFields/apiKey/omitAPIKey.js.map +1 -0
  33. package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.d.ts +4 -0
  34. package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.d.ts.map +1 -0
  35. package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.js +5 -0
  36. package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.js.map +1 -0
  37. package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.d.ts +4 -0
  38. package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.d.ts.map +1 -0
  39. package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.js +5 -0
  40. package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.js.map +1 -0
  41. package/dist/auth/baseFields/apiKey/setAPIKeyIndex.d.ts +4 -0
  42. package/dist/auth/baseFields/apiKey/setAPIKeyIndex.d.ts.map +1 -0
  43. package/dist/auth/baseFields/apiKey/setAPIKeyIndex.js +17 -0
  44. package/dist/auth/baseFields/apiKey/setAPIKeyIndex.js.map +1 -0
  45. package/dist/auth/baseFields/auth.d.ts +1 -0
  46. package/dist/auth/baseFields/auth.d.ts.map +1 -1
  47. package/dist/auth/baseFields/auth.js +9 -0
  48. package/dist/auth/baseFields/auth.js.map +1 -1
  49. package/dist/auth/defaultUnlockAccess.d.ts +3 -0
  50. package/dist/auth/defaultUnlockAccess.d.ts.map +1 -0
  51. package/dist/auth/defaultUnlockAccess.js +8 -0
  52. package/dist/auth/defaultUnlockAccess.js.map +1 -0
  53. package/dist/auth/endpoints/index.d.ts +1 -0
  54. package/dist/auth/endpoints/index.d.ts.map +1 -1
  55. package/dist/auth/endpoints/index.js +8 -0
  56. package/dist/auth/endpoints/index.js.map +1 -1
  57. package/dist/auth/endpoints/revealAPIKey.d.ts +7 -0
  58. package/dist/auth/endpoints/revealAPIKey.d.ts.map +1 -0
  59. package/dist/auth/endpoints/revealAPIKey.js +120 -0
  60. package/dist/auth/endpoints/revealAPIKey.js.map +1 -0
  61. package/dist/auth/executeAccess.d.ts +3 -1
  62. package/dist/auth/executeAccess.d.ts.map +1 -1
  63. package/dist/auth/executeAccess.js +2 -1
  64. package/dist/auth/executeAccess.js.map +1 -1
  65. package/dist/auth/getAuthFields.d.ts +1 -1
  66. package/dist/auth/getAuthFields.d.ts.map +1 -1
  67. package/dist/auth/getAuthFields.js +7 -4
  68. package/dist/auth/getAuthFields.js.map +1 -1
  69. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  70. package/dist/auth/getFieldsToSign.js +17 -10
  71. package/dist/auth/getFieldsToSign.js.map +1 -1
  72. package/dist/auth/getFieldsToSign.spec.js +114 -0
  73. package/dist/auth/getFieldsToSign.spec.js.map +1 -0
  74. package/dist/auth/jwt.d.ts.map +1 -1
  75. package/dist/auth/jwt.js +2 -0
  76. package/dist/auth/jwt.js.map +1 -1
  77. package/dist/auth/jwt.spec.js +24 -0
  78. package/dist/auth/jwt.spec.js.map +1 -0
  79. package/dist/auth/jwtAuth.d.ts +9 -0
  80. package/dist/auth/jwtAuth.d.ts.map +1 -0
  81. package/dist/auth/jwtAuth.js +8 -0
  82. package/dist/auth/jwtAuth.js.map +1 -0
  83. package/dist/auth/operations/auth.d.ts.map +1 -1
  84. package/dist/auth/operations/auth.js +2 -1
  85. package/dist/auth/operations/auth.js.map +1 -1
  86. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  87. package/dist/auth/operations/forgotPassword.js +95 -7
  88. package/dist/auth/operations/forgotPassword.js.map +1 -1
  89. package/dist/auth/operations/local/auth.js +3 -1
  90. package/dist/auth/operations/local/auth.js.map +1 -1
  91. package/dist/auth/operations/login.d.ts.map +1 -1
  92. package/dist/auth/operations/login.js +48 -26
  93. package/dist/auth/operations/login.js.map +1 -1
  94. package/dist/auth/operations/refresh.d.ts.map +1 -1
  95. package/dist/auth/operations/refresh.js +32 -9
  96. package/dist/auth/operations/refresh.js.map +1 -1
  97. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  98. package/dist/auth/operations/registerFirstUser.js +3 -4
  99. package/dist/auth/operations/registerFirstUser.js.map +1 -1
  100. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  101. package/dist/auth/operations/resetPassword.js +31 -22
  102. package/dist/auth/operations/resetPassword.js.map +1 -1
  103. package/dist/auth/operations/unlock.d.ts.map +1 -1
  104. package/dist/auth/operations/unlock.js +1 -0
  105. package/dist/auth/operations/unlock.js.map +1 -1
  106. package/dist/auth/strategies/apiKey.d.ts.map +1 -1
  107. package/dist/auth/strategies/apiKey.js +15 -1
  108. package/dist/auth/strategies/apiKey.js.map +1 -1
  109. package/dist/auth/strategies/jwt.d.ts.map +1 -1
  110. package/dist/auth/strategies/jwt.js +61 -10
  111. package/dist/auth/strategies/jwt.js.map +1 -1
  112. package/dist/auth/strategies/jwt.spec.js +281 -0
  113. package/dist/auth/strategies/jwt.spec.js.map +1 -0
  114. package/dist/auth/strategies/local/authenticate.d.ts +5 -1
  115. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  116. package/dist/auth/strategies/local/authenticate.js +8 -3
  117. package/dist/auth/strategies/local/authenticate.js.map +1 -1
  118. package/dist/auth/strategies/local/authenticate.spec.js +37 -10
  119. package/dist/auth/strategies/local/authenticate.spec.js.map +1 -1
  120. package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts +9 -1
  121. package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
  122. package/dist/auth/strategies/local/generatePasswordSaltHash.js +61 -34
  123. package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
  124. package/dist/auth/types.d.ts +16 -1
  125. package/dist/auth/types.d.ts.map +1 -1
  126. package/dist/auth/types.js.map +1 -1
  127. package/dist/collections/config/client.d.ts +1 -0
  128. package/dist/collections/config/client.d.ts.map +1 -1
  129. package/dist/collections/config/client.js +3 -0
  130. package/dist/collections/config/client.js.map +1 -1
  131. package/dist/collections/config/defaults.d.ts.map +1 -1
  132. package/dist/collections/config/defaults.js +4 -2
  133. package/dist/collections/config/defaults.js.map +1 -1
  134. package/dist/collections/config/sanitize.d.ts.map +1 -1
  135. package/dist/collections/config/sanitize.js +17 -6
  136. package/dist/collections/config/sanitize.js.map +1 -1
  137. package/dist/collections/endpoints/index.d.ts +1 -0
  138. package/dist/collections/endpoints/index.d.ts.map +1 -1
  139. package/dist/collections/endpoints/index.js +6 -5
  140. package/dist/collections/endpoints/index.js.map +1 -1
  141. package/dist/collections/operations/create.d.ts.map +1 -1
  142. package/dist/collections/operations/create.js +105 -8
  143. package/dist/collections/operations/create.js.map +1 -1
  144. package/dist/collections/operations/deleteByID.js +13 -13
  145. package/dist/collections/operations/deleteByID.js.map +1 -1
  146. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  147. package/dist/collections/operations/findDistinct.js +96 -18
  148. package/dist/collections/operations/findDistinct.js.map +1 -1
  149. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  150. package/dist/collections/operations/restoreVersion.js +47 -13
  151. package/dist/collections/operations/restoreVersion.js.map +1 -1
  152. package/dist/collections/operations/update.d.ts.map +1 -1
  153. package/dist/collections/operations/update.js +123 -23
  154. package/dist/collections/operations/update.js.map +1 -1
  155. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  156. package/dist/collections/operations/updateByID.js +62 -2
  157. package/dist/collections/operations/updateByID.js.map +1 -1
  158. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  159. package/dist/collections/operations/utilities/update.js +71 -15
  160. package/dist/collections/operations/utilities/update.js.map +1 -1
  161. package/dist/config/orderable/index.d.ts.map +1 -1
  162. package/dist/config/orderable/index.js +67 -14
  163. package/dist/config/orderable/index.js.map +1 -1
  164. package/dist/config/sanitize.d.ts.map +1 -1
  165. package/dist/config/sanitize.js +1 -1
  166. package/dist/config/sanitize.js.map +1 -1
  167. package/dist/config/types.d.ts +13 -1
  168. package/dist/config/types.d.ts.map +1 -1
  169. package/dist/config/types.js.map +1 -1
  170. package/dist/database/getLocalizedPaths.d.ts +2 -1
  171. package/dist/database/getLocalizedPaths.d.ts.map +1 -1
  172. package/dist/database/getLocalizedPaths.js +12 -3
  173. package/dist/database/getLocalizedPaths.js.map +1 -1
  174. package/dist/database/isNestedRelationshipQuery.d.ts +9 -0
  175. package/dist/database/isNestedRelationshipQuery.d.ts.map +1 -0
  176. package/dist/database/isNestedRelationshipQuery.js +14 -0
  177. package/dist/database/isNestedRelationshipQuery.js.map +1 -0
  178. package/dist/database/prefixWherePaths.d.ts +6 -0
  179. package/dist/database/prefixWherePaths.d.ts.map +1 -0
  180. package/dist/database/prefixWherePaths.js +19 -0
  181. package/dist/database/prefixWherePaths.js.map +1 -0
  182. package/dist/database/prefixWherePaths.spec.js +46 -0
  183. package/dist/database/prefixWherePaths.spec.js.map +1 -0
  184. package/dist/database/queryValidation/validateQueryPaths.d.ts +2 -1
  185. package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
  186. package/dist/database/queryValidation/validateQueryPaths.js +4 -1
  187. package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
  188. package/dist/database/queryValidation/validateSearchParams.d.ts +2 -1
  189. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  190. package/dist/database/queryValidation/validateSearchParams.js +82 -4
  191. package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
  192. package/dist/database/types.d.ts +5 -0
  193. package/dist/database/types.d.ts.map +1 -1
  194. package/dist/database/types.js.map +1 -1
  195. package/dist/email/normalizeSendEmailOptions.js.map +1 -1
  196. package/dist/email/types.d.ts +4 -1
  197. package/dist/email/types.d.ts.map +1 -1
  198. package/dist/email/types.js.map +1 -1
  199. package/dist/exports/internal.d.ts +7 -0
  200. package/dist/exports/internal.d.ts.map +1 -1
  201. package/dist/exports/internal.js +7 -1
  202. package/dist/exports/internal.js.map +1 -1
  203. package/dist/exports/shared.d.ts +3 -0
  204. package/dist/exports/shared.d.ts.map +1 -1
  205. package/dist/exports/shared.js +3 -0
  206. package/dist/exports/shared.js.map +1 -1
  207. package/dist/fields/config/types.d.ts +7 -5
  208. package/dist/fields/config/types.d.ts.map +1 -1
  209. package/dist/fields/config/types.js.map +1 -1
  210. package/dist/fields/hooks/beforeChange/index.d.ts +7 -1
  211. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  212. package/dist/fields/hooks/beforeChange/index.js +4 -2
  213. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  214. package/dist/fields/hooks/beforeChange/index.spec.js +206 -0
  215. package/dist/fields/hooks/beforeChange/index.spec.js.map +1 -0
  216. package/dist/fields/hooks/beforeChange/promise.d.ts +2 -1
  217. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  218. package/dist/fields/hooks/beforeChange/promise.js +51 -9
  219. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  220. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -1
  221. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  222. package/dist/fields/hooks/beforeChange/traverseFields.js +3 -2
  223. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  224. package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
  225. package/dist/fields/hooks/beforeDuplicate/promise.js +4 -0
  226. package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
  227. package/dist/fields/hooks/beforeValidate/getFallbackValue.d.ts +2 -1
  228. package/dist/fields/hooks/beforeValidate/getFallbackValue.d.ts.map +1 -1
  229. package/dist/fields/hooks/beforeValidate/getFallbackValue.js +2 -2
  230. package/dist/fields/hooks/beforeValidate/getFallbackValue.js.map +1 -1
  231. package/dist/fields/hooks/beforeValidate/index.d.ts +6 -1
  232. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  233. package/dist/fields/hooks/beforeValidate/index.js +3 -1
  234. package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
  235. package/dist/fields/hooks/beforeValidate/index.spec.js +90 -0
  236. package/dist/fields/hooks/beforeValidate/index.spec.js.map +1 -0
  237. package/dist/fields/hooks/beforeValidate/promise.d.ts +6 -1
  238. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  239. package/dist/fields/hooks/beforeValidate/promise.js +23 -8
  240. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  241. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +6 -1
  242. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  243. package/dist/fields/hooks/beforeValidate/traverseFields.js +3 -1
  244. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
  245. package/dist/fields/validations.d.ts.map +1 -1
  246. package/dist/fields/validations.js +3 -1
  247. package/dist/fields/validations.js.map +1 -1
  248. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  249. package/dist/globals/operations/restoreVersion.js +45 -11
  250. package/dist/globals/operations/restoreVersion.js.map +1 -1
  251. package/dist/globals/operations/update.d.ts.map +1 -1
  252. package/dist/globals/operations/update.js +95 -16
  253. package/dist/globals/operations/update.js.map +1 -1
  254. package/dist/index.bundled.d.ts +146 -48
  255. package/dist/index.d.ts +4 -1
  256. package/dist/index.d.ts.map +1 -1
  257. package/dist/index.js +3 -2
  258. package/dist/index.js.map +1 -1
  259. package/dist/preferences/config.d.ts.map +1 -1
  260. package/dist/preferences/config.js +2 -1
  261. package/dist/preferences/config.js.map +1 -1
  262. package/dist/query-presets/access.d.ts.map +1 -1
  263. package/dist/query-presets/access.js +2 -1
  264. package/dist/query-presets/access.js.map +1 -1
  265. package/dist/queues/config/collection.d.ts.map +1 -1
  266. package/dist/queues/config/collection.js +6 -0
  267. package/dist/queues/config/collection.js.map +1 -1
  268. package/dist/queues/config/types/index.d.ts +4 -1
  269. package/dist/queues/config/types/index.d.ts.map +1 -1
  270. package/dist/queues/config/types/index.js.map +1 -1
  271. package/dist/queues/endpoints/handleSchedules.d.ts.map +1 -1
  272. package/dist/queues/endpoints/handleSchedules.js +2 -1
  273. package/dist/queues/endpoints/handleSchedules.js.map +1 -1
  274. package/dist/queues/endpoints/run.d.ts.map +1 -1
  275. package/dist/queues/endpoints/run.js +2 -1
  276. package/dist/queues/endpoints/run.js.map +1 -1
  277. package/dist/uploads/assertClientUploadAccess.d.ts +7 -0
  278. package/dist/uploads/assertClientUploadAccess.d.ts.map +1 -0
  279. package/dist/uploads/assertClientUploadAccess.js +27 -0
  280. package/dist/uploads/assertClientUploadAccess.js.map +1 -0
  281. package/dist/uploads/assertClientUploadAllowed.d.ts +11 -0
  282. package/dist/uploads/assertClientUploadAllowed.d.ts.map +1 -0
  283. package/dist/uploads/assertClientUploadAllowed.js +46 -0
  284. package/dist/uploads/assertClientUploadAllowed.js.map +1 -0
  285. package/dist/uploads/assertClientUploadAllowed.spec.js +91 -0
  286. package/dist/uploads/assertClientUploadAllowed.spec.js.map +1 -0
  287. package/dist/uploads/checkFileRestrictions.d.ts +4 -1
  288. package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
  289. package/dist/uploads/checkFileRestrictions.js +66 -26
  290. package/dist/uploads/checkFileRestrictions.js.map +1 -1
  291. package/dist/uploads/clientUploadReceipt.d.ts +23 -0
  292. package/dist/uploads/clientUploadReceipt.d.ts.map +1 -0
  293. package/dist/uploads/clientUploadReceipt.js +55 -0
  294. package/dist/uploads/clientUploadReceipt.js.map +1 -0
  295. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  296. package/dist/uploads/deleteAssociatedFiles.js +33 -8
  297. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  298. package/dist/uploads/deleteAssociatedFiles.spec.js +124 -0
  299. package/dist/uploads/deleteAssociatedFiles.spec.js.map +1 -0
  300. package/dist/uploads/detectSvgFromXml.d.ts +1 -3
  301. package/dist/uploads/detectSvgFromXml.d.ts.map +1 -1
  302. package/dist/uploads/detectSvgFromXml.js +3 -40
  303. package/dist/uploads/detectSvgFromXml.js.map +1 -1
  304. package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
  305. package/dist/uploads/endpoints/getFile.js +5 -3
  306. package/dist/uploads/endpoints/getFile.js.map +1 -1
  307. package/dist/uploads/fetchAPI-multipart/handlers.d.ts +2 -2
  308. package/dist/uploads/fetchAPI-multipart/handlers.d.ts.map +1 -1
  309. package/dist/uploads/fetchAPI-multipart/handlers.js +18 -5
  310. package/dist/uploads/fetchAPI-multipart/handlers.js.map +1 -1
  311. package/dist/uploads/fetchAPI-multipart/index.d.ts.map +1 -1
  312. package/dist/uploads/fetchAPI-multipart/index.js +24 -2
  313. package/dist/uploads/fetchAPI-multipart/index.js.map +1 -1
  314. package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts +0 -6
  315. package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  316. package/dist/uploads/fetchAPI-multipart/processMultipart.js +146 -126
  317. package/dist/uploads/fetchAPI-multipart/processMultipart.js.map +1 -1
  318. package/dist/uploads/fetchAPI-multipart/processMultipart.spec.js +663 -0
  319. package/dist/uploads/fetchAPI-multipart/processMultipart.spec.js.map +1 -0
  320. package/dist/uploads/generateFileData.d.ts +3 -1
  321. package/dist/uploads/generateFileData.d.ts.map +1 -1
  322. package/dist/uploads/generateFileData.js +29 -16
  323. package/dist/uploads/generateFileData.js.map +1 -1
  324. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  325. package/dist/uploads/getBaseFields.js +3 -1
  326. package/dist/uploads/getBaseFields.js.map +1 -1
  327. package/dist/uploads/getExternalFile.d.ts +1 -1
  328. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  329. package/dist/uploads/getExternalFile.js +60 -15
  330. package/dist/uploads/getExternalFile.js.map +1 -1
  331. package/dist/uploads/getFileFromClientUpload.d.ts +2 -2
  332. package/dist/uploads/getFileFromClientUpload.d.ts.map +1 -1
  333. package/dist/uploads/getFileFromClientUpload.js +4 -4
  334. package/dist/uploads/getFileFromClientUpload.js.map +1 -1
  335. package/dist/uploads/getFileFromClientUpload.spec.js +62 -0
  336. package/dist/uploads/getFileFromClientUpload.spec.js.map +1 -1
  337. package/dist/uploads/getFileTypeFallback.d.ts.map +1 -1
  338. package/dist/uploads/getFileTypeFallback.js +3 -1
  339. package/dist/uploads/getFileTypeFallback.js.map +1 -1
  340. package/dist/uploads/getFileTypeIdentity.d.ts +19 -0
  341. package/dist/uploads/getFileTypeIdentity.d.ts.map +1 -0
  342. package/dist/uploads/getFileTypeIdentity.js +34 -0
  343. package/dist/uploads/getFileTypeIdentity.js.map +1 -0
  344. package/dist/uploads/getFileTypeIdentity.spec.js +43 -0
  345. package/dist/uploads/getFileTypeIdentity.spec.js.map +1 -0
  346. package/dist/uploads/isProcessableImage.d.ts +2 -0
  347. package/dist/uploads/isProcessableImage.d.ts.map +1 -0
  348. package/dist/uploads/isProcessableImage.js +7 -0
  349. package/dist/uploads/isProcessableImage.js.map +1 -0
  350. package/dist/uploads/safeFetch.d.ts.map +1 -1
  351. package/dist/uploads/safeFetch.js +3 -2
  352. package/dist/uploads/safeFetch.js.map +1 -1
  353. package/dist/uploads/sanitizeUploadData.d.ts +26 -0
  354. package/dist/uploads/sanitizeUploadData.d.ts.map +1 -0
  355. package/dist/uploads/sanitizeUploadData.js +159 -0
  356. package/dist/uploads/sanitizeUploadData.js.map +1 -0
  357. package/dist/uploads/sanitizeUploadData.spec.js +255 -0
  358. package/dist/uploads/sanitizeUploadData.spec.js.map +1 -0
  359. package/dist/uploads/types.d.ts +11 -3
  360. package/dist/uploads/types.d.ts.map +1 -1
  361. package/dist/uploads/types.js.map +1 -1
  362. package/dist/uploads/unlinkClientUploadTempFile.d.ts +20 -0
  363. package/dist/uploads/unlinkClientUploadTempFile.d.ts.map +1 -0
  364. package/dist/uploads/unlinkClientUploadTempFile.js +30 -0
  365. package/dist/uploads/unlinkClientUploadTempFile.js.map +1 -0
  366. package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
  367. package/dist/uploads/unlinkTempFiles.js +7 -9
  368. package/dist/uploads/unlinkTempFiles.js.map +1 -1
  369. package/dist/uploads/unlinkTempFiles.spec.js +61 -1
  370. package/dist/uploads/unlinkTempFiles.spec.js.map +1 -1
  371. package/dist/uploads/uploadContentSecurityPolicy.d.ts +2 -0
  372. package/dist/uploads/uploadContentSecurityPolicy.d.ts.map +1 -0
  373. package/dist/uploads/uploadContentSecurityPolicy.js +3 -0
  374. package/dist/uploads/uploadContentSecurityPolicy.js.map +1 -0
  375. package/dist/uploads/validateISOBaseMediaFile.d.ts +4 -0
  376. package/dist/uploads/validateISOBaseMediaFile.d.ts.map +1 -0
  377. package/dist/uploads/validateISOBaseMediaFile.js +91 -0
  378. package/dist/uploads/validateISOBaseMediaFile.js.map +1 -0
  379. package/dist/uploads/validateISOBaseMediaFile.spec.js +130 -0
  380. package/dist/uploads/validateISOBaseMediaFile.spec.js.map +1 -0
  381. package/dist/uploads/validateSvg.d.ts +10 -4
  382. package/dist/uploads/validateSvg.d.ts.map +1 -1
  383. package/dist/uploads/validateSvg.js +280 -40
  384. package/dist/uploads/validateSvg.js.map +1 -1
  385. package/dist/uploads/validateSvg.spec.js +123 -0
  386. package/dist/uploads/validateSvg.spec.js.map +1 -0
  387. package/dist/uploads/validateUploadFilename.d.ts +3 -0
  388. package/dist/uploads/validateUploadFilename.d.ts.map +1 -0
  389. package/dist/uploads/validateUploadFilename.js +13 -0
  390. package/dist/uploads/validateUploadFilename.js.map +1 -0
  391. package/dist/uploads/validateUploadFilename.spec.js +24 -0
  392. package/dist/uploads/validateUploadFilename.spec.js.map +1 -0
  393. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  394. package/dist/utilities/addDataAndFileToRequest.js +28 -1
  395. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  396. package/dist/utilities/addDataAndFileToRequest.spec.js +158 -0
  397. package/dist/utilities/addDataAndFileToRequest.spec.js.map +1 -1
  398. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  399. package/dist/utilities/createPayloadRequest.js +2 -1
  400. package/dist/utilities/createPayloadRequest.js.map +1 -1
  401. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  402. package/dist/utilities/deepCopyObject.js +110 -19
  403. package/dist/utilities/deepCopyObject.js.map +1 -1
  404. package/dist/utilities/deepCopyObject.spec.js +216 -0
  405. package/dist/utilities/deepCopyObject.spec.js.map +1 -0
  406. package/dist/utilities/fieldPath.d.ts +13 -0
  407. package/dist/utilities/fieldPath.d.ts.map +1 -0
  408. package/dist/utilities/fieldPath.js +51 -0
  409. package/dist/utilities/fieldPath.js.map +1 -0
  410. package/dist/utilities/fieldPath.spec.js +155 -0
  411. package/dist/utilities/fieldPath.spec.js.map +1 -0
  412. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  413. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +2 -0
  414. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  415. package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
  416. package/dist/utilities/getObjectDotNotation.js +7 -1
  417. package/dist/utilities/getObjectDotNotation.js.map +1 -1
  418. package/dist/utilities/getObjectDotNotation.spec.js +33 -0
  419. package/dist/utilities/getObjectDotNotation.spec.js.map +1 -0
  420. package/dist/utilities/getSafeRedirect.spec.js +14 -0
  421. package/dist/utilities/getSafeRedirect.spec.js.map +1 -1
  422. package/dist/utilities/getTopLevelFieldNames.d.ts +2 -0
  423. package/dist/utilities/getTopLevelFieldNames.d.ts.map +1 -0
  424. package/dist/utilities/getTopLevelFieldNames.js +3 -0
  425. package/dist/utilities/getTopLevelFieldNames.js.map +1 -0
  426. package/dist/utilities/getTopLevelFieldNames.spec.js +18 -0
  427. package/dist/utilities/getTopLevelFieldNames.spec.js.map +1 -0
  428. package/dist/utilities/handleEndpoints.js +1 -1
  429. package/dist/utilities/handleEndpoints.js.map +1 -1
  430. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  431. package/dist/utilities/parseParams/index.js +3 -1
  432. package/dist/utilities/parseParams/index.js.map +1 -1
  433. package/dist/utilities/parseParams/index.spec.js +8 -0
  434. package/dist/utilities/parseParams/index.spec.js.map +1 -1
  435. package/dist/utilities/traverseFields.d.ts.map +1 -1
  436. package/dist/utilities/traverseFields.js +5 -14
  437. package/dist/utilities/traverseFields.js.map +1 -1
  438. package/dist/utilities/unflatten.d.ts.map +1 -1
  439. package/dist/utilities/unflatten.js +21 -9
  440. package/dist/utilities/unflatten.js.map +1 -1
  441. package/dist/utilities/unflatten.spec.js +38 -0
  442. package/dist/utilities/unflatten.spec.js.map +1 -0
  443. package/dist/utilities/wrapInternalEndpoints.d.ts.map +1 -1
  444. package/dist/utilities/wrapInternalEndpoints.js +10 -3
  445. package/dist/utilities/wrapInternalEndpoints.js.map +1 -1
  446. package/dist/utilities/wrapInternalEndpoints.spec.js +124 -0
  447. package/dist/utilities/wrapInternalEndpoints.spec.js.map +1 -0
  448. package/dist/versions/allLocalesPublicationStatus.d.ts +38 -0
  449. package/dist/versions/allLocalesPublicationStatus.d.ts.map +1 -0
  450. package/dist/versions/allLocalesPublicationStatus.js +57 -0
  451. package/dist/versions/allLocalesPublicationStatus.js.map +1 -0
  452. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  453. package/dist/versions/getLatestGlobalVersion.js +10 -2
  454. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  455. package/dist/versions/getRestoredStatusesToAuthorize.d.ts +9 -0
  456. package/dist/versions/getRestoredStatusesToAuthorize.d.ts.map +1 -0
  457. package/dist/versions/getRestoredStatusesToAuthorize.js +22 -0
  458. package/dist/versions/getRestoredStatusesToAuthorize.js.map +1 -0
  459. package/dist/versions/getRestoredStatusesToAuthorize.spec.js +50 -0
  460. package/dist/versions/getRestoredStatusesToAuthorize.spec.js.map +1 -0
  461. package/dist/versions/schedule/job.d.ts +2 -2
  462. package/dist/versions/schedule/job.d.ts.map +1 -1
  463. package/dist/versions/schedule/job.js +11 -7
  464. package/dist/versions/schedule/job.js.map +1 -1
  465. package/dist/versions/schedule/types.d.ts +5 -1
  466. package/dist/versions/schedule/types.d.ts.map +1 -1
  467. package/dist/versions/schedule/types.js.map +1 -1
  468. package/package.json +4 -2
@@ -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,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAQ3B,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAmBtE,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,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAA;CACb,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAElD,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CA2S7C,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;AAQhD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAQ3B,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAgCtE,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,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAA;CACb,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAElD,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAia7C,CAAA"}
@@ -1,4 +1,7 @@
1
1
  import { status as httpStatus } from 'http-status';
2
+ import { randomUUID } from 'node:crypto';
3
+ import fs from 'node:fs/promises';
4
+ import path from 'node:path';
2
5
  import { executeAccess } from '../../auth/executeAccess.js';
3
6
  import { combineQueries } from '../../database/combineQueries.js';
4
7
  import { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js';
@@ -6,14 +9,17 @@ import { validateSortQuery } from '../../database/queryValidation/validateSortQu
6
9
  import { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js';
7
10
  import { APIError } from '../../errors/index.js';
8
11
  import { generateFileData } from '../../uploads/generateFileData.js';
12
+ import { getLocalizedUploadProperties, getUploadDestination, mergeUploadDataWithDocument, sanitizeUploadData } from '../../uploads/sanitizeUploadData.js';
9
13
  import { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js';
10
14
  import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
11
15
  import { commitTransaction } from '../../utilities/commitTransaction.js';
12
- import { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js';
16
+ import { hasDraftsEnabled, hasLocalizeStatusEnabled } from '../../utilities/getVersionsConfig.js';
13
17
  import { initTransaction } from '../../utilities/initTransaction.js';
14
18
  import { isErrorPublic } from '../../utilities/isErrorPublic.js';
19
+ import { isolateObjectProperty } from '../../utilities/isolateObjectProperty.js';
15
20
  import { killTransaction } from '../../utilities/killTransaction.js';
16
21
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
22
+ import { getAllLocalesPublicationStatus, normalizeAllLocalesPublicationStatus, reconcileAllLocalesPublicationStatus, validateAllLocalesPublicationFlags } from '../../versions/allLocalesPublicationStatus.js';
17
23
  import { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js';
18
24
  import { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js';
19
25
  import { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js';
@@ -29,6 +35,39 @@ export const updateOperation = async (incomingArgs)=>{
29
35
  }
30
36
  try {
31
37
  const shouldCommit = !args.disableTransaction && await initTransaction(args.req);
38
+ if (args.collection.config.upload && !args.overrideAccess) {
39
+ const { objectKey, prefix } = getUploadDestination({
40
+ data: args.data,
41
+ file: args.req.file
42
+ });
43
+ const data = sanitizeUploadData(args.data, 'update');
44
+ args = {
45
+ ...args,
46
+ data: typeof data === 'object' && data !== null ? {
47
+ ...data,
48
+ ...prefix !== undefined ? {
49
+ prefix
50
+ } : {},
51
+ ...objectKey !== undefined ? {
52
+ _objectKey: objectKey
53
+ } : {}
54
+ } : data
55
+ };
56
+ }
57
+ validateAllLocalesPublicationFlags({
58
+ publishAllLocales: args.publishAllLocales,
59
+ unpublishAllLocales: args.unpublishAllLocales
60
+ });
61
+ const initialCollectionConfig = args.collection.config;
62
+ const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({
63
+ hasLocalizedStatus: Boolean(args.req.payload.config.localization && hasLocalizeStatusEnabled(initialCollectionConfig)),
64
+ publishAllLocales: !args.draft && (args.publishAllLocales ?? !hasLocalizeStatusEnabled(initialCollectionConfig)),
65
+ unpublishAllLocales: Boolean(args.unpublishAllLocales)
66
+ });
67
+ const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({
68
+ data: args.data,
69
+ status: initialAllLocalesPublicationStatus
70
+ });
32
71
  // /////////////////////////////////////
33
72
  // beforeOperation - Collection
34
73
  // /////////////////////////////////////
@@ -38,11 +77,28 @@ export const updateOperation = async (incomingArgs)=>{
38
77
  operation: 'update',
39
78
  overrideAccess: args.overrideAccess
40
79
  });
41
- const { autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, limit = 0, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, sort: incomingSort, trash = false, unpublishAllLocales, where } = args;
80
+ const { autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, limit = 0, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales: publishAllLocalesArg, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, sort: incomingSort, trash = false, unpublishAllLocales: unpublishAllLocalesArg, where } = args;
42
81
  if (!where) {
43
82
  throw new APIError("Missing 'where' query of documents to update.", httpStatus.BAD_REQUEST);
44
83
  }
45
84
  const { data: bulkUpdateData } = args;
85
+ validateAllLocalesPublicationFlags({
86
+ publishAllLocales: publishAllLocalesArg,
87
+ unpublishAllLocales: unpublishAllLocalesArg
88
+ });
89
+ const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({
90
+ hasLocalizedStatus: Boolean(config.localization && hasLocalizeStatusEnabled(collectionConfig)),
91
+ publishAllLocales: !draftArg && (publishAllLocalesArg ?? !hasLocalizeStatusEnabled(collectionConfig)),
92
+ unpublishAllLocales: Boolean(unpublishAllLocalesArg)
93
+ });
94
+ const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({
95
+ data: bulkUpdateData,
96
+ intent: initialAllLocalesPublicationIntent,
97
+ status: requestedAllLocalesPublicationStatus
98
+ });
99
+ const publicationIntentSurvivedBeforeOperation = !requestedAllLocalesPublicationStatus || Boolean(allLocalesPublicationStatus);
100
+ const publishAllLocales = publicationIntentSurvivedBeforeOperation ? publishAllLocalesArg : false;
101
+ const unpublishAllLocales = publicationIntentSurvivedBeforeOperation ? unpublishAllLocalesArg : false;
46
102
  const shouldSaveDraft = Boolean(draftArg && hasDraftsEnabled(collectionConfig));
47
103
  // /////////////////////////////////////
48
104
  // Access
@@ -50,6 +106,7 @@ export const updateOperation = async (incomingArgs)=>{
50
106
  let accessResult;
51
107
  if (!overrideAccess) {
52
108
  accessResult = await executeAccess({
109
+ data: bulkUpdateData,
53
110
  req
54
111
  }, collectionConfig.access.update);
55
112
  }
@@ -129,10 +186,7 @@ export const updateOperation = async (incomingArgs)=>{
129
186
  });
130
187
  docs = query.docs;
131
188
  }
132
- // /////////////////////////////////////
133
- // Generate data for all files and sizes
134
- // /////////////////////////////////////
135
- const { data, files: filesToUpload } = await generateFileData({
189
+ const sharedGeneratedFileData = !collectionConfig.upload || overrideAccess && Boolean(req.file) ? await generateFileData({
136
190
  collection,
137
191
  config,
138
192
  data: bulkUpdateData,
@@ -140,16 +194,48 @@ export const updateOperation = async (incomingArgs)=>{
140
194
  overwriteExistingFiles,
141
195
  req,
142
196
  throwOnMissingFile: false
143
- });
197
+ }) : null;
144
198
  const errors = [];
145
- const promises = docs.map(async (docWithLocales)=>{
199
+ const processDocument = async (docWithLocales)=>{
146
200
  const { id } = docWithLocales;
201
+ let documentTempFilePath;
147
202
  try {
148
203
  // Each document gets its own transaction when singleTransaction is enabled
149
204
  let docShouldCommit = false;
150
205
  if (req.payload.db.bulkOperationsSingleTransaction) {
151
206
  docShouldCommit = await initTransaction(req);
152
207
  }
208
+ const documentFile = req.file ? {
209
+ ...req.file
210
+ } : undefined;
211
+ if (collectionConfig.upload && !overrideAccess && documentFile?.tempFilePath) {
212
+ const extension = path.extname(documentFile.tempFilePath);
213
+ documentTempFilePath = path.join(path.dirname(documentFile.tempFilePath), `${path.basename(documentFile.tempFilePath, extension)}-${randomUUID()}${extension}`);
214
+ await fs.copyFile(documentFile.tempFilePath, documentTempFilePath);
215
+ documentFile.tempFilePath = documentTempFilePath;
216
+ }
217
+ let documentReq = req;
218
+ if (collectionConfig.upload && sharedGeneratedFileData === null) {
219
+ documentReq = isolateObjectProperty(req, [
220
+ 'file',
221
+ 'payloadUploadSizes'
222
+ ]);
223
+ documentReq.file = documentFile;
224
+ documentReq.payloadUploadSizes = {};
225
+ }
226
+ const generatedFileData = sharedGeneratedFileData ?? await generateFileData({
227
+ collection,
228
+ config,
229
+ data: mergeUploadDataWithDocument(bulkUpdateData, docWithLocales, {
230
+ locale: locale === 'all' || !locale ? config.localization ? config.localization.defaultLocale : undefined : locale,
231
+ localizedProperties: getLocalizedUploadProperties(collectionConfig.flattenedFields)
232
+ }),
233
+ operation: 'update',
234
+ originalDoc: docWithLocales,
235
+ overwriteExistingFiles,
236
+ req: documentReq,
237
+ throwOnMissingFile: false
238
+ });
153
239
  const select = sanitizeSelect({
154
240
  fields: collectionConfig.flattenedFields,
155
241
  forceSelect: collectionConfig.forceSelect,
@@ -165,7 +251,7 @@ export const updateOperation = async (incomingArgs)=>{
165
251
  config,
166
252
  data: copyDataWithFreshRowIDs({
167
253
  config,
168
- data,
254
+ data: generatedFileData.data,
169
255
  existingDoc: docWithLocales,
170
256
  fields: collectionConfig.fields
171
257
  }),
@@ -173,7 +259,7 @@ export const updateOperation = async (incomingArgs)=>{
173
259
  docWithLocales,
174
260
  draftArg,
175
261
  fallbackLocale: fallbackLocale,
176
- filesToUpload,
262
+ filesToUpload: generatedFileData.files,
177
263
  locale: locale,
178
264
  overrideAccess: overrideAccess,
179
265
  overrideLock: overrideLock,
@@ -181,7 +267,7 @@ export const updateOperation = async (incomingArgs)=>{
181
267
  populate,
182
268
  publishAllLocales,
183
269
  publishSpecificLocale,
184
- req,
270
+ req: documentReq,
185
271
  select: select,
186
272
  showHiddenFields: showHiddenFields,
187
273
  unpublishAllLocales
@@ -209,25 +295,39 @@ export const updateOperation = async (incomingArgs)=>{
209
295
  isPublic,
210
296
  message: error instanceof Error ? error.message : 'Unknown error'
211
297
  });
298
+ } finally{
299
+ if (documentTempFilePath) {
300
+ await fs.rm(documentTempFilePath, {
301
+ force: true
302
+ }).catch((error)=>{
303
+ req.payload.logger.error({
304
+ err: error,
305
+ msg: 'Failed to remove temp file copy'
306
+ });
307
+ });
308
+ }
212
309
  }
213
310
  return null;
214
- });
215
- await unlinkTempFiles({
216
- collectionConfig,
217
- config,
218
- req
219
- });
220
- // Process sequentially when using single transaction mode to avoid shared state issues
221
- // Process in parallel when using one transaction for better performance
311
+ };
312
+ // Upload processing may mutate its temp file while cropping, so each document must finish
313
+ // before the next document starts. This only applies when an actual file is being written
314
+ // (`req.file`); metadata-only bulk updates use isolated per-document request state and can
315
+ // stay parallel. Other bulk updates retain their existing parallel behavior.
316
+ const processSequentially = req.payload.db.bulkOperationsSingleTransaction || Boolean(collectionConfig.upload && !overrideAccess && req.file);
222
317
  let awaitedDocs;
223
- if (req.payload.db.bulkOperationsSingleTransaction) {
318
+ if (processSequentially) {
224
319
  awaitedDocs = [];
225
- for (const promise of promises){
226
- awaitedDocs.push(await promise);
320
+ for (const doc of docs){
321
+ awaitedDocs.push(await processDocument(doc));
227
322
  }
228
323
  } else {
229
- awaitedDocs = await Promise.all(promises);
324
+ awaitedDocs = await Promise.all(docs.map(processDocument));
230
325
  }
326
+ await unlinkTempFiles({
327
+ collectionConfig,
328
+ config,
329
+ req
330
+ });
231
331
  let result = {
232
332
  docs: awaitedDocs.filter(Boolean),
233
333
  errors
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError } from '../../errors/index.js'\nimport { type CollectionSlug, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { isErrorPublic } from '../../utilities/isErrorPublic.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { copyDataWithFreshRowIDs } from './utilities/copyDataWithFreshRowIDs.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n limit?: number\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n /**\n * Sort the documents, can be a string or an array of strings\n * @example '-createdAt' // Sort DESC by createdAt\n * @example ['group', '-createdAt'] // sort by 2 fields, ASC group and DESC createdAt\n */\n sort?: Sort\n trash?: boolean\n unpublishAllLocales?: boolean\n where: Where\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n if (args.collection.config.disableBulkEdit && !args.overrideAccess) {\n throw new APIError(`Collection ${args.collection.config.slug} has disabled bulk edit`, 403)\n }\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n limit = 0,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n trash = false,\n unpublishAllLocales,\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 && hasDraftsEnabled(collectionConfig))\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: overrideAccess!,\n req,\n where,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n let fullWhere = combineQueries(where, accessResult!)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof bulkUpdateData === 'object' &&\n bulkUpdateData !== null &&\n 'deletedAt' in bulkUpdateData &&\n bulkUpdateData.deletedAt != null\n\n // Enforce delete access if performing a soft-delete (trash)\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess(\n { data: bulkUpdateData, req },\n collectionConfig.access.delete,\n )\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n const sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort || collectionConfig.defaultSort,\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n sort,\n })\n\n let docs\n\n if (hasDraftsEnabled(collectionConfig) && (shouldSaveDraft || isTrashAttempt)) {\n const versionsWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n const query = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort: getQueryDraftsSort({ collectionConfig, sort }),\n where: versionsWhere,\n })\n\n docs = query.docs\n } else {\n const query = await payload.db.find({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort,\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, 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: BulkOperationResult<TSlug, TSelect>['errors'] = []\n\n const promises = docs.map(async (docWithLocales) => {\n const { id } = docWithLocales\n\n try {\n // Each document gets its own transaction when singleTransaction is enabled\n let docShouldCommit = false\n if (req.payload.db.bulkOperationsSingleTransaction) {\n docShouldCommit = await initTransaction(req)\n }\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n let updatedDoc = await updateDocument({\n id,\n autosave,\n collectionConfig,\n config,\n data: copyDataWithFreshRowIDs({\n config,\n data,\n existingDoc: docWithLocales,\n fields: collectionConfig.fields,\n }),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n updatedDoc = { ...updatedDoc, collection: collectionConfig.slug }\n }\n\n if (docShouldCommit) {\n await commitTransaction(req)\n }\n\n return updatedDoc\n } catch (error) {\n const isPublic = error instanceof Error ? isErrorPublic(error, config) : false\n\n if (req.payload.db.bulkOperationsSingleTransaction) {\n await killTransaction(req)\n }\n errors.push({\n id,\n isPublic,\n message: error instanceof Error ? error.message : 'Unknown error',\n })\n }\n return null\n })\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // Process sequentially when using single transaction mode to avoid shared state issues\n // Process in parallel when using one transaction for better performance\n let awaitedDocs: (DataFromCollectionSlug<TSlug> | null)[]\n if (req.payload.db.bulkOperationsSingleTransaction) {\n awaitedDocs = []\n for (const promise of promises) {\n awaitedDocs.push(await promise)\n }\n } else {\n awaitedDocs = await Promise.all(promises)\n }\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 overrideAccess,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return result\n } catch (error: unknown) {\n await unlinkTempFiles({\n collectionConfig: args.collection.config,\n config: args.req.payload.config,\n req: args.req,\n }).catch((unlinkError) => {\n args.req.payload.logger.error({ err: unlinkError, msg: 'Failed to remove temp file' })\n })\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","APIError","generateFileData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","hasDraftsEnabled","initTransaction","isErrorPublic","killTransaction","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSort","buildAfterOperation","buildBeforeOperation","copyDataWithFreshRowIDs","sanitizeSortQuery","updateDocument","updateOperation","incomingArgs","args","collection","config","disableBulkEdit","overrideAccess","slug","shouldCommit","disableTransaction","req","operation","autosave","collectionConfig","depth","draft","draftArg","limit","overrideLock","overwriteExistingFiles","populate","publishAllLocales","publishSpecificLocale","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","sort","incomingSort","trash","unpublishAllLocales","where","BAD_REQUEST","data","bulkUpdateData","shouldSaveDraft","Boolean","accessResult","access","update","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","fields","flattenedFields","defaultSort","docs","versionsWhere","versionFields","query","db","queryDrafts","pagination","find","files","filesToUpload","throwOnMissingFile","errors","promises","map","docWithLocales","id","docShouldCommit","bulkOperationsSingleTransaction","forceSelect","updatedDoc","existingDoc","auth","error","isPublic","Error","push","message","awaitedDocs","promise","Promise","all","result","filter","catch","unlinkError","logger","err","msg"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\nimport { randomUUID } from 'node:crypto'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError } from '../../errors/index.js'\nimport { type CollectionSlug, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport {\n getLocalizedUploadProperties,\n getUploadDestination,\n mergeUploadDataWithDocument,\n sanitizeUploadData,\n} from '../../uploads/sanitizeUploadData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasDraftsEnabled, hasLocalizeStatusEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { isErrorPublic } from '../../utilities/isErrorPublic.js'\nimport { isolateObjectProperty } from '../../utilities/isolateObjectProperty.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport {\n getAllLocalesPublicationStatus,\n normalizeAllLocalesPublicationStatus,\n reconcileAllLocalesPublicationStatus,\n validateAllLocalesPublicationFlags,\n} from '../../versions/allLocalesPublicationStatus.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { copyDataWithFreshRowIDs } from './utilities/copyDataWithFreshRowIDs.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n limit?: number\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n /**\n * Sort the documents, can be a string or an array of strings\n * @example '-createdAt' // Sort DESC by createdAt\n * @example ['group', '-createdAt'] // sort by 2 fields, ASC group and DESC createdAt\n */\n sort?: Sort\n trash?: boolean\n unpublishAllLocales?: boolean\n where: Where\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n if (args.collection.config.disableBulkEdit && !args.overrideAccess) {\n throw new APIError(`Collection ${args.collection.config.slug} has disabled bulk edit`, 403)\n }\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n if (args.collection.config.upload && !args.overrideAccess) {\n const { objectKey, prefix } = getUploadDestination({ data: args.data, file: args.req.file })\n const data = sanitizeUploadData(args.data, 'update')\n\n args = {\n ...args,\n data:\n typeof data === 'object' && data !== null\n ? {\n ...data,\n ...(prefix !== undefined ? { prefix } : {}),\n ...(objectKey !== undefined ? { _objectKey: objectKey } : {}),\n }\n : data,\n }\n }\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: args.publishAllLocales,\n unpublishAllLocales: args.unpublishAllLocales,\n })\n\n const initialCollectionConfig = args.collection.config\n const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n args.req.payload.config.localization && hasLocalizeStatusEnabled(initialCollectionConfig),\n ),\n publishAllLocales:\n !args.draft &&\n (args.publishAllLocales ?? !hasLocalizeStatusEnabled(initialCollectionConfig)),\n unpublishAllLocales: Boolean(args.unpublishAllLocales),\n })\n\n const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({\n data: args.data,\n status: initialAllLocalesPublicationStatus,\n })\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n limit = 0,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales: publishAllLocalesArg,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n trash = false,\n unpublishAllLocales: unpublishAllLocalesArg,\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\n validateAllLocalesPublicationFlags({\n publishAllLocales: publishAllLocalesArg,\n unpublishAllLocales: unpublishAllLocalesArg,\n })\n\n const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n config.localization && hasLocalizeStatusEnabled(collectionConfig),\n ),\n publishAllLocales:\n !draftArg && (publishAllLocalesArg ?? !hasLocalizeStatusEnabled(collectionConfig)),\n unpublishAllLocales: Boolean(unpublishAllLocalesArg),\n })\n const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({\n data: bulkUpdateData,\n intent: initialAllLocalesPublicationIntent,\n status: requestedAllLocalesPublicationStatus,\n })\n const publicationIntentSurvivedBeforeOperation =\n !requestedAllLocalesPublicationStatus || Boolean(allLocalesPublicationStatus)\n const publishAllLocales = publicationIntentSurvivedBeforeOperation\n ? publishAllLocalesArg\n : false\n const unpublishAllLocales = publicationIntentSurvivedBeforeOperation\n ? unpublishAllLocalesArg\n : false\n\n const shouldSaveDraft = Boolean(draftArg && hasDraftsEnabled(collectionConfig))\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n if (!overrideAccess) {\n accessResult = await executeAccess(\n { data: bulkUpdateData, req },\n collectionConfig.access.update,\n )\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n let fullWhere = combineQueries(where, accessResult!)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof bulkUpdateData === 'object' &&\n bulkUpdateData !== null &&\n 'deletedAt' in bulkUpdateData &&\n bulkUpdateData.deletedAt != null\n\n // Enforce delete access if performing a soft-delete (trash)\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess(\n { data: bulkUpdateData, req },\n collectionConfig.access.delete,\n )\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n const sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort || collectionConfig.defaultSort,\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n sort,\n })\n\n let docs\n\n if (hasDraftsEnabled(collectionConfig) && (shouldSaveDraft || isTrashAttempt)) {\n const versionsWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n const query = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort: getQueryDraftsSort({ collectionConfig, sort }),\n where: versionsWhere,\n })\n\n docs = query.docs\n } else {\n const query = await payload.db.find({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort,\n where: fullWhere,\n })\n\n docs = query.docs\n }\n\n const sharedGeneratedFileData =\n !collectionConfig.upload || (overrideAccess && Boolean(req.file))\n ? await generateFileData({\n collection,\n config,\n data: bulkUpdateData,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n : null\n\n const errors: BulkOperationResult<TSlug, TSelect>['errors'] = []\n\n const processDocument = async (docWithLocales: (typeof docs)[number]) => {\n const { id } = docWithLocales\n let documentTempFilePath: string | undefined\n\n try {\n // Each document gets its own transaction when singleTransaction is enabled\n let docShouldCommit = false\n if (req.payload.db.bulkOperationsSingleTransaction) {\n docShouldCommit = await initTransaction(req)\n }\n\n const documentFile = req.file ? { ...req.file } : undefined\n if (collectionConfig.upload && !overrideAccess && documentFile?.tempFilePath) {\n const extension = path.extname(documentFile.tempFilePath)\n documentTempFilePath = path.join(\n path.dirname(documentFile.tempFilePath),\n `${path.basename(documentFile.tempFilePath, extension)}-${randomUUID()}${extension}`,\n )\n await fs.copyFile(documentFile.tempFilePath, documentTempFilePath)\n documentFile.tempFilePath = documentTempFilePath\n }\n\n let documentReq = req\n if (collectionConfig.upload && sharedGeneratedFileData === null) {\n documentReq = isolateObjectProperty(req, ['file', 'payloadUploadSizes'])\n documentReq.file = documentFile\n documentReq.payloadUploadSizes = {}\n }\n const generatedFileData =\n sharedGeneratedFileData ??\n (await generateFileData({\n collection,\n config,\n data: mergeUploadDataWithDocument(bulkUpdateData, docWithLocales, {\n locale:\n locale === 'all' || !locale\n ? config.localization\n ? config.localization.defaultLocale\n : undefined\n : locale,\n localizedProperties: getLocalizedUploadProperties(collectionConfig.flattenedFields),\n }),\n operation: 'update',\n originalDoc: docWithLocales,\n overwriteExistingFiles,\n req: documentReq,\n throwOnMissingFile: false,\n }))\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n let updatedDoc = await updateDocument({\n id,\n autosave,\n collectionConfig,\n config,\n data: copyDataWithFreshRowIDs({\n config,\n data: generatedFileData.data,\n existingDoc: docWithLocales,\n fields: collectionConfig.fields,\n }),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload: generatedFileData.files,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req: documentReq,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n updatedDoc = { ...updatedDoc, collection: collectionConfig.slug }\n }\n\n if (docShouldCommit) {\n await commitTransaction(req)\n }\n\n return updatedDoc\n } catch (error) {\n const isPublic = error instanceof Error ? isErrorPublic(error, config) : false\n\n if (req.payload.db.bulkOperationsSingleTransaction) {\n await killTransaction(req)\n }\n errors.push({\n id,\n isPublic,\n message: error instanceof Error ? error.message : 'Unknown error',\n })\n } finally {\n if (documentTempFilePath) {\n await fs.rm(documentTempFilePath, { force: true }).catch((error) => {\n req.payload.logger.error({ err: error, msg: 'Failed to remove temp file copy' })\n })\n }\n }\n return null\n }\n\n // Upload processing may mutate its temp file while cropping, so each document must finish\n // before the next document starts. This only applies when an actual file is being written\n // (`req.file`); metadata-only bulk updates use isolated per-document request state and can\n // stay parallel. Other bulk updates retain their existing parallel behavior.\n const processSequentially =\n req.payload.db.bulkOperationsSingleTransaction ||\n Boolean(collectionConfig.upload && !overrideAccess && req.file)\n let awaitedDocs: (DataFromCollectionSlug<TSlug> | null)[]\n if (processSequentially) {\n awaitedDocs = []\n for (const doc of docs) {\n awaitedDocs.push(await processDocument(doc))\n }\n } else {\n awaitedDocs = await Promise.all(docs.map(processDocument))\n }\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\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 overrideAccess,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return result\n } catch (error: unknown) {\n await unlinkTempFiles({\n collectionConfig: args.collection.config,\n config: args.req.payload.config,\n req: args.req,\n }).catch((unlinkError) => {\n args.req.payload.logger.error({ err: unlinkError, msg: 'Failed to remove temp file' })\n })\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","randomUUID","fs","path","executeAccess","combineQueries","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","APIError","generateFileData","getLocalizedUploadProperties","getUploadDestination","mergeUploadDataWithDocument","sanitizeUploadData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","hasDraftsEnabled","hasLocalizeStatusEnabled","initTransaction","isErrorPublic","isolateObjectProperty","killTransaction","sanitizeSelect","getAllLocalesPublicationStatus","normalizeAllLocalesPublicationStatus","reconcileAllLocalesPublicationStatus","validateAllLocalesPublicationFlags","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSort","buildAfterOperation","buildBeforeOperation","copyDataWithFreshRowIDs","sanitizeSortQuery","updateDocument","updateOperation","incomingArgs","args","collection","config","disableBulkEdit","overrideAccess","slug","shouldCommit","disableTransaction","req","upload","objectKey","prefix","data","file","undefined","_objectKey","publishAllLocales","unpublishAllLocales","initialCollectionConfig","initialAllLocalesPublicationStatus","hasLocalizedStatus","Boolean","payload","localization","draft","initialAllLocalesPublicationIntent","operation","autosave","collectionConfig","depth","draftArg","limit","overrideLock","overwriteExistingFiles","populate","publishAllLocalesArg","publishSpecificLocale","fallbackLocale","locale","select","incomingSelect","showHiddenFields","sort","incomingSort","trash","unpublishAllLocalesArg","where","BAD_REQUEST","bulkUpdateData","requestedAllLocalesPublicationStatus","allLocalesPublicationStatus","intent","publicationIntentSurvivedBeforeOperation","shouldSaveDraft","accessResult","access","update","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","fields","flattenedFields","defaultSort","docs","versionsWhere","versionFields","query","db","queryDrafts","pagination","find","sharedGeneratedFileData","throwOnMissingFile","errors","processDocument","docWithLocales","id","documentTempFilePath","docShouldCommit","bulkOperationsSingleTransaction","documentFile","tempFilePath","extension","extname","join","dirname","basename","copyFile","documentReq","payloadUploadSizes","generatedFileData","defaultLocale","localizedProperties","originalDoc","forceSelect","updatedDoc","existingDoc","filesToUpload","files","auth","error","isPublic","Error","push","message","rm","force","catch","logger","err","msg","processSequentially","awaitedDocs","doc","Promise","all","map","result","filter","unlinkError"],"mappings":"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"}
@@ -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,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,cAAc,EAAwB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAa5F,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,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,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,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAElD,eAAO,MAAM,mBAAmB,GAC9B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,6BAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAsNvD,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;AAKhD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,cAAc,EAAwB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AA0B5F,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,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,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,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAElD,eAAO,MAAM,mBAAmB,GAC9B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,6BAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAoSvD,CAAA"}
@@ -5,12 +5,15 @@ import { combineQueries } from '../../database/combineQueries.js';
5
5
  import { APIError, Forbidden, NotFound } from '../../errors/index.js';
6
6
  import { deepCopyObjectSimple } from '../../index.js';
7
7
  import { generateFileData } from '../../uploads/generateFileData.js';
8
+ import { getLocalizedUploadProperties, getUploadDestination, mergeUploadDataWithDocument, sanitizeUploadData } from '../../uploads/sanitizeUploadData.js';
8
9
  import { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js';
9
10
  import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
10
11
  import { commitTransaction } from '../../utilities/commitTransaction.js';
12
+ import { hasLocalizeStatusEnabled } from '../../utilities/getVersionsConfig.js';
11
13
  import { initTransaction } from '../../utilities/initTransaction.js';
12
14
  import { killTransaction } from '../../utilities/killTransaction.js';
13
15
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
16
+ import { getAllLocalesPublicationStatus, normalizeAllLocalesPublicationStatus, reconcileAllLocalesPublicationStatus, validateAllLocalesPublicationFlags } from '../../versions/allLocalesPublicationStatus.js';
14
17
  import { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js';
15
18
  import { buildAfterOperation } from './utilities/buildAfterOperation.js';
16
19
  import { buildBeforeOperation } from './utilities/buildBeforeOperation.js';
@@ -19,6 +22,39 @@ export const updateByIDOperation = async (incomingArgs)=>{
19
22
  let args = incomingArgs;
20
23
  try {
21
24
  const shouldCommit = !args.disableTransaction && await initTransaction(args.req);
25
+ if (args.collection.config.upload && !args.overrideAccess) {
26
+ const { objectKey, prefix } = getUploadDestination({
27
+ data: args.data,
28
+ file: args.req.file
29
+ });
30
+ const data = sanitizeUploadData(args.data, 'update');
31
+ args = {
32
+ ...args,
33
+ data: typeof data === 'object' && data !== null ? {
34
+ ...data,
35
+ ...prefix !== undefined ? {
36
+ prefix
37
+ } : {},
38
+ ...objectKey !== undefined ? {
39
+ _objectKey: objectKey
40
+ } : {}
41
+ } : data
42
+ };
43
+ }
44
+ validateAllLocalesPublicationFlags({
45
+ publishAllLocales: args.publishAllLocales,
46
+ unpublishAllLocales: args.unpublishAllLocales
47
+ });
48
+ const initialCollectionConfig = args.collection.config;
49
+ const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({
50
+ hasLocalizedStatus: Boolean(args.req.payload.config.localization && hasLocalizeStatusEnabled(initialCollectionConfig)),
51
+ publishAllLocales: !args.draft && (args.publishAllLocales ?? !hasLocalizeStatusEnabled(initialCollectionConfig)),
52
+ unpublishAllLocales: Boolean(args.unpublishAllLocales)
53
+ });
54
+ const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({
55
+ data: args.data,
56
+ status: initialAllLocalesPublicationStatus
57
+ });
22
58
  // /////////////////////////////////////
23
59
  // beforeOperation - Collection
24
60
  // /////////////////////////////////////
@@ -31,11 +67,28 @@ export const updateByIDOperation = async (incomingArgs)=>{
31
67
  if (args.publishSpecificLocale) {
32
68
  args.req.locale = args.publishSpecificLocale;
33
69
  }
34
- const { id, autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, trash = false, unpublishAllLocales } = args;
70
+ const { id, autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales: publishAllLocalesArg, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, trash = false, unpublishAllLocales: unpublishAllLocalesArg } = args;
35
71
  if (!id) {
36
72
  throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST);
37
73
  }
38
- const { data } = args;
74
+ let { data } = args;
75
+ validateAllLocalesPublicationFlags({
76
+ publishAllLocales: publishAllLocalesArg,
77
+ unpublishAllLocales: unpublishAllLocalesArg
78
+ });
79
+ const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({
80
+ hasLocalizedStatus: Boolean(config.localization && hasLocalizeStatusEnabled(collectionConfig)),
81
+ publishAllLocales: !draftArg && (publishAllLocalesArg ?? !hasLocalizeStatusEnabled(collectionConfig)),
82
+ unpublishAllLocales: Boolean(unpublishAllLocalesArg)
83
+ });
84
+ const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({
85
+ data,
86
+ intent: initialAllLocalesPublicationIntent,
87
+ status: requestedAllLocalesPublicationStatus
88
+ });
89
+ const publicationIntentSurvivedBeforeOperation = !requestedAllLocalesPublicationStatus || Boolean(allLocalesPublicationStatus);
90
+ const publishAllLocales = publicationIntentSurvivedBeforeOperation ? publishAllLocalesArg : false;
91
+ const unpublishAllLocales = publicationIntentSurvivedBeforeOperation ? unpublishAllLocalesArg : false;
39
92
  // /////////////////////////////////////
40
93
  // Access
41
94
  // /////////////////////////////////////
@@ -92,6 +145,12 @@ export const updateByIDOperation = async (incomingArgs)=>{
92
145
  if (!docWithLocales) {
93
146
  throw new NotFound(req.t);
94
147
  }
148
+ if (collectionConfig.upload && !overrideAccess) {
149
+ data = mergeUploadDataWithDocument(data, docWithLocales, {
150
+ locale: locale === 'all' || !locale ? config.localization ? config.localization.defaultLocale : undefined : locale,
151
+ localizedProperties: getLocalizedUploadProperties(collectionConfig.flattenedFields)
152
+ });
153
+ }
95
154
  // /////////////////////////////////////
96
155
  // Generate data for all files and sizes
97
156
  // /////////////////////////////////////
@@ -100,6 +159,7 @@ export const updateByIDOperation = async (incomingArgs)=>{
100
159
  config,
101
160
  data,
102
161
  operation: 'update',
162
+ originalDoc: docWithLocales,
103
163
  overwriteExistingFiles,
104
164
  req,
105
165
  throwOnMissingFile: false
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/updateByID.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { FindOneArgs } from '../../database/types.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { type CollectionSlug, deepCopyObjectSimple, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n id: number | string\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateByIDOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug> = SelectType,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n id,\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n unpublishAllLocales,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST)\n }\n\n const { data } = args\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, data, req }, collectionConfig.access.update)\n : true\n const hasWherePolicy = hasWhereAccessResult(accessResults)\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResults)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof data === 'object' &&\n data !== null &&\n 'deletedAt' in data &&\n data.deletedAt != null\n\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess(\n { id, data, req },\n collectionConfig.access.delete,\n )\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n where: fullWhere,\n }\n\n const docWithLocales = await getLatestCollectionVersion<\n RequiredDataFromCollectionSlug<TSlug> & TypeWithID\n >({\n id,\n config: collectionConfig,\n payload,\n query: findOneArgs,\n req,\n })\n\n if (!docWithLocales && !hasWherePolicy) {\n throw new NotFound(req.t)\n }\n if (!docWithLocales && hasWherePolicy) {\n throw new Forbidden(req.t)\n }\n if (!docWithLocales) {\n throw new NotFound(req.t)\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,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n\n let result = await updateDocument<TSlug, TSelect>({\n id,\n autosave,\n collectionConfig,\n config,\n data: deepCopyObjectSimple(newFileData),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = (await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'updateByID',\n overrideAccess,\n result,\n })) as TransformCollectionWithSelect<TSlug, TSelect>\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await unlinkTempFiles({\n collectionConfig: args.collection.config,\n config: args.req.payload.config,\n req: args.req,\n }).catch((unlinkError) => {\n args.req.payload.logger.error({ err: unlinkError, msg: 'Failed to remove temp file' })\n })\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","hasWhereAccessResult","combineQueries","APIError","Forbidden","NotFound","deepCopyObjectSimple","generateFileData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","initTransaction","killTransaction","sanitizeSelect","getLatestCollectionVersion","buildAfterOperation","buildBeforeOperation","updateDocument","updateByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","operation","overrideAccess","publishSpecificLocale","locale","id","autosave","collectionConfig","depth","draft","draftArg","overrideLock","overwriteExistingFiles","populate","publishAllLocales","fallbackLocale","payload","select","incomingSelect","showHiddenFields","trash","unpublishAllLocales","BAD_REQUEST","data","accessResults","access","update","hasWherePolicy","where","equals","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","findOneArgs","slug","docWithLocales","query","t","newFileData","files","filesToUpload","throwOnMissingFile","fields","flattenedFields","forceSelect","result","auth","error","catch","unlinkError","logger","err","msg"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/updateByID.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { FindOneArgs } from '../../database/types.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { type CollectionSlug, deepCopyObjectSimple, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport {\n getLocalizedUploadProperties,\n getUploadDestination,\n mergeUploadDataWithDocument,\n sanitizeUploadData,\n} from '../../uploads/sanitizeUploadData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasLocalizeStatusEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport {\n getAllLocalesPublicationStatus,\n normalizeAllLocalesPublicationStatus,\n reconcileAllLocalesPublicationStatus,\n validateAllLocalesPublicationFlags,\n} from '../../versions/allLocalesPublicationStatus.js'\nimport { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n id: number | string\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateByIDOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug> = SelectType,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n if (args.collection.config.upload && !args.overrideAccess) {\n const { objectKey, prefix } = getUploadDestination({ data: args.data, file: args.req.file })\n const data = sanitizeUploadData(args.data, 'update')\n\n args = {\n ...args,\n data:\n typeof data === 'object' && data !== null\n ? {\n ...data,\n ...(prefix !== undefined ? { prefix } : {}),\n ...(objectKey !== undefined ? { _objectKey: objectKey } : {}),\n }\n : data,\n }\n }\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: args.publishAllLocales,\n unpublishAllLocales: args.unpublishAllLocales,\n })\n\n const initialCollectionConfig = args.collection.config\n const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n args.req.payload.config.localization && hasLocalizeStatusEnabled(initialCollectionConfig),\n ),\n publishAllLocales:\n !args.draft &&\n (args.publishAllLocales ?? !hasLocalizeStatusEnabled(initialCollectionConfig)),\n unpublishAllLocales: Boolean(args.unpublishAllLocales),\n })\n\n const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({\n data: args.data,\n status: initialAllLocalesPublicationStatus,\n })\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n id,\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales: publishAllLocalesArg,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n unpublishAllLocales: unpublishAllLocalesArg,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST)\n }\n\n let { data } = args\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: publishAllLocalesArg,\n unpublishAllLocales: unpublishAllLocalesArg,\n })\n\n const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n config.localization && hasLocalizeStatusEnabled(collectionConfig),\n ),\n publishAllLocales:\n !draftArg && (publishAllLocalesArg ?? !hasLocalizeStatusEnabled(collectionConfig)),\n unpublishAllLocales: Boolean(unpublishAllLocalesArg),\n })\n const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({\n data,\n intent: initialAllLocalesPublicationIntent,\n status: requestedAllLocalesPublicationStatus,\n })\n const publicationIntentSurvivedBeforeOperation =\n !requestedAllLocalesPublicationStatus || Boolean(allLocalesPublicationStatus)\n const publishAllLocales = publicationIntentSurvivedBeforeOperation\n ? publishAllLocalesArg\n : false\n const unpublishAllLocales = publicationIntentSurvivedBeforeOperation\n ? unpublishAllLocalesArg\n : false\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, data, req }, collectionConfig.access.update)\n : true\n const hasWherePolicy = hasWhereAccessResult(accessResults)\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResults)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof data === 'object' &&\n data !== null &&\n 'deletedAt' in data &&\n data.deletedAt != null\n\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess(\n { id, data, req },\n collectionConfig.access.delete,\n )\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n where: fullWhere,\n }\n\n const docWithLocales = await getLatestCollectionVersion<\n RequiredDataFromCollectionSlug<TSlug> & TypeWithID\n >({\n id,\n config: collectionConfig,\n payload,\n query: findOneArgs,\n req,\n })\n\n if (!docWithLocales && !hasWherePolicy) {\n throw new NotFound(req.t)\n }\n if (!docWithLocales && hasWherePolicy) {\n throw new Forbidden(req.t)\n }\n if (!docWithLocales) {\n throw new NotFound(req.t)\n }\n\n if (collectionConfig.upload && !overrideAccess) {\n data = mergeUploadDataWithDocument(data, docWithLocales, {\n locale:\n locale === 'all' || !locale\n ? config.localization\n ? config.localization.defaultLocale\n : undefined\n : locale,\n localizedProperties: getLocalizedUploadProperties(collectionConfig.flattenedFields),\n })\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,\n operation: 'update',\n originalDoc: docWithLocales,\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n\n let result = await updateDocument<TSlug, TSelect>({\n id,\n autosave,\n collectionConfig,\n config,\n data: deepCopyObjectSimple(newFileData),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = (await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'updateByID',\n overrideAccess,\n result,\n })) as TransformCollectionWithSelect<TSlug, TSelect>\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await unlinkTempFiles({\n collectionConfig: args.collection.config,\n config: args.req.payload.config,\n req: args.req,\n }).catch((unlinkError) => {\n args.req.payload.logger.error({ err: unlinkError, msg: 'Failed to remove temp file' })\n })\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","hasWhereAccessResult","combineQueries","APIError","Forbidden","NotFound","deepCopyObjectSimple","generateFileData","getLocalizedUploadProperties","getUploadDestination","mergeUploadDataWithDocument","sanitizeUploadData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","hasLocalizeStatusEnabled","initTransaction","killTransaction","sanitizeSelect","getAllLocalesPublicationStatus","normalizeAllLocalesPublicationStatus","reconcileAllLocalesPublicationStatus","validateAllLocalesPublicationFlags","getLatestCollectionVersion","buildAfterOperation","buildBeforeOperation","updateDocument","updateByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","upload","overrideAccess","objectKey","prefix","data","file","undefined","_objectKey","publishAllLocales","unpublishAllLocales","initialCollectionConfig","initialAllLocalesPublicationStatus","hasLocalizedStatus","Boolean","payload","localization","draft","initialAllLocalesPublicationIntent","operation","publishSpecificLocale","locale","id","autosave","collectionConfig","depth","draftArg","overrideLock","overwriteExistingFiles","populate","publishAllLocalesArg","fallbackLocale","select","incomingSelect","showHiddenFields","trash","unpublishAllLocalesArg","BAD_REQUEST","requestedAllLocalesPublicationStatus","allLocalesPublicationStatus","intent","publicationIntentSurvivedBeforeOperation","accessResults","access","update","hasWherePolicy","where","equals","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","findOneArgs","slug","docWithLocales","query","t","defaultLocale","localizedProperties","flattenedFields","newFileData","files","filesToUpload","originalDoc","throwOnMissingFile","fields","forceSelect","result","auth","error","catch","unlinkError","logger","err","msg"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/utilities/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,UAAU,EACX,MAAM,uBAAuB,CAAA;AAkB9B,MAAM,MAAM,wBAAwB,CAAC,KAAK,SAAS,cAAc,IAAI;IACnE,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,UAAU,GAAG,UAAU,CAAA;IACvC,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,mBAAmB,CAAA;IACnC,aAAa,EAAE,UAAU,EAAE,CAAA;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,uUAuB9C,wBAAwB,CAAC,KAAK,CAAC,KAAG,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAqXzF,CAAA"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/utilities/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,UAAU,EACX,MAAM,uBAAuB,CAAA;AA0B9B,MAAM,MAAM,wBAAwB,CAAC,KAAK,SAAS,cAAc,IAAI;IACnE,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,UAAU,GAAG,UAAU,CAAA;IACvC,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,mBAAmB,CAAA;IACnC,aAAa,EAAE,UAAU,EAAE,CAAA;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,uUAuB9C,wBAAwB,CAAC,KAAK,CAAC,KAAG,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CA8bzF,CAAA"}