payload 3.85.0 → 4.0.0-internal.1f9ae9a

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 (641) hide show
  1. package/README.md +5 -5
  2. package/dist/admin/RichText.d.ts +2 -7
  3. package/dist/admin/RichText.d.ts.map +1 -1
  4. package/dist/admin/RichText.js.map +1 -1
  5. package/dist/admin/adapters/cookies.d.ts +21 -0
  6. package/dist/admin/adapters/cookies.d.ts.map +1 -0
  7. package/dist/admin/adapters/cookies.js +3 -0
  8. package/dist/admin/adapters/cookies.js.map +1 -0
  9. package/dist/admin/adapters/index.d.ts +4 -0
  10. package/dist/admin/adapters/index.d.ts.map +1 -0
  11. package/dist/admin/adapters/index.js +3 -0
  12. package/dist/admin/adapters/index.js.map +1 -0
  13. package/dist/admin/adapters/router.d.ts +56 -0
  14. package/dist/admin/adapters/router.d.ts.map +1 -0
  15. package/dist/admin/adapters/router.js +3 -0
  16. package/dist/admin/adapters/router.js.map +1 -0
  17. package/dist/admin/adapters/server.d.ts +23 -0
  18. package/dist/admin/adapters/server.d.ts.map +1 -0
  19. package/dist/admin/adapters/server.js +6 -0
  20. package/dist/admin/adapters/server.js.map +1 -0
  21. package/dist/admin/elements/Nav.d.ts +13 -0
  22. package/dist/admin/elements/Nav.d.ts.map +1 -1
  23. package/dist/admin/elements/Nav.js.map +1 -1
  24. package/dist/admin/elements/Table.d.ts +1 -0
  25. package/dist/admin/elements/Table.d.ts.map +1 -1
  26. package/dist/admin/elements/Table.js.map +1 -1
  27. package/dist/admin/functions/index.d.ts +1 -38
  28. package/dist/admin/functions/index.d.ts.map +1 -1
  29. package/dist/admin/functions/index.js.map +1 -1
  30. package/dist/admin/types.d.ts +5 -4
  31. package/dist/admin/types.d.ts.map +1 -1
  32. package/dist/admin/types.js.map +1 -1
  33. package/dist/admin/views/hierarchyList.d.ts +10 -0
  34. package/dist/admin/views/hierarchyList.d.ts.map +1 -0
  35. package/dist/admin/views/hierarchyList.js +3 -0
  36. package/dist/admin/views/hierarchyList.js.map +1 -0
  37. package/dist/admin/views/index.d.ts +1 -3
  38. package/dist/admin/views/index.d.ts.map +1 -1
  39. package/dist/admin/views/index.js.map +1 -1
  40. package/dist/admin/views/list.d.ts +47 -2
  41. package/dist/admin/views/list.d.ts.map +1 -1
  42. package/dist/admin/views/list.js.map +1 -1
  43. package/dist/auth/cookies.d.ts.map +1 -1
  44. package/dist/auth/defaultAccess.d.ts.map +1 -1
  45. package/dist/auth/ensureUsernameOrEmail.d.ts.map +1 -1
  46. package/dist/auth/executeAccess.d.ts.map +1 -1
  47. package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
  48. package/dist/auth/extractAccessFromPermission.d.ts.map +1 -1
  49. package/dist/auth/extractJWT.d.ts.map +1 -1
  50. package/dist/auth/getAuthFields.d.ts.map +1 -1
  51. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  52. package/dist/auth/getLoginOptions.d.ts.map +1 -1
  53. package/dist/auth/isUserLocked.d.ts.map +1 -1
  54. package/dist/auth/jwt.d.ts.map +1 -1
  55. package/dist/auth/operations/access.d.ts.map +1 -1
  56. package/dist/auth/operations/auth.d.ts.map +1 -1
  57. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  58. package/dist/auth/operations/init.d.ts.map +1 -1
  59. package/dist/auth/operations/local/auth.d.ts.map +1 -1
  60. package/dist/auth/operations/login.d.ts.map +1 -1
  61. package/dist/auth/operations/logout.d.ts.map +1 -1
  62. package/dist/auth/operations/me.d.ts.map +1 -1
  63. package/dist/auth/operations/refresh.d.ts.map +1 -1
  64. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  65. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  66. package/dist/auth/operations/unlock.d.ts.map +1 -1
  67. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  68. package/dist/auth/sessions.d.ts.map +1 -1
  69. package/dist/auth/strategies/apiKey.d.ts.map +1 -1
  70. package/dist/auth/strategies/apiKey.js +6 -17
  71. package/dist/auth/strategies/apiKey.js.map +1 -1
  72. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  73. package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
  74. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  75. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  76. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  77. package/dist/bin/build.d.ts +25 -0
  78. package/dist/bin/build.d.ts.map +1 -0
  79. package/dist/bin/build.js +80 -0
  80. package/dist/bin/build.js.map +1 -0
  81. package/dist/bin/build.spec.js +170 -0
  82. package/dist/bin/build.spec.js.map +1 -0
  83. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  84. package/dist/bin/generateImportMap/iterateCollections.js +1 -0
  85. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  86. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  87. package/dist/bin/generateImportMap/iterateConfig.js +7 -0
  88. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  89. package/dist/bin/generateImportMap/iterateFields.d.ts.map +1 -1
  90. package/dist/bin/generateImportMap/iterateFields.js +4 -1
  91. package/dist/bin/generateImportMap/iterateFields.js.map +1 -1
  92. package/dist/bin/generateImportMap/iterateGlobals.d.ts.map +1 -1
  93. package/dist/bin/generateImportMap/iterateGlobals.js +20 -8
  94. package/dist/bin/generateImportMap/iterateGlobals.js.map +1 -1
  95. package/dist/bin/generateImportMap/utilities/getFromImportMap.d.ts.map +1 -1
  96. package/dist/bin/index.d.ts.map +1 -1
  97. package/dist/bin/index.js +10 -3
  98. package/dist/bin/index.js.map +1 -1
  99. package/dist/bin/migrate.d.ts.map +1 -1
  100. package/dist/collections/config/client.d.ts +4 -2
  101. package/dist/collections/config/client.d.ts.map +1 -1
  102. package/dist/collections/config/client.js +13 -1
  103. package/dist/collections/config/client.js.map +1 -1
  104. package/dist/collections/config/defaults.d.ts.map +1 -1
  105. package/dist/collections/config/defaults.js +1 -1
  106. package/dist/collections/config/defaults.js.map +1 -1
  107. package/dist/collections/config/sanitize.d.ts +10 -1
  108. package/dist/collections/config/sanitize.d.ts.map +1 -1
  109. package/dist/collections/config/sanitize.js +51 -10
  110. package/dist/collections/config/sanitize.js.map +1 -1
  111. package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
  112. package/dist/collections/config/types.d.ts +76 -91
  113. package/dist/collections/config/types.d.ts.map +1 -1
  114. package/dist/collections/config/types.js.map +1 -1
  115. package/dist/collections/config/useAsTitle.d.ts.map +1 -1
  116. package/dist/collections/dataloader.d.ts.map +1 -1
  117. package/dist/collections/operations/count.d.ts.map +1 -1
  118. package/dist/collections/operations/countVersions.d.ts.map +1 -1
  119. package/dist/collections/operations/create.d.ts.map +1 -1
  120. package/dist/collections/operations/create.js +25 -19
  121. package/dist/collections/operations/create.js.map +1 -1
  122. package/dist/collections/operations/delete.d.ts.map +1 -1
  123. package/dist/collections/operations/delete.js +7 -2
  124. package/dist/collections/operations/delete.js.map +1 -1
  125. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  126. package/dist/collections/operations/deleteByID.js +7 -2
  127. package/dist/collections/operations/deleteByID.js.map +1 -1
  128. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  129. package/dist/collections/operations/find.d.ts.map +1 -1
  130. package/dist/collections/operations/find.js +7 -2
  131. package/dist/collections/operations/find.js.map +1 -1
  132. package/dist/collections/operations/findByID.d.ts.map +1 -1
  133. package/dist/collections/operations/findByID.js +10 -5
  134. package/dist/collections/operations/findByID.js.map +1 -1
  135. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  136. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  137. package/dist/collections/operations/findVersionByID.js +6 -4
  138. package/dist/collections/operations/findVersionByID.js.map +1 -1
  139. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  140. package/dist/collections/operations/findVersions.js +6 -4
  141. package/dist/collections/operations/findVersions.js.map +1 -1
  142. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  143. package/dist/collections/operations/restoreVersion.js +7 -2
  144. package/dist/collections/operations/restoreVersion.js.map +1 -1
  145. package/dist/collections/operations/update.d.ts.map +1 -1
  146. package/dist/collections/operations/update.js +7 -2
  147. package/dist/collections/operations/update.js.map +1 -1
  148. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  149. package/dist/collections/operations/updateByID.js +7 -2
  150. package/dist/collections/operations/updateByID.js.map +1 -1
  151. package/dist/collections/operations/utilities/buildAfterOperation.d.ts.map +1 -1
  152. package/dist/collections/operations/utilities/sanitizeSortQuery.d.ts.map +1 -1
  153. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  154. package/dist/collections/operations/utilities/update.js +21 -12
  155. package/dist/collections/operations/utilities/update.js.map +1 -1
  156. package/dist/config/build.d.ts.map +1 -1
  157. package/dist/config/build.js +8 -0
  158. package/dist/config/build.js.map +1 -1
  159. package/dist/config/client.d.ts +1 -1
  160. package/dist/config/client.d.ts.map +1 -1
  161. package/dist/config/client.js +2 -11
  162. package/dist/config/client.js.map +1 -1
  163. package/dist/config/defaults.d.ts.map +1 -1
  164. package/dist/config/defaults.js +0 -15
  165. package/dist/config/defaults.js.map +1 -1
  166. package/dist/config/orderable/index.d.ts.map +1 -1
  167. package/dist/config/orderable/index.js +0 -4
  168. package/dist/config/orderable/index.js.map +1 -1
  169. package/dist/config/sanitize.d.ts.map +1 -1
  170. package/dist/config/sanitize.js +6 -53
  171. package/dist/config/sanitize.js.map +1 -1
  172. package/dist/config/types.d.ts +188 -32
  173. package/dist/config/types.d.ts.map +1 -1
  174. package/dist/config/types.js.map +1 -1
  175. package/dist/database/combineQueries.d.ts.map +1 -1
  176. package/dist/database/migrations/findMigrationDir.d.ts.map +1 -1
  177. package/dist/database/migrations/getPredefinedMigration.d.ts.map +1 -1
  178. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  179. package/dist/database/migrations/templates/localizeStatus.d.ts.map +1 -1
  180. package/dist/database/migrations/writeMigrationIndex.d.ts.map +1 -1
  181. package/dist/database/sanitizeJoinQuery.d.ts.map +1 -1
  182. package/dist/database/sanitizeWhereQuery.d.ts.map +1 -1
  183. package/dist/duplicateDocument/index.d.ts.map +1 -1
  184. package/dist/email/getStringifiedToAddress.d.ts.map +1 -1
  185. package/dist/email/types.d.ts +2 -7
  186. package/dist/email/types.d.ts.map +1 -1
  187. package/dist/email/types.js.map +1 -1
  188. package/dist/exports/shared.d.ts +6 -3
  189. package/dist/exports/shared.d.ts.map +1 -1
  190. package/dist/exports/shared.js +4 -2
  191. package/dist/exports/shared.js.map +1 -1
  192. package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
  193. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  194. package/dist/fields/baseFields/slug/index.d.ts.map +1 -1
  195. package/dist/fields/baseFields/slug/index.js +7 -5
  196. package/dist/fields/baseFields/slug/index.js.map +1 -1
  197. package/dist/fields/config/client.d.ts +1 -1
  198. package/dist/fields/config/client.d.ts.map +1 -1
  199. package/dist/fields/config/client.js +4 -3
  200. package/dist/fields/config/client.js.map +1 -1
  201. package/dist/fields/config/sanitize.d.ts.map +1 -1
  202. package/dist/fields/config/sanitize.js +13 -20
  203. package/dist/fields/config/sanitize.js.map +1 -1
  204. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
  205. package/dist/fields/config/sanitizeJoinField.js +3 -0
  206. package/dist/fields/config/sanitizeJoinField.js.map +1 -1
  207. package/dist/fields/config/types.d.ts +40 -114
  208. package/dist/fields/config/types.d.ts.map +1 -1
  209. package/dist/fields/config/types.js +12 -2
  210. package/dist/fields/config/types.js.map +1 -1
  211. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  212. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  213. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  214. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  215. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  216. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  217. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  218. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
  219. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.d.ts.map +1 -1
  220. package/dist/fields/hooks/beforeChange/getExistingRowDoc.d.ts.map +1 -1
  221. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  222. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  223. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  224. package/dist/fields/hooks/beforeDuplicate/index.d.ts.map +1 -1
  225. package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
  226. package/dist/fields/hooks/beforeDuplicate/traverseFields.d.ts.map +1 -1
  227. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  228. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  229. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  230. package/dist/fields/isFieldDisabled.d.ts +12 -0
  231. package/dist/fields/isFieldDisabled.d.ts.map +1 -0
  232. package/dist/fields/isFieldDisabled.js +15 -0
  233. package/dist/fields/isFieldDisabled.js.map +1 -0
  234. package/dist/fields/isFieldDisabled.spec.js +134 -0
  235. package/dist/fields/isFieldDisabled.spec.js.map +1 -0
  236. package/dist/fields/mergeBaseFields.d.ts.map +1 -1
  237. package/dist/fields/setDefaultBeforeDuplicate.d.ts.map +1 -1
  238. package/dist/fields/validations.js +1 -1
  239. package/dist/fields/validations.js.map +1 -1
  240. package/dist/globals/config/client.d.ts +1 -1
  241. package/dist/globals/config/client.d.ts.map +1 -1
  242. package/dist/globals/config/client.js +2 -1
  243. package/dist/globals/config/client.js.map +1 -1
  244. package/dist/globals/config/sanitize.d.ts +6 -1
  245. package/dist/globals/config/sanitize.d.ts.map +1 -1
  246. package/dist/globals/config/sanitize.js +6 -2
  247. package/dist/globals/config/sanitize.js.map +1 -1
  248. package/dist/globals/config/types.d.ts +4 -57
  249. package/dist/globals/config/types.d.ts.map +1 -1
  250. package/dist/globals/config/types.js.map +1 -1
  251. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
  252. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  253. package/dist/globals/operations/findOne.d.ts.map +1 -1
  254. package/dist/globals/operations/findOne.js +7 -2
  255. package/dist/globals/operations/findOne.js.map +1 -1
  256. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  257. package/dist/globals/operations/findVersionByID.js +6 -4
  258. package/dist/globals/operations/findVersionByID.js.map +1 -1
  259. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  260. package/dist/globals/operations/findVersions.js +6 -4
  261. package/dist/globals/operations/findVersions.js.map +1 -1
  262. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  263. package/dist/globals/operations/update.d.ts.map +1 -1
  264. package/dist/globals/operations/update.js +7 -2
  265. package/dist/globals/operations/update.js.map +1 -1
  266. package/dist/hierarchy/addHierarchyToCollection.d.ts +9 -0
  267. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -0
  268. package/dist/hierarchy/addHierarchyToCollection.js +76 -0
  269. package/dist/hierarchy/addHierarchyToCollection.js.map +1 -0
  270. package/dist/hierarchy/buildParentField.d.ts +11 -0
  271. package/dist/hierarchy/buildParentField.d.ts.map +1 -0
  272. package/dist/hierarchy/buildParentField.js +42 -0
  273. package/dist/hierarchy/buildParentField.js.map +1 -0
  274. package/dist/hierarchy/constants.d.ts +15 -0
  275. package/dist/hierarchy/constants.d.ts.map +1 -0
  276. package/dist/hierarchy/constants.js +11 -0
  277. package/dist/hierarchy/constants.js.map +1 -0
  278. package/dist/hierarchy/createFolderField.d.ts +39 -0
  279. package/dist/hierarchy/createFolderField.d.ts.map +1 -0
  280. package/dist/hierarchy/createFolderField.js +54 -0
  281. package/dist/hierarchy/createFolderField.js.map +1 -0
  282. package/dist/hierarchy/createTagField.d.ts +44 -0
  283. package/dist/hierarchy/createTagField.d.ts.map +1 -0
  284. package/dist/hierarchy/createTagField.js +48 -0
  285. package/dist/hierarchy/createTagField.js.map +1 -0
  286. package/dist/hierarchy/getInitialTreeData.d.ts +27 -0
  287. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -0
  288. package/dist/hierarchy/getInitialTreeData.js +125 -0
  289. package/dist/hierarchy/getInitialTreeData.js.map +1 -0
  290. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts +14 -0
  291. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -0
  292. package/dist/hierarchy/hooks/collectionAfterDelete.js +21 -0
  293. package/dist/hierarchy/hooks/collectionAfterDelete.js.map +1 -0
  294. package/dist/hierarchy/hooks/collectionAfterRead.d.ts +27 -0
  295. package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +1 -0
  296. package/dist/hierarchy/hooks/collectionAfterRead.js +72 -0
  297. package/dist/hierarchy/hooks/collectionAfterRead.js.map +1 -0
  298. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts +19 -0
  299. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +1 -0
  300. package/dist/hierarchy/hooks/collectionBeforeChange.js +90 -0
  301. package/dist/hierarchy/hooks/collectionBeforeChange.js.map +1 -0
  302. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts +15 -0
  303. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -0
  304. package/dist/hierarchy/hooks/collectionBeforeDelete.js +20 -0
  305. package/dist/hierarchy/hooks/collectionBeforeDelete.js.map +1 -0
  306. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts +33 -0
  307. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts.map +1 -0
  308. package/dist/hierarchy/hooks/collectionBeforeOperation.js +66 -0
  309. package/dist/hierarchy/hooks/collectionBeforeOperation.js.map +1 -0
  310. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts +8 -0
  311. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -0
  312. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js +108 -0
  313. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js.map +1 -0
  314. package/dist/hierarchy/injectHierarchyButton.d.ts +14 -0
  315. package/dist/hierarchy/injectHierarchyButton.d.ts.map +1 -0
  316. package/dist/hierarchy/injectHierarchyButton.js +37 -0
  317. package/dist/hierarchy/injectHierarchyButton.js.map +1 -0
  318. package/dist/hierarchy/presets.d.ts +13 -0
  319. package/dist/hierarchy/presets.d.ts.map +1 -0
  320. package/dist/hierarchy/presets.js +52 -0
  321. package/dist/hierarchy/presets.js.map +1 -0
  322. package/dist/hierarchy/resolveHierarchyCollections.d.ts +23 -0
  323. package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +1 -0
  324. package/dist/hierarchy/resolveHierarchyCollections.js +321 -0
  325. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -0
  326. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts +14 -0
  327. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +1 -0
  328. package/dist/hierarchy/sanitizeHierarchyCollection.js +119 -0
  329. package/dist/hierarchy/sanitizeHierarchyCollection.js.map +1 -0
  330. package/dist/hierarchy/types.d.ts +162 -0
  331. package/dist/hierarchy/types.d.ts.map +1 -0
  332. package/dist/hierarchy/types.js +6 -0
  333. package/dist/hierarchy/types.js.map +1 -0
  334. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts +77 -0
  335. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts.map +1 -0
  336. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js +77 -0
  337. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js.map +1 -0
  338. package/dist/hierarchy/utils/computePaths.d.ts +31 -0
  339. package/dist/hierarchy/utils/computePaths.d.ts.map +1 -0
  340. package/dist/hierarchy/utils/computePaths.js +445 -0
  341. package/dist/hierarchy/utils/computePaths.js.map +1 -0
  342. package/dist/hierarchy/utils/findUseAsTitle.d.ts +14 -0
  343. package/dist/hierarchy/utils/findUseAsTitle.d.ts.map +1 -0
  344. package/dist/hierarchy/utils/findUseAsTitle.js +89 -0
  345. package/dist/hierarchy/utils/findUseAsTitle.js.map +1 -0
  346. package/dist/hierarchy/utils/getAncestors.d.ts +34 -0
  347. package/dist/hierarchy/utils/getAncestors.d.ts.map +1 -0
  348. package/dist/hierarchy/utils/getAncestors.js +94 -0
  349. package/dist/hierarchy/utils/getAncestors.js.map +1 -0
  350. package/dist/hierarchy/utils/getLocalizedValue.d.ts +30 -0
  351. package/dist/hierarchy/utils/getLocalizedValue.d.ts.map +1 -0
  352. package/dist/hierarchy/utils/getLocalizedValue.js +46 -0
  353. package/dist/hierarchy/utils/getLocalizedValue.js.map +1 -0
  354. package/dist/hierarchy/utils/getLocalizedValue.spec.js +250 -0
  355. package/dist/hierarchy/utils/getLocalizedValue.spec.js.map +1 -0
  356. package/dist/index.bundled.d.ts +968 -637
  357. package/dist/index.d.ts +31 -9
  358. package/dist/index.d.ts.map +1 -1
  359. package/dist/index.js +14 -14
  360. package/dist/index.js.map +1 -1
  361. package/dist/kv/adapters/DatabaseKVAdapter.d.ts.map +1 -1
  362. package/dist/locked-documents/config.d.ts.map +1 -1
  363. package/dist/preferences/config.d.ts.map +1 -1
  364. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  365. package/dist/preferences/keys.d.ts +8 -4
  366. package/dist/preferences/keys.d.ts.map +1 -1
  367. package/dist/preferences/keys.js +7 -4
  368. package/dist/preferences/keys.js.map +1 -1
  369. package/dist/preferences/types.d.ts +1 -1
  370. package/dist/preferences/types.d.ts.map +1 -1
  371. package/dist/preferences/types.js.map +1 -1
  372. package/dist/query-presets/access.d.ts.map +1 -1
  373. package/dist/query-presets/config.d.ts.map +1 -1
  374. package/dist/query-presets/config.js +11 -7
  375. package/dist/query-presets/config.js.map +1 -1
  376. package/dist/query-presets/constraints.d.ts.map +1 -1
  377. package/dist/query-presets/constraints.js +1 -1
  378. package/dist/query-presets/constraints.js.map +1 -1
  379. package/dist/queues/config/types/index.d.ts +0 -21
  380. package/dist/queues/config/types/index.d.ts.map +1 -1
  381. package/dist/queues/config/types/index.js.map +1 -1
  382. package/dist/queues/config/types/taskTypes.d.ts +0 -20
  383. package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
  384. package/dist/queues/config/types/taskTypes.js.map +1 -1
  385. package/dist/queues/endpoints/run.d.ts.map +1 -1
  386. package/dist/queues/localAPI.d.ts.map +1 -1
  387. package/dist/queues/localAPI.js +26 -67
  388. package/dist/queues/localAPI.js.map +1 -1
  389. package/dist/queues/operations/handleSchedules/getQueuesWithSchedules.d.ts.map +1 -1
  390. package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
  391. package/dist/queues/operations/handleSchedules/index.js +1 -4
  392. package/dist/queues/operations/handleSchedules/index.js.map +1 -1
  393. package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
  394. package/dist/queues/operations/runJobs/index.js +7 -27
  395. package/dist/queues/operations/runJobs/index.js.map +1 -1
  396. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -1
  397. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
  398. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +3 -22
  399. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  400. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -1
  401. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +0 -2
  402. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -1
  403. package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -1
  404. package/dist/queues/utilities/getJobTaskStatus.d.ts.map +1 -1
  405. package/dist/queues/utilities/updateJob.d.ts +1 -3
  406. package/dist/queues/utilities/updateJob.d.ts.map +1 -1
  407. package/dist/queues/utilities/updateJob.js +2 -18
  408. package/dist/queues/utilities/updateJob.js.map +1 -1
  409. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  410. package/dist/types/index.d.ts +54 -5
  411. package/dist/types/index.d.ts.map +1 -1
  412. package/dist/types/index.js.map +1 -1
  413. package/dist/uploads/checkFileAccess.d.ts.map +1 -1
  414. package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
  415. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  416. package/dist/uploads/endpoints/getFileFromURL.d.ts.map +1 -1
  417. package/dist/uploads/endpoints/getFileFromURL.js +9 -5
  418. package/dist/uploads/endpoints/getFileFromURL.js.map +1 -1
  419. package/dist/uploads/fetchAPI-multipart/isEligibleRequest.d.ts.map +1 -1
  420. package/dist/uploads/fetchAPI-multipart/processNested.d.ts.map +1 -1
  421. package/dist/uploads/fetchAPI-multipart/utilities.d.ts.map +1 -1
  422. package/dist/uploads/fileExists.d.ts.map +1 -1
  423. package/dist/uploads/generateFileData.d.ts +2 -1
  424. package/dist/uploads/generateFileData.d.ts.map +1 -1
  425. package/dist/uploads/generateFileData.js +5 -2
  426. package/dist/uploads/generateFileData.js.map +1 -1
  427. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  428. package/dist/uploads/getBaseFields.js +24 -70
  429. package/dist/uploads/getBaseFields.js.map +1 -1
  430. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  431. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  432. package/dist/uploads/getFileTypeFallback.d.ts.map +1 -1
  433. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  434. package/dist/uploads/image-resizing/createImageSize.d.ts.map +1 -1
  435. package/dist/uploads/image-resizing/generateImageSizeFilename.d.ts.map +1 -1
  436. package/dist/uploads/image-resizing/getImageResizeAction.d.ts.map +1 -1
  437. package/dist/uploads/image-resizing/parseFilename.d.ts.map +1 -1
  438. package/dist/uploads/image-resizing/sanitizeResizeConfig.d.ts.map +1 -1
  439. package/dist/uploads/mimeTypeValidator.d.ts.map +1 -1
  440. package/dist/uploads/safeFetch.d.ts +1 -1
  441. package/dist/uploads/safeFetch.d.ts.map +1 -1
  442. package/dist/uploads/saveBufferToFile.d.ts.map +1 -1
  443. package/dist/uploads/tempFile.d.ts.map +1 -1
  444. package/dist/uploads/types.d.ts +12 -29
  445. package/dist/uploads/types.d.ts.map +1 -1
  446. package/dist/uploads/types.js.map +1 -1
  447. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  448. package/dist/utilities/addLocalesToRequest.d.ts.map +1 -1
  449. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
  450. package/dist/utilities/appendDateTimezoneSelectFields.d.ts +13 -0
  451. package/dist/utilities/appendDateTimezoneSelectFields.d.ts.map +1 -0
  452. package/dist/utilities/appendDateTimezoneSelectFields.js +47 -0
  453. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -0
  454. package/dist/utilities/appendNonTrashedFilter.d.ts.map +1 -1
  455. package/dist/utilities/appendUploadSelectFields.d.ts.map +1 -1
  456. package/dist/utilities/appendUploadSelectFields.js +3 -0
  457. package/dist/utilities/appendUploadSelectFields.js.map +1 -1
  458. package/dist/utilities/canAccessAdmin.d.ts.map +1 -1
  459. package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
  460. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  461. package/dist/utilities/configToJSONSchema.js +46 -28
  462. package/dist/utilities/configToJSONSchema.js.map +1 -1
  463. package/dist/utilities/configToJSONSchema.spec.js +86 -57
  464. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  465. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  466. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  467. package/dist/utilities/dependencies/resolveFrom.d.ts.map +1 -1
  468. package/dist/utilities/escapeRegExp.d.ts.map +1 -1
  469. package/dist/utilities/extractID.d.ts.map +1 -1
  470. package/dist/utilities/extractID.js +1 -1
  471. package/dist/utilities/extractID.js.map +1 -1
  472. package/dist/utilities/flattenAllFields.d.ts.map +1 -1
  473. package/dist/utilities/formatAdminURL.d.ts +13 -2
  474. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  475. package/dist/utilities/formatAdminURL.js.map +1 -1
  476. package/dist/utilities/formatErrors.d.ts.map +1 -1
  477. package/dist/utilities/formatLabels.d.ts.map +1 -1
  478. package/dist/utilities/getBestFitFromSizes.d.ts.map +1 -1
  479. package/dist/utilities/getBlockSelect.d.ts.map +1 -1
  480. package/dist/utilities/getDataByPath.d.ts.map +1 -1
  481. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
  482. package/dist/utilities/getFieldByPath.d.ts.map +1 -1
  483. package/dist/utilities/getFieldPermissions.d.ts.map +1 -1
  484. package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
  485. package/dist/utilities/getRequestEntity.d.ts.map +1 -1
  486. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  487. package/dist/utilities/getRequestOrigin.d.ts.map +1 -1
  488. package/dist/utilities/getSafeRedirect.d.ts.map +1 -1
  489. package/dist/utilities/getSelectMode.d.ts.map +1 -1
  490. package/dist/utilities/getSiblingData.d.ts.map +1 -1
  491. package/dist/utilities/getTranslatedLabel.d.ts.map +1 -1
  492. package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
  493. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  494. package/dist/utilities/handleEndpoints.js +0 -2
  495. package/dist/utilities/handleEndpoints.js.map +1 -1
  496. package/dist/utilities/headersWithCors.d.ts.map +1 -1
  497. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  498. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  499. package/dist/utilities/isValidID.d.ts.map +1 -1
  500. package/dist/utilities/logError.d.ts.map +1 -1
  501. package/dist/utilities/logger.d.ts.map +1 -1
  502. package/dist/utilities/mergeHeaders.d.ts.map +1 -1
  503. package/dist/utilities/mergeListSearchAndWhere.d.ts.map +1 -1
  504. package/dist/utilities/optionsAreEqual.d.ts.map +1 -1
  505. package/dist/utilities/parseBooleanString.d.ts.map +1 -1
  506. package/dist/utilities/parseCookies.d.ts.map +1 -1
  507. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  508. package/dist/utilities/profiling.d.ts.map +1 -1
  509. package/dist/utilities/reduceFieldsToValues.d.ts.map +1 -1
  510. package/dist/utilities/resolveSelect.d.ts +16 -0
  511. package/dist/utilities/resolveSelect.d.ts.map +1 -0
  512. package/dist/utilities/resolveSelect.js +19 -0
  513. package/dist/utilities/resolveSelect.js.map +1 -0
  514. package/dist/utilities/routeError.d.ts.map +1 -1
  515. package/dist/utilities/sanitizeFallbackLocale.d.ts.map +1 -1
  516. package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -1
  517. package/dist/utilities/sanitizeJoinParams.d.ts.map +1 -1
  518. package/dist/utilities/sanitizePopulateParam.d.ts.map +1 -1
  519. package/dist/utilities/sanitizeSelect.d.ts +1 -2
  520. package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
  521. package/dist/utilities/sanitizeSelect.js +19 -25
  522. package/dist/utilities/sanitizeSelect.js.map +1 -1
  523. package/dist/utilities/sanitizeSelectParam.d.ts.map +1 -1
  524. package/dist/utilities/sanitizeSortParams.d.ts.map +1 -1
  525. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  526. package/dist/utilities/slugify.d.ts.map +1 -1
  527. package/dist/utilities/stripUnselectedFields.d.ts.map +1 -1
  528. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  529. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  530. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  531. package/dist/utilities/telemetry/oneWayHash.d.ts.map +1 -1
  532. package/dist/utilities/timestamp.d.ts.map +1 -1
  533. package/dist/utilities/toKebabCase.d.ts.map +1 -1
  534. package/dist/utilities/transformColumnPreferences.d.ts.map +1 -1
  535. package/dist/utilities/transformWhereQuery.d.ts.map +1 -1
  536. package/dist/utilities/traverseFields.d.ts.map +1 -1
  537. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  538. package/dist/utilities/unflatten.d.ts.map +1 -1
  539. package/dist/utilities/validateMimeType.d.ts.map +1 -1
  540. package/dist/utilities/validateTimezones.d.ts.map +1 -1
  541. package/dist/utilities/validateWhereQuery.d.ts.map +1 -1
  542. package/dist/utilities/wordBoundariesRegex.d.ts.map +1 -1
  543. package/dist/utilities/wrapInternalEndpoints.d.ts.map +1 -1
  544. package/dist/versions/baseFields.d.ts.map +1 -1
  545. package/dist/versions/baseFields.js +3 -2
  546. package/dist/versions/baseFields.js.map +1 -1
  547. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  548. package/dist/versions/buildCollectionFields.js +0 -1
  549. package/dist/versions/buildCollectionFields.js.map +1 -1
  550. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  551. package/dist/versions/buildGlobalFields.js +0 -1
  552. package/dist/versions/buildGlobalFields.js.map +1 -1
  553. package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
  554. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  555. package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
  556. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  557. package/dist/versions/drafts/getQueryDraftsSelect.d.ts.map +1 -1
  558. package/dist/versions/drafts/getQueryDraftsSort.d.ts.map +1 -1
  559. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  560. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  561. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  562. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  563. package/dist/versions/migrations/localizeStatus/shared.d.ts.map +1 -1
  564. package/dist/versions/payloadPackageList.d.ts.map +1 -1
  565. package/dist/versions/payloadPackageList.js +0 -1
  566. package/dist/versions/payloadPackageList.js.map +1 -1
  567. package/dist/versions/saveSnapshot.d.ts.map +1 -1
  568. package/dist/versions/schedule/job.d.ts.map +1 -1
  569. package/package.json +20 -20
  570. package/dist/admin/views/folderList.d.ts +0 -56
  571. package/dist/admin/views/folderList.d.ts.map +0 -1
  572. package/dist/admin/views/folderList.js +0 -3
  573. package/dist/admin/views/folderList.js.map +0 -1
  574. package/dist/email/normalizeSendEmailOptions.d.ts +0 -13
  575. package/dist/email/normalizeSendEmailOptions.d.ts.map +0 -1
  576. package/dist/email/normalizeSendEmailOptions.js +0 -20
  577. package/dist/email/normalizeSendEmailOptions.js.map +0 -1
  578. package/dist/folders/addFolderCollection.d.ts +0 -10
  579. package/dist/folders/addFolderCollection.d.ts.map +0 -1
  580. package/dist/folders/addFolderCollection.js +0 -26
  581. package/dist/folders/addFolderCollection.js.map +0 -1
  582. package/dist/folders/addFolderFieldToCollection.d.ts +0 -8
  583. package/dist/folders/addFolderFieldToCollection.d.ts.map +0 -1
  584. package/dist/folders/addFolderFieldToCollection.js +0 -20
  585. package/dist/folders/addFolderFieldToCollection.js.map +0 -1
  586. package/dist/folders/buildFolderField.d.ts +0 -8
  587. package/dist/folders/buildFolderField.d.ts.map +0 -1
  588. package/dist/folders/buildFolderField.js +0 -87
  589. package/dist/folders/buildFolderField.js.map +0 -1
  590. package/dist/folders/constants.d.ts +0 -3
  591. package/dist/folders/constants.d.ts.map +0 -1
  592. package/dist/folders/constants.js +0 -4
  593. package/dist/folders/constants.js.map +0 -1
  594. package/dist/folders/createFolderCollection.d.ts +0 -11
  595. package/dist/folders/createFolderCollection.d.ts.map +0 -1
  596. package/dist/folders/createFolderCollection.js +0 -115
  597. package/dist/folders/createFolderCollection.js.map +0 -1
  598. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts +0 -8
  599. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts.map +0 -1
  600. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js +0 -15
  601. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js.map +0 -1
  602. package/dist/folders/hooks/dissasociateAfterDelete.d.ts +0 -8
  603. package/dist/folders/hooks/dissasociateAfterDelete.d.ts.map +0 -1
  604. package/dist/folders/hooks/dissasociateAfterDelete.js +0 -20
  605. package/dist/folders/hooks/dissasociateAfterDelete.js.map +0 -1
  606. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts +0 -5
  607. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts.map +0 -1
  608. package/dist/folders/hooks/ensureSafeCollectionsChange.js +0 -107
  609. package/dist/folders/hooks/ensureSafeCollectionsChange.js.map +0 -1
  610. package/dist/folders/hooks/reparentChildFolder.d.ts +0 -24
  611. package/dist/folders/hooks/reparentChildFolder.d.ts.map +0 -1
  612. package/dist/folders/hooks/reparentChildFolder.js +0 -72
  613. package/dist/folders/hooks/reparentChildFolder.js.map +0 -1
  614. package/dist/folders/types.d.ts +0 -118
  615. package/dist/folders/types.d.ts.map +0 -1
  616. package/dist/folders/types.js +0 -3
  617. package/dist/folders/types.js.map +0 -1
  618. package/dist/folders/utils/buildFolderWhereConstraints.d.ts +0 -13
  619. package/dist/folders/utils/buildFolderWhereConstraints.d.ts.map +0 -1
  620. package/dist/folders/utils/buildFolderWhereConstraints.js +0 -45
  621. package/dist/folders/utils/buildFolderWhereConstraints.js.map +0 -1
  622. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts +0 -12
  623. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts.map +0 -1
  624. package/dist/folders/utils/formatFolderOrDocumentItem.js +0 -30
  625. package/dist/folders/utils/formatFolderOrDocumentItem.js.map +0 -1
  626. package/dist/folders/utils/getFolderBreadcrumbs.d.ts +0 -14
  627. package/dist/folders/utils/getFolderBreadcrumbs.d.ts.map +0 -1
  628. package/dist/folders/utils/getFolderBreadcrumbs.js +0 -45
  629. package/dist/folders/utils/getFolderBreadcrumbs.js.map +0 -1
  630. package/dist/folders/utils/getFolderData.d.ts +0 -33
  631. package/dist/folders/utils/getFolderData.d.ts.map +0 -1
  632. package/dist/folders/utils/getFolderData.js +0 -88
  633. package/dist/folders/utils/getFolderData.js.map +0 -1
  634. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts +0 -24
  635. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts.map +0 -1
  636. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js +0 -66
  637. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js.map +0 -1
  638. package/dist/folders/utils/getOrphanedDocs.d.ts +0 -15
  639. package/dist/folders/utils/getOrphanedDocs.d.ts.map +0 -1
  640. package/dist/folders/utils/getOrphanedDocs.js +0 -40
  641. package/dist/folders/utils/getOrphanedDocs.js.map +0 -1
@@ -8,6 +8,7 @@ import { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'
8
8
  import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
9
9
  import { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js';
10
10
  import { killTransaction } from '../../utilities/killTransaction.js';
11
+ import { resolveSelect } from '../../utilities/resolveSelect.js';
11
12
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
12
13
  import { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js';
13
14
  import { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js';
@@ -36,8 +37,12 @@ export const findOperation = async (incomingArgs)=>{
36
37
  const { fallbackLocale, locale, payload } = req;
37
38
  const select = sanitizeSelect({
38
39
  fields: collectionConfig.flattenedFields,
39
- forceSelect: collectionConfig.forceSelect,
40
- select: incomingSelect
40
+ select: resolveSelect({
41
+ config: collectionConfig.select,
42
+ operation: 'read',
43
+ req,
44
+ select: incomingSelect
45
+ })
41
46
  });
42
47
  // /////////////////////////////////////
43
48
  // Access
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/find.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { CollectionSlug, FindOptions, JoinQuery } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n Sort,\n TransformCollectionWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n includeLockStatus?: boolean\n joins?: JoinQuery\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\nconst lockDurationDefault = 300 // Default 5 minutes in seconds\n\nexport const findOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>> => {\n let args = incomingArgs\n\n try {\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 collection: { config: collectionConfig },\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft: draftsEnabled,\n includeLockStatus: includeLockStatusFromArgs,\n joins,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n\n const includeLockStatus =\n includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug]\n\n const { fallbackLocale, locale, payload } = req\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ disableErrors, req }, collectionConfig.access.read)\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return {\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: limit!,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 1,\n }\n }\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 let result: PaginatedDocs<DataFromCollectionSlug<TSlug>>\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 sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess: overrideAccess!,\n req,\n })\n\n if (hasDraftsEnabled(collectionConfig) && draftsEnabled) {\n fullWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n result = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination: usePagination,\n req,\n select: getQueryDraftsSelect({ select }),\n sort: getQueryDraftsSort({\n collectionConfig,\n sort,\n }),\n where: fullWhere,\n })\n } else {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where: where!,\n })\n\n result = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n draftsEnabled,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n }\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result.docs = result.docs.map((doc) => ({ ...doc, collection: collectionConfig.slug }))\n }\n\n if (includeLockStatus) {\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const now = new Date().getTime()\n\n const lockedDocuments = await payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: sanitizedLimit,\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 in: result.docs.map((doc) => doc.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(now - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n const lockedDocs = Array.isArray(lockedDocuments?.docs) ? lockedDocuments.docs : []\n\n // Filter out stale locks\n const validLockedDocs = lockedDocs.filter((lock) => {\n const lastEditedAt = new Date(lock?.updatedAt).getTime()\n return lastEditedAt + lockDurationInMilliseconds > now\n })\n\n for (const doc of result.docs) {\n const lockedDoc = validLockedDocs.find((lock) => lock?.document?.value === doc.id)\n doc._isLocked = !!lockedDoc\n doc._userEditing = lockedDoc ? lockedDoc?.user?.value : null\n }\n } catch (_err) {\n for (const doc of result.docs) {\n doc._isLocked = false\n doc._userEditing = null\n }\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig?.hooks?.beforeRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n let docRef = doc\n\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n overrideAccess: overrideAccess!,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (doc) =>\n afterRead<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc,\n draft: draftsEnabled!,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n }),\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 let docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n findMany: true,\n overrideAccess: overrideAccess!,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'find',\n overrideAccess: overrideAccess!,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>\n } catch (error: unknown) {\n await killTransaction(args.req!)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","sanitizeJoinQuery","sanitizeWhereQuery","afterRead","lockedDocumentsCollectionSlug","appendNonTrashedFilter","hasDraftsEnabled","killTransaction","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","getQueryDraftsSort","buildAfterOperation","buildBeforeOperation","sanitizeSortQuery","lockDurationDefault","findOperation","incomingArgs","args","collection","config","operation","overrideAccess","collectionConfig","currentDepth","depth","disableErrors","draft","draftsEnabled","includeLockStatus","includeLockStatusFromArgs","joins","limit","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","incomingSort","trash","where","req","payload","collections","fallbackLocale","locale","fields","flattenedFields","forceSelect","accessResult","access","read","docs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","usePagination","sanitizedLimit","sanitizedPage","result","fullWhere","enableTrash","sanitizedJoins","versionFields","db","queryDrafts","slug","payloadAPI","find","auth","map","doc","lockDocumentsProp","lockDocuments","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","lockedDocuments","and","equals","in","id","updatedAt","greater_than","lockedDocs","Array","isArray","validLockedDocs","filter","lock","lastEditedAt","lockedDoc","document","value","_isLocked","_userEditing","user","_err","hooks","beforeRead","length","Promise","all","docRef","hook","context","query","findMany","global","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/collections/operations/find.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { CollectionSlug, FindOptions, JoinQuery } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n Sort,\n TransformCollectionWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { killTransaction } from '../../utilities/killTransaction.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 { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n includeLockStatus?: boolean\n joins?: JoinQuery\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\nconst lockDurationDefault = 300 // Default 5 minutes in seconds\n\nexport const findOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>> => {\n let args = incomingArgs\n\n try {\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 collection: { config: collectionConfig },\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft: draftsEnabled,\n includeLockStatus: includeLockStatusFromArgs,\n joins,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n\n const includeLockStatus =\n includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug]\n\n const { fallbackLocale, locale, payload } = req\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 let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ disableErrors, req }, collectionConfig.access.read)\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return {\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: limit!,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 1,\n }\n }\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 let result: PaginatedDocs<DataFromCollectionSlug<TSlug>>\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 sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess: overrideAccess!,\n req,\n })\n\n if (hasDraftsEnabled(collectionConfig) && draftsEnabled) {\n fullWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n result = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination: usePagination,\n req,\n select: getQueryDraftsSelect({ select }),\n sort: getQueryDraftsSort({\n collectionConfig,\n sort,\n }),\n where: fullWhere,\n })\n } else {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where: where!,\n })\n\n result = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n draftsEnabled,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n }\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result.docs = result.docs.map((doc) => ({ ...doc, collection: collectionConfig.slug }))\n }\n\n if (includeLockStatus) {\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const now = new Date().getTime()\n\n const lockedDocuments = await payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: sanitizedLimit,\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 in: result.docs.map((doc) => doc.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(now - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n const lockedDocs = Array.isArray(lockedDocuments?.docs) ? lockedDocuments.docs : []\n\n // Filter out stale locks\n const validLockedDocs = lockedDocs.filter((lock) => {\n const lastEditedAt = new Date(lock?.updatedAt).getTime()\n return lastEditedAt + lockDurationInMilliseconds > now\n })\n\n for (const doc of result.docs) {\n const lockedDoc = validLockedDocs.find((lock) => lock?.document?.value === doc.id)\n doc._isLocked = !!lockedDoc\n doc._userEditing = lockedDoc ? lockedDoc?.user?.value : null\n }\n } catch (_err) {\n for (const doc of result.docs) {\n doc._isLocked = false\n doc._userEditing = null\n }\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig?.hooks?.beforeRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n let docRef = doc\n\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n overrideAccess: overrideAccess!,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (doc) =>\n afterRead<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc,\n draft: draftsEnabled!,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n }),\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 let docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n findMany: true,\n overrideAccess: overrideAccess!,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'find',\n overrideAccess: overrideAccess!,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>\n } catch (error: unknown) {\n await killTransaction(args.req!)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","sanitizeJoinQuery","sanitizeWhereQuery","afterRead","lockedDocumentsCollectionSlug","appendNonTrashedFilter","hasDraftsEnabled","killTransaction","resolveSelect","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","getQueryDraftsSort","buildAfterOperation","buildBeforeOperation","sanitizeSortQuery","lockDurationDefault","findOperation","incomingArgs","args","collection","config","operation","overrideAccess","collectionConfig","currentDepth","depth","disableErrors","draft","draftsEnabled","includeLockStatus","includeLockStatusFromArgs","joins","limit","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","incomingSort","trash","where","req","payload","collections","fallbackLocale","locale","fields","flattenedFields","accessResult","access","read","docs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","usePagination","sanitizedLimit","sanitizedPage","result","fullWhere","enableTrash","sanitizedJoins","versionFields","db","queryDrafts","slug","payloadAPI","find","auth","map","doc","lockDocumentsProp","lockDocuments","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","lockedDocuments","and","equals","in","id","updatedAt","greater_than","lockedDocs","Array","isArray","validLockedDocs","filter","lock","lastEditedAt","lockedDoc","document","value","_isLocked","_userEditing","user","_err","hooks","beforeRead","length","Promise","all","docRef","hook","context","query","findMany","global","error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"findByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findByID.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EAEV,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAO3B,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAA;AAYrF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,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,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GACnD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEjD,eAAO,MAAM,iBAAiB,GAC5B,KAAK,SAAS,cAAc,EAC5B,cAAc,SAAS,OAAO,EAC9B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,YAAY,KACzB,OAAO,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAsS3F,CAAA"}
1
+ {"version":3,"file":"findByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findByID.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EAEV,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAO3B,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAA;AAarF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,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,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GACnD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEjD,eAAO,MAAM,iBAAiB,GAC5B,KAAK,SAAS,cAAc,EAC5B,cAAc,SAAS,OAAO,EAC9B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,EAE/C,cAAc,YAAY,KACzB,OAAO,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CA0S3F,CAAA"}
@@ -10,6 +10,7 @@ import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.j
10
10
  import { getSelectMode } from '../../utilities/getSelectMode.js';
11
11
  import { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js';
12
12
  import { killTransaction } from '../../utilities/killTransaction.js';
13
+ import { resolveSelect } from '../../utilities/resolveSelect.js';
13
14
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
14
15
  import { replaceWithDraftIfAvailable } from '../../versions/drafts/replaceWithDraftIfAvailable.js';
15
16
  import { buildAfterOperation } from './utilities/buildAfterOperation.js';
@@ -30,8 +31,12 @@ export const findByIDOperation = async (incomingArgs)=>{
30
31
  const includeLockStatus = includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug];
31
32
  const select = sanitizeSelect({
32
33
  fields: collectionConfig.flattenedFields,
33
- forceSelect: collectionConfig.forceSelect,
34
- select: incomingSelect
34
+ select: resolveSelect({
35
+ config: collectionConfig.select,
36
+ operation: 'read',
37
+ req,
38
+ select: incomingSelect
39
+ })
35
40
  });
36
41
  // /////////////////////////////////////
37
42
  // Access
@@ -102,14 +107,14 @@ export const findByIDOperation = async (incomingArgs)=>{
102
107
  if (!findOneArgs.where?.and?.[0]?.id) {
103
108
  throw new NotFound(t);
104
109
  }
105
- const docFromDB = await req.payload.db.findOne(findOneArgs);
106
- if (!docFromDB && !args.data) {
110
+ const docWithLocales = await req.payload.db.findOne(findOneArgs);
111
+ if (!docWithLocales && !args.data) {
107
112
  if (!disableErrors) {
108
113
  throw new NotFound(req.t);
109
114
  }
110
115
  return null;
111
116
  }
112
- let result = args.data ?? docFromDB;
117
+ let result = args.data ?? docWithLocales;
113
118
  // /////////////////////////////////////
114
119
  // Add collection property for auth collections
115
120
  // /////////////////////////////////////
@@ -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 { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.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 try {\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 forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResult = !overrideAccess\n ? await executeAccess({ id, disableErrors, req }, collectionConfig.access.read)\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 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 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 } as PayloadRequest,\n select: dbSelect,\n where: fullWhere,\n }\n\n if (!findOneArgs.where?.and?.[0]?.id) {\n throw new NotFound(t)\n }\n\n const docFromDB = await req.payload.db.findOne(findOneArgs)\n\n if (!docFromDB && !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>) ?? docFromDB!\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 (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: findOneArgs.where,\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: findOneArgs.where,\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<\n TransformCollectionWithSelect<TSlug, TSelect>,\n TDisableErrors\n >\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","sanitizeJoinQuery","sanitizeWhereQuery","NotFound","afterRead","validateQueryPaths","lockedDocumentsCollectionSlug","appendNonTrashedFilter","getSelectMode","hasDraftsEnabled","killTransaction","sanitizeSelect","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","forceSelect","accessResult","access","read","where","equals","fullWhere","enableTrash","sanitizedJoins","slug","customIDType","dbSelect","versions","drafts","createdAt","updatedAt","findOneArgs","draftsEnabled","payloadAPI","transactionID","and","docFromDB","db","findOne","data","result","auth","lockStatus","lockDocumentsProp","lockDocuments","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","lockedDocument","find","limit","pagination","greater_than","Date","getTime","docs","length","_isLocked","_userEditing","user","value","doc","entity","entityType","hooks","beforeRead","hook","context","query","global","error"],"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 { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.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 try {\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({ id, disableErrors, req }, collectionConfig.access.read)\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 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 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 } as PayloadRequest,\n select: dbSelect,\n where: fullWhere,\n }\n\n if (!findOneArgs.where?.and?.[0]?.id) {\n throw new NotFound(t)\n }\n\n const docWithLocales = await req.payload.db.findOne(findOneArgs)\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 (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: findOneArgs.where,\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: findOneArgs.where,\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<\n TransformCollectionWithSelect<TSlug, TSelect>,\n TDisableErrors\n >\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","sanitizeJoinQuery","sanitizeWhereQuery","NotFound","afterRead","validateQueryPaths","lockedDocumentsCollectionSlug","appendNonTrashedFilter","getSelectMode","hasDraftsEnabled","killTransaction","resolveSelect","sanitizeSelect","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","access","read","where","equals","fullWhere","enableTrash","sanitizedJoins","slug","customIDType","dbSelect","versions","drafts","createdAt","updatedAt","findOneArgs","draftsEnabled","payloadAPI","transactionID","and","docWithLocales","db","findOne","data","result","auth","lockStatus","lockDocumentsProp","lockDocuments","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","lockedDocument","find","limit","pagination","greater_than","Date","getTime","docs","length","_isLocked","_userEditing","user","value","doc","entity","entityType","hooks","beforeRead","hook","context","query","global","error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findDistinct.ts"],"names":[],"mappings":"AAGA,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;AAepD,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;AACD,eAAO,MAAM,qBAAqB,iBAClB,SAAS,KACtB,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsNxD,CAAA"}
1
+ {"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findDistinct.ts"],"names":[],"mappings":"AAGA,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;AAepD,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;AACD,eAAO,MAAM,qBAAqB,GAChC,cAAc,SAAS,KACtB,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsNxD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersionByID.ts"],"names":[],"mappings":"AAEA,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;AAchE,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,cAC/D,SAAS,KACd,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAkLhC,CAAA"}
1
+ {"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersionByID.ts"],"names":[],"mappings":"AAEA,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;AAchE,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,EAC3E,MAAM,SAAS,KACd,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAsLhC,CAAA"}
@@ -5,9 +5,9 @@ import { APIError, Forbidden, NotFound } from '../../errors/index.js';
5
5
  import { afterRead } from '../../fields/hooks/afterRead/index.js';
6
6
  import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
7
7
  import { killTransaction } from '../../utilities/killTransaction.js';
8
+ import { resolveSelect } from '../../utilities/resolveSelect.js';
8
9
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
9
10
  import { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js';
10
- import { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js';
11
11
  import { buildAfterOperation } from './utilities/buildAfterOperation.js';
12
12
  import { buildBeforeOperation } from './utilities/buildBeforeOperation.js';
13
13
  export const findVersionByIDOperation = async (args)=>{
@@ -55,10 +55,12 @@ export const findVersionByIDOperation = async (args)=>{
55
55
  // /////////////////////////////////////
56
56
  const select = sanitizeSelect({
57
57
  fields: buildVersionCollectionFields(payload.config, collectionConfig, true),
58
- forceSelect: getQueryDraftsSelect({
59
- select: collectionConfig.forceSelect
58
+ select: resolveSelect({
59
+ config: collectionConfig.select,
60
+ operation: 'read',
61
+ req,
62
+ select: incomingSelect
60
63
  }),
61
- select: incomingSelect,
62
64
  versions: true
63
65
  });
64
66
  const versionsQuery = await payload.db.findVersions({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/collections/operations/findVersionByID.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport 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 { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.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 try {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, disableErrors, req }, collectionConfig.access.readVersions)\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 const where = { id: { equals: id } }\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 // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: buildVersionCollectionFields(payload.config, collectionConfig, true),\n forceSelect: getQueryDraftsSelect({ select: collectionConfig.forceSelect }),\n select: incomingSelect,\n versions: true,\n })\n\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 let result = versionsQuery.docs[0]!\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 (!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 // /////////////////////////////////////\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 } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","APIError","Forbidden","NotFound","afterRead","appendNonTrashedFilter","killTransaction","sanitizeSelect","buildVersionCollectionFields","getQueryDraftsSelect","buildAfterOperation","buildBeforeOperation","findVersionByIDOperation","args","id","collection","config","collectionConfig","currentDepth","depth","disableErrors","overrideAccess","populate","req","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","BAD_REQUEST","operation","accessResults","access","readVersions","hasWhereAccess","where","equals","fullWhere","deletedAtPath","enableTrash","fields","forceSelect","versions","versionsQuery","db","findVersions","slug","limit","pagination","result","docs","t","version","hooks","beforeRead","length","hook","context","doc","query","draft","undefined","global","error"],"mappings":"AAAA,SAASA,UAAUC,UAAU,QAAQ,cAAa;AAOlD,SAASC,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,wBAAuB;AACrE,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,sBAAsB,QAAQ,4CAA2C;AAClF,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,4BAA4B,QAAQ,0CAAyC;AACtF,SAASC,oBAAoB,QAAQ,gDAA+C;AACpF,SAASC,mBAAmB,QAAQ,qCAAoC;AACxE,SAASC,oBAAoB,QAAQ,sCAAqC;AAe1E,OAAO,MAAMC,2BAA2B,OACtCC;IAEA,MAAM,EACJC,EAAE,EACFC,YAAY,EAAEC,QAAQC,gBAAgB,EAAE,EACxCC,YAAY,EACZC,KAAK,EACLC,aAAa,EACbC,cAAc,EACdC,QAAQ,EACRC,KAAK,EAAEC,cAAc,EAAEC,MAAM,EAAEC,OAAO,EAAE,EACxCH,GAAG,EACHI,QAAQC,cAAc,EACtBC,gBAAgB,EAChBC,QAAQ,KAAK,EACd,GAAGjB;IAEJ,IAAI,CAACC,IAAI;QACP,MAAM,IAAIb,SAAS,0BAA0BH,WAAWiC,WAAW;IACrE;IAEA,IAAI;QACF,wCAAwC;QACxC,+BAA+B;QAC/B,wCAAwC;QAExClB,OAAO,MAAMF,qBAAqB;YAChCE;YACAE,YAAYE;YACZe,WAAW;YACXX;QACF;QAEA,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,MAAMY,gBAAgB,CAACZ,iBACnB,MAAMtB,cAAc;YAAEe;YAAIM;YAAeG;QAAI,GAAGN,iBAAiBiB,MAAM,CAACC,YAAY,IACpF;QAEJ,gEAAgE;QAChE,IAAIF,kBAAkB,OAAO;YAC3B,OAAO;QACT;QAEA,MAAMG,iBAAiB,OAAOH,kBAAkB;QAEhD,MAAMI,QAAQ;YAAEvB,IAAI;gBAAEwB,QAAQxB;YAAG;QAAE;QAEnC,IAAIyB,YAAYvC,eAAeqC,OAAOJ;QAEtCM,YAAYlC,uBAAuB;YACjCmC,eAAe;YACfC,aAAaxB,iBAAiBa,KAAK;YACnCA;YACAO,OAAOE;QACT;QAEA,wCAAwC;QACxC,aAAa;QACb,wCAAwC;QAExC,MAAMZ,SAASpB,eAAe;YAC5BmC,QAAQlC,6BAA6BkB,QAAQV,MAAM,EAAEC,kBAAkB;YACvE0B,aAAalC,qBAAqB;gBAAEkB,QAAQV,iBAAiB0B,WAAW;YAAC;YACzEhB,QAAQC;YACRgB,UAAU;QACZ;QAEA,MAAMC,gBAAgB,MAAMnB,QAAQoB,EAAE,CAACC,YAAY,CAAQ;YACzDhC,YAAYE,iBAAiB+B,IAAI;YACjCC,OAAO;YACPxB,QAAQA;YACRyB,YAAY;YACZ3B;YACAI;YACAU,OAAOE;QACT;QAEA,IAAIY,SAASN,cAAcO,IAAI,CAAC,EAAE;QAElC,IAAI,CAACD,QAAQ;YACX,IAAI,CAAC/B,eAAe;gBAClB,IAAI,CAACgB,gBAAgB;oBACnB,MAAM,IAAIjC,SAASoB,IAAI8B,CAAC;gBAC1B;gBACA,IAAIjB,gBAAgB;oBAClB,MAAM,IAAIlC,UAAUqB,IAAI8B,CAAC;gBAC3B;YACF;YAEA,OAAO;QACT;QAEA,IAAI,CAACF,OAAOG,OAAO,EAAE;YACnB,2BAA2B;;YACzBH,OAAeG,OAAO,GAAG,CAAC;QAC9B;QAEA,wCAAwC;QACxC,0BAA0B;QAC1B,wCAAwC;QAExC,IAAIrC,iBAAiBsC,KAAK,EAAEC,YAAYC,QAAQ;YAC9C,KAAK,MAAMC,QAAQzC,iBAAiBsC,KAAK,CAACC,UAAU,CAAE;gBACpDL,OAAOG,OAAO,GACZ,AAAC,MAAMI,KAAK;oBACV3C,YAAYE;oBACZ0C,SAASpC,IAAIoC,OAAO;oBACpBC,KAAKT,OAAOG,OAAO;oBACnBjC;oBACAwC,OAAOtB;oBACPhB;gBACF,MAAO4B,OAAOG,OAAO;YACzB;QACF;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExCH,OAAOG,OAAO,GAAG,MAAMlD,UAAU;YAC/BW,YAAYE;YACZ0C,SAASpC,IAAIoC,OAAO;YACpBzC;YACAC,OAAOA;YACPyC,KAAKT,OAAOG,OAAO;YACnB,oFAAoF;YACpFQ,OAAOC;YACPvC,gBAAgBA;YAChBwC,QAAQ;YACRvC,QAAQA;YACRJ,gBAAgBA;YAChBC;YACAC;YACAI,QAAQ,OAAOA,QAAQ2B,YAAY,WAAW3B,OAAO2B,OAAO,GAAGS;YAC/DlC,kBAAkBA;QACpB;QAEA,wCAAwC;QACxC,yBAAyB;QACzB,wCAAwC;QAExC,IAAIZ,iBAAiBsC,KAAK,EAAEnD,WAAWqD,QAAQ;YAC7C,KAAK,MAAMC,QAAQzC,iBAAiBsC,KAAK,CAACnD,SAAS,CAAE;gBACnD+C,OAAOG,OAAO,GACZ,AAAC,MAAMI,KAAK;oBACV3C,YAAYE;oBACZ0C,SAASpC,IAAIoC,OAAO;oBACpBC,KAAKT,OAAOG,OAAO;oBACnBjC;oBACAwC,OAAOtB;oBACPhB;gBACF,MAAO4B,OAAOG,OAAO;YACzB;QACF;QAEA,wCAAwC;QACxC,8BAA8B;QAC9B,wCAAwC;QAExCH,SAAS,MAAMzC,oBAAoB;YACjCG;YACAE,YAAYE;YACZe,WAAW;YACXX;YACA8B;QACF;QAEA,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,OAAOA;IACT,EAAE,OAAOc,OAAgB;QACvB,MAAM3D,gBAAgBiB;QACtB,MAAM0C;IACR;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/collections/operations/findVersionByID.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport 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 { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.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 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 try {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, disableErrors, req }, collectionConfig.access.readVersions)\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 const where = { id: { equals: id } }\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 // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: buildVersionCollectionFields(payload.config, collectionConfig, true),\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\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 let result = versionsQuery.docs[0]!\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 (!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 // /////////////////////////////////////\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 } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","APIError","Forbidden","NotFound","afterRead","appendNonTrashedFilter","killTransaction","resolveSelect","sanitizeSelect","buildVersionCollectionFields","buildAfterOperation","buildBeforeOperation","findVersionByIDOperation","args","id","collection","config","collectionConfig","currentDepth","depth","disableErrors","overrideAccess","populate","req","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","BAD_REQUEST","operation","accessResults","access","readVersions","hasWhereAccess","where","equals","fullWhere","deletedAtPath","enableTrash","fields","versions","versionsQuery","db","findVersions","slug","limit","pagination","result","docs","t","version","hooks","beforeRead","length","hook","context","doc","query","draft","undefined","global","error"],"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;AAgBlD,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,CAmM9B,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;AAgBlD,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,EAC9E,MAAM,SAAS,KACd,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAuM9B,CAAA"}
@@ -5,10 +5,10 @@ import { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js';
5
5
  import { afterRead } from '../../fields/hooks/afterRead/index.js';
6
6
  import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
7
7
  import { killTransaction } from '../../utilities/killTransaction.js';
8
+ import { resolveSelect } from '../../utilities/resolveSelect.js';
8
9
  import { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js';
9
10
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
10
11
  import { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js';
11
- import { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js';
12
12
  import { buildAfterOperation } from './utilities/buildAfterOperation.js';
13
13
  import { buildBeforeOperation } from './utilities/buildBeforeOperation.js';
14
14
  export const findVersionsOperation = async (args)=>{
@@ -57,10 +57,12 @@ export const findVersionsOperation = async (args)=>{
57
57
  });
58
58
  const select = sanitizeSelect({
59
59
  fields: versionFields,
60
- forceSelect: getQueryDraftsSelect({
61
- select: collectionConfig.forceSelect
60
+ select: resolveSelect({
61
+ config: collectionConfig.select,
62
+ operation: 'read',
63
+ req,
64
+ select: incomingSelect
62
65
  }),
63
- select: incomingSelect,
64
66
  versions: true
65
67
  });
66
68
  // /////////////////////////////////////
@@ -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 { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.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 try {\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({ req }, collectionConfig.access.readVersions)\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 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 forceSelect: getQueryDraftsSelect({ select: collectionConfig.forceSelect }),\n select: incomingSelect,\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 // /////////////////////////////////////\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 // /////////////////////////////////////\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 } catch (error: unknown) {\n await killTransaction(args.req!)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","sanitizeWhereQuery","afterRead","appendNonTrashedFilter","killTransaction","sanitizeInternalFields","sanitizeSelect","buildVersionCollectionFields","getQueryDraftsSelect","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","access","readVersions","versionFields","fullWhere","deletedAtPath","enableTrash","fields","forceSelect","versions","usePagination","sanitizedLimit","sanitizedPage","paginatedDocs","db","findVersions","slug","result","docs","Promise","all","map","doc","docRef","version","hooks","beforeRead","length","hook","context","query","data","draft","undefined","findMany","global","error"],"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 { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { killTransaction } from '../../utilities/killTransaction.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 try {\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({ req }, collectionConfig.access.readVersions)\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 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 // /////////////////////////////////////\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 // /////////////////////////////////////\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 } catch (error: unknown) {\n await killTransaction(args.req!)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","sanitizeWhereQuery","afterRead","appendNonTrashedFilter","killTransaction","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","access","readVersions","versionFields","fullWhere","deletedAtPath","enableTrash","fields","versions","usePagination","sanitizedLimit","sanitizedPage","paginatedDocs","db","findVersions","slug","result","docs","Promise","all","map","doc","docRef","version","hooks","beforeRead","length","hook","context","query","data","draft","undefined","findMany","global","error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"restoreVersion.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/restoreVersion.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAoBlD,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,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,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;CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,uBAAuB,GAClC,KAAK,SAAS,UAAU,GAAG,UAAU,kCAE/B,SAAS,KACd,OAAO,CAAC,KAAK,CA0Vf,CAAA"}
1
+ {"version":3,"file":"restoreVersion.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/restoreVersion.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAChG,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAqBlD,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,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,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;CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,uBAAuB,GAClC,KAAK,SAAS,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,EAE/D,MAAM,SAAS,KACd,OAAO,CAAC,KAAK,CA8Vf,CAAA"}
@@ -12,6 +12,7 @@ import { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js';
12
12
  import { hasDraftValidationEnabled } from '../../utilities/getVersionsConfig.js';
13
13
  import { initTransaction } from '../../utilities/initTransaction.js';
14
14
  import { killTransaction } from '../../utilities/killTransaction.js';
15
+ import { resolveSelect } from '../../utilities/resolveSelect.js';
15
16
  import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
16
17
  import { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js';
17
18
  import { saveVersion } from '../../versions/saveVersion.js';
@@ -197,8 +198,12 @@ export const restoreVersionOperation = async (args)=>{
197
198
  // /////////////////////////////////////
198
199
  const select = sanitizeSelect({
199
200
  fields: collectionConfig.flattenedFields,
200
- forceSelect: collectionConfig.forceSelect,
201
- select: incomingSelect
201
+ select: resolveSelect({
202
+ config: collectionConfig.select,
203
+ operation: 'restoreVersion',
204
+ req,
205
+ select: incomingSelect
206
+ })
202
207
  });
203
208
  // Ensure updatedAt date is always updated
204
209
  result.updatedAt = new Date().toISOString();