payload 4.0.0-internal.ea6e8f8 → 4.0.0-internal.ee5d8bd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (703) hide show
  1. package/dist/admin/adapters/router.d.ts +1 -1
  2. package/dist/admin/adapters/router.d.ts.map +1 -1
  3. package/dist/admin/adapters/router.js.map +1 -1
  4. package/dist/admin/forms/Diff.d.ts +0 -4
  5. package/dist/admin/forms/Diff.d.ts.map +1 -1
  6. package/dist/admin/forms/Diff.js.map +1 -1
  7. package/dist/admin/forms/Form.d.ts +0 -2
  8. package/dist/admin/forms/Form.d.ts.map +1 -1
  9. package/dist/admin/forms/Form.js.map +1 -1
  10. package/dist/admin/initAdminContext.d.ts.map +1 -1
  11. package/dist/admin/initAdminContext.js +0 -10
  12. package/dist/admin/initAdminContext.js.map +1 -1
  13. package/dist/auth/createAuthToken.d.ts +26 -0
  14. package/dist/auth/createAuthToken.d.ts.map +1 -0
  15. package/dist/auth/createAuthToken.js +39 -0
  16. package/dist/auth/createAuthToken.js.map +1 -0
  17. package/dist/auth/endpoints/refresh.d.ts.map +1 -1
  18. package/dist/auth/endpoints/refresh.js +2 -1
  19. package/dist/auth/endpoints/refresh.js.map +1 -1
  20. package/dist/auth/getFieldsToSign.js.map +1 -1
  21. package/dist/auth/loginWithCookie.d.ts.map +1 -1
  22. package/dist/auth/loginWithCookie.js +1 -0
  23. package/dist/auth/loginWithCookie.js.map +1 -1
  24. package/dist/auth/operations/local/login.d.ts.map +1 -1
  25. package/dist/auth/operations/local/login.js +1 -0
  26. package/dist/auth/operations/local/login.js.map +1 -1
  27. package/dist/auth/operations/login.d.ts +2 -0
  28. package/dist/auth/operations/login.d.ts.map +1 -1
  29. package/dist/auth/operations/login.js +6 -19
  30. package/dist/auth/operations/login.js.map +1 -1
  31. package/dist/auth/operations/refresh.d.ts +8 -0
  32. package/dist/auth/operations/refresh.d.ts.map +1 -1
  33. package/dist/auth/operations/refresh.js +50 -19
  34. package/dist/auth/operations/refresh.js.map +1 -1
  35. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  36. package/dist/auth/operations/resetPassword.js +54 -20
  37. package/dist/auth/operations/resetPassword.js.map +1 -1
  38. package/dist/auth/refreshAuthToken.d.ts +32 -0
  39. package/dist/auth/refreshAuthToken.d.ts.map +1 -0
  40. package/dist/auth/refreshAuthToken.js +113 -0
  41. package/dist/auth/refreshAuthToken.js.map +1 -0
  42. package/dist/auth/serverFunctions/cookies.js.map +1 -1
  43. package/dist/auth/serverFunctions/login.js.map +1 -1
  44. package/dist/auth/sessions.d.ts +9 -2
  45. package/dist/auth/sessions.d.ts.map +1 -1
  46. package/dist/auth/sessions.js +6 -5
  47. package/dist/auth/sessions.js.map +1 -1
  48. package/dist/auth/types.d.ts +25 -1
  49. package/dist/auth/types.d.ts.map +1 -1
  50. package/dist/auth/types.js.map +1 -1
  51. package/dist/cli/commands/data/utilities.d.ts +1 -1
  52. package/dist/cli/commands/data/utilities.d.ts.map +1 -1
  53. package/dist/cli/commands/data/utilities.js.map +1 -1
  54. package/dist/cli/defineCLICommand.js +1 -1
  55. package/dist/cli/defineCLICommand.js.map +1 -1
  56. package/dist/collections/config/client.d.ts +1 -1
  57. package/dist/collections/config/client.d.ts.map +1 -1
  58. package/dist/collections/config/client.js +0 -1
  59. package/dist/collections/config/client.js.map +1 -1
  60. package/dist/collections/config/defaults.d.ts +2 -0
  61. package/dist/collections/config/defaults.d.ts.map +1 -1
  62. package/dist/collections/config/defaults.js +4 -0
  63. package/dist/collections/config/defaults.js.map +1 -1
  64. package/dist/collections/config/sanitize.d.ts.map +1 -1
  65. package/dist/collections/config/sanitize.js +3 -0
  66. package/dist/collections/config/sanitize.js.map +1 -1
  67. package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
  68. package/dist/collections/config/sanitizeCompoundIndexes.js +0 -9
  69. package/dist/collections/config/sanitizeCompoundIndexes.js.map +1 -1
  70. package/dist/collections/config/types.d.ts +4 -21
  71. package/dist/collections/config/types.d.ts.map +1 -1
  72. package/dist/collections/config/types.js.map +1 -1
  73. package/dist/collections/dataloader.d.ts +1 -10
  74. package/dist/collections/dataloader.d.ts.map +1 -1
  75. package/dist/collections/dataloader.js +6 -14
  76. package/dist/collections/dataloader.js.map +1 -1
  77. package/dist/collections/operations/create.d.ts.map +1 -1
  78. package/dist/collections/operations/create.js +0 -13
  79. package/dist/collections/operations/create.js.map +1 -1
  80. package/dist/collections/operations/delete.d.ts.map +1 -1
  81. package/dist/collections/operations/delete.js +121 -638
  82. package/dist/collections/operations/delete.js.map +1 -1
  83. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  84. package/dist/collections/operations/deleteByID.js +32 -238
  85. package/dist/collections/operations/deleteByID.js.map +1 -1
  86. package/dist/collections/operations/findByID.d.ts.map +1 -1
  87. package/dist/collections/operations/findByID.js +0 -6
  88. package/dist/collections/operations/findByID.js.map +1 -1
  89. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  90. package/dist/collections/operations/findDistinct.js +6 -7
  91. package/dist/collections/operations/findDistinct.js.map +1 -1
  92. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  93. package/dist/collections/operations/findVersionByID.js +7 -0
  94. package/dist/collections/operations/findVersionByID.js.map +1 -1
  95. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  96. package/dist/collections/operations/findVersions.js +5 -0
  97. package/dist/collections/operations/findVersions.js.map +1 -1
  98. package/dist/collections/operations/local/count.d.ts +4 -9
  99. package/dist/collections/operations/local/count.d.ts.map +1 -1
  100. package/dist/collections/operations/local/count.js.map +1 -1
  101. package/dist/collections/operations/local/countVersions.d.ts +0 -4
  102. package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
  103. package/dist/collections/operations/local/countVersions.js.map +1 -1
  104. package/dist/collections/operations/local/create.d.ts +4 -9
  105. package/dist/collections/operations/local/create.d.ts.map +1 -1
  106. package/dist/collections/operations/local/create.js.map +1 -1
  107. package/dist/collections/operations/local/delete.d.ts +4 -9
  108. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  109. package/dist/collections/operations/local/delete.js.map +1 -1
  110. package/dist/collections/operations/local/duplicate.d.ts +0 -5
  111. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  112. package/dist/collections/operations/local/duplicate.js.map +1 -1
  113. package/dist/collections/operations/local/find.d.ts +4 -9
  114. package/dist/collections/operations/local/find.d.ts.map +1 -1
  115. package/dist/collections/operations/local/find.js.map +1 -1
  116. package/dist/collections/operations/local/findByID.d.ts +4 -9
  117. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  118. package/dist/collections/operations/local/findByID.js.map +1 -1
  119. package/dist/collections/operations/local/findDistinct.d.ts +0 -5
  120. package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
  121. package/dist/collections/operations/local/findDistinct.js.map +1 -1
  122. package/dist/collections/operations/local/findVersionByID.d.ts +0 -5
  123. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  124. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  125. package/dist/collections/operations/local/findVersions.d.ts +0 -5
  126. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  127. package/dist/collections/operations/local/findVersions.js.map +1 -1
  128. package/dist/collections/operations/local/restoreVersion.d.ts +0 -5
  129. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  130. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  131. package/dist/collections/operations/local/update.d.ts +4 -9
  132. package/dist/collections/operations/local/update.d.ts.map +1 -1
  133. package/dist/collections/operations/local/update.js.map +1 -1
  134. package/dist/collections/operations/renameFile.js +1 -1
  135. package/dist/collections/operations/renameFile.js.map +1 -1
  136. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  137. package/dist/collections/operations/restoreVersion.js +76 -157
  138. package/dist/collections/operations/restoreVersion.js.map +1 -1
  139. package/dist/collections/operations/update.d.ts.map +1 -1
  140. package/dist/collections/operations/update.js +171 -357
  141. package/dist/collections/operations/update.js.map +1 -1
  142. package/dist/collections/operations/updateByID.d.ts +0 -15
  143. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  144. package/dist/collections/operations/updateByID.js +60 -265
  145. package/dist/collections/operations/updateByID.js.map +1 -1
  146. package/dist/collections/operations/utilities/buildBeforeOperation.d.ts.map +1 -1
  147. package/dist/collections/operations/utilities/buildBeforeOperation.js +0 -7
  148. package/dist/collections/operations/utilities/buildBeforeOperation.js.map +1 -1
  149. package/dist/collections/operations/utilities/update.d.ts +1 -14
  150. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  151. package/dist/collections/operations/utilities/update.js +20 -92
  152. package/dist/collections/operations/utilities/update.js.map +1 -1
  153. package/dist/collections/operations/validate.js +4 -4
  154. package/dist/collections/operations/validate.js.map +1 -1
  155. package/dist/config/client.d.ts +1 -3
  156. package/dist/config/client.d.ts.map +1 -1
  157. package/dist/config/client.js +1 -9
  158. package/dist/config/client.js.map +1 -1
  159. package/dist/config/defaults.d.ts.map +1 -1
  160. package/dist/config/defaults.js +1 -0
  161. package/dist/config/defaults.js.map +1 -1
  162. package/dist/config/definePlugin.js.map +1 -1
  163. package/dist/config/sanitize.d.ts.map +1 -1
  164. package/dist/config/sanitize.js +2 -40
  165. package/dist/config/sanitize.js.map +1 -1
  166. package/dist/config/types.d.ts +13 -21
  167. package/dist/config/types.d.ts.map +1 -1
  168. package/dist/config/types.js.map +1 -1
  169. package/dist/database/defaultCopy.d.ts.map +1 -1
  170. package/dist/database/defaultCopy.js +0 -1
  171. package/dist/database/defaultCopy.js.map +1 -1
  172. package/dist/database/types.d.ts +4 -75
  173. package/dist/database/types.d.ts.map +1 -1
  174. package/dist/database/types.js.map +1 -1
  175. package/dist/exports/build-config.d.ts +9 -0
  176. package/dist/exports/build-config.d.ts.map +1 -0
  177. package/dist/exports/build-config.js +38 -0
  178. package/dist/exports/build-config.js.map +1 -0
  179. package/dist/exports/shared.d.ts +0 -2
  180. package/dist/exports/shared.d.ts.map +1 -1
  181. package/dist/exports/shared.js +0 -2
  182. package/dist/exports/shared.js.map +1 -1
  183. package/dist/fields/baseFields/authorship/index.d.ts +1 -2
  184. package/dist/fields/baseFields/authorship/index.d.ts.map +1 -1
  185. package/dist/fields/baseFields/authorship/index.js +0 -12
  186. package/dist/fields/baseFields/authorship/index.js.map +1 -1
  187. package/dist/fields/config/client.js.map +1 -1
  188. package/dist/fields/config/reservedFieldNames.d.ts.map +1 -1
  189. package/dist/fields/config/reservedFieldNames.js.map +1 -1
  190. package/dist/fields/config/types.d.ts.map +1 -1
  191. package/dist/fields/config/types.js.map +1 -1
  192. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  193. package/dist/fields/hooks/afterRead/index.d.ts +0 -8
  194. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  195. package/dist/fields/hooks/afterRead/index.js +2 -6
  196. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  197. package/dist/fields/hooks/afterRead/promise.d.ts +1 -3
  198. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  199. package/dist/fields/hooks/afterRead/promise.js +17 -41
  200. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  201. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  202. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +0 -2
  203. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  204. package/dist/fields/hooks/afterRead/traverseFields.d.ts +1 -3
  205. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  206. package/dist/fields/hooks/afterRead/traverseFields.js +2 -4
  207. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  208. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
  209. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js +0 -3
  210. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js.map +1 -1
  211. package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts +14 -0
  212. package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts.map +1 -0
  213. package/dist/fields/hooks/beforeChange/flattenValidationData.js +36 -0
  214. package/dist/fields/hooks/beforeChange/flattenValidationData.js.map +1 -0
  215. package/dist/fields/hooks/beforeChange/promise.d.ts +2 -1
  216. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  217. package/dist/fields/hooks/beforeChange/promise.js +96 -22
  218. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  219. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -1
  220. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  221. package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
  222. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  223. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  224. package/dist/fields/hooks/beforeValidate/promise.js +0 -8
  225. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  226. package/dist/fields/validations.d.ts.map +1 -1
  227. package/dist/fields/validations.js +4 -1
  228. package/dist/fields/validations.js.map +1 -1
  229. package/dist/globals/config/types.d.ts +2 -6
  230. package/dist/globals/config/types.d.ts.map +1 -1
  231. package/dist/globals/config/types.js.map +1 -1
  232. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
  233. package/dist/globals/operations/countGlobalVersions.js +0 -7
  234. package/dist/globals/operations/countGlobalVersions.js.map +1 -1
  235. package/dist/globals/operations/findOne.d.ts.map +1 -1
  236. package/dist/globals/operations/findOne.js +0 -7
  237. package/dist/globals/operations/findOne.js.map +1 -1
  238. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  239. package/dist/globals/operations/findVersionByID.js +6 -6
  240. package/dist/globals/operations/findVersionByID.js.map +1 -1
  241. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  242. package/dist/globals/operations/findVersions.js +4 -6
  243. package/dist/globals/operations/findVersions.js.map +1 -1
  244. package/dist/globals/operations/local/countVersions.d.ts +0 -5
  245. package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
  246. package/dist/globals/operations/local/countVersions.js.map +1 -1
  247. package/dist/globals/operations/local/findOne.d.ts +0 -5
  248. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  249. package/dist/globals/operations/local/findOne.js.map +1 -1
  250. package/dist/globals/operations/local/findVersionByID.d.ts +0 -5
  251. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  252. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  253. package/dist/globals/operations/local/findVersions.d.ts +0 -5
  254. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  255. package/dist/globals/operations/local/findVersions.js.map +1 -1
  256. package/dist/globals/operations/local/restoreVersion.d.ts +0 -5
  257. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  258. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  259. package/dist/globals/operations/local/update.d.ts +0 -5
  260. package/dist/globals/operations/local/update.d.ts.map +1 -1
  261. package/dist/globals/operations/local/update.js +18 -61
  262. package/dist/globals/operations/local/update.js.map +1 -1
  263. package/dist/globals/operations/restoreVersion.d.ts +2 -3
  264. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  265. package/dist/globals/operations/restoreVersion.js +24 -61
  266. package/dist/globals/operations/restoreVersion.js.map +1 -1
  267. package/dist/globals/operations/update.d.ts.map +1 -1
  268. package/dist/globals/operations/update.js +8 -86
  269. package/dist/globals/operations/update.js.map +1 -1
  270. package/dist/globals/operations/validate.js +1 -1
  271. package/dist/globals/operations/validate.js.map +1 -1
  272. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
  273. package/dist/hierarchy/addHierarchyToCollection.js +32 -21
  274. package/dist/hierarchy/addHierarchyToCollection.js.map +1 -1
  275. package/dist/hierarchy/createFolderField.js.map +1 -1
  276. package/dist/hierarchy/getInitialTreeData.d.ts +1 -3
  277. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -1
  278. package/dist/hierarchy/getInitialTreeData.js +1 -4
  279. package/dist/hierarchy/getInitialTreeData.js.map +1 -1
  280. package/dist/hierarchy/resolveHierarchyCollections.js +9 -3
  281. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
  282. package/dist/hierarchy/utils/computePaths.d.ts.map +1 -1
  283. package/dist/hierarchy/utils/computePaths.js.map +1 -1
  284. package/dist/index.bundled.d.ts +4336 -5501
  285. package/dist/index.d.ts +27 -51
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +14 -37
  288. package/dist/index.js.map +1 -1
  289. package/dist/llm-instructions/getInstructionsCollection.d.ts.map +1 -1
  290. package/dist/llm-instructions/getInstructionsCollection.js +2 -0
  291. package/dist/llm-instructions/getInstructionsCollection.js.map +1 -1
  292. package/dist/preferences/keys.d.ts +4 -11
  293. package/dist/preferences/keys.d.ts.map +1 -1
  294. package/dist/preferences/keys.js +3 -10
  295. package/dist/preferences/keys.js.map +1 -1
  296. package/dist/preferences/types.d.ts +0 -19
  297. package/dist/preferences/types.d.ts.map +1 -1
  298. package/dist/preferences/types.js.map +1 -1
  299. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +1 -1
  300. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  301. package/dist/types/index.d.ts +0 -13
  302. package/dist/types/index.d.ts.map +1 -1
  303. package/dist/types/index.js.map +1 -1
  304. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  305. package/dist/uploads/deleteAssociatedFiles.js +29 -108
  306. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  307. package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
  308. package/dist/uploads/endpoints/getFile.js +0 -5
  309. package/dist/uploads/endpoints/getFile.js.map +1 -1
  310. package/dist/uploads/fileExists.d.ts.map +1 -1
  311. package/dist/uploads/fileExists.js +2 -5
  312. package/dist/uploads/fileExists.js.map +1 -1
  313. package/dist/uploads/fileVersioning/archive.d.ts.map +1 -1
  314. package/dist/uploads/fileVersioning/archive.js +1 -15
  315. package/dist/uploads/fileVersioning/archive.js.map +1 -1
  316. package/dist/uploads/fileVersioning/cleanup.d.ts +0 -7
  317. package/dist/uploads/fileVersioning/cleanup.d.ts.map +1 -1
  318. package/dist/uploads/fileVersioning/cleanup.js +0 -12
  319. package/dist/uploads/fileVersioning/cleanup.js.map +1 -1
  320. package/dist/uploads/fileVersioning/cloudStorage.d.ts.map +1 -1
  321. package/dist/uploads/fileVersioning/cloudStorage.js +1 -16
  322. package/dist/uploads/fileVersioning/cloudStorage.js.map +1 -1
  323. package/dist/uploads/fileVersioning/resolveHistoricalFile.js.map +1 -1
  324. package/dist/uploads/formatFilesize.js +1 -1
  325. package/dist/uploads/formatFilesize.js.map +1 -1
  326. package/dist/uploads/generateFileData.d.ts +0 -5
  327. package/dist/uploads/generateFileData.d.ts.map +1 -1
  328. package/dist/uploads/generateFileData.js +2 -74
  329. package/dist/uploads/generateFileData.js.map +1 -1
  330. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  331. package/dist/uploads/getBaseFields.js +29 -46
  332. package/dist/uploads/getBaseFields.js.map +1 -1
  333. package/dist/uploads/getFileContentRequirement.js.map +1 -1
  334. package/dist/uploads/getFileFromUploadInstructions.js.map +1 -1
  335. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  336. package/dist/uploads/getSafeFilename.js +3 -5
  337. package/dist/uploads/getSafeFilename.js.map +1 -1
  338. package/dist/uploads/safeFetch.js.map +1 -1
  339. package/dist/uploads/stagedUpload.js.map +1 -1
  340. package/dist/uploads/transformers/handleDynamicFileRequest.js +11 -2
  341. package/dist/uploads/transformers/handleDynamicFileRequest.js.map +1 -1
  342. package/dist/uploads/types.d.ts +0 -11
  343. package/dist/uploads/types.d.ts.map +1 -1
  344. package/dist/uploads/types.js.map +1 -1
  345. package/dist/uploads/uploadFiles.d.ts +1 -4
  346. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  347. package/dist/uploads/uploadFiles.js +5 -29
  348. package/dist/uploads/uploadFiles.js.map +1 -1
  349. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
  350. package/dist/utilities/addSelectGenericsToGeneretedTypes.js +0 -1
  351. package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -1
  352. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
  353. package/dist/utilities/assertNoValidationWrite.d.ts.map +1 -1
  354. package/dist/utilities/assertNoValidationWrite.js +0 -4
  355. package/dist/utilities/assertNoValidationWrite.js.map +1 -1
  356. package/dist/utilities/checkDocumentLockStatus.d.ts +6 -15
  357. package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
  358. package/dist/utilities/checkDocumentLockStatus.js +11 -44
  359. package/dist/utilities/checkDocumentLockStatus.js.map +1 -1
  360. package/dist/utilities/cloneValidationRequest.js.map +1 -1
  361. package/dist/utilities/commitTransaction.d.ts +0 -4
  362. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  363. package/dist/utilities/commitTransaction.js +1 -41
  364. package/dist/utilities/commitTransaction.js.map +1 -1
  365. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  366. package/dist/utilities/configToJSONSchema.js +2 -18
  367. package/dist/utilities/configToJSONSchema.js.map +1 -1
  368. package/dist/utilities/createPayloadRequest.d.ts +0 -5
  369. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  370. package/dist/utilities/createPayloadRequest.js +3 -50
  371. package/dist/utilities/createPayloadRequest.js.map +1 -1
  372. package/dist/utilities/createPayloadRequestFromWebRequest.d.ts +12 -1
  373. package/dist/utilities/createPayloadRequestFromWebRequest.d.ts.map +1 -1
  374. package/dist/utilities/createPayloadRequestFromWebRequest.js +9 -5
  375. package/dist/utilities/createPayloadRequestFromWebRequest.js.map +1 -1
  376. package/dist/utilities/deepCopyObject.js.map +1 -1
  377. package/dist/utilities/documentMatchingWhereExists.js +1 -1
  378. package/dist/utilities/documentMatchingWhereExists.js.map +1 -1
  379. package/dist/utilities/entityInputSchema/validateEntityData.d.ts.map +1 -1
  380. package/dist/utilities/entityInputSchema/validateEntityData.js.map +1 -1
  381. package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
  382. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  383. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +1 -0
  384. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  385. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
  386. package/dist/utilities/getVersionsConfig.d.ts +4 -0
  387. package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
  388. package/dist/utilities/getVersionsConfig.js +5 -0
  389. package/dist/utilities/getVersionsConfig.js.map +1 -1
  390. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  391. package/dist/utilities/handleEndpoints.js +10 -9
  392. package/dist/utilities/handleEndpoints.js.map +1 -1
  393. package/dist/utilities/httpStatus.d.ts +0 -2
  394. package/dist/utilities/httpStatus.d.ts.map +1 -1
  395. package/dist/utilities/httpStatus.js +1 -3
  396. package/dist/utilities/httpStatus.js.map +1 -1
  397. package/dist/utilities/initTransaction.d.ts.map +1 -1
  398. package/dist/utilities/initTransaction.js +7 -35
  399. package/dist/utilities/initTransaction.js.map +1 -1
  400. package/dist/utilities/killTransaction.d.ts.map +1 -1
  401. package/dist/utilities/killTransaction.js +0 -27
  402. package/dist/utilities/killTransaction.js.map +1 -1
  403. package/dist/utilities/parseParams/index.js.map +1 -1
  404. package/dist/utilities/parseValidationLocale.js.map +1 -1
  405. package/dist/utilities/sanitizePopulateParam.js.map +1 -1
  406. package/dist/utilities/telemetry/conf/index.d.ts +4 -1
  407. package/dist/utilities/telemetry/conf/index.d.ts.map +1 -1
  408. package/dist/utilities/telemetry/conf/index.js.map +1 -1
  409. package/dist/utilities/telemetry/featureInfo/getFeatureInfo.js.map +1 -1
  410. package/dist/versions/allLocalesPublicationStatus.js.map +1 -1
  411. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  412. package/dist/versions/buildCollectionFields.js +0 -23
  413. package/dist/versions/buildCollectionFields.js.map +1 -1
  414. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  415. package/dist/versions/buildGlobalFields.js +0 -14
  416. package/dist/versions/buildGlobalFields.js.map +1 -1
  417. package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
  418. package/dist/versions/buildVersionCompoundIndexes.js +2 -8
  419. package/dist/versions/buildVersionCompoundIndexes.js.map +1 -1
  420. package/dist/versions/deleteCollectionVersions.d.ts +1 -2
  421. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  422. package/dist/versions/deleteCollectionVersions.js +8 -37
  423. package/dist/versions/deleteCollectionVersions.js.map +1 -1
  424. package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
  425. package/dist/versions/deleteScheduledPublishJobs.js +0 -4
  426. package/dist/versions/deleteScheduledPublishJobs.js.map +1 -1
  427. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  428. package/dist/versions/drafts/appendVersionToQueryKey.js +1 -9
  429. package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
  430. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  431. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -8
  432. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  433. package/dist/versions/enforceMaxVersions.d.ts +0 -1
  434. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  435. package/dist/versions/enforceMaxVersions.js +6 -22
  436. package/dist/versions/enforceMaxVersions.js.map +1 -1
  437. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  438. package/dist/versions/getLatestCollectionVersion.js +2 -10
  439. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  440. package/dist/versions/getLatestGlobalVersion.d.ts +2 -6
  441. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  442. package/dist/versions/getLatestGlobalVersion.js +21 -65
  443. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  444. package/dist/versions/isInheritedReadVersionsAccess.js.map +1 -1
  445. package/dist/versions/saveVersion.d.ts +0 -7
  446. package/dist/versions/saveVersion.d.ts.map +1 -1
  447. package/dist/versions/saveVersion.js +4 -27
  448. package/dist/versions/saveVersion.js.map +1 -1
  449. package/dist/versions/updateLatestVersion.d.ts +0 -1
  450. package/dist/versions/updateLatestVersion.d.ts.map +1 -1
  451. package/dist/versions/updateLatestVersion.js +7 -24
  452. package/dist/versions/updateLatestVersion.js.map +1 -1
  453. package/package.json +30 -28
  454. package/skills/payload/reference/ENDPOINTS.md +3 -9
  455. package/skills/payload/reference/PLUGIN-DEVELOPMENT.md +4 -4
  456. package/dist/admin/getAdminPreferences.d.ts +0 -10
  457. package/dist/admin/getAdminPreferences.d.ts.map +0 -1
  458. package/dist/admin/getAdminPreferences.js +0 -53
  459. package/dist/admin/getAdminPreferences.js.map +0 -1
  460. package/dist/admin/getRequestBranch.d.ts +0 -6
  461. package/dist/admin/getRequestBranch.d.ts.map +0 -1
  462. package/dist/admin/getRequestBranch.js +0 -17
  463. package/dist/admin/getRequestBranch.js.map +0 -1
  464. package/dist/branching/appendBranchFilter.d.ts +0 -30
  465. package/dist/branching/appendBranchFilter.d.ts.map +0 -1
  466. package/dist/branching/appendBranchFilter.js +0 -105
  467. package/dist/branching/appendBranchFilter.js.map +0 -1
  468. package/dist/branching/assertBranchAccess.d.ts +0 -10
  469. package/dist/branching/assertBranchAccess.d.ts.map +0 -1
  470. package/dist/branching/assertBranchAccess.js +0 -36
  471. package/dist/branching/assertBranchAccess.js.map +0 -1
  472. package/dist/branching/assertBranchActionAccess.d.ts +0 -10
  473. package/dist/branching/assertBranchActionAccess.d.ts.map +0 -1
  474. package/dist/branching/assertBranchActionAccess.js +0 -15
  475. package/dist/branching/assertBranchActionAccess.js.map +0 -1
  476. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts +0 -53
  477. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts.map +0 -1
  478. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js +0 -833
  479. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js.map +0 -1
  480. package/dist/branching/assertBranchReadable.d.ts +0 -36
  481. package/dist/branching/assertBranchReadable.d.ts.map +0 -1
  482. package/dist/branching/assertBranchReadable.js +0 -83
  483. package/dist/branching/assertBranchReadable.js.map +0 -1
  484. package/dist/branching/assertBranchUpdateAccess.d.ts +0 -8
  485. package/dist/branching/assertBranchUpdateAccess.d.ts.map +0 -1
  486. package/dist/branching/assertBranchUpdateAccess.js +0 -12
  487. package/dist/branching/assertBranchUpdateAccess.js.map +0 -1
  488. package/dist/branching/assertBranchWritable.d.ts +0 -18
  489. package/dist/branching/assertBranchWritable.d.ts.map +0 -1
  490. package/dist/branching/assertBranchWritable.js +0 -46
  491. package/dist/branching/assertBranchWritable.js.map +0 -1
  492. package/dist/branching/branchIDs.d.ts +0 -38
  493. package/dist/branching/branchIDs.d.ts.map +0 -1
  494. package/dist/branching/branchIDs.js +0 -113
  495. package/dist/branching/branchIDs.js.map +0 -1
  496. package/dist/branching/branchSelect.d.ts +0 -42
  497. package/dist/branching/branchSelect.d.ts.map +0 -1
  498. package/dist/branching/branchSelect.js +0 -97
  499. package/dist/branching/branchSelect.js.map +0 -1
  500. package/dist/branching/checkFieldAccess.d.ts +0 -21
  501. package/dist/branching/checkFieldAccess.d.ts.map +0 -1
  502. package/dist/branching/checkFieldAccess.js +0 -238
  503. package/dist/branching/checkFieldAccess.js.map +0 -1
  504. package/dist/branching/collections.d.ts +0 -14
  505. package/dist/branching/collections.d.ts.map +0 -1
  506. package/dist/branching/collections.js +0 -713
  507. package/dist/branching/collections.js.map +0 -1
  508. package/dist/branching/combineBranchAccess.d.ts +0 -6
  509. package/dist/branching/combineBranchAccess.d.ts.map +0 -1
  510. package/dist/branching/combineBranchAccess.js +0 -22
  511. package/dist/branching/combineBranchAccess.js.map +0 -1
  512. package/dist/branching/copyUploadFilesToBranch.d.ts +0 -9
  513. package/dist/branching/copyUploadFilesToBranch.d.ts.map +0 -1
  514. package/dist/branching/copyUploadFilesToBranch.js +0 -126
  515. package/dist/branching/copyUploadFilesToBranch.js.map +0 -1
  516. package/dist/branching/createShadowRow.d.ts +0 -70
  517. package/dist/branching/createShadowRow.d.ts.map +0 -1
  518. package/dist/branching/createShadowRow.js +0 -296
  519. package/dist/branching/createShadowRow.js.map +0 -1
  520. package/dist/branching/discard.d.ts +0 -52
  521. package/dist/branching/discard.d.ts.map +0 -1
  522. package/dist/branching/discard.js +0 -428
  523. package/dist/branching/discard.js.map +0 -1
  524. package/dist/branching/effectiveOperations.d.ts +0 -55
  525. package/dist/branching/effectiveOperations.d.ts.map +0 -1
  526. package/dist/branching/effectiveOperations.js +0 -472
  527. package/dist/branching/effectiveOperations.js.map +0 -1
  528. package/dist/branching/endpoints/discard.d.ts +0 -15
  529. package/dist/branching/endpoints/discard.d.ts.map +0 -1
  530. package/dist/branching/endpoints/discard.js +0 -55
  531. package/dist/branching/endpoints/discard.js.map +0 -1
  532. package/dist/branching/endpoints/merge.d.ts +0 -34
  533. package/dist/branching/endpoints/merge.d.ts.map +0 -1
  534. package/dist/branching/endpoints/merge.js +0 -119
  535. package/dist/branching/endpoints/merge.js.map +0 -1
  536. package/dist/branching/forkDocument.d.ts +0 -20
  537. package/dist/branching/forkDocument.d.ts.map +0 -1
  538. package/dist/branching/forkDocument.js +0 -169
  539. package/dist/branching/forkDocument.js.map +0 -1
  540. package/dist/branching/globalMergeWrites.d.ts +0 -21
  541. package/dist/branching/globalMergeWrites.d.ts.map +0 -1
  542. package/dist/branching/globalMergeWrites.js +0 -146
  543. package/dist/branching/globalMergeWrites.js.map +0 -1
  544. package/dist/branching/globals.d.ts +0 -49
  545. package/dist/branching/globals.d.ts.map +0 -1
  546. package/dist/branching/globals.js +0 -197
  547. package/dist/branching/globals.js.map +0 -1
  548. package/dist/branching/hooks.d.ts +0 -24
  549. package/dist/branching/hooks.d.ts.map +0 -1
  550. package/dist/branching/hooks.js +0 -92
  551. package/dist/branching/hooks.js.map +0 -1
  552. package/dist/branching/injectBranchFields.d.ts +0 -40
  553. package/dist/branching/injectBranchFields.d.ts.map +0 -1
  554. package/dist/branching/injectBranchFields.js +0 -229
  555. package/dist/branching/injectBranchFields.js.map +0 -1
  556. package/dist/branching/merge/applyMergeChange.d.ts +0 -27
  557. package/dist/branching/merge/applyMergeChange.d.ts.map +0 -1
  558. package/dist/branching/merge/applyMergeChange.js +0 -853
  559. package/dist/branching/merge/applyMergeChange.js.map +0 -1
  560. package/dist/branching/merge/branchMergeStatus.d.ts +0 -12
  561. package/dist/branching/merge/branchMergeStatus.d.ts.map +0 -1
  562. package/dist/branching/merge/branchMergeStatus.js +0 -74
  563. package/dist/branching/merge/branchMergeStatus.js.map +0 -1
  564. package/dist/branching/merge/executeMerge.d.ts +0 -22
  565. package/dist/branching/merge/executeMerge.d.ts.map +0 -1
  566. package/dist/branching/merge/executeMerge.js +0 -600
  567. package/dist/branching/merge/executeMerge.js.map +0 -1
  568. package/dist/branching/merge/finalizeMerge.d.ts +0 -40
  569. package/dist/branching/merge/finalizeMerge.d.ts.map +0 -1
  570. package/dist/branching/merge/finalizeMerge.js +0 -237
  571. package/dist/branching/merge/finalizeMerge.js.map +0 -1
  572. package/dist/branching/merge/mergeLedger.d.ts +0 -40
  573. package/dist/branching/merge/mergeLedger.d.ts.map +0 -1
  574. package/dist/branching/merge/mergeLedger.js +0 -130
  575. package/dist/branching/merge/mergeLedger.js.map +0 -1
  576. package/dist/branching/merge/prepareMerge.d.ts +0 -41
  577. package/dist/branching/merge/prepareMerge.d.ts.map +0 -1
  578. package/dist/branching/merge/prepareMerge.js +0 -234
  579. package/dist/branching/merge/prepareMerge.js.map +0 -1
  580. package/dist/branching/merge/recoverMerge.d.ts +0 -16
  581. package/dist/branching/merge/recoverMerge.d.ts.map +0 -1
  582. package/dist/branching/merge/recoverMerge.js +0 -199
  583. package/dist/branching/merge/recoverMerge.js.map +0 -1
  584. package/dist/branching/merge/retryFailedCleanups.d.ts +0 -36
  585. package/dist/branching/merge/retryFailedCleanups.d.ts.map +0 -1
  586. package/dist/branching/merge/retryFailedCleanups.js +0 -335
  587. package/dist/branching/merge/retryFailedCleanups.js.map +0 -1
  588. package/dist/branching/merge/utilities.d.ts +0 -35
  589. package/dist/branching/merge/utilities.d.ts.map +0 -1
  590. package/dist/branching/merge/utilities.js +0 -54
  591. package/dist/branching/merge/utilities.js.map +0 -1
  592. package/dist/branching/merge.d.ts +0 -88
  593. package/dist/branching/merge.d.ts.map +0 -1
  594. package/dist/branching/merge.js +0 -163
  595. package/dist/branching/merge.js.map +0 -1
  596. package/dist/branching/mergeWriteGuard.d.ts +0 -20
  597. package/dist/branching/mergeWriteGuard.d.ts.map +0 -1
  598. package/dist/branching/mergeWriteGuard.js +0 -27
  599. package/dist/branching/mergeWriteGuard.js.map +0 -1
  600. package/dist/branching/preflight.d.ts +0 -71
  601. package/dist/branching/preflight.d.ts.map +0 -1
  602. package/dist/branching/preflight.js +0 -757
  603. package/dist/branching/preflight.js.map +0 -1
  604. package/dist/branching/readLocalizedBranchWrite.d.ts +0 -14
  605. package/dist/branching/readLocalizedBranchWrite.d.ts.map +0 -1
  606. package/dist/branching/readLocalizedBranchWrite.js +0 -90
  607. package/dist/branching/readLocalizedBranchWrite.js.map +0 -1
  608. package/dist/branching/readMergeSnapshot.d.ts +0 -18
  609. package/dist/branching/readMergeSnapshot.d.ts.map +0 -1
  610. package/dist/branching/readMergeSnapshot.js +0 -99
  611. package/dist/branching/readMergeSnapshot.js.map +0 -1
  612. package/dist/branching/resolveBranch.d.ts +0 -153
  613. package/dist/branching/resolveBranch.d.ts.map +0 -1
  614. package/dist/branching/resolveBranch.js +0 -363
  615. package/dist/branching/resolveBranch.js.map +0 -1
  616. package/dist/branching/resolveBranchActionAccess.d.ts +0 -8
  617. package/dist/branching/resolveBranchActionAccess.d.ts.map +0 -1
  618. package/dist/branching/resolveBranchActionAccess.js +0 -9
  619. package/dist/branching/resolveBranchActionAccess.js.map +0 -1
  620. package/dist/branching/resolveBranchQuery.d.ts +0 -48
  621. package/dist/branching/resolveBranchQuery.d.ts.map +0 -1
  622. package/dist/branching/resolveBranchQuery.js +0 -115
  623. package/dist/branching/resolveBranchQuery.js.map +0 -1
  624. package/dist/branching/resolveBranchRowID.d.ts +0 -22
  625. package/dist/branching/resolveBranchRowID.d.ts.map +0 -1
  626. package/dist/branching/resolveBranchRowID.js +0 -70
  627. package/dist/branching/resolveBranchRowID.js.map +0 -1
  628. package/dist/branching/sanitizeBranchingConfig.d.ts +0 -31
  629. package/dist/branching/sanitizeBranchingConfig.d.ts.map +0 -1
  630. package/dist/branching/sanitizeBranchingConfig.js +0 -110
  631. package/dist/branching/sanitizeBranchingConfig.js.map +0 -1
  632. package/dist/branching/schedule/job.d.ts +0 -51
  633. package/dist/branching/schedule/job.d.ts.map +0 -1
  634. package/dist/branching/schedule/job.js +0 -151
  635. package/dist/branching/schedule/job.js.map +0 -1
  636. package/dist/branching/selectBranchChanges.d.ts +0 -8
  637. package/dist/branching/selectBranchChanges.d.ts.map +0 -1
  638. package/dist/branching/selectBranchChanges.js +0 -9
  639. package/dist/branching/selectBranchChanges.js.map +0 -1
  640. package/dist/branching/stripBranchMergeData.d.ts +0 -11
  641. package/dist/branching/stripBranchMergeData.d.ts.map +0 -1
  642. package/dist/branching/stripBranchMergeData.js +0 -20
  643. package/dist/branching/stripBranchMergeData.js.map +0 -1
  644. package/dist/branching/tombstone.d.ts +0 -91
  645. package/dist/branching/tombstone.d.ts.map +0 -1
  646. package/dist/branching/tombstone.js +0 -546
  647. package/dist/branching/tombstone.js.map +0 -1
  648. package/dist/branching/types.d.ts +0 -158
  649. package/dist/branching/types.d.ts.map +0 -1
  650. package/dist/branching/types.js +0 -54
  651. package/dist/branching/types.js.map +0 -1
  652. package/dist/branching/validation.d.ts +0 -47
  653. package/dist/branching/validation.d.ts.map +0 -1
  654. package/dist/branching/validation.js +0 -272
  655. package/dist/branching/validation.js.map +0 -1
  656. package/dist/branching/versions.d.ts +0 -131
  657. package/dist/branching/versions.d.ts.map +0 -1
  658. package/dist/branching/versions.js +0 -572
  659. package/dist/branching/versions.js.map +0 -1
  660. package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts +0 -23
  661. package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts.map +0 -1
  662. package/dist/collections/operations/utilities/createOperationRetryRequest.js +0 -683
  663. package/dist/collections/operations/utilities/createOperationRetryRequest.js.map +0 -1
  664. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts +0 -3
  665. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts.map +0 -1
  666. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js +0 -3
  667. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js.map +0 -1
  668. package/dist/uploads/appendBranchToFileURL.d.ts +0 -6
  669. package/dist/uploads/appendBranchToFileURL.d.ts.map +0 -1
  670. package/dist/uploads/appendBranchToFileURL.js +0 -24
  671. package/dist/uploads/appendBranchToFileURL.js.map +0 -1
  672. package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts +0 -15
  673. package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts.map +0 -1
  674. package/dist/uploads/deleteUploadFilesExclusiveToDocument.js +0 -62
  675. package/dist/uploads/deleteUploadFilesExclusiveToDocument.js.map +0 -1
  676. package/dist/uploads/fileIdentity.d.ts +0 -24
  677. package/dist/uploads/fileIdentity.d.ts.map +0 -1
  678. package/dist/uploads/fileIdentity.js +0 -36
  679. package/dist/uploads/fileIdentity.js.map +0 -1
  680. package/dist/uploads/fileQuarantine.d.ts +0 -17
  681. package/dist/uploads/fileQuarantine.d.ts.map +0 -1
  682. package/dist/uploads/fileQuarantine.js +0 -52
  683. package/dist/uploads/fileQuarantine.js.map +0 -1
  684. package/dist/uploads/linkFileWithoutOverwrite.d.ts +0 -13
  685. package/dist/uploads/linkFileWithoutOverwrite.d.ts.map +0 -1
  686. package/dist/uploads/linkFileWithoutOverwrite.js +0 -13
  687. package/dist/uploads/linkFileWithoutOverwrite.js.map +0 -1
  688. package/dist/uploads/uploadFileRollback.d.ts +0 -31
  689. package/dist/uploads/uploadFileRollback.d.ts.map +0 -1
  690. package/dist/uploads/uploadFileRollback.js +0 -269
  691. package/dist/uploads/uploadFileRollback.js.map +0 -1
  692. package/dist/utilities/extractRelationshipID.d.ts +0 -4
  693. package/dist/utilities/extractRelationshipID.d.ts.map +0 -1
  694. package/dist/utilities/extractRelationshipID.js +0 -14
  695. package/dist/utilities/extractRelationshipID.js.map +0 -1
  696. package/dist/utilities/transactionCallbacks.d.ts +0 -77
  697. package/dist/utilities/transactionCallbacks.d.ts.map +0 -1
  698. package/dist/utilities/transactionCallbacks.js +0 -299
  699. package/dist/utilities/transactionCallbacks.js.map +0 -1
  700. package/dist/utilities/transactionMutationTracker.d.ts +0 -21
  701. package/dist/utilities/transactionMutationTracker.d.ts.map +0 -1
  702. package/dist/utilities/transactionMutationTracker.js +0 -71
  703. package/dist/utilities/transactionMutationTracker.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/findByID.ts"],"sourcesContent":["import type { FindOneArgs } from '../../database/types.js'\nimport type { CollectionSlug, FindOptions, JoinQuery } from '../../index.js'\nimport type {\n ApplyDisableErrors,\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { NotFound } from '../../errors/index.js'\nimport { afterRead, type AfterReadArgs } from '../../fields/hooks/afterRead/index.js'\nimport { validateQueryPaths } from '../../index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { replaceWithDraftIfAvailable } from '../../versions/drafts/replaceWithDraftIfAvailable.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type FindByIDArgs = {\n collection: Collection\n currentDepth?: number\n /**\n * You may pass the document data directly which will skip the `db.findOne` database query.\n * This is useful if you want to use this endpoint solely for running hooks and populating data.\n */\n data?: Record<string, unknown>\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n id: number | string\n includeLockStatus?: boolean\n joins?: JoinQuery\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<AfterReadArgs<JsonObject>, 'flattenLocales'> &\n Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findByIDOperation = async <\n TSlug extends CollectionSlug,\n TDisableErrors extends boolean,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: FindByIDArgs,\n): Promise<ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>> => {\n let args = incomingArgs\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'read',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n draft: replaceWithVersion = false,\n flattenLocales,\n includeLockStatus: includeLockStatusFromArgs,\n joins,\n overrideAccess = false,\n populate,\n req: { fallbackLocale, locale, t },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n const includeLockStatus =\n includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug]\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResult = !overrideAccess\n ? await executeAccess(\n { id, slug: collectionConfig.slug, disableErrors, req },\n collectionConfig.access.read,\n )\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResult === false) {\n return null!\n }\n\n const isValidID =\n (typeof id === 'string' && id.length > 0) || (typeof id === 'number' && Number.isFinite(id))\n\n if (!isValidID) {\n throw new NotFound(t)\n }\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResult)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({\n fields: collectionConfig.flattenedFields,\n payload: args.req.payload,\n where: fullWhere,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess,\n req,\n })\n\n // execute only if there's a custom ID and potentially overwriten access on id\n if (req.payload.collections[collectionConfig.slug]!.customIDType) {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n }\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n const shouldQueryDrafts = !args.data && replaceWithVersion && hasDraftsEnabled(collectionConfig)\n let docWithLocales: DataFromCollectionSlug<TSlug> | null | undefined\n let query = fullWhere\n\n let dbSelect = select\n\n if (\n collectionConfig.versions?.drafts &&\n replaceWithVersion &&\n select &&\n getSelectMode(select) === 'include'\n ) {\n dbSelect = { ...select, createdAt: true, updatedAt: true }\n }\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n draftsEnabled: replaceWithVersion,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n locale: locale!,\n req: {\n // `branch`, `context` and `payload` are needed so the adapter can apply\n // the branch predicate and reuse this request's memoized change\n // manifest. Without them the read silently resolves against main.\n branch: req.branch,\n context: req.context,\n payload: req.payload,\n transactionID: req.transactionID,\n } as PayloadRequest,\n select: dbSelect,\n where: fullWhere,\n }\n\n if (shouldQueryDrafts) {\n query = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n versionFields: buildVersionCollectionFields(req.payload.config, collectionConfig, true),\n where: appendVersionToQueryKey(where),\n })\n\n const { docs } = await req.payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select: getQueryDraftsSelect({ select }),\n where: query,\n })\n\n docWithLocales = docs[0]\n\n if (!docWithLocales) {\n const { docs: existingVersions } = await req.payload.db.queryDrafts({\n collection: collectionConfig.slug,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select: { parent: true },\n where: appendVersionToQueryKey(where),\n })\n\n if (!existingVersions[0]) {\n query = fullWhere\n docWithLocales = await req.payload.db.findOne(findOneArgs)\n }\n }\n } else {\n docWithLocales = await req.payload.db.findOne(findOneArgs)\n }\n\n if (!docWithLocales && !args.data) {\n if (!disableErrors) {\n throw new NotFound(req.t)\n }\n return null!\n }\n\n let result: DataFromCollectionSlug<TSlug> =\n (args.data as DataFromCollectionSlug<TSlug>) ?? docWithLocales!\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\n // Include Lock Status if required\n // /////////////////////////////////////\n\n if (includeLockStatus && id) {\n let lockStatus: (JsonObject & TypeWithID) | null = null\n\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const lockedDocument = await req.payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n and: [\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n 'document.value': {\n equals: id,\n },\n },\n // Query where the lock is newer than the current time minus lock time\n {\n updatedAt: {\n greater_than: new Date(new Date().getTime() - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n if (lockedDocument && lockedDocument.docs.length > 0) {\n lockStatus = lockedDocument.docs[0]!\n }\n } catch {\n // swallow error\n }\n\n result._isLocked = !!lockStatus\n result._userEditing = lockStatus?.user?.value ?? null\n }\n\n // /////////////////////////////////////\n // Replace document with draft if available\n // /////////////////////////////////////\n\n if (!shouldQueryDrafts && replaceWithVersion && hasDraftsEnabled(collectionConfig)) {\n result = await replaceWithDraftIfAvailable({\n accessResult,\n doc: result,\n entity: collectionConfig,\n entityType: 'collection',\n overrideAccess,\n req,\n select,\n })\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n overrideAccess,\n query,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result,\n draft: replaceWithVersion,\n fallbackLocale: fallbackLocale!,\n flattenLocales,\n global: null,\n locale: locale!,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n overrideAccess,\n query,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>\n}\n"],"names":["executeAccess","combineQueries","sanitizeJoinQuery","sanitizeWhereQuery","NotFound","afterRead","validateQueryPaths","lockedDocumentsCollectionSlug","appendNonTrashedFilter","getSelectMode","hasDraftsEnabled","resolveSelect","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","replaceWithDraftIfAvailable","buildAfterOperation","buildBeforeOperation","findByIDOperation","incomingArgs","args","collection","config","operation","overrideAccess","id","collectionConfig","currentDepth","depth","disableErrors","draft","replaceWithVersion","flattenLocales","includeLockStatus","includeLockStatusFromArgs","joins","populate","req","fallbackLocale","locale","t","select","incomingSelect","showHiddenFields","trash","payload","collections","fields","flattenedFields","accessResult","slug","access","read","isValidID","length","Number","isFinite","where","equals","fullWhere","enableTrash","sanitizedJoins","customIDType","shouldQueryDrafts","data","docWithLocales","query","dbSelect","versions","drafts","createdAt","updatedAt","findOneArgs","draftsEnabled","payloadAPI","branch","context","transactionID","versionFields","docs","db","queryDrafts","limit","pagination","existingVersions","parent","findOne","result","auth","lockStatus","lockDocumentsProp","lockDocuments","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","lockedDocument","find","and","greater_than","Date","getTime","_isLocked","_userEditing","user","value","doc","entity","entityType","hooks","beforeRead","hook","global"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/findByID.ts"],"sourcesContent":["import type { FindOneArgs } from '../../database/types.js'\nimport type { CollectionSlug, FindOptions, JoinQuery } from '../../index.js'\nimport type {\n ApplyDisableErrors,\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { NotFound } from '../../errors/index.js'\nimport { afterRead, type AfterReadArgs } from '../../fields/hooks/afterRead/index.js'\nimport { validateQueryPaths } from '../../index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { replaceWithDraftIfAvailable } from '../../versions/drafts/replaceWithDraftIfAvailable.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type FindByIDArgs = {\n collection: Collection\n currentDepth?: number\n /**\n * You may pass the document data directly which will skip the `db.findOne` database query.\n * This is useful if you want to use this endpoint solely for running hooks and populating data.\n */\n data?: Record<string, unknown>\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n id: number | string\n includeLockStatus?: boolean\n joins?: JoinQuery\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<AfterReadArgs<JsonObject>, 'flattenLocales'> &\n Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findByIDOperation = async <\n TSlug extends CollectionSlug,\n TDisableErrors extends boolean,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: FindByIDArgs,\n): Promise<ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>> => {\n let args = incomingArgs\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'read',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n draft: replaceWithVersion = false,\n flattenLocales,\n includeLockStatus: includeLockStatusFromArgs,\n joins,\n overrideAccess = false,\n populate,\n req: { fallbackLocale, locale, t },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n const includeLockStatus =\n includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug]\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResult = !overrideAccess\n ? await executeAccess(\n { id, slug: collectionConfig.slug, disableErrors, req },\n collectionConfig.access.read,\n )\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResult === false) {\n return null!\n }\n\n const isValidID =\n (typeof id === 'string' && id.length > 0) || (typeof id === 'number' && Number.isFinite(id))\n\n if (!isValidID) {\n throw new NotFound(t)\n }\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResult)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({\n fields: collectionConfig.flattenedFields,\n payload: args.req.payload,\n where: fullWhere,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess,\n req,\n })\n\n // execute only if there's a custom ID and potentially overwriten access on id\n if (req.payload.collections[collectionConfig.slug]!.customIDType) {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n }\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n const shouldQueryDrafts = !args.data && replaceWithVersion && hasDraftsEnabled(collectionConfig)\n let docWithLocales: DataFromCollectionSlug<TSlug> | null | undefined\n let query = fullWhere\n\n let dbSelect = select\n\n if (\n collectionConfig.versions?.drafts &&\n replaceWithVersion &&\n select &&\n getSelectMode(select) === 'include'\n ) {\n dbSelect = { ...select, createdAt: true, updatedAt: true }\n }\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n draftsEnabled: replaceWithVersion,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n locale: locale!,\n req: {\n transactionID: req.transactionID,\n },\n select: dbSelect,\n where: fullWhere,\n }\n\n if (shouldQueryDrafts) {\n query = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n versionFields: buildVersionCollectionFields(req.payload.config, collectionConfig, true),\n where: appendVersionToQueryKey(where),\n })\n\n const { docs } = await req.payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select: getQueryDraftsSelect({ select }),\n where: query,\n })\n\n docWithLocales = docs[0]\n\n if (!docWithLocales) {\n const { docs: existingVersions } = await req.payload.db.queryDrafts({\n collection: collectionConfig.slug,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select: { parent: true },\n where: appendVersionToQueryKey(where),\n })\n\n if (!existingVersions[0]) {\n query = fullWhere\n docWithLocales = await req.payload.db.findOne(findOneArgs)\n }\n }\n } else {\n docWithLocales = await req.payload.db.findOne(findOneArgs)\n }\n\n if (!docWithLocales && !args.data) {\n if (!disableErrors) {\n throw new NotFound(req.t)\n }\n return null!\n }\n\n let result: DataFromCollectionSlug<TSlug> =\n (args.data as DataFromCollectionSlug<TSlug>) ?? docWithLocales!\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\n // Include Lock Status if required\n // /////////////////////////////////////\n\n if (includeLockStatus && id) {\n let lockStatus: (JsonObject & TypeWithID) | null = null\n\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const lockedDocument = await req.payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n and: [\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n 'document.value': {\n equals: id,\n },\n },\n // Query where the lock is newer than the current time minus lock time\n {\n updatedAt: {\n greater_than: new Date(new Date().getTime() - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n if (lockedDocument && lockedDocument.docs.length > 0) {\n lockStatus = lockedDocument.docs[0]!\n }\n } catch {\n // swallow error\n }\n\n result._isLocked = !!lockStatus\n result._userEditing = lockStatus?.user?.value ?? null\n }\n\n // /////////////////////////////////////\n // Replace document with draft if available\n // /////////////////////////////////////\n\n if (!shouldQueryDrafts && replaceWithVersion && hasDraftsEnabled(collectionConfig)) {\n result = await replaceWithDraftIfAvailable({\n accessResult,\n doc: result,\n entity: collectionConfig,\n entityType: 'collection',\n overrideAccess,\n req,\n select,\n })\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n overrideAccess,\n query,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result,\n draft: replaceWithVersion,\n fallbackLocale: fallbackLocale!,\n flattenLocales,\n global: null,\n locale: locale!,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n overrideAccess,\n query,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>\n}\n"],"names":["executeAccess","combineQueries","sanitizeJoinQuery","sanitizeWhereQuery","NotFound","afterRead","validateQueryPaths","lockedDocumentsCollectionSlug","appendNonTrashedFilter","getSelectMode","hasDraftsEnabled","resolveSelect","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","replaceWithDraftIfAvailable","buildAfterOperation","buildBeforeOperation","findByIDOperation","incomingArgs","args","collection","config","operation","overrideAccess","id","collectionConfig","currentDepth","depth","disableErrors","draft","replaceWithVersion","flattenLocales","includeLockStatus","includeLockStatusFromArgs","joins","populate","req","fallbackLocale","locale","t","select","incomingSelect","showHiddenFields","trash","payload","collections","fields","flattenedFields","accessResult","slug","access","read","isValidID","length","Number","isFinite","where","equals","fullWhere","enableTrash","sanitizedJoins","customIDType","shouldQueryDrafts","data","docWithLocales","query","dbSelect","versions","drafts","createdAt","updatedAt","findOneArgs","draftsEnabled","payloadAPI","transactionID","versionFields","docs","db","queryDrafts","limit","pagination","existingVersions","parent","findOne","result","auth","lockStatus","lockDocumentsProp","lockDocuments","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","lockedDocument","find","and","greater_than","Date","getTime","_isLocked","_userEditing","user","value","doc","entity","entityType","hooks","beforeRead","hook","context","global"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findDistinct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAmBpD,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAmBD,eAAO,MAAM,qBAAqB,iBAClB,SAAS,KACtB,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA+SxD,CAAA"}
1
+ {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findDistinct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAmBpD,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAmBD,eAAO,MAAM,qBAAqB,iBAClB,SAAS,KACtB,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2SxD,CAAA"}
@@ -79,20 +79,19 @@ export const findDistinctOperation = async (incomingArgs)=>{
79
79
  req,
80
80
  where: where ?? {}
81
81
  });
82
- const isIDField = args.field === 'id';
83
- const fieldResult = isIDField ? undefined : getFieldByPath({
82
+ const fieldResult = getFieldByPath({
84
83
  config: payload.config,
85
84
  fields: collectionConfig.flattenedFields,
86
85
  includeRelationships: true,
87
86
  path: args.field
88
87
  });
89
- if (!isIDField && !fieldResult) {
88
+ if (!fieldResult) {
90
89
  throw new APIError(`Field ${args.field} was not found in the collection ${collectionConfig.slug}`, httpStatus.BAD_REQUEST);
91
90
  }
92
- if (fieldResult?.field.hidden && !showHiddenFields) {
91
+ if (fieldResult.field.hidden && !showHiddenFields) {
93
92
  throw new Forbidden(req.t);
94
93
  }
95
- if (fieldResult?.field.access?.read) {
94
+ if (fieldResult.field.access?.read) {
96
95
  const hasAccess = await fieldResult.field.access.read({
97
96
  collection: collectionConfig,
98
97
  req
@@ -178,7 +177,7 @@ export const findDistinctOperation = async (incomingArgs)=>{
178
177
  sort: args.sort
179
178
  });
180
179
  }
181
- if (fieldResult && 'virtual' in fieldResult.field && fieldResult.field.virtual) {
180
+ if ('virtual' in fieldResult.field && fieldResult.field.virtual) {
182
181
  if (typeof fieldResult.field.virtual !== 'string') {
183
182
  throw new APIError(`Cannot findDistinct by a virtual field that isn't linked to a relationship field.`);
184
183
  }
@@ -230,7 +229,7 @@ export const findDistinctOperation = async (incomingArgs)=>{
230
229
  sort: args.sort,
231
230
  where: fullWhere
232
231
  });
233
- if (fieldResult && (fieldResult.field.type === 'relationship' || fieldResult.field.type === 'upload') && args.depth) {
232
+ if ((fieldResult.field.type === 'relationship' || fieldResult.field.type === 'upload') && args.depth) {
234
233
  const populationPromises = [];
235
234
  const sanitizedField = {
236
235
  ...fieldResult.field
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/findDistinct.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDistinctDocs } from '../../database/types.js'\nimport type { FlattenedField } from '../../fields/config/types.js'\nimport type { PayloadRequest, PopulateType, Sort, Where } from '../../types/index.js'\nimport type { Collection } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { getLocalizedPaths } from '../../database/getLocalizedPaths.js'\nimport { prefixWherePaths } from '../../database/prefixWherePaths.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/APIError.js'\nimport { Forbidden } from '../../errors/Forbidden.js'\nimport { QueryError } from '../../errors/QueryError.js'\nimport { relationshipPopulationPromise } from '../../fields/hooks/afterRead/relationshipPopulationPromise.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { getFieldByPath } from '../../utilities/getFieldByPath.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n disableErrors?: boolean\n field: string\n limit?: number\n locale?: string\n overrideAccess?: boolean\n page?: number\n populate?: PopulateType\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: Sort\n trash?: boolean\n where?: Where\n}\n\nconst getEmptyResult = ({\n limit,\n}: {\n limit?: number\n}): PaginatedDistinctDocs<Record<string, unknown>> => ({\n hasNextPage: false,\n hasPrevPage: false,\n limit: limit || 0,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 0,\n values: [],\n})\n\nexport const findDistinctOperation = async (\n incomingArgs: Arguments,\n): Promise<PaginatedDistinctDocs<Record<string, unknown>>> => {\n let args = incomingArgs\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'readDistinct',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n disableErrors,\n overrideAccess,\n populate,\n showHiddenFields = false,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n const { locale, payload } = req\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess(\n { slug: collectionConfig.slug, disableErrors, req },\n collectionConfig.access.read,\n )\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return getEmptyResult({ limit: args.limit })\n }\n }\n\n // /////////////////////////////////////\n // Find Distinct\n // /////////////////////////////////////\n\n let fullWhere = combineQueries(where!, accessResult!)\n sanitizeWhereQuery({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const relatedAccessByPath: Record<string, Where> = {}\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where: where ?? {},\n })\n\n const isIDField = args.field === 'id'\n const fieldResult = isIDField\n ? undefined\n : getFieldByPath({\n config: payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })\n\n if (!isIDField && !fieldResult) {\n throw new APIError(\n `Field ${args.field} was not found in the collection ${collectionConfig.slug}`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n if (fieldResult?.field.hidden && !showHiddenFields) {\n throw new Forbidden(req.t)\n }\n\n if (fieldResult?.field.access?.read) {\n const hasAccess = await fieldResult.field.access.read({\n collection: collectionConfig,\n req,\n })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n if (!overrideAccess) {\n const paths = getLocalizedPaths({\n collectionSlug: collectionConfig.slug,\n fields: collectionConfig.flattenedFields,\n incomingPath: args.field,\n locale: req.locale!,\n overrideAccess: true,\n payload,\n })\n\n if (paths.at(-1)?.path === 'id') {\n const previousField = paths.at(-2)?.field\n if (\n previousField &&\n (previousField.type === 'relationship' || previousField.type === 'upload') &&\n typeof previousField.relationTo === 'string'\n ) {\n paths.pop()\n }\n }\n\n const relatedAccessByCollection = new Map<string, AccessResult>()\n\n for (let pathIndex = 1; pathIndex < paths.length; pathIndex++) {\n const collectionSlug = paths[pathIndex]?.collectionSlug\n\n if (!collectionSlug) {\n continue\n }\n\n if (!relatedAccessByCollection.has(collectionSlug)) {\n const relatedCollectionConfig = payload.collections[collectionSlug]!.config\n const relatedAccess = await executeAccess(\n { slug: collectionSlug, disableErrors: true, req },\n relatedCollectionConfig.access.read,\n )\n\n if (typeof relatedAccess === 'object') {\n sanitizeWhereQuery({\n fields: relatedCollectionConfig.flattenedFields,\n payload,\n where: relatedAccess,\n })\n }\n\n relatedAccessByCollection.set(collectionSlug, relatedAccess)\n }\n\n const relatedAccess = relatedAccessByCollection.get(collectionSlug)!\n\n if (relatedAccess === false) {\n if (disableErrors) {\n return getEmptyResult({ limit: args.limit })\n }\n\n throw new QueryError([{ path: args.field }])\n }\n\n if (typeof relatedAccess === 'object') {\n const relationshipPath = paths\n .slice(0, pathIndex)\n .map(({ path }) => path)\n .join('.')\n\n relatedAccessByPath[relationshipPath] = relatedAccess\n fullWhere = combineQueries(\n fullWhere,\n prefixWherePaths({ prefix: relationshipPath, where: relatedAccess }),\n )\n }\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: false,\n req,\n showHiddenFields,\n where: {\n [args.field]: {\n exists: true,\n },\n },\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: false,\n req,\n sort: args.sort,\n })\n }\n\n if (fieldResult && 'virtual' in fieldResult.field && fieldResult.field.virtual) {\n if (typeof fieldResult.field.virtual !== 'string') {\n throw new APIError(\n `Cannot findDistinct by a virtual field that isn't linked to a relationship field.`,\n )\n }\n\n let relationPath: string = ''\n let currentFields: FlattenedField[] = collectionConfig.flattenedFields\n const fieldPathSegments = fieldResult.field.virtual.split('.')\n for (const segment of fieldResult.field.virtual.split('.')) {\n relationPath = `${relationPath}${segment}`\n fieldPathSegments.shift()\n const field = currentFields.find((e) => e.name === segment)!\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n typeof field.relationTo === 'string'\n ) {\n break\n }\n if ('flattenedFields' in field) {\n currentFields = field.flattenedFields\n }\n }\n\n const path = `${relationPath}.${fieldPathSegments.join('.')}`\n\n const result = await payload.findDistinct({\n collection: collectionConfig.slug,\n depth: args.depth,\n disableErrors,\n field: path,\n limit: args.limit,\n locale,\n overrideAccess,\n page: args.page,\n populate,\n req,\n showHiddenFields,\n sort: args.sort,\n trash,\n where,\n })\n\n for (const val of result.values) {\n val[args.field] = val[path]\n delete val[path]\n }\n\n return result\n }\n\n let result = await payload.db.findDistinct({\n collection: collectionConfig.slug,\n field: args.field,\n limit: args.limit,\n locale: locale!,\n page: args.page,\n relatedAccess: relatedAccessByPath,\n req,\n sort: args.sort,\n where: fullWhere,\n })\n\n if (\n fieldResult &&\n (fieldResult.field.type === 'relationship' || fieldResult.field.type === 'upload') &&\n args.depth\n ) {\n const populationPromises: Promise<void>[] = []\n const sanitizedField = { ...fieldResult.field }\n if (fieldResult.field.hasMany) {\n sanitizedField.hasMany = false\n }\n for (const doc of result.values) {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth: 0,\n depth: args.depth,\n draft: false,\n fallbackLocale: req.fallbackLocale || null,\n field: sanitizedField,\n locale: req.locale || null,\n overrideAccess: args.overrideAccess ?? false,\n parentIsLocalized: false,\n populate,\n req,\n showHiddenFields: false,\n siblingDoc: doc,\n }),\n )\n }\n await Promise.all(populationPromises)\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findDistinct',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n}\n"],"names":["executeAccess","combineQueries","getLocalizedPaths","prefixWherePaths","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","APIError","Forbidden","QueryError","relationshipPopulationPromise","appendNonTrashedFilter","getFieldByPath","httpStatus","buildAfterOperation","buildBeforeOperation","getEmptyResult","limit","hasNextPage","hasPrevPage","nextPage","page","pagingCounter","prevPage","totalDocs","totalPages","values","findDistinctOperation","incomingArgs","args","collection","config","operation","overrideAccess","collectionConfig","disableErrors","populate","showHiddenFields","trash","where","req","locale","payload","accessResult","slug","access","read","fullWhere","fields","flattenedFields","enableTrash","relatedAccessByPath","isIDField","field","fieldResult","undefined","includeRelationships","path","BAD_REQUEST","hidden","t","hasAccess","paths","collectionSlug","incomingPath","at","previousField","type","relationTo","pop","relatedAccessByCollection","Map","pathIndex","length","has","relatedCollectionConfig","collections","relatedAccess","set","get","relationshipPath","slice","map","join","prefix","exists","sort","virtual","relationPath","currentFields","fieldPathSegments","split","segment","shift","find","e","name","result","findDistinct","depth","val","db","populationPromises","sanitizedField","hasMany","doc","push","currentDepth","draft","fallbackLocale","parentIsLocalized","siblingDoc","Promise","all"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/findDistinct.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDistinctDocs } from '../../database/types.js'\nimport type { FlattenedField } from '../../fields/config/types.js'\nimport type { PayloadRequest, PopulateType, Sort, Where } from '../../types/index.js'\nimport type { Collection } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { getLocalizedPaths } from '../../database/getLocalizedPaths.js'\nimport { prefixWherePaths } from '../../database/prefixWherePaths.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/APIError.js'\nimport { Forbidden } from '../../errors/Forbidden.js'\nimport { QueryError } from '../../errors/QueryError.js'\nimport { relationshipPopulationPromise } from '../../fields/hooks/afterRead/relationshipPopulationPromise.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { getFieldByPath } from '../../utilities/getFieldByPath.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n disableErrors?: boolean\n field: string\n limit?: number\n locale?: string\n overrideAccess?: boolean\n page?: number\n populate?: PopulateType\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: Sort\n trash?: boolean\n where?: Where\n}\n\nconst getEmptyResult = ({\n limit,\n}: {\n limit?: number\n}): PaginatedDistinctDocs<Record<string, unknown>> => ({\n hasNextPage: false,\n hasPrevPage: false,\n limit: limit || 0,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 0,\n values: [],\n})\n\nexport const findDistinctOperation = async (\n incomingArgs: Arguments,\n): Promise<PaginatedDistinctDocs<Record<string, unknown>>> => {\n let args = incomingArgs\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'readDistinct',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n disableErrors,\n overrideAccess,\n populate,\n showHiddenFields = false,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n const { locale, payload } = req\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess(\n { slug: collectionConfig.slug, disableErrors, req },\n collectionConfig.access.read,\n )\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return getEmptyResult({ limit: args.limit })\n }\n }\n\n // /////////////////////////////////////\n // Find Distinct\n // /////////////////////////////////////\n\n let fullWhere = combineQueries(where!, accessResult!)\n sanitizeWhereQuery({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const relatedAccessByPath: Record<string, Where> = {}\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where: where ?? {},\n })\n\n const fieldResult = getFieldByPath({\n config: payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })\n\n if (!fieldResult) {\n throw new APIError(\n `Field ${args.field} was not found in the collection ${collectionConfig.slug}`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n if (fieldResult.field.hidden && !showHiddenFields) {\n throw new Forbidden(req.t)\n }\n\n if (fieldResult.field.access?.read) {\n const hasAccess = await fieldResult.field.access.read({\n collection: collectionConfig,\n req,\n })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n if (!overrideAccess) {\n const paths = getLocalizedPaths({\n collectionSlug: collectionConfig.slug,\n fields: collectionConfig.flattenedFields,\n incomingPath: args.field,\n locale: req.locale!,\n overrideAccess: true,\n payload,\n })\n\n if (paths.at(-1)?.path === 'id') {\n const previousField = paths.at(-2)?.field\n if (\n previousField &&\n (previousField.type === 'relationship' || previousField.type === 'upload') &&\n typeof previousField.relationTo === 'string'\n ) {\n paths.pop()\n }\n }\n\n const relatedAccessByCollection = new Map<string, AccessResult>()\n\n for (let pathIndex = 1; pathIndex < paths.length; pathIndex++) {\n const collectionSlug = paths[pathIndex]?.collectionSlug\n\n if (!collectionSlug) {\n continue\n }\n\n if (!relatedAccessByCollection.has(collectionSlug)) {\n const relatedCollectionConfig = payload.collections[collectionSlug]!.config\n const relatedAccess = await executeAccess(\n { slug: collectionSlug, disableErrors: true, req },\n relatedCollectionConfig.access.read,\n )\n\n if (typeof relatedAccess === 'object') {\n sanitizeWhereQuery({\n fields: relatedCollectionConfig.flattenedFields,\n payload,\n where: relatedAccess,\n })\n }\n\n relatedAccessByCollection.set(collectionSlug, relatedAccess)\n }\n\n const relatedAccess = relatedAccessByCollection.get(collectionSlug)!\n\n if (relatedAccess === false) {\n if (disableErrors) {\n return getEmptyResult({ limit: args.limit })\n }\n\n throw new QueryError([{ path: args.field }])\n }\n\n if (typeof relatedAccess === 'object') {\n const relationshipPath = paths\n .slice(0, pathIndex)\n .map(({ path }) => path)\n .join('.')\n\n relatedAccessByPath[relationshipPath] = relatedAccess\n fullWhere = combineQueries(\n fullWhere,\n prefixWherePaths({ prefix: relationshipPath, where: relatedAccess }),\n )\n }\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: false,\n req,\n showHiddenFields,\n where: {\n [args.field]: {\n exists: true,\n },\n },\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: false,\n req,\n sort: args.sort,\n })\n }\n\n if ('virtual' in fieldResult.field && fieldResult.field.virtual) {\n if (typeof fieldResult.field.virtual !== 'string') {\n throw new APIError(\n `Cannot findDistinct by a virtual field that isn't linked to a relationship field.`,\n )\n }\n\n let relationPath: string = ''\n let currentFields: FlattenedField[] = collectionConfig.flattenedFields\n const fieldPathSegments = fieldResult.field.virtual.split('.')\n for (const segment of fieldResult.field.virtual.split('.')) {\n relationPath = `${relationPath}${segment}`\n fieldPathSegments.shift()\n const field = currentFields.find((e) => e.name === segment)!\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n typeof field.relationTo === 'string'\n ) {\n break\n }\n if ('flattenedFields' in field) {\n currentFields = field.flattenedFields\n }\n }\n\n const path = `${relationPath}.${fieldPathSegments.join('.')}`\n\n const result = await payload.findDistinct({\n collection: collectionConfig.slug,\n depth: args.depth,\n disableErrors,\n field: path,\n limit: args.limit,\n locale,\n overrideAccess,\n page: args.page,\n populate,\n req,\n showHiddenFields,\n sort: args.sort,\n trash,\n where,\n })\n\n for (const val of result.values) {\n val[args.field] = val[path]\n delete val[path]\n }\n\n return result\n }\n\n let result = await payload.db.findDistinct({\n collection: collectionConfig.slug,\n field: args.field,\n limit: args.limit,\n locale: locale!,\n page: args.page,\n relatedAccess: relatedAccessByPath,\n req,\n sort: args.sort,\n where: fullWhere,\n })\n\n if (\n (fieldResult.field.type === 'relationship' || fieldResult.field.type === 'upload') &&\n args.depth\n ) {\n const populationPromises: Promise<void>[] = []\n const sanitizedField = { ...fieldResult.field }\n if (fieldResult.field.hasMany) {\n sanitizedField.hasMany = false\n }\n for (const doc of result.values) {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth: 0,\n depth: args.depth,\n draft: false,\n fallbackLocale: req.fallbackLocale || null,\n field: sanitizedField,\n locale: req.locale || null,\n overrideAccess: args.overrideAccess ?? false,\n parentIsLocalized: false,\n populate,\n req,\n showHiddenFields: false,\n siblingDoc: doc,\n }),\n )\n }\n await Promise.all(populationPromises)\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findDistinct',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n}\n"],"names":["executeAccess","combineQueries","getLocalizedPaths","prefixWherePaths","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","APIError","Forbidden","QueryError","relationshipPopulationPromise","appendNonTrashedFilter","getFieldByPath","httpStatus","buildAfterOperation","buildBeforeOperation","getEmptyResult","limit","hasNextPage","hasPrevPage","nextPage","page","pagingCounter","prevPage","totalDocs","totalPages","values","findDistinctOperation","incomingArgs","args","collection","config","operation","overrideAccess","collectionConfig","disableErrors","populate","showHiddenFields","trash","where","req","locale","payload","accessResult","slug","access","read","fullWhere","fields","flattenedFields","enableTrash","relatedAccessByPath","fieldResult","includeRelationships","path","field","BAD_REQUEST","hidden","t","hasAccess","paths","collectionSlug","incomingPath","at","previousField","type","relationTo","pop","relatedAccessByCollection","Map","pathIndex","length","has","relatedCollectionConfig","collections","relatedAccess","set","get","relationshipPath","slice","map","join","prefix","exists","sort","virtual","relationPath","currentFields","fieldPathSegments","split","segment","shift","find","e","name","result","findDistinct","depth","val","db","populationPromises","sanitizedField","hasMany","doc","push","currentDepth","draft","fallbackLocale","parentIsLocalized","siblingDoc","Promise","all"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersionByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAsBhE,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,wBAAwB,GAAU,KAAK,SAAS,UAAU,GAAG,GAAG,QACrE,SAAS,KACd,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAqOhC,CAAA"}
1
+ {"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersionByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAuBhE,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,wBAAwB,GAAU,KAAK,SAAS,UAAU,GAAG,GAAG,QACrE,SAAS,KACd,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CA6OhC,CAAA"}
@@ -6,6 +6,7 @@ import { afterRead } from '../../fields/hooks/afterRead/index.js';
6
6
  import { checkFileAccess } from '../../uploads/checkFileAccess.js';
7
7
  import { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js';
8
8
  import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
9
+ import { hasVersionsEnabled } from '../../utilities/getVersionsConfig.js';
9
10
  import { httpStatus } from '../../utilities/httpStatus.js';
10
11
  import { resolveSelect } from '../../utilities/resolveSelect.js';
11
12
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
@@ -19,6 +20,12 @@ export const findVersionByIDOperation = async (args)=>{
19
20
  if (!id) {
20
21
  throw new APIError('Missing ID of version.', httpStatus.BAD_REQUEST);
21
22
  }
23
+ if (!hasVersionsEnabled(collectionConfig)) {
24
+ if (disableErrors) {
25
+ return null;
26
+ }
27
+ throw new NotFound(req.t);
28
+ }
22
29
  // /////////////////////////////////////
23
30
  // beforeOperation - Collection
24
31
  // /////////////////////////////////////
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/findVersionByID.ts"],"sourcesContent":["import type { FindOptions } from '../../index.js'\nimport type { PayloadRequest, PopulateType, SelectType } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection, TypeWithID } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { checkFileAccess } from '../../uploads/checkFileAccess.js'\nimport { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport {\n isInheritedReadVersionsAccess,\n withInheritedReadVersionsParentID,\n} from '../../versions/isInheritedReadVersionsAccess.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { prefetchVersionForInheritedReadAccess } from './utilities/prefetchVersionForInheritedReadAccess.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n id: number | string\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findVersionByIDOperation = async <TData extends TypeWithID = any>(\n args: Arguments,\n): Promise<TypeWithVersion<TData>> => {\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n overrideAccess,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of version.', httpStatus.BAD_REQUEST)\n }\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n })\n\n const where = { id: { equals: id } }\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n const select = sanitizeSelect({\n fields: versionFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\n const inheritsReadAccess = isInheritedReadVersionsAccess(collectionConfig.access.readVersions)\n const shouldPrefetchVersion = !overrideAccess && inheritsReadAccess\n const prefetched = shouldPrefetchVersion\n ? await prefetchVersionForInheritedReadAccess<TData>({\n id,\n collectionConfig,\n locale: locale!,\n req,\n select,\n trash,\n })\n : undefined\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n id,\n slug: collectionConfig.slug,\n disableErrors,\n req,\n },\n inheritsReadAccess\n ? (accessArgs) =>\n collectionConfig.access.readVersions(\n withInheritedReadVersionsParentID(accessArgs, prefetched?.parentID),\n )\n : collectionConfig.access.readVersions,\n )\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResults === false) {\n return null!\n }\n\n const hasWhereAccess = typeof accessResults === 'object'\n\n let fullWhere = combineQueries(where, accessResults)\n\n fullWhere = appendNonTrashedFilter({\n deletedAtPath: 'version.deletedAt',\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: versionFields, payload, where: fullWhere })\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n let result = prefetched?.version as TypeWithVersion<TData>\n\n if (!shouldPrefetchVersion || hasWhereAccess) {\n const versionsQuery = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select,\n where: fullWhere,\n })\n\n result = versionsQuery.docs[0]!\n }\n\n if (!result) {\n if (!disableErrors) {\n if (!hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n return null!\n }\n\n if (collectionConfig.upload && !overrideAccess) {\n const filename = (result.version as Record<string, unknown>)?.filename\n\n await checkFileAccess({\n collection: args.collection,\n documentID: result.parent,\n filename: typeof filename === 'string' ? filename : '',\n req,\n })\n }\n\n if (!result.version) {\n // Fallback if not selected\n ;(result as any).version = {}\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || result.version\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || result.version\n }\n }\n\n if (collectionConfig.upload) {\n result.version = markHistoricalFileURLs({\n collectionSlug: collectionConfig.slug,\n doc: result.version as Record<string, unknown>,\n req,\n versionID: result.id,\n }) as TData\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n}\n"],"names":["executeAccess","combineQueries","sanitizeWhereQuery","APIError","Forbidden","NotFound","afterRead","checkFileAccess","markHistoricalFileURLs","appendNonTrashedFilter","httpStatus","resolveSelect","sanitizeSelect","buildVersionCollectionFields","isInheritedReadVersionsAccess","withInheritedReadVersionsParentID","buildAfterOperation","buildBeforeOperation","prefetchVersionForInheritedReadAccess","findVersionByIDOperation","args","id","collection","config","collectionConfig","currentDepth","depth","disableErrors","overrideAccess","populate","req","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","BAD_REQUEST","operation","where","equals","versionFields","fields","versions","inheritsReadAccess","access","readVersions","shouldPrefetchVersion","prefetched","undefined","accessResults","slug","accessArgs","parentID","hasWhereAccess","fullWhere","deletedAtPath","enableTrash","result","version","versionsQuery","db","findVersions","limit","pagination","docs","t","upload","filename","documentID","parent","hooks","beforeRead","length","hook","context","doc","query","draft","global","collectionSlug","versionID"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/findVersionByID.ts"],"sourcesContent":["import type { FindOptions } from '../../index.js'\nimport type { PayloadRequest, PopulateType, SelectType } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection, TypeWithID } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { checkFileAccess } from '../../uploads/checkFileAccess.js'\nimport { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { hasVersionsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport {\n isInheritedReadVersionsAccess,\n withInheritedReadVersionsParentID,\n} from '../../versions/isInheritedReadVersionsAccess.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { prefetchVersionForInheritedReadAccess } from './utilities/prefetchVersionForInheritedReadAccess.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n id: number | string\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findVersionByIDOperation = async <TData extends TypeWithID = any>(\n args: Arguments,\n): Promise<TypeWithVersion<TData>> => {\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n overrideAccess,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of version.', httpStatus.BAD_REQUEST)\n }\n\n if (!hasVersionsEnabled(collectionConfig)) {\n if (disableErrors) {\n return null!\n }\n\n throw new NotFound(req.t)\n }\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n })\n\n const where = { id: { equals: id } }\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n const select = sanitizeSelect({\n fields: versionFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\n const inheritsReadAccess = isInheritedReadVersionsAccess(collectionConfig.access.readVersions)\n const shouldPrefetchVersion = !overrideAccess && inheritsReadAccess\n const prefetched = shouldPrefetchVersion\n ? await prefetchVersionForInheritedReadAccess<TData>({\n id,\n collectionConfig,\n locale: locale!,\n req,\n select,\n trash,\n })\n : undefined\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n id,\n slug: collectionConfig.slug,\n disableErrors,\n req,\n },\n inheritsReadAccess\n ? (accessArgs) =>\n collectionConfig.access.readVersions(\n withInheritedReadVersionsParentID(accessArgs, prefetched?.parentID),\n )\n : collectionConfig.access.readVersions,\n )\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResults === false) {\n return null!\n }\n\n const hasWhereAccess = typeof accessResults === 'object'\n\n let fullWhere = combineQueries(where, accessResults)\n\n fullWhere = appendNonTrashedFilter({\n deletedAtPath: 'version.deletedAt',\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: versionFields, payload, where: fullWhere })\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n let result = prefetched?.version as TypeWithVersion<TData>\n\n if (!shouldPrefetchVersion || hasWhereAccess) {\n const versionsQuery = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select,\n where: fullWhere,\n })\n\n result = versionsQuery.docs[0]!\n }\n\n if (!result) {\n if (!disableErrors) {\n if (!hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n return null!\n }\n\n if (collectionConfig.upload && !overrideAccess) {\n const filename = (result.version as Record<string, unknown>)?.filename\n\n await checkFileAccess({\n collection: args.collection,\n documentID: result.parent,\n filename: typeof filename === 'string' ? filename : '',\n req,\n })\n }\n\n if (!result.version) {\n // Fallback if not selected\n ;(result as any).version = {}\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || result.version\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || result.version\n }\n }\n\n if (collectionConfig.upload) {\n result.version = markHistoricalFileURLs({\n collectionSlug: collectionConfig.slug,\n doc: result.version,\n req,\n versionID: result.id,\n })\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n}\n"],"names":["executeAccess","combineQueries","sanitizeWhereQuery","APIError","Forbidden","NotFound","afterRead","checkFileAccess","markHistoricalFileURLs","appendNonTrashedFilter","hasVersionsEnabled","httpStatus","resolveSelect","sanitizeSelect","buildVersionCollectionFields","isInheritedReadVersionsAccess","withInheritedReadVersionsParentID","buildAfterOperation","buildBeforeOperation","prefetchVersionForInheritedReadAccess","findVersionByIDOperation","args","id","collection","config","collectionConfig","currentDepth","depth","disableErrors","overrideAccess","populate","req","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","BAD_REQUEST","t","operation","where","equals","versionFields","fields","versions","inheritsReadAccess","access","readVersions","shouldPrefetchVersion","prefetched","undefined","accessResults","slug","accessArgs","parentID","hasWhereAccess","fullWhere","deletedAtPath","enableTrash","result","version","versionsQuery","db","findVersions","limit","pagination","docs","upload","filename","documentID","parent","hooks","beforeRead","length","hook","context","doc","query","draft","global","collectionSlug","versionID"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAkBlD,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,qBAAqB,GAAU,KAAK,SAAS,eAAe,CAAC,KAAK,CAAC,QACxE,SAAS,KACd,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAsO9B,CAAA"}
1
+ {"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAoBlD,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,qBAAqB,GAAU,KAAK,SAAS,eAAe,CAAC,KAAK,CAAC,QACxE,SAAS,KACd,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CA0O9B,CAAA"}
@@ -3,10 +3,12 @@ import { combineQueries } from '../../database/combineQueries.js';
3
3
  import { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js';
4
4
  import { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js';
5
5
  import { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js';
6
+ import { NotFound } from '../../errors/index.js';
6
7
  import { afterRead } from '../../fields/hooks/afterRead/index.js';
7
8
  import { checkFileAccess } from '../../uploads/checkFileAccess.js';
8
9
  import { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js';
9
10
  import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
11
+ import { hasVersionsEnabled } from '../../utilities/getVersionsConfig.js';
10
12
  import { resolveSelect } from '../../utilities/resolveSelect.js';
11
13
  import { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js';
12
14
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
@@ -26,6 +28,9 @@ export const findVersionsOperation = async (args)=>{
26
28
  const { collection: { config: collectionConfig }, depth, limit, overrideAccess, page, pagination = true, populate, select: incomingSelect, showHiddenFields, sort, trash = false, where } = args;
27
29
  const req = args.req;
28
30
  const { fallbackLocale, locale, payload } = req;
31
+ if (!hasVersionsEnabled(collectionConfig)) {
32
+ throw new NotFound(req.t);
33
+ }
29
34
  // /////////////////////////////////////
30
35
  // Access
31
36
  // /////////////////////////////////////
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/findVersions.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection } from '../config/types.js'\nimport type { FindOptions } from './local/find.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 { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { checkFileAccess } from '../../uploads/checkFileAccess.js'\nimport { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: Sort\n trash?: boolean\n where?: Where\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findVersionsOperation = async <TData extends TypeWithVersion<TData>>(\n args: Arguments,\n): Promise<PaginatedDocs<TData>> => {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'findVersions',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n depth,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n const { fallbackLocale, locale, payload } = req\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResults!: AccessResult\n\n if (!overrideAccess) {\n accessResults = await executeAccess(\n { slug: collectionConfig.slug, req },\n collectionConfig.access.readVersions,\n )\n }\n\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n versionFields,\n where: where!,\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n sort,\n versionFields,\n })\n\n let fullWhere = combineQueries(where!, accessResults)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n deletedAtPath: 'version.deletedAt',\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: versionFields, payload, where: fullWhere })\n\n const select = sanitizeSelect({\n fields: versionFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const usePagination = pagination && limit !== 0\n const sanitizedLimit = limit ?? (usePagination ? 10 : 0)\n const sanitizedPage = page || 1\n\n const paginatedDocs = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n if (collectionConfig.upload && !overrideAccess) {\n for (const row of paginatedDocs.docs) {\n const filename = (row.version as Record<string, unknown>)?.filename\n\n await checkFileAccess({\n collection: args.collection,\n documentID: row.parent,\n filename: typeof filename === 'string' ? filename : '',\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n let result: PaginatedDocs<TData> = paginatedDocs as unknown as PaginatedDocs<TData>\n result.docs = (await Promise.all(\n paginatedDocs.docs.map(async (doc) => {\n const docRef = doc\n // Fallback if not selected\n if (!docRef.version) {\n ;(docRef as any).version = {}\n }\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || docRef.version\n }\n }\n\n return docRef\n }),\n )) as TData[]\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (data) => {\n data.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: data.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n return data\n }),\n )\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks.afterRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n const docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: doc.version,\n findMany: true,\n overrideAccess,\n query: fullWhere,\n req,\n })) || doc.version\n }\n\n return docRef\n }),\n )\n }\n\n if (collectionConfig.upload) {\n result.docs = result.docs.map((row) => ({\n ...row,\n version: markHistoricalFileURLs({\n collectionSlug: collectionConfig.slug,\n doc: row.version as Record<string, unknown>,\n req,\n versionID: row.id,\n }) as TData,\n }))\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n result.docs = result.docs.map((doc) => sanitizeInternalFields<TData>(doc))\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersions',\n overrideAccess,\n result,\n })\n\n return result\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","afterRead","checkFileAccess","markHistoricalFileURLs","appendNonTrashedFilter","resolveSelect","sanitizeInternalFields","sanitizeSelect","buildVersionCollectionFields","buildAfterOperation","buildBeforeOperation","findVersionsOperation","args","collection","config","operation","overrideAccess","collectionConfig","depth","limit","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","trash","where","req","fallbackLocale","locale","payload","accessResults","slug","access","readVersions","versionFields","fullWhere","deletedAtPath","enableTrash","fields","versions","usePagination","sanitizedLimit","sanitizedPage","paginatedDocs","db","findVersions","upload","row","docs","filename","version","documentID","parent","result","Promise","all","map","doc","docRef","hooks","beforeRead","length","hook","context","query","data","draft","undefined","findMany","global","collectionSlug","versionID","id"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/findVersions.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection } from '../config/types.js'\nimport type { FindOptions } from './local/find.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 { NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { checkFileAccess } from '../../uploads/checkFileAccess.js'\nimport { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { hasVersionsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: Sort\n trash?: boolean\n where?: Where\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findVersionsOperation = async <TData extends TypeWithVersion<TData>>(\n args: Arguments,\n): Promise<PaginatedDocs<TData>> => {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'findVersions',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n depth,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n const { fallbackLocale, locale, payload } = req\n\n if (!hasVersionsEnabled(collectionConfig)) {\n throw new NotFound(req.t)\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResults!: AccessResult\n\n if (!overrideAccess) {\n accessResults = await executeAccess(\n { slug: collectionConfig.slug, req },\n collectionConfig.access.readVersions,\n )\n }\n\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n versionFields,\n where: where!,\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n sort,\n versionFields,\n })\n\n let fullWhere = combineQueries(where!, accessResults)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n deletedAtPath: 'version.deletedAt',\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: versionFields, payload, where: fullWhere })\n\n const select = sanitizeSelect({\n fields: versionFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const usePagination = pagination && limit !== 0\n const sanitizedLimit = limit ?? (usePagination ? 10 : 0)\n const sanitizedPage = page || 1\n\n const paginatedDocs = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n if (collectionConfig.upload && !overrideAccess) {\n for (const row of paginatedDocs.docs) {\n const filename = (row.version as Record<string, unknown>)?.filename\n\n await checkFileAccess({\n collection: args.collection,\n documentID: row.parent,\n filename: typeof filename === 'string' ? filename : '',\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n let result: PaginatedDocs<TData> = paginatedDocs as unknown as PaginatedDocs<TData>\n result.docs = (await Promise.all(\n paginatedDocs.docs.map(async (doc) => {\n const docRef = doc\n // Fallback if not selected\n if (!docRef.version) {\n ;(docRef as any).version = {}\n }\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || docRef.version\n }\n }\n\n return docRef\n }),\n )) as TData[]\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (data) => {\n data.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: data.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n return data\n }),\n )\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks.afterRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n const docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: doc.version,\n findMany: true,\n overrideAccess,\n query: fullWhere,\n req,\n })) || doc.version\n }\n\n return docRef\n }),\n )\n }\n\n if (collectionConfig.upload) {\n result.docs = result.docs.map((row) => ({\n ...row,\n version: markHistoricalFileURLs({\n collectionSlug: collectionConfig.slug,\n doc: row.version,\n req,\n versionID: row.id,\n }),\n }))\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n result.docs = result.docs.map((doc) => sanitizeInternalFields<TData>(doc))\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersions',\n overrideAccess,\n result,\n })\n\n return result\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","NotFound","afterRead","checkFileAccess","markHistoricalFileURLs","appendNonTrashedFilter","hasVersionsEnabled","resolveSelect","sanitizeInternalFields","sanitizeSelect","buildVersionCollectionFields","buildAfterOperation","buildBeforeOperation","findVersionsOperation","args","collection","config","operation","overrideAccess","collectionConfig","depth","limit","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","trash","where","req","fallbackLocale","locale","payload","t","accessResults","slug","access","readVersions","versionFields","fullWhere","deletedAtPath","enableTrash","fields","versions","usePagination","sanitizedLimit","sanitizedPage","paginatedDocs","db","findVersions","upload","row","docs","filename","version","documentID","parent","result","Promise","all","map","doc","docRef","hooks","beforeRead","length","hook","context","query","data","draft","undefined","findMany","global","collectionSlug","versionID","id"],"mappings":"AAOA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SAASC,iBAAiB,QAAQ,sDAAqD;AACvF,SAASC,kBAAkB,QAAQ,uCAAsC;AACzE,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,sBAAsB,QAAQ,yDAAwD;AAC/F,SAASC,sBAAsB,QAAQ,4CAA2C;AAClF,SAASC,kBAAkB,QAAQ,uCAAsC;AACzE,SAASC,aAAa,QAAQ,mCAAkC;AAChE,SAASC,sBAAsB,QAAQ,4CAA2C;AAClF,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,4BAA4B,QAAQ,0CAAyC;AACtF,SAASC,mBAAmB,QAAQ,qCAAoC;AACxE,SAASC,oBAAoB,QAAQ,sCAAqC;AAiB1E,OAAO,MAAMC,wBAAwB,OACnCC;IAEA,wCAAwC;IACxC,+BAA+B;IAC/B,wCAAwC;IAExCA,OAAO,MAAMF,qBAAqB;QAChCE;QACAC,YAAYD,KAAKC,UAAU,CAACC,MAAM;QAClCC,WAAW;QACXC,gBAAgBJ,KAAKI,cAAc;IACrC;IAEA,MAAM,EACJH,YAAY,EAAEC,QAAQG,gBAAgB,EAAE,EACxCC,KAAK,EACLC,KAAK,EACLH,cAAc,EACdI,IAAI,EACJC,aAAa,IAAI,EACjBC,QAAQ,EACRC,QAAQC,cAAc,EACtBC,gBAAgB,EAChBC,IAAI,EACJC,QAAQ,KAAK,EACbC,KAAK,EACN,GAAGhB;IAEJ,MAAMiB,MAAMjB,KAAKiB,GAAG;IACpB,MAAM,EAAEC,cAAc,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGH;IAE5C,IAAI,CAACzB,mBAAmBa,mBAAmB;QACzC,MAAM,IAAIlB,SAAS8B,IAAII,CAAC;IAC1B;IAEA,wCAAwC;IACxC,SAAS;IACT,wCAAwC;IAExC,IAAIC;IAEJ,IAAI,CAAClB,gBAAgB;QACnBkB,gBAAgB,MAAMxC,cACpB;YAAEyC,MAAMlB,iBAAiBkB,IAAI;YAAEN;QAAI,GACnCZ,iBAAiBmB,MAAM,CAACC,YAAY;IAExC;IAEA,MAAMC,gBAAgB9B,6BAA6BwB,QAAQlB,MAAM,EAAEG,kBAAkB;IAErF,MAAMrB,mBAAmB;QACvBqB;QACAD,gBAAgBA;QAChBa;QACAS;QACAV,OAAOA;IACT;IAEA,MAAM/B,kBAAkB;QACtBoB;QACAD,gBAAgBA;QAChBa;QACAH;QACAY;IACF;IAEA,IAAIC,YAAY5C,eAAeiC,OAAQM;IAEvC,8CAA8C;IAC9CK,YAAYpC,uBAAuB;QACjCqC,eAAe;QACfC,aAAaxB,iBAAiBU,KAAK;QACnCA;QACAC,OAAOW;IACT;IAEAzC,mBAAmB;QAAE4C,QAAQJ;QAAeN;QAASJ,OAAOW;IAAU;IAEtE,MAAMhB,SAAShB,eAAe;QAC5BmC,QAAQJ;QACRf,QAAQlB,cAAc;YACpBS,QAAQG,iBAAiBM,MAAM;YAC/BR,WAAW;YACXc;YACAN,QAAQC;QACV;QACAmB,UAAU;IACZ;IAEA,wCAAwC;IACxC,OAAO;IACP,wCAAwC;IAExC,MAAMC,gBAAgBvB,cAAcF,UAAU;IAC9C,MAAM0B,iBAAiB1B,SAAUyB,CAAAA,gBAAgB,KAAK,CAAA;IACtD,MAAME,gBAAgB1B,QAAQ;IAE9B,MAAM2B,gBAAgB,MAAMf,QAAQgB,EAAE,CAACC,YAAY,CAAQ;QACzDpC,YAAYI,iBAAiBkB,IAAI;QACjChB,OAAO0B;QACPd,QAAQA;QACRX,MAAM0B;QACNzB;QACAQ;QACAN;QACAG;QACAE,OAAOW;IACT;IAEA,IAAItB,iBAAiBiC,MAAM,IAAI,CAAClC,gBAAgB;QAC9C,KAAK,MAAMmC,OAAOJ,cAAcK,IAAI,CAAE;YACpC,MAAMC,WAAYF,IAAIG,OAAO,EAA8BD;YAE3D,MAAMpD,gBAAgB;gBACpBY,YAAYD,KAAKC,UAAU;gBAC3B0C,YAAYJ,IAAIK,MAAM;gBACtBH,UAAU,OAAOA,aAAa,WAAWA,WAAW;gBACpDxB;YACF;QACF;IACF;IAEA,wCAAwC;IACxC,0BAA0B;IAC1B,wCAAwC;IACxC,IAAI4B,SAA+BV;IACnCU,OAAOL,IAAI,GAAI,MAAMM,QAAQC,GAAG,CAC9BZ,cAAcK,IAAI,CAACQ,GAAG,CAAC,OAAOC;QAC5B,MAAMC,SAASD;QACf,2BAA2B;QAC3B,IAAI,CAACC,OAAOR,OAAO,EAAE;;YACjBQ,OAAeR,OAAO,GAAG,CAAC;QAC9B;QAEA,IAAIrC,iBAAiB8C,KAAK,EAAEC,YAAYC,QAAQ;YAC9C,KAAK,MAAMC,QAAQjD,iBAAiB8C,KAAK,CAACC,UAAU,CAAE;gBACpDF,OAAOR,OAAO,GACZ,AAAC,MAAMY,KAAK;oBACVrD,YAAYI;oBACZkD,SAAStC,IAAIsC,OAAO;oBACpBN,KAAKC,OAAOR,OAAO;oBACnBtC;oBACAoD,OAAO7B;oBACPV;gBACF,MAAOiC,OAAOR,OAAO;YACzB;QACF;QAEA,OAAOQ;IACT;IAEF,wCAAwC;IACxC,qBAAqB;IACrB,wCAAwC;IAExCL,OAAOL,IAAI,GAAG,MAAMM,QAAQC,GAAG,CAC7BF,OAAOL,IAAI,CAACQ,GAAG,CAAC,OAAOS;QACrBA,KAAKf,OAAO,GAAG,MAAMtD,UAAU;YAC7Ba,YAAYI;YACZkD,SAAStC,IAAIsC,OAAO;YACpBjD,OAAOA;YACP2C,KAAKQ,KAAKf,OAAO;YACjB,oFAAoF;YACpFgB,OAAOC;YACPzC,gBAAgBA;YAChB0C,UAAU;YACVC,QAAQ;YACR1C,QAAQA;YACRf,gBAAgBA;YAChBM;YACAO;YACAN,QAAQ,OAAOA,QAAQ+B,YAAY,WAAW/B,OAAO+B,OAAO,GAAGiB;YAC/D9C,kBAAkBA;QACpB;QACA,OAAO4C;IACT;IAGF,wCAAwC;IACxC,yBAAyB;IACzB,wCAAwC;IAExC,IAAIpD,iBAAiB8C,KAAK,CAAC/D,SAAS,EAAEiE,QAAQ;QAC5CR,OAAOL,IAAI,GAAG,MAAMM,QAAQC,GAAG,CAC7BF,OAAOL,IAAI,CAACQ,GAAG,CAAC,OAAOC;YACrB,MAAMC,SAASD;YAEf,KAAK,MAAMK,QAAQjD,iBAAiB8C,KAAK,CAAC/D,SAAS,CAAE;gBACnD8D,OAAOR,OAAO,GACZ,AAAC,MAAMY,KAAK;oBACVrD,YAAYI;oBACZkD,SAAStC,IAAIsC,OAAO;oBACpBN,KAAKA,IAAIP,OAAO;oBAChBkB,UAAU;oBACVxD;oBACAoD,OAAO7B;oBACPV;gBACF,MAAOgC,IAAIP,OAAO;YACtB;YAEA,OAAOQ;QACT;IAEJ;IAEA,IAAI7C,iBAAiBiC,MAAM,EAAE;QAC3BO,OAAOL,IAAI,GAAGK,OAAOL,IAAI,CAACQ,GAAG,CAAC,CAACT,MAAS,CAAA;gBACtC,GAAGA,GAAG;gBACNG,SAASpD,uBAAuB;oBAC9BwE,gBAAgBzD,iBAAiBkB,IAAI;oBACrC0B,KAAKV,IAAIG,OAAO;oBAChBzB;oBACA8C,WAAWxB,IAAIyB,EAAE;gBACnB;YACF,CAAA;IACF;IAEA,wCAAwC;IACxC,iBAAiB;IACjB,wCAAwC;IACxCnB,OAAOL,IAAI,GAAGK,OAAOL,IAAI,CAACQ,GAAG,CAAC,CAACC,MAAQvD,uBAA8BuD;IAErE,wCAAwC;IACxC,8BAA8B;IAC9B,wCAAwC;IAExCJ,SAAS,MAAMhD,oBAAoB;QACjCG;QACAC,YAAYI;QACZF,WAAW;QACXC;QACAyC;IACF;IAEA,OAAOA;AACT,EAAC"}
@@ -2,21 +2,16 @@ import type { CollectionSlug, Payload, RequestContext, TypedLocale, User } from
2
2
  import type { PayloadRequest, Where } from '../../../types/index.js';
3
3
  import type { SharedLocalAPIOptions } from '../../../types/operations.js';
4
4
  export type CountOptions<TSlug extends CollectionSlug> = {
5
+ /**
6
+ * the Collection slug to operate against.
7
+ */
8
+ collection: TSlug;
5
9
  /**
6
10
  * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,
7
11
  * which can be read by hooks. Useful if you want to pass additional information to the hooks which
8
12
  * shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook
9
13
  * to determine if it should run or not.
10
14
  */
11
- /**
12
- * Read and write against a specific content branch instead of resolving one
13
- * from the request. `false` bypasses branching entirely.
14
- */
15
- branch?: false | string;
16
- /**
17
- * the Collection slug to operate against.
18
- */
19
- collection: TSlug;
20
15
  context?: RequestContext;
21
16
  /**
22
17
  * When set to `true`, errors will not be thrown.
@@ -1 +1 @@
1
- {"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/local/count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAOzE,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,cAAc,IAAI;IACvD;;;;;OAKG;IACH;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,KAAK,CAAA;IACjB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;AAEjD,wBAAsB,UAAU,CAAC,KAAK,SAAS,cAAc,EAC3D,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAC3B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BhC"}
1
+ {"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/local/count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAOzE,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,cAAc,IAAI;IACvD;;OAEG;IACH,UAAU,EAAE,KAAK,CAAA;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;AAEjD,wBAAsB,UAAU,CAAC,KAAK,SAAS,cAAc,EAC3D,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAC3B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BhC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/collections/operations/local/count.ts"],"sourcesContent":["import type { CollectionSlug, Payload, RequestContext, TypedLocale, User } from '../../../index.js'\nimport type { PayloadRequest, Where } from '../../../types/index.js'\nimport type { SharedLocalAPIOptions } from '../../../types/operations.js'\nimport type { CreatePayloadRequestArgs } from '../../../utilities/createPayloadRequest.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createPayloadRequest } from '../../../utilities/createPayloadRequest.js'\nimport { countOperation } from '../count.js'\n\nexport type CountOptions<TSlug extends CollectionSlug> = {\n /**\n * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,\n * which can be read by hooks. Useful if you want to pass additional information to the hooks which\n * shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook\n * to determine if it should run or not.\n */\n /**\n * Read and write against a specific content branch instead of resolving one\n * from the request. `false` bypasses branching entirely.\n */\n branch?: false | string\n /**\n * the Collection slug to operate against.\n */\n collection: TSlug\n context?: RequestContext\n /**\n * When set to `true`, errors will not be thrown.\n */\n disableErrors?: boolean\n /**\n * Specify [locale](https://payloadcms.com/docs/configuration/localization) for any returned documents.\n */\n locale?: TypedLocale\n /**\n * The `PayloadRequest` object. You can pass it to thread the current [transaction](https://payloadcms.com/docs/database/transactions), user and locale to the operation.\n * Recommended to pass when using the Local API from hooks, as usually you want to execute the operation within the current transaction.\n */\n req?: Partial<PayloadRequest>\n /**\n * When set to `true`, the query will include both normal and trashed documents.\n * To query only trashed documents, pass `trash: true` and combine with a `where` clause filtering by `deletedAt`.\n * By default (`false`), the query will only include normal documents and exclude those with a `deletedAt` field.\n *\n * This argument has no effect unless `trash` is enabled on the collection.\n * @default false\n */\n trash?: boolean\n /**\n * If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks.\n */\n user?: null | User\n /**\n * A filter [query](https://payloadcms.com/docs/queries/overview)\n */\n where?: Where\n} & Pick<SharedLocalAPIOptions, 'overrideAccess'>\n\nexport async function countLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: CountOptions<TSlug>,\n): Promise<{ totalDocs: number }> {\n const {\n collection: collectionSlug,\n disableErrors,\n overrideAccess = false,\n trash = false,\n where,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Count Operation.`,\n )\n }\n\n return countOperation<TSlug>({\n collection,\n disableErrors,\n overrideAccess,\n req: await createPayloadRequest({\n ...(options as Omit<CreatePayloadRequestArgs, 'payload'>),\n payload,\n }),\n trash,\n where,\n })\n}\n"],"names":["APIError","createPayloadRequest","countOperation","countLocal","payload","options","collection","collectionSlug","disableErrors","overrideAccess","trash","where","collections","String","req"],"mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,oBAAoB,QAAQ,6CAA4C;AACjF,SAASC,cAAc,QAAQ,cAAa;AAmD5C,OAAO,eAAeC,WACpBC,OAAgB,EAChBC,OAA4B;IAE5B,MAAM,EACJC,YAAYC,cAAc,EAC1BC,aAAa,EACbC,iBAAiB,KAAK,EACtBC,QAAQ,KAAK,EACbC,KAAK,EACN,GAAGN;IAEJ,MAAMC,aAAaF,QAAQQ,WAAW,CAACL,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEa,OAAON,gBAAgB,iCAAiC,CAAC;IAEzF;IAEA,OAAOL,eAAsB;QAC3BI;QACAE;QACAC;QACAK,KAAK,MAAMb,qBAAqB;YAC9B,GAAII,OAAO;YACXD;QACF;QACAM;QACAC;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../src/collections/operations/local/count.ts"],"sourcesContent":["import type { CollectionSlug, Payload, RequestContext, TypedLocale, User } from '../../../index.js'\nimport type { PayloadRequest, Where } from '../../../types/index.js'\nimport type { SharedLocalAPIOptions } from '../../../types/operations.js'\nimport type { CreatePayloadRequestArgs } from '../../../utilities/createPayloadRequest.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createPayloadRequest } from '../../../utilities/createPayloadRequest.js'\nimport { countOperation } from '../count.js'\n\nexport type CountOptions<TSlug extends CollectionSlug> = {\n /**\n * the Collection slug to operate against.\n */\n collection: TSlug\n /**\n * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,\n * which can be read by hooks. Useful if you want to pass additional information to the hooks which\n * shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook\n * to determine if it should run or not.\n */\n context?: RequestContext\n /**\n * When set to `true`, errors will not be thrown.\n */\n disableErrors?: boolean\n /**\n * Specify [locale](https://payloadcms.com/docs/configuration/localization) for any returned documents.\n */\n locale?: TypedLocale\n /**\n * The `PayloadRequest` object. You can pass it to thread the current [transaction](https://payloadcms.com/docs/database/transactions), user and locale to the operation.\n * Recommended to pass when using the Local API from hooks, as usually you want to execute the operation within the current transaction.\n */\n req?: Partial<PayloadRequest>\n /**\n * When set to `true`, the query will include both normal and trashed documents.\n * To query only trashed documents, pass `trash: true` and combine with a `where` clause filtering by `deletedAt`.\n * By default (`false`), the query will only include normal documents and exclude those with a `deletedAt` field.\n *\n * This argument has no effect unless `trash` is enabled on the collection.\n * @default false\n */\n trash?: boolean\n /**\n * If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks.\n */\n user?: null | User\n /**\n * A filter [query](https://payloadcms.com/docs/queries/overview)\n */\n where?: Where\n} & Pick<SharedLocalAPIOptions, 'overrideAccess'>\n\nexport async function countLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: CountOptions<TSlug>,\n): Promise<{ totalDocs: number }> {\n const {\n collection: collectionSlug,\n disableErrors,\n overrideAccess = false,\n trash = false,\n where,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Count Operation.`,\n )\n }\n\n return countOperation<TSlug>({\n collection,\n disableErrors,\n overrideAccess,\n req: await createPayloadRequest({\n ...(options as Omit<CreatePayloadRequestArgs, 'payload'>),\n payload,\n }),\n trash,\n where,\n })\n}\n"],"names":["APIError","createPayloadRequest","countOperation","countLocal","payload","options","collection","collectionSlug","disableErrors","overrideAccess","trash","where","collections","String","req"],"mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,oBAAoB,QAAQ,6CAA4C;AACjF,SAASC,cAAc,QAAQ,cAAa;AA8C5C,OAAO,eAAeC,WACpBC,OAAgB,EAChBC,OAA4B;IAE5B,MAAM,EACJC,YAAYC,cAAc,EAC1BC,aAAa,EACbC,iBAAiB,KAAK,EACtBC,QAAQ,KAAK,EACbC,KAAK,EACN,GAAGN;IAEJ,MAAMC,aAAaF,QAAQQ,WAAW,CAACL,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEa,OAAON,gBAAgB,iCAAiC,CAAC;IAEzF;IAEA,OAAOL,eAAsB;QAC3BI;QACAE;QACAC;QACAK,KAAK,MAAMb,qBAAqB;YAC9B,GAAII,OAAO;YACXD;QACF;QACAM;QACAC;IACF;AACF"}
@@ -2,10 +2,6 @@ import type { CollectionSlug, Payload, RequestContext, TypedLocale, User } from
2
2
  import type { PayloadRequest, Where } from '../../../types/index.js';
3
3
  import type { SharedLocalAPIOptions } from '../../../types/operations.js';
4
4
  export type CountVersionsOptions<TSlug extends CollectionSlug> = {
5
- /**
6
- * Count versions as seen from this branch. `false` bypasses branching entirely.
7
- */
8
- branch?: false | string;
9
5
  /**
10
6
  * the Collection slug to operate against.
11
7
  */