payload 4.0.0-internal.5b1e7cd → 4.0.0-internal.5f0cd13

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/dist/admin/RichText.d.ts +3 -16
  2. package/dist/admin/RichText.d.ts.map +1 -1
  3. package/dist/admin/RichText.js.map +1 -1
  4. package/dist/admin/adapters/cookies.d.ts +21 -0
  5. package/dist/admin/adapters/cookies.d.ts.map +1 -0
  6. package/dist/admin/adapters/cookies.js +3 -0
  7. package/dist/admin/adapters/cookies.js.map +1 -0
  8. package/dist/admin/adapters/index.d.ts +4 -0
  9. package/dist/admin/adapters/index.d.ts.map +1 -0
  10. package/dist/admin/adapters/index.js +3 -0
  11. package/dist/admin/adapters/index.js.map +1 -0
  12. package/dist/admin/adapters/router.d.ts +56 -0
  13. package/dist/admin/adapters/router.d.ts.map +1 -0
  14. package/dist/admin/adapters/router.js +3 -0
  15. package/dist/admin/adapters/router.js.map +1 -0
  16. package/dist/admin/adapters/server.d.ts +23 -0
  17. package/dist/admin/adapters/server.d.ts.map +1 -0
  18. package/dist/admin/adapters/server.js +6 -0
  19. package/dist/admin/adapters/server.js.map +1 -0
  20. package/dist/admin/elements/Nav.d.ts +13 -0
  21. package/dist/admin/elements/Nav.d.ts.map +1 -1
  22. package/dist/admin/elements/Nav.js.map +1 -1
  23. package/dist/admin/elements/Table.d.ts +1 -0
  24. package/dist/admin/elements/Table.d.ts.map +1 -1
  25. package/dist/admin/elements/Table.js.map +1 -1
  26. package/dist/admin/functions/index.d.ts +1 -38
  27. package/dist/admin/functions/index.d.ts.map +1 -1
  28. package/dist/admin/functions/index.js.map +1 -1
  29. package/dist/admin/types.d.ts +5 -4
  30. package/dist/admin/types.d.ts.map +1 -1
  31. package/dist/admin/types.js.map +1 -1
  32. package/dist/admin/views/hierarchyList.d.ts +10 -0
  33. package/dist/admin/views/hierarchyList.d.ts.map +1 -0
  34. package/dist/admin/views/hierarchyList.js +3 -0
  35. package/dist/admin/views/hierarchyList.js.map +1 -0
  36. package/dist/admin/views/index.d.ts +1 -3
  37. package/dist/admin/views/index.d.ts.map +1 -1
  38. package/dist/admin/views/index.js.map +1 -1
  39. package/dist/admin/views/list.d.ts +47 -2
  40. package/dist/admin/views/list.d.ts.map +1 -1
  41. package/dist/admin/views/list.js.map +1 -1
  42. package/dist/auth/cookies.d.ts.map +1 -1
  43. package/dist/auth/defaultAccess.d.ts.map +1 -1
  44. package/dist/auth/ensureUsernameOrEmail.d.ts.map +1 -1
  45. package/dist/auth/executeAccess.d.ts.map +1 -1
  46. package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
  47. package/dist/auth/extractAccessFromPermission.d.ts.map +1 -1
  48. package/dist/auth/extractJWT.d.ts.map +1 -1
  49. package/dist/auth/getAuthFields.d.ts.map +1 -1
  50. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  51. package/dist/auth/getLoginOptions.d.ts.map +1 -1
  52. package/dist/auth/isUserLocked.d.ts.map +1 -1
  53. package/dist/auth/jwt.d.ts.map +1 -1
  54. package/dist/auth/operations/access.d.ts.map +1 -1
  55. package/dist/auth/operations/auth.d.ts.map +1 -1
  56. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  57. package/dist/auth/operations/init.d.ts.map +1 -1
  58. package/dist/auth/operations/local/auth.d.ts.map +1 -1
  59. package/dist/auth/operations/login.d.ts.map +1 -1
  60. package/dist/auth/operations/logout.d.ts.map +1 -1
  61. package/dist/auth/operations/me.d.ts.map +1 -1
  62. package/dist/auth/operations/refresh.d.ts.map +1 -1
  63. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  64. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  65. package/dist/auth/operations/unlock.d.ts.map +1 -1
  66. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  67. package/dist/auth/sessions.d.ts.map +1 -1
  68. package/dist/auth/strategies/apiKey.d.ts.map +1 -1
  69. package/dist/auth/strategies/apiKey.js +6 -17
  70. package/dist/auth/strategies/apiKey.js.map +1 -1
  71. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  72. package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
  73. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  74. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  75. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  76. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  77. package/dist/bin/generateImportMap/iterateCollections.js +1 -0
  78. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  79. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  80. package/dist/bin/generateImportMap/iterateConfig.js +7 -0
  81. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  82. package/dist/bin/generateImportMap/iterateFields.d.ts.map +1 -1
  83. package/dist/bin/generateImportMap/iterateFields.js +4 -1
  84. package/dist/bin/generateImportMap/iterateFields.js.map +1 -1
  85. package/dist/bin/generateImportMap/iterateGlobals.d.ts.map +1 -1
  86. package/dist/bin/generateImportMap/iterateGlobals.js +20 -8
  87. package/dist/bin/generateImportMap/iterateGlobals.js.map +1 -1
  88. package/dist/bin/generateImportMap/utilities/getFromImportMap.d.ts.map +1 -1
  89. package/dist/bin/generateTypes.d.ts.map +1 -1
  90. package/dist/bin/generateTypes.js +7 -1
  91. package/dist/bin/generateTypes.js.map +1 -1
  92. package/dist/bin/index.d.ts.map +1 -1
  93. package/dist/bin/index.js +1 -3
  94. package/dist/bin/index.js.map +1 -1
  95. package/dist/bin/migrate.d.ts.map +1 -1
  96. package/dist/collections/config/client.d.ts +4 -2
  97. package/dist/collections/config/client.d.ts.map +1 -1
  98. package/dist/collections/config/client.js +13 -1
  99. package/dist/collections/config/client.js.map +1 -1
  100. package/dist/collections/config/defaults.d.ts.map +1 -1
  101. package/dist/collections/config/defaults.js +1 -1
  102. package/dist/collections/config/defaults.js.map +1 -1
  103. package/dist/collections/config/sanitize.d.ts +10 -1
  104. package/dist/collections/config/sanitize.d.ts.map +1 -1
  105. package/dist/collections/config/sanitize.js +51 -10
  106. package/dist/collections/config/sanitize.js.map +1 -1
  107. package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
  108. package/dist/collections/config/types.d.ts +76 -91
  109. package/dist/collections/config/types.d.ts.map +1 -1
  110. package/dist/collections/config/types.js.map +1 -1
  111. package/dist/collections/config/useAsTitle.d.ts.map +1 -1
  112. package/dist/collections/dataloader.d.ts.map +1 -1
  113. package/dist/collections/operations/count.d.ts.map +1 -1
  114. package/dist/collections/operations/countVersions.d.ts.map +1 -1
  115. package/dist/collections/operations/create.d.ts.map +1 -1
  116. package/dist/collections/operations/create.js +24 -19
  117. package/dist/collections/operations/create.js.map +1 -1
  118. package/dist/collections/operations/delete.d.ts.map +1 -1
  119. package/dist/collections/operations/delete.js +7 -2
  120. package/dist/collections/operations/delete.js.map +1 -1
  121. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  122. package/dist/collections/operations/deleteByID.js +7 -2
  123. package/dist/collections/operations/deleteByID.js.map +1 -1
  124. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  125. package/dist/collections/operations/find.d.ts.map +1 -1
  126. package/dist/collections/operations/find.js +7 -2
  127. package/dist/collections/operations/find.js.map +1 -1
  128. package/dist/collections/operations/findByID.d.ts.map +1 -1
  129. package/dist/collections/operations/findByID.js +10 -5
  130. package/dist/collections/operations/findByID.js.map +1 -1
  131. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  132. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  133. package/dist/collections/operations/findVersionByID.js +6 -4
  134. package/dist/collections/operations/findVersionByID.js.map +1 -1
  135. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  136. package/dist/collections/operations/findVersions.js +6 -4
  137. package/dist/collections/operations/findVersions.js.map +1 -1
  138. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  139. package/dist/collections/operations/restoreVersion.js +7 -2
  140. package/dist/collections/operations/restoreVersion.js.map +1 -1
  141. package/dist/collections/operations/update.d.ts.map +1 -1
  142. package/dist/collections/operations/update.js +7 -2
  143. package/dist/collections/operations/update.js.map +1 -1
  144. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  145. package/dist/collections/operations/updateByID.js +7 -2
  146. package/dist/collections/operations/updateByID.js.map +1 -1
  147. package/dist/collections/operations/utilities/buildAfterOperation.d.ts.map +1 -1
  148. package/dist/collections/operations/utilities/sanitizeSortQuery.d.ts.map +1 -1
  149. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  150. package/dist/collections/operations/utilities/update.js +5 -4
  151. package/dist/collections/operations/utilities/update.js.map +1 -1
  152. package/dist/config/build.d.ts.map +1 -1
  153. package/dist/config/build.js +8 -0
  154. package/dist/config/build.js.map +1 -1
  155. package/dist/config/client.d.ts +1 -1
  156. package/dist/config/client.d.ts.map +1 -1
  157. package/dist/config/client.js +2 -11
  158. package/dist/config/client.js.map +1 -1
  159. package/dist/config/defaults.d.ts.map +1 -1
  160. package/dist/config/defaults.js +0 -15
  161. package/dist/config/defaults.js.map +1 -1
  162. package/dist/config/orderable/index.d.ts.map +1 -1
  163. package/dist/config/orderable/index.js +0 -4
  164. package/dist/config/orderable/index.js.map +1 -1
  165. package/dist/config/sanitize.d.ts.map +1 -1
  166. package/dist/config/sanitize.js +6 -53
  167. package/dist/config/sanitize.js.map +1 -1
  168. package/dist/config/types.d.ts +188 -32
  169. package/dist/config/types.d.ts.map +1 -1
  170. package/dist/config/types.js.map +1 -1
  171. package/dist/database/combineQueries.d.ts.map +1 -1
  172. package/dist/database/migrations/findMigrationDir.d.ts.map +1 -1
  173. package/dist/database/migrations/getPredefinedMigration.d.ts.map +1 -1
  174. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  175. package/dist/database/migrations/templates/localizeStatus.d.ts.map +1 -1
  176. package/dist/database/migrations/writeMigrationIndex.d.ts.map +1 -1
  177. package/dist/database/sanitizeJoinQuery.d.ts.map +1 -1
  178. package/dist/database/sanitizeWhereQuery.d.ts.map +1 -1
  179. package/dist/duplicateDocument/index.d.ts.map +1 -1
  180. package/dist/email/getStringifiedToAddress.d.ts.map +1 -1
  181. package/dist/exports/shared.d.ts +6 -3
  182. package/dist/exports/shared.d.ts.map +1 -1
  183. package/dist/exports/shared.js +4 -2
  184. package/dist/exports/shared.js.map +1 -1
  185. package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
  186. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  187. package/dist/fields/baseFields/slug/index.d.ts.map +1 -1
  188. package/dist/fields/baseFields/slug/index.js +7 -5
  189. package/dist/fields/baseFields/slug/index.js.map +1 -1
  190. package/dist/fields/config/client.d.ts +1 -1
  191. package/dist/fields/config/client.d.ts.map +1 -1
  192. package/dist/fields/config/client.js +4 -3
  193. package/dist/fields/config/client.js.map +1 -1
  194. package/dist/fields/config/sanitize.d.ts.map +1 -1
  195. package/dist/fields/config/sanitize.js +13 -20
  196. package/dist/fields/config/sanitize.js.map +1 -1
  197. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
  198. package/dist/fields/config/sanitizeJoinField.js +3 -0
  199. package/dist/fields/config/sanitizeJoinField.js.map +1 -1
  200. package/dist/fields/config/types.d.ts +44 -118
  201. package/dist/fields/config/types.d.ts.map +1 -1
  202. package/dist/fields/config/types.js +12 -2
  203. package/dist/fields/config/types.js.map +1 -1
  204. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  205. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  206. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  207. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  208. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  209. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  210. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  211. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
  212. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.d.ts.map +1 -1
  213. package/dist/fields/hooks/beforeChange/getExistingRowDoc.d.ts.map +1 -1
  214. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  215. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  216. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  217. package/dist/fields/hooks/beforeDuplicate/index.d.ts.map +1 -1
  218. package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
  219. package/dist/fields/hooks/beforeDuplicate/traverseFields.d.ts.map +1 -1
  220. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  221. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  222. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  223. package/dist/fields/isFieldDisabled.d.ts +12 -0
  224. package/dist/fields/isFieldDisabled.d.ts.map +1 -0
  225. package/dist/fields/isFieldDisabled.js +15 -0
  226. package/dist/fields/isFieldDisabled.js.map +1 -0
  227. package/dist/fields/isFieldDisabled.spec.js +134 -0
  228. package/dist/fields/isFieldDisabled.spec.js.map +1 -0
  229. package/dist/fields/mergeBaseFields.d.ts.map +1 -1
  230. package/dist/fields/setDefaultBeforeDuplicate.d.ts.map +1 -1
  231. package/dist/fields/validations.js +1 -1
  232. package/dist/fields/validations.js.map +1 -1
  233. package/dist/globals/config/client.d.ts +1 -1
  234. package/dist/globals/config/client.d.ts.map +1 -1
  235. package/dist/globals/config/client.js +2 -1
  236. package/dist/globals/config/client.js.map +1 -1
  237. package/dist/globals/config/sanitize.d.ts +6 -1
  238. package/dist/globals/config/sanitize.d.ts.map +1 -1
  239. package/dist/globals/config/sanitize.js +6 -2
  240. package/dist/globals/config/sanitize.js.map +1 -1
  241. package/dist/globals/config/types.d.ts +4 -57
  242. package/dist/globals/config/types.d.ts.map +1 -1
  243. package/dist/globals/config/types.js.map +1 -1
  244. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
  245. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  246. package/dist/globals/operations/findOne.d.ts.map +1 -1
  247. package/dist/globals/operations/findOne.js +7 -2
  248. package/dist/globals/operations/findOne.js.map +1 -1
  249. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  250. package/dist/globals/operations/findVersionByID.js +6 -4
  251. package/dist/globals/operations/findVersionByID.js.map +1 -1
  252. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  253. package/dist/globals/operations/findVersions.js +6 -4
  254. package/dist/globals/operations/findVersions.js.map +1 -1
  255. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  256. package/dist/globals/operations/update.d.ts.map +1 -1
  257. package/dist/globals/operations/update.js +7 -2
  258. package/dist/globals/operations/update.js.map +1 -1
  259. package/dist/hierarchy/addHierarchyToCollection.d.ts +9 -0
  260. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -0
  261. package/dist/hierarchy/addHierarchyToCollection.js +76 -0
  262. package/dist/hierarchy/addHierarchyToCollection.js.map +1 -0
  263. package/dist/hierarchy/buildParentField.d.ts +11 -0
  264. package/dist/hierarchy/buildParentField.d.ts.map +1 -0
  265. package/dist/hierarchy/buildParentField.js +42 -0
  266. package/dist/hierarchy/buildParentField.js.map +1 -0
  267. package/dist/hierarchy/constants.d.ts +15 -0
  268. package/dist/hierarchy/constants.d.ts.map +1 -0
  269. package/dist/hierarchy/constants.js +11 -0
  270. package/dist/hierarchy/constants.js.map +1 -0
  271. package/dist/hierarchy/createFolderField.d.ts +39 -0
  272. package/dist/hierarchy/createFolderField.d.ts.map +1 -0
  273. package/dist/hierarchy/createFolderField.js +54 -0
  274. package/dist/hierarchy/createFolderField.js.map +1 -0
  275. package/dist/hierarchy/createTagField.d.ts +44 -0
  276. package/dist/hierarchy/createTagField.d.ts.map +1 -0
  277. package/dist/hierarchy/createTagField.js +48 -0
  278. package/dist/hierarchy/createTagField.js.map +1 -0
  279. package/dist/hierarchy/getInitialTreeData.d.ts +27 -0
  280. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -0
  281. package/dist/hierarchy/getInitialTreeData.js +125 -0
  282. package/dist/hierarchy/getInitialTreeData.js.map +1 -0
  283. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts +14 -0
  284. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -0
  285. package/dist/hierarchy/hooks/collectionAfterDelete.js +21 -0
  286. package/dist/hierarchy/hooks/collectionAfterDelete.js.map +1 -0
  287. package/dist/hierarchy/hooks/collectionAfterRead.d.ts +27 -0
  288. package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +1 -0
  289. package/dist/hierarchy/hooks/collectionAfterRead.js +72 -0
  290. package/dist/hierarchy/hooks/collectionAfterRead.js.map +1 -0
  291. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts +19 -0
  292. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +1 -0
  293. package/dist/hierarchy/hooks/collectionBeforeChange.js +90 -0
  294. package/dist/hierarchy/hooks/collectionBeforeChange.js.map +1 -0
  295. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts +15 -0
  296. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -0
  297. package/dist/hierarchy/hooks/collectionBeforeDelete.js +20 -0
  298. package/dist/hierarchy/hooks/collectionBeforeDelete.js.map +1 -0
  299. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts +33 -0
  300. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts.map +1 -0
  301. package/dist/hierarchy/hooks/collectionBeforeOperation.js +66 -0
  302. package/dist/hierarchy/hooks/collectionBeforeOperation.js.map +1 -0
  303. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts +8 -0
  304. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -0
  305. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js +108 -0
  306. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js.map +1 -0
  307. package/dist/hierarchy/injectHierarchyButton.d.ts +14 -0
  308. package/dist/hierarchy/injectHierarchyButton.d.ts.map +1 -0
  309. package/dist/hierarchy/injectHierarchyButton.js +37 -0
  310. package/dist/hierarchy/injectHierarchyButton.js.map +1 -0
  311. package/dist/hierarchy/presets.d.ts +13 -0
  312. package/dist/hierarchy/presets.d.ts.map +1 -0
  313. package/dist/hierarchy/presets.js +52 -0
  314. package/dist/hierarchy/presets.js.map +1 -0
  315. package/dist/hierarchy/resolveHierarchyCollections.d.ts +23 -0
  316. package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +1 -0
  317. package/dist/hierarchy/resolveHierarchyCollections.js +321 -0
  318. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -0
  319. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts +14 -0
  320. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +1 -0
  321. package/dist/hierarchy/sanitizeHierarchyCollection.js +119 -0
  322. package/dist/hierarchy/sanitizeHierarchyCollection.js.map +1 -0
  323. package/dist/hierarchy/types.d.ts +162 -0
  324. package/dist/hierarchy/types.d.ts.map +1 -0
  325. package/dist/hierarchy/types.js +6 -0
  326. package/dist/hierarchy/types.js.map +1 -0
  327. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts +77 -0
  328. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts.map +1 -0
  329. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js +77 -0
  330. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js.map +1 -0
  331. package/dist/hierarchy/utils/computePaths.d.ts +31 -0
  332. package/dist/hierarchy/utils/computePaths.d.ts.map +1 -0
  333. package/dist/hierarchy/utils/computePaths.js +445 -0
  334. package/dist/hierarchy/utils/computePaths.js.map +1 -0
  335. package/dist/hierarchy/utils/findUseAsTitle.d.ts +14 -0
  336. package/dist/hierarchy/utils/findUseAsTitle.d.ts.map +1 -0
  337. package/dist/hierarchy/utils/findUseAsTitle.js +89 -0
  338. package/dist/hierarchy/utils/findUseAsTitle.js.map +1 -0
  339. package/dist/hierarchy/utils/getAncestors.d.ts +34 -0
  340. package/dist/hierarchy/utils/getAncestors.d.ts.map +1 -0
  341. package/dist/hierarchy/utils/getAncestors.js +94 -0
  342. package/dist/hierarchy/utils/getAncestors.js.map +1 -0
  343. package/dist/hierarchy/utils/getLocalizedValue.d.ts +30 -0
  344. package/dist/hierarchy/utils/getLocalizedValue.d.ts.map +1 -0
  345. package/dist/hierarchy/utils/getLocalizedValue.js +46 -0
  346. package/dist/hierarchy/utils/getLocalizedValue.js.map +1 -0
  347. package/dist/hierarchy/utils/getLocalizedValue.spec.js +250 -0
  348. package/dist/hierarchy/utils/getLocalizedValue.spec.js.map +1 -0
  349. package/dist/index.bundled.d.ts +1017 -672
  350. package/dist/index.d.ts +32 -10
  351. package/dist/index.d.ts.map +1 -1
  352. package/dist/index.js +13 -8
  353. package/dist/index.js.map +1 -1
  354. package/dist/kv/adapters/DatabaseKVAdapter.d.ts.map +1 -1
  355. package/dist/locked-documents/config.d.ts.map +1 -1
  356. package/dist/preferences/config.d.ts.map +1 -1
  357. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  358. package/dist/preferences/keys.d.ts +8 -4
  359. package/dist/preferences/keys.d.ts.map +1 -1
  360. package/dist/preferences/keys.js +7 -4
  361. package/dist/preferences/keys.js.map +1 -1
  362. package/dist/preferences/types.d.ts +1 -1
  363. package/dist/preferences/types.d.ts.map +1 -1
  364. package/dist/preferences/types.js.map +1 -1
  365. package/dist/query-presets/access.d.ts.map +1 -1
  366. package/dist/query-presets/config.d.ts.map +1 -1
  367. package/dist/query-presets/config.js +11 -7
  368. package/dist/query-presets/config.js.map +1 -1
  369. package/dist/query-presets/constraints.d.ts.map +1 -1
  370. package/dist/query-presets/constraints.js +1 -1
  371. package/dist/query-presets/constraints.js.map +1 -1
  372. package/dist/queues/config/generateJobsJSONSchemas.d.ts +1 -1
  373. package/dist/queues/config/generateJobsJSONSchemas.d.ts.map +1 -1
  374. package/dist/queues/config/generateJobsJSONSchemas.js +31 -10
  375. package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -1
  376. package/dist/queues/config/types/index.d.ts +0 -21
  377. package/dist/queues/config/types/index.d.ts.map +1 -1
  378. package/dist/queues/config/types/index.js.map +1 -1
  379. package/dist/queues/config/types/taskTypes.d.ts +0 -20
  380. package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
  381. package/dist/queues/config/types/taskTypes.js.map +1 -1
  382. package/dist/queues/endpoints/run.d.ts.map +1 -1
  383. package/dist/queues/errors/handleWorkflowError.d.ts.map +1 -1
  384. package/dist/queues/errors/handleWorkflowError.js +9 -1
  385. package/dist/queues/errors/handleWorkflowError.js.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 +40 -37
  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.map +1 -1
  424. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  425. package/dist/uploads/getBaseFields.js +24 -70
  426. package/dist/uploads/getBaseFields.js.map +1 -1
  427. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  428. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  429. package/dist/uploads/getFileTypeFallback.d.ts.map +1 -1
  430. package/dist/uploads/getSafeFilename.d.ts +9 -4
  431. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  432. package/dist/uploads/getSafeFilename.js +5 -5
  433. package/dist/uploads/getSafeFilename.js.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 +34 -16
  461. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  462. package/dist/utilities/configToJSONSchema.js +127 -52
  463. package/dist/utilities/configToJSONSchema.js.map +1 -1
  464. package/dist/utilities/configToJSONSchema.spec.js +94 -65
  465. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  466. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  467. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  468. package/dist/utilities/dependencies/resolveFrom.d.ts.map +1 -1
  469. package/dist/utilities/escapeRegExp.d.ts.map +1 -1
  470. package/dist/utilities/extractID.d.ts.map +1 -1
  471. package/dist/utilities/extractID.js +1 -1
  472. package/dist/utilities/extractID.js.map +1 -1
  473. package/dist/utilities/flattenAllFields.d.ts.map +1 -1
  474. package/dist/utilities/formatAdminURL.d.ts +13 -2
  475. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  476. package/dist/utilities/formatAdminURL.js +3 -15
  477. package/dist/utilities/formatAdminURL.js.map +1 -1
  478. package/dist/utilities/formatAdminURL.spec.js +1 -90
  479. package/dist/utilities/formatAdminURL.spec.js.map +1 -1
  480. package/dist/utilities/formatErrors.d.ts.map +1 -1
  481. package/dist/utilities/formatLabels.d.ts.map +1 -1
  482. package/dist/utilities/getBestFitFromSizes.d.ts.map +1 -1
  483. package/dist/utilities/getBlockSelect.d.ts.map +1 -1
  484. package/dist/utilities/getDataByPath.d.ts.map +1 -1
  485. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
  486. package/dist/utilities/getFieldByPath.d.ts.map +1 -1
  487. package/dist/utilities/getFieldPermissions.d.ts.map +1 -1
  488. package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
  489. package/dist/utilities/getRequestEntity.d.ts.map +1 -1
  490. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  491. package/dist/utilities/getRequestOrigin.d.ts.map +1 -1
  492. package/dist/utilities/getSafeRedirect.d.ts.map +1 -1
  493. package/dist/utilities/getSelectMode.d.ts.map +1 -1
  494. package/dist/utilities/getSiblingData.d.ts.map +1 -1
  495. package/dist/utilities/getTranslatedLabel.d.ts.map +1 -1
  496. package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
  497. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  498. package/dist/utilities/handleEndpoints.js +2 -6
  499. package/dist/utilities/handleEndpoints.js.map +1 -1
  500. package/dist/utilities/headersWithCors.d.ts.map +1 -1
  501. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  502. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  503. package/dist/utilities/isValidID.d.ts.map +1 -1
  504. package/dist/utilities/logError.d.ts.map +1 -1
  505. package/dist/utilities/logger.d.ts.map +1 -1
  506. package/dist/utilities/mergeHeaders.d.ts.map +1 -1
  507. package/dist/utilities/mergeListSearchAndWhere.d.ts.map +1 -1
  508. package/dist/utilities/optionsAreEqual.d.ts.map +1 -1
  509. package/dist/utilities/parseBooleanString.d.ts.map +1 -1
  510. package/dist/utilities/parseCookies.d.ts.map +1 -1
  511. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  512. package/dist/utilities/profiling.d.ts.map +1 -1
  513. package/dist/utilities/reduceFieldsToValues.d.ts.map +1 -1
  514. package/dist/utilities/resolveSelect.d.ts +16 -0
  515. package/dist/utilities/resolveSelect.d.ts.map +1 -0
  516. package/dist/utilities/resolveSelect.js +19 -0
  517. package/dist/utilities/resolveSelect.js.map +1 -0
  518. package/dist/utilities/routeError.d.ts.map +1 -1
  519. package/dist/utilities/sanitizeFallbackLocale.d.ts.map +1 -1
  520. package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -1
  521. package/dist/utilities/sanitizeJoinParams.d.ts.map +1 -1
  522. package/dist/utilities/sanitizePopulateParam.d.ts.map +1 -1
  523. package/dist/utilities/sanitizeSelect.d.ts +1 -2
  524. package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
  525. package/dist/utilities/sanitizeSelect.js +19 -25
  526. package/dist/utilities/sanitizeSelect.js.map +1 -1
  527. package/dist/utilities/sanitizeSelectParam.d.ts.map +1 -1
  528. package/dist/utilities/sanitizeSortParams.d.ts.map +1 -1
  529. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  530. package/dist/utilities/slugify.d.ts.map +1 -1
  531. package/dist/utilities/stripUnselectedFields.d.ts.map +1 -1
  532. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  533. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  534. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  535. package/dist/utilities/telemetry/oneWayHash.d.ts.map +1 -1
  536. package/dist/utilities/timestamp.d.ts.map +1 -1
  537. package/dist/utilities/toKebabCase.d.ts.map +1 -1
  538. package/dist/utilities/transformColumnPreferences.d.ts.map +1 -1
  539. package/dist/utilities/transformWhereQuery.d.ts.map +1 -1
  540. package/dist/utilities/traverseFields.d.ts.map +1 -1
  541. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  542. package/dist/utilities/unflatten.d.ts.map +1 -1
  543. package/dist/utilities/validateMimeType.d.ts.map +1 -1
  544. package/dist/utilities/validateTimezones.d.ts.map +1 -1
  545. package/dist/utilities/validateWhereQuery.d.ts.map +1 -1
  546. package/dist/utilities/wordBoundariesRegex.d.ts.map +1 -1
  547. package/dist/utilities/wrapInternalEndpoints.d.ts.map +1 -1
  548. package/dist/versions/baseFields.d.ts.map +1 -1
  549. package/dist/versions/baseFields.js +3 -2
  550. package/dist/versions/baseFields.js.map +1 -1
  551. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  552. package/dist/versions/buildCollectionFields.js +0 -1
  553. package/dist/versions/buildCollectionFields.js.map +1 -1
  554. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  555. package/dist/versions/buildGlobalFields.js +0 -1
  556. package/dist/versions/buildGlobalFields.js.map +1 -1
  557. package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
  558. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  559. package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
  560. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  561. package/dist/versions/drafts/getQueryDraftsSelect.d.ts.map +1 -1
  562. package/dist/versions/drafts/getQueryDraftsSort.d.ts.map +1 -1
  563. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  564. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  565. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  566. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  567. package/dist/versions/migrations/localizeStatus/shared.d.ts.map +1 -1
  568. package/dist/versions/payloadPackageList.d.ts.map +1 -1
  569. package/dist/versions/payloadPackageList.js +0 -1
  570. package/dist/versions/payloadPackageList.js.map +1 -1
  571. package/dist/versions/saveSnapshot.d.ts.map +1 -1
  572. package/dist/versions/schedule/job.d.ts.map +1 -1
  573. package/package.json +20 -20
  574. package/dist/admin/views/folderList.d.ts +0 -56
  575. package/dist/admin/views/folderList.d.ts.map +0 -1
  576. package/dist/admin/views/folderList.js +0 -3
  577. package/dist/admin/views/folderList.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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/queues/errors/handleWorkflowError.ts"],"sourcesContent":["import type { PayloadRequest } from '../../index.js'\nimport type { RunJobsSilent } from '../localAPI.js'\nimport type { UpdateJobFunction } from '../operations/runJobs/runJob/getUpdateJobFunction.js'\nimport type { WorkflowError } from './index.js'\n\nimport { getCurrentDate } from '../utilities/getCurrentDate.js'\nimport { getWorkflowRetryBehavior } from './getWorkflowRetryBehavior.js'\n\n/**\n * This is called if a workflow catches an error. It determines if it's a final error\n * or not and handles logging.\n * A Workflow error = error that happens anywhere in between running tasks.\n *\n * This function assumes that the error is not a TaskError, but a WorkflowError. If a task errors,\n * only a TaskError should be thrown, not a WorkflowError.\n */\nexport async function handleWorkflowError({\n error,\n req,\n silent = false,\n updateJob,\n}: {\n error: WorkflowError\n req: PayloadRequest\n /**\n * If set to true, the job system will not log any output to the console (for both info and error logs).\n * Can be an option for more granular control over logging.\n *\n * This will not automatically affect user-configured logs (e.g. if you call `console.log` or `payload.logger.info` in your job code).\n *\n * @default false\n */\n silent?: RunJobsSilent\n updateJob: UpdateJobFunction\n}): Promise<{\n hasFinalError: boolean\n}> {\n const { job, workflowConfig } = error.args\n\n const errorJSON = {\n name: error.name,\n cancelled: Boolean('cancelled' in error && error.cancelled),\n message: error.message,\n stack: error.stack,\n }\n\n const { hasFinalError, maxWorkflowRetries, waitUntil } = getWorkflowRetryBehavior({\n job,\n retriesConfig: workflowConfig.retries!,\n })\n\n if (!hasFinalError) {\n if (job.waitUntil) {\n // Check if waitUntil is in the past\n const waitUntil = new Date(job.waitUntil)\n if (waitUntil < getCurrentDate()) {\n // Outdated waitUntil, remove it\n delete job.waitUntil\n }\n }\n\n // Update job's waitUntil only if this waitUntil is later than the current one\n if (waitUntil && (!job.waitUntil || waitUntil > new Date(job.waitUntil))) {\n job.waitUntil = waitUntil.toISOString()\n }\n }\n\n const jobLabel = job.workflowSlug || `Task: ${job.taskSlug}`\n\n if (!silent || (typeof silent === 'object' && !silent.error)) {\n req.payload.logger.error({\n err: error,\n msg: `Error running job ${jobLabel} id: ${job.id} attempt ${job.totalTried + 1}${maxWorkflowRetries !== undefined ? '/' + (maxWorkflowRetries + 1) : ''}`,\n })\n }\n\n // Tasks update the job if they error - but in case there is an unhandled error (e.g. in the workflow itself, not in a task)\n // we need to ensure the job is updated to reflect the error\n await updateJob({\n error: errorJSON,\n hasError: hasFinalError, // If reached max retries => final error. If hasError is true this job will not be retried\n processing: false,\n totalTried: (job.totalTried ?? 0) + 1,\n waitUntil: job.waitUntil,\n })\n\n return {\n hasFinalError,\n }\n}\n"],"names":["getCurrentDate","getWorkflowRetryBehavior","handleWorkflowError","error","req","silent","updateJob","job","workflowConfig","args","errorJSON","name","cancelled","Boolean","message","stack","hasFinalError","maxWorkflowRetries","waitUntil","retriesConfig","retries","Date","toISOString","jobLabel","workflowSlug","taskSlug","payload","logger","err","msg","id","totalTried","undefined","hasError","processing"],"mappings":"AAKA,SAASA,cAAc,QAAQ,iCAAgC;AAC/D,SAASC,wBAAwB,QAAQ,gCAA+B;AAExE;;;;;;;CAOC,GACD,OAAO,eAAeC,oBAAoB,EACxCC,KAAK,EACLC,GAAG,EACHC,SAAS,KAAK,EACdC,SAAS,EAcV;IAGC,MAAM,EAAEC,GAAG,EAAEC,cAAc,EAAE,GAAGL,MAAMM,IAAI;IAE1C,MAAMC,YAAY;QAChBC,MAAMR,MAAMQ,IAAI;QAChBC,WAAWC,QAAQ,eAAeV,SAASA,MAAMS,SAAS;QAC1DE,SAASX,MAAMW,OAAO;QACtBC,OAAOZ,MAAMY,KAAK;IACpB;IAEA,MAAM,EAAEC,aAAa,EAAEC,kBAAkB,EAAEC,SAAS,EAAE,GAAGjB,yBAAyB;QAChFM;QACAY,eAAeX,eAAeY,OAAO;IACvC;IAEA,IAAI,CAACJ,eAAe;QAClB,IAAIT,IAAIW,SAAS,EAAE;YACjB,oCAAoC;YACpC,MAAMA,YAAY,IAAIG,KAAKd,IAAIW,SAAS;YACxC,IAAIA,YAAYlB,kBAAkB;gBAChC,gCAAgC;gBAChC,OAAOO,IAAIW,SAAS;YACtB;QACF;QAEA,8EAA8E;QAC9E,IAAIA,aAAc,CAAA,CAACX,IAAIW,SAAS,IAAIA,YAAY,IAAIG,KAAKd,IAAIW,SAAS,CAAA,GAAI;YACxEX,IAAIW,SAAS,GAAGA,UAAUI,WAAW;QACvC;IACF;IAEA,MAAMC,WAAWhB,IAAIiB,YAAY,IAAI,CAAC,MAAM,EAAEjB,IAAIkB,QAAQ,EAAE;IAE5D,IAAI,CAACpB,UAAW,OAAOA,WAAW,YAAY,CAACA,OAAOF,KAAK,EAAG;QAC5DC,IAAIsB,OAAO,CAACC,MAAM,CAACxB,KAAK,CAAC;YACvByB,KAAKzB;YACL0B,KAAK,CAAC,kBAAkB,EAAEN,SAAS,KAAK,EAAEhB,IAAIuB,EAAE,CAAC,SAAS,EAAEvB,IAAIwB,UAAU,GAAG,IAAId,uBAAuBe,YAAY,MAAOf,CAAAA,qBAAqB,CAAA,IAAK,IAAI;QAC3J;IACF;IAEA,4HAA4H;IAC5H,4DAA4D;IAC5D,MAAMX,UAAU;QACdH,OAAOO;QACPuB,UAAUjB;QACVkB,YAAY;QACZH,YAAY,AAACxB,CAAAA,IAAIwB,UAAU,IAAI,CAAA,IAAK;QACpCb,WAAWX,IAAIW,SAAS;IAC1B;IAEA,OAAO;QACLF;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/queues/errors/handleWorkflowError.ts"],"sourcesContent":["import type { PayloadRequest } from '../../index.js'\nimport type { RunJobsSilent } from '../localAPI.js'\nimport type { UpdateJobFunction } from '../operations/runJobs/runJob/getUpdateJobFunction.js'\nimport type { WorkflowError } from './index.js'\n\nimport { getCurrentDate } from '../utilities/getCurrentDate.js'\nimport { getWorkflowRetryBehavior } from './getWorkflowRetryBehavior.js'\n\n/**\n * This is called if a workflow catches an error. It determines if it's a final error\n * or not and handles logging.\n * A Workflow error = error that happens anywhere in between running tasks.\n *\n * This function assumes that the error is not a TaskError, but a WorkflowError. If a task errors,\n * only a TaskError should be thrown, not a WorkflowError.\n */\nexport async function handleWorkflowError({\n error,\n req,\n silent = false,\n updateJob,\n}: {\n error: WorkflowError\n req: PayloadRequest\n /**\n * If set to true, the job system will not log any output to the console (for both info and error logs).\n * Can be an option for more granular control over logging.\n *\n * This will not automatically affect user-configured logs (e.g. if you call `console.log` or `payload.logger.info` in your job code).\n *\n * @default false\n */\n silent?: RunJobsSilent\n updateJob: UpdateJobFunction\n}): Promise<{\n hasFinalError: boolean\n}> {\n const { job, workflowConfig } = error.args\n\n const errorJSON = {\n name: error.name,\n cancelled: Boolean('cancelled' in error && error.cancelled),\n message: error.message,\n stack: error.stack,\n }\n\n // No retries configured => permanently fail. Errors reaching this handler are\n // workflow-level (task errors are routed to handleTaskError first), so there's\n // nothing else to bound them.\n const hasNoRetriesConfigured =\n workflowConfig.retries === undefined || workflowConfig.retries === null\n\n const { hasFinalError, maxWorkflowRetries, waitUntil } = hasNoRetriesConfigured\n ? { hasFinalError: true, maxWorkflowRetries: undefined, waitUntil: undefined }\n : getWorkflowRetryBehavior({\n job,\n retriesConfig: workflowConfig.retries,\n })\n\n if (!hasFinalError) {\n if (job.waitUntil) {\n // Check if waitUntil is in the past\n const waitUntil = new Date(job.waitUntil)\n if (waitUntil < getCurrentDate()) {\n // Outdated waitUntil, remove it\n delete job.waitUntil\n }\n }\n\n // Update job's waitUntil only if this waitUntil is later than the current one\n if (waitUntil && (!job.waitUntil || waitUntil > new Date(job.waitUntil))) {\n job.waitUntil = waitUntil.toISOString()\n }\n }\n\n const jobLabel = job.workflowSlug || `Task: ${job.taskSlug}`\n\n if (!silent || (typeof silent === 'object' && !silent.error)) {\n req.payload.logger.error({\n err: error,\n msg: `Error running job ${jobLabel} id: ${job.id} attempt ${job.totalTried + 1}${maxWorkflowRetries !== undefined ? '/' + (maxWorkflowRetries + 1) : ''}`,\n })\n }\n\n // Tasks update the job if they error - but in case there is an unhandled error (e.g. in the workflow itself, not in a task)\n // we need to ensure the job is updated to reflect the error\n await updateJob({\n error: errorJSON,\n hasError: hasFinalError, // If reached max retries => final error. If hasError is true this job will not be retried\n processing: false,\n totalTried: (job.totalTried ?? 0) + 1,\n waitUntil: job.waitUntil,\n })\n\n return {\n hasFinalError,\n }\n}\n"],"names":["getCurrentDate","getWorkflowRetryBehavior","handleWorkflowError","error","req","silent","updateJob","job","workflowConfig","args","errorJSON","name","cancelled","Boolean","message","stack","hasNoRetriesConfigured","retries","undefined","hasFinalError","maxWorkflowRetries","waitUntil","retriesConfig","Date","toISOString","jobLabel","workflowSlug","taskSlug","payload","logger","err","msg","id","totalTried","hasError","processing"],"mappings":"AAKA,SAASA,cAAc,QAAQ,iCAAgC;AAC/D,SAASC,wBAAwB,QAAQ,gCAA+B;AAExE;;;;;;;CAOC,GACD,OAAO,eAAeC,oBAAoB,EACxCC,KAAK,EACLC,GAAG,EACHC,SAAS,KAAK,EACdC,SAAS,EAcV;IAGC,MAAM,EAAEC,GAAG,EAAEC,cAAc,EAAE,GAAGL,MAAMM,IAAI;IAE1C,MAAMC,YAAY;QAChBC,MAAMR,MAAMQ,IAAI;QAChBC,WAAWC,QAAQ,eAAeV,SAASA,MAAMS,SAAS;QAC1DE,SAASX,MAAMW,OAAO;QACtBC,OAAOZ,MAAMY,KAAK;IACpB;IAEA,8EAA8E;IAC9E,+EAA+E;IAC/E,8BAA8B;IAC9B,MAAMC,yBACJR,eAAeS,OAAO,KAAKC,aAAaV,eAAeS,OAAO,KAAK;IAErE,MAAM,EAAEE,aAAa,EAAEC,kBAAkB,EAAEC,SAAS,EAAE,GAAGL,yBACrD;QAAEG,eAAe;QAAMC,oBAAoBF;QAAWG,WAAWH;IAAU,IAC3EjB,yBAAyB;QACvBM;QACAe,eAAed,eAAeS,OAAO;IACvC;IAEJ,IAAI,CAACE,eAAe;QAClB,IAAIZ,IAAIc,SAAS,EAAE;YACjB,oCAAoC;YACpC,MAAMA,YAAY,IAAIE,KAAKhB,IAAIc,SAAS;YACxC,IAAIA,YAAYrB,kBAAkB;gBAChC,gCAAgC;gBAChC,OAAOO,IAAIc,SAAS;YACtB;QACF;QAEA,8EAA8E;QAC9E,IAAIA,aAAc,CAAA,CAACd,IAAIc,SAAS,IAAIA,YAAY,IAAIE,KAAKhB,IAAIc,SAAS,CAAA,GAAI;YACxEd,IAAIc,SAAS,GAAGA,UAAUG,WAAW;QACvC;IACF;IAEA,MAAMC,WAAWlB,IAAImB,YAAY,IAAI,CAAC,MAAM,EAAEnB,IAAIoB,QAAQ,EAAE;IAE5D,IAAI,CAACtB,UAAW,OAAOA,WAAW,YAAY,CAACA,OAAOF,KAAK,EAAG;QAC5DC,IAAIwB,OAAO,CAACC,MAAM,CAAC1B,KAAK,CAAC;YACvB2B,KAAK3B;YACL4B,KAAK,CAAC,kBAAkB,EAAEN,SAAS,KAAK,EAAElB,IAAIyB,EAAE,CAAC,SAAS,EAAEzB,IAAI0B,UAAU,GAAG,IAAIb,uBAAuBF,YAAY,MAAOE,CAAAA,qBAAqB,CAAA,IAAK,IAAI;QAC3J;IACF;IAEA,4HAA4H;IAC5H,4DAA4D;IAC5D,MAAMd,UAAU;QACdH,OAAOO;QACPwB,UAAUf;QACVgB,YAAY;QACZF,YAAY,AAAC1B,CAAAA,IAAI0B,UAAU,IAAI,CAAA,IAAK;QACpCZ,WAAWd,IAAIc,SAAS;IAC1B;IAEA,OAAO;QACLF;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"localAPI.d.ts","sourceRoot":"","sources":["../../src/queues/localAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localAPI.d.ts","sourceRoot":"","sources":["../../src/queues/localAPI.ts"],"names":[],"mappings":"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"}
@@ -100,78 +100,41 @@ export const getJobsLocalAPI = (payload)=>({
100
100
  data.concurrencyKey = concurrencyKey;
101
101
  // If supersedes is enabled, delete older pending jobs with the same key
102
102
  if (supersedes) {
103
- if (payload.config.jobs.runHooks) {
104
- await payload.delete({
105
- collection: jobsCollectionSlug,
106
- depth: 0,
107
- disableTransaction: true,
108
- where: {
109
- and: [
110
- {
111
- concurrencyKey: {
112
- equals: concurrencyKey
113
- }
114
- },
115
- {
116
- processing: {
117
- equals: false
118
- }
119
- },
120
- {
121
- completedAt: {
122
- exists: false
123
- }
103
+ await payload.db.deleteMany({
104
+ collection: jobsCollectionSlug,
105
+ req,
106
+ where: {
107
+ and: [
108
+ {
109
+ concurrencyKey: {
110
+ equals: concurrencyKey
124
111
  }
125
- ]
126
- }
127
- });
128
- } else {
129
- await payload.db.deleteMany({
130
- collection: jobsCollectionSlug,
131
- req,
132
- where: {
133
- and: [
134
- {
135
- concurrencyKey: {
136
- equals: concurrencyKey
137
- }
138
- },
139
- {
140
- processing: {
141
- equals: false
142
- }
143
- },
144
- {
145
- completedAt: {
146
- exists: false
147
- }
112
+ },
113
+ {
114
+ processing: {
115
+ equals: false
148
116
  }
149
- ]
150
- }
151
- });
152
- }
117
+ },
118
+ {
119
+ completedAt: {
120
+ exists: false
121
+ }
122
+ }
123
+ ]
124
+ }
125
+ });
153
126
  }
154
127
  }
155
128
  }
156
129
  // Type assertion is still needed here
157
- if (payload?.config?.jobs?.depth || payload?.config?.jobs?.runHooks) {
158
- return await payload.create({
130
+ return jobAfterRead({
131
+ config: payload.config,
132
+ doc: await payload.db.create({
159
133
  collection: jobsCollectionSlug,
160
134
  data,
161
- depth: payload.config.jobs.depth ?? 0,
162
- overrideAccess,
163
135
  req
164
- });
165
- } else {
166
- return jobAfterRead({
167
- config: payload.config,
168
- doc: await payload.db.create({
169
- collection: jobsCollectionSlug,
170
- data,
171
- req
172
- })
173
- });
174
- }
136
+ })
137
+ });
175
138
  },
176
139
  run: async (args)=>{
177
140
  const newReq = args?.req ?? await createLocalReq({}, payload);
@@ -240,8 +203,6 @@ export const getJobsLocalAPI = (payload)=>({
240
203
  processing: false,
241
204
  waitUntil: null
242
205
  },
243
- depth: 0,
244
- disableTransaction: true,
245
206
  req,
246
207
  returning: false,
247
208
  where: {
@@ -274,8 +235,6 @@ export const getJobsLocalAPI = (payload)=>({
274
235
  processing: false,
275
236
  waitUntil: null
276
237
  },
277
- depth: 0,
278
- disableTransaction: true,
279
238
  req,
280
239
  returning: false
281
240
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queues/localAPI.ts"],"sourcesContent":["import type { BaseJob, RunningJobFromTask } from './config/types/workflowTypes.js'\n\nimport {\n createLocalReq,\n Forbidden,\n type Job,\n type Payload,\n type PayloadRequest,\n type Sort,\n type TypedJobs,\n type Where,\n} from '../index.js'\nimport { jobAfterRead, jobsCollectionSlug } from './config/collection.js'\nimport { handleSchedules, type HandleSchedulesResult } from './operations/handleSchedules/index.js'\nimport { runJobs } from './operations/runJobs/index.js'\nimport { updateJob, updateJobs } from './utilities/updateJob.js'\n\nexport type RunJobsSilent =\n | {\n error?: boolean\n info?: boolean\n }\n | boolean\nexport const getJobsLocalAPI = (payload: Payload) => ({\n handleSchedules: async (args?: {\n /**\n * If you want to schedule jobs from all queues, set this to true.\n * If you set this to true, the `queue` property will be ignored.\n *\n * @default false\n */\n allQueues?: boolean\n // By default, schedule all queues - only scheduling jobs scheduled to be added to the `default` queue would not make sense\n // here, as you'd usually specify a different queue than `default` here, especially if this is used in combination with autorun.\n // The `queue` property for setting up schedules is required, and not optional.\n /**\n * If you want to only schedule jobs that are set to schedule in a specific queue, set this to the queue name.\n *\n * @default jobs from the `default` queue will be executed.\n */\n queue?: string\n req?: PayloadRequest\n }): Promise<HandleSchedulesResult> => {\n const newReq: PayloadRequest = args?.req ?? (await createLocalReq({}, payload))\n\n return await handleSchedules({\n allQueues: args?.allQueues,\n queue: args?.queue,\n req: newReq,\n })\n },\n queue: async <\n // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents\n TTaskOrWorkflowSlug extends keyof TypedJobs['tasks'] | keyof TypedJobs['workflows'],\n >(\n args:\n | {\n input: TypedJobs['tasks'][TTaskOrWorkflowSlug]['input']\n meta?: BaseJob['meta']\n /**\n * If set to false, access control as defined in jobsConfig.access.queue will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.queue defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n /**\n * The queue to add the job to.\n * If not specified, the job will be added to the default queue.\n *\n * @default 'default'\n */\n queue?: string\n req?: PayloadRequest\n task: TTaskOrWorkflowSlug extends keyof TypedJobs['tasks'] ? TTaskOrWorkflowSlug : never\n waitUntil?: Date\n workflow?: never\n }\n | {\n input: TypedJobs['workflows'][TTaskOrWorkflowSlug]['input']\n meta?: BaseJob['meta']\n /**\n * If set to false, access control as defined in jobsConfig.access.queue will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.queue defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n /**\n * The queue to add the job to.\n * If not specified, the job will be added to the default queue.\n *\n * @default 'default'\n */\n queue?: string\n req?: PayloadRequest\n task?: never\n waitUntil?: Date\n workflow: TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? TTaskOrWorkflowSlug\n : never\n },\n ): Promise<\n TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? Job<TTaskOrWorkflowSlug>\n : RunningJobFromTask<TTaskOrWorkflowSlug>\n > => {\n const overrideAccess = args?.overrideAccess !== false\n const req: PayloadRequest = args.req ?? (await createLocalReq({}, payload))\n\n if (!overrideAccess) {\n /**\n * By default, jobsConfig.access.queue will be `defaultAccess` which is a function that returns `true` if the user is logged in.\n */\n const accessFn = payload.config.jobs?.access?.queue ?? (() => true)\n const hasAccess = await accessFn({ req })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n let queue: string | undefined = undefined\n\n // If user specifies queue, use that\n if (args.queue) {\n queue = args.queue\n } else if (args.workflow) {\n // Otherwise, if there is a workflow specified, and it has a default queue to use,\n // use that\n const workflow = payload.config.jobs?.workflows?.find(({ slug }) => slug === args.workflow)\n if (workflow?.queue) {\n queue = workflow.queue\n }\n }\n\n const data: Partial<Job> = {\n input: args.input,\n }\n\n if (queue) {\n data.queue = queue\n }\n if (args.waitUntil) {\n data.waitUntil = args.waitUntil?.toISOString()\n }\n if (args.workflow) {\n data.workflowSlug = args.workflow as string\n }\n if (args.task) {\n data.taskSlug = args.task as string\n }\n\n if (args.meta) {\n data.meta = args.meta\n }\n\n // Compute concurrency key from workflow or task config (only if feature is enabled)\n if (payload.config.jobs?.enableConcurrencyControl) {\n let concurrencyKey: null | string = null\n let supersedes = false\n const queueName = queue || 'default'\n\n if (args.workflow) {\n const workflow = payload.config.jobs?.workflows?.find(({ slug }) => slug === args.workflow)\n if (workflow?.concurrency) {\n const concurrencyConfig = workflow.concurrency\n if (typeof concurrencyConfig === 'function') {\n concurrencyKey = concurrencyConfig({ input: args.input, queue: queueName })\n } else {\n concurrencyKey = concurrencyConfig.key({ input: args.input, queue: queueName })\n supersedes = concurrencyConfig.supersedes ?? false\n }\n }\n } else if (args.task) {\n const task = payload.config.jobs?.tasks?.find(({ slug }) => slug === args.task)\n if (task?.concurrency) {\n const concurrencyConfig = task.concurrency\n if (typeof concurrencyConfig === 'function') {\n concurrencyKey = concurrencyConfig({ input: args.input, queue: queueName })\n } else {\n concurrencyKey = concurrencyConfig.key({ input: args.input, queue: queueName })\n supersedes = concurrencyConfig.supersedes ?? false\n }\n }\n }\n\n if (concurrencyKey) {\n data.concurrencyKey = concurrencyKey\n\n // If supersedes is enabled, delete older pending jobs with the same key\n if (supersedes) {\n if (payload.config.jobs.runHooks) {\n await payload.delete({\n collection: jobsCollectionSlug,\n depth: 0,\n disableTransaction: true,\n where: {\n and: [\n { concurrencyKey: { equals: concurrencyKey } },\n { processing: { equals: false } },\n { completedAt: { exists: false } },\n ],\n },\n })\n } else {\n await payload.db.deleteMany({\n collection: jobsCollectionSlug,\n req,\n where: {\n and: [\n { concurrencyKey: { equals: concurrencyKey } },\n { processing: { equals: false } },\n { completedAt: { exists: false } },\n ],\n },\n })\n }\n }\n }\n }\n\n type ReturnType = TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? Job<TTaskOrWorkflowSlug>\n : RunningJobFromTask<TTaskOrWorkflowSlug> // Type assertion is still needed here\n\n if (payload?.config?.jobs?.depth || payload?.config?.jobs?.runHooks) {\n return (await payload.create({\n collection: jobsCollectionSlug,\n data,\n depth: payload.config.jobs.depth ?? 0,\n overrideAccess,\n req,\n })) as ReturnType\n } else {\n return jobAfterRead({\n config: payload.config,\n doc: await payload.db.create({\n collection: jobsCollectionSlug,\n data,\n req,\n }),\n }) as unknown as ReturnType\n }\n },\n\n run: async (args?: {\n /**\n * If you want to run jobs from all queues, set this to true.\n * If you set this to true, the `queue` property will be ignored.\n *\n * @default false\n */\n allQueues?: boolean\n /**\n * The maximum number of jobs to run in this invocation\n *\n * @default 10\n */\n limit?: number\n /**\n * If set to false, access control as defined in jobsConfig.access.run will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.run defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n /**\n * Adjust the job processing order using a Payload sort string.\n *\n * FIFO would equal `createdAt` and LIFO would equal `-createdAt`.\n */\n processingOrder?: Sort\n /**\n * If you want to run jobs from a specific queue, set this to the queue name.\n *\n * @default jobs from the `default` queue will be executed.\n */\n queue?: string\n req?: PayloadRequest\n /**\n * By default, jobs are run in parallel.\n * If you want to run them in sequence, set this to true.\n */\n sequential?: boolean\n /**\n * If set to true, the job system will not log any output to the console (for both info and error logs).\n * Can be an option for more granular control over logging.\n *\n * This will not automatically affect user-configured logs (e.g. if you call `console.log` or `payload.logger.info` in your job code).\n *\n * @default false\n */\n silent?: RunJobsSilent\n where?: Where\n }): Promise<ReturnType<typeof runJobs>> => {\n const newReq: PayloadRequest = args?.req ?? (await createLocalReq({}, payload))\n\n return await runJobs({\n allQueues: args?.allQueues,\n limit: args?.limit,\n overrideAccess: args?.overrideAccess !== false,\n processingOrder: args?.processingOrder,\n queue: args?.queue,\n req: newReq,\n sequential: args?.sequential,\n silent: args?.silent,\n where: args?.where,\n })\n },\n\n runByID: async (args: {\n id: number | string\n /**\n * If set to false, access control as defined in jobsConfig.access.run will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.run defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n req?: PayloadRequest\n /**\n * If set to true, the job system will not log any output to the console (for both info and error logs).\n * Can be an option for more granular control over logging.\n *\n * This will not automatically affect user-configured logs (e.g. if you call `console.log` or `payload.logger.info` in your job code).\n *\n * @default false\n */\n silent?: RunJobsSilent\n }): Promise<ReturnType<typeof runJobs>> => {\n const newReq: PayloadRequest = args.req ?? (await createLocalReq({}, payload))\n\n return await runJobs({\n id: args.id,\n overrideAccess: args.overrideAccess !== false,\n req: newReq,\n silent: args.silent,\n })\n },\n\n cancel: async (args: {\n /**\n * If set to false, access control as defined in jobsConfig.access.cancel will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.cancel defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n queue?: string\n req?: PayloadRequest\n where: Where\n }): Promise<void> => {\n const req: PayloadRequest = args.req ?? (await createLocalReq({}, payload))\n\n const overrideAccess = args.overrideAccess !== false\n if (!overrideAccess) {\n /**\n * By default, jobsConfig.access.cancel will be `defaultAccess` which is a function that returns `true` if the user is logged in.\n */\n const accessFn = payload.config.jobs?.access?.cancel ?? (() => true)\n const hasAccess = await accessFn({ req })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n const and: Where[] = [\n args.where,\n {\n completedAt: {\n exists: false,\n },\n },\n {\n hasError: {\n not_equals: true,\n },\n },\n ]\n\n if (args.queue) {\n and.push({\n queue: {\n equals: args.queue,\n },\n })\n }\n\n await updateJobs({\n data: {\n completedAt: null,\n error: {\n cancelled: true,\n },\n hasError: true,\n processing: false,\n waitUntil: null,\n },\n depth: 0, // No depth, since we're not returning\n disableTransaction: true,\n req,\n returning: false,\n where: { and },\n })\n },\n\n cancelByID: async (args: {\n id: number | string\n /**\n * If set to false, access control as defined in jobsConfig.access.cancel will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.cancel defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n req?: PayloadRequest\n }): Promise<void> => {\n const req: PayloadRequest = args.req ?? (await createLocalReq({}, payload))\n\n const overrideAccess = args.overrideAccess !== false\n if (!overrideAccess) {\n /**\n * By default, jobsConfig.access.cancel will be `defaultAccess` which is a function that returns `true` if the user is logged in.\n */\n const accessFn = payload.config.jobs?.access?.cancel ?? (() => true)\n const hasAccess = await accessFn({ req })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n await updateJob({\n id: args.id,\n data: {\n completedAt: null,\n error: {\n cancelled: true,\n },\n hasError: true,\n processing: false,\n waitUntil: null,\n },\n depth: 0, // No depth, since we're not returning\n disableTransaction: true,\n req,\n returning: false,\n })\n },\n})\n"],"names":["createLocalReq","Forbidden","jobAfterRead","jobsCollectionSlug","handleSchedules","runJobs","updateJob","updateJobs","getJobsLocalAPI","payload","args","newReq","req","allQueues","queue","overrideAccess","accessFn","config","jobs","access","hasAccess","t","undefined","workflow","workflows","find","slug","data","input","waitUntil","toISOString","workflowSlug","task","taskSlug","meta","enableConcurrencyControl","concurrencyKey","supersedes","queueName","concurrency","concurrencyConfig","key","tasks","runHooks","delete","collection","depth","disableTransaction","where","and","equals","processing","completedAt","exists","db","deleteMany","create","doc","run","limit","processingOrder","sequential","silent","runByID","id","cancel","hasError","not_equals","push","error","cancelled","returning","cancelByID"],"mappings":"AAEA,SACEA,cAAc,EACdC,SAAS,QAOJ,cAAa;AACpB,SAASC,YAAY,EAAEC,kBAAkB,QAAQ,yBAAwB;AACzE,SAASC,eAAe,QAAoC,wCAAuC;AACnG,SAASC,OAAO,QAAQ,gCAA+B;AACvD,SAASC,SAAS,EAAEC,UAAU,QAAQ,2BAA0B;AAQhE,OAAO,MAAMC,kBAAkB,CAACC,UAAsB,CAAA;QACpDL,iBAAiB,OAAOM;YAmBtB,MAAMC,SAAyBD,MAAME,OAAQ,MAAMZ,eAAe,CAAC,GAAGS;YAEtE,OAAO,MAAML,gBAAgB;gBAC3BS,WAAWH,MAAMG;gBACjBC,OAAOJ,MAAMI;gBACbF,KAAKD;YACP;QACF;QACAG,OAAO,OAILJ;YAwDA,MAAMK,iBAAiBL,MAAMK,mBAAmB;YAChD,MAAMH,MAAsBF,KAAKE,GAAG,IAAK,MAAMZ,eAAe,CAAC,GAAGS;YAElE,IAAI,CAACM,gBAAgB;gBACnB;;OAEC,GACD,MAAMC,WAAWP,QAAQQ,MAAM,CAACC,IAAI,EAAEC,QAAQL,SAAU,CAAA,IAAM,IAAG;gBACjE,MAAMM,YAAY,MAAMJ,SAAS;oBAAEJ;gBAAI;gBACvC,IAAI,CAACQ,WAAW;oBACd,MAAM,IAAInB,UAAUW,IAAIS,CAAC;gBAC3B;YACF;YAEA,IAAIP,QAA4BQ;YAEhC,oCAAoC;YACpC,IAAIZ,KAAKI,KAAK,EAAE;gBACdA,QAAQJ,KAAKI,KAAK;YACpB,OAAO,IAAIJ,KAAKa,QAAQ,EAAE;gBACxB,kFAAkF;gBAClF,WAAW;gBACX,MAAMA,WAAWd,QAAQQ,MAAM,CAACC,IAAI,EAAEM,WAAWC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAAShB,KAAKa,QAAQ;gBAC1F,IAAIA,UAAUT,OAAO;oBACnBA,QAAQS,SAAST,KAAK;gBACxB;YACF;YAEA,MAAMa,OAAqB;gBACzBC,OAAOlB,KAAKkB,KAAK;YACnB;YAEA,IAAId,OAAO;gBACTa,KAAKb,KAAK,GAAGA;YACf;YACA,IAAIJ,KAAKmB,SAAS,EAAE;gBAClBF,KAAKE,SAAS,GAAGnB,KAAKmB,SAAS,EAAEC;YACnC;YACA,IAAIpB,KAAKa,QAAQ,EAAE;gBACjBI,KAAKI,YAAY,GAAGrB,KAAKa,QAAQ;YACnC;YACA,IAAIb,KAAKsB,IAAI,EAAE;gBACbL,KAAKM,QAAQ,GAAGvB,KAAKsB,IAAI;YAC3B;YAEA,IAAItB,KAAKwB,IAAI,EAAE;gBACbP,KAAKO,IAAI,GAAGxB,KAAKwB,IAAI;YACvB;YAEA,oFAAoF;YACpF,IAAIzB,QAAQQ,MAAM,CAACC,IAAI,EAAEiB,0BAA0B;gBACjD,IAAIC,iBAAgC;gBACpC,IAAIC,aAAa;gBACjB,MAAMC,YAAYxB,SAAS;gBAE3B,IAAIJ,KAAKa,QAAQ,EAAE;oBACjB,MAAMA,WAAWd,QAAQQ,MAAM,CAACC,IAAI,EAAEM,WAAWC,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAAShB,KAAKa,QAAQ;oBAC1F,IAAIA,UAAUgB,aAAa;wBACzB,MAAMC,oBAAoBjB,SAASgB,WAAW;wBAC9C,IAAI,OAAOC,sBAAsB,YAAY;4BAC3CJ,iBAAiBI,kBAAkB;gCAAEZ,OAAOlB,KAAKkB,KAAK;gCAAEd,OAAOwB;4BAAU;wBAC3E,OAAO;4BACLF,iBAAiBI,kBAAkBC,GAAG,CAAC;gCAAEb,OAAOlB,KAAKkB,KAAK;gCAAEd,OAAOwB;4BAAU;4BAC7ED,aAAaG,kBAAkBH,UAAU,IAAI;wBAC/C;oBACF;gBACF,OAAO,IAAI3B,KAAKsB,IAAI,EAAE;oBACpB,MAAMA,OAAOvB,QAAQQ,MAAM,CAACC,IAAI,EAAEwB,OAAOjB,KAAK,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAAShB,KAAKsB,IAAI;oBAC9E,IAAIA,MAAMO,aAAa;wBACrB,MAAMC,oBAAoBR,KAAKO,WAAW;wBAC1C,IAAI,OAAOC,sBAAsB,YAAY;4BAC3CJ,iBAAiBI,kBAAkB;gCAAEZ,OAAOlB,KAAKkB,KAAK;gCAAEd,OAAOwB;4BAAU;wBAC3E,OAAO;4BACLF,iBAAiBI,kBAAkBC,GAAG,CAAC;gCAAEb,OAAOlB,KAAKkB,KAAK;gCAAEd,OAAOwB;4BAAU;4BAC7ED,aAAaG,kBAAkBH,UAAU,IAAI;wBAC/C;oBACF;gBACF;gBAEA,IAAID,gBAAgB;oBAClBT,KAAKS,cAAc,GAAGA;oBAEtB,wEAAwE;oBACxE,IAAIC,YAAY;wBACd,IAAI5B,QAAQQ,MAAM,CAACC,IAAI,CAACyB,QAAQ,EAAE;4BAChC,MAAMlC,QAAQmC,MAAM,CAAC;gCACnBC,YAAY1C;gCACZ2C,OAAO;gCACPC,oBAAoB;gCACpBC,OAAO;oCACLC,KAAK;wCACH;4CAAEb,gBAAgB;gDAAEc,QAAQd;4CAAe;wCAAE;wCAC7C;4CAAEe,YAAY;gDAAED,QAAQ;4CAAM;wCAAE;wCAChC;4CAAEE,aAAa;gDAAEC,QAAQ;4CAAM;wCAAE;qCAClC;gCACH;4BACF;wBACF,OAAO;4BACL,MAAM5C,QAAQ6C,EAAE,CAACC,UAAU,CAAC;gCAC1BV,YAAY1C;gCACZS;gCACAoC,OAAO;oCACLC,KAAK;wCACH;4CAAEb,gBAAgB;gDAAEc,QAAQd;4CAAe;wCAAE;wCAC7C;4CAAEe,YAAY;gDAAED,QAAQ;4CAAM;wCAAE;wCAChC;4CAAEE,aAAa;gDAAEC,QAAQ;4CAAM;wCAAE;qCAClC;gCACH;4BACF;wBACF;oBACF;gBACF;YACF;YAI4C,sCAAsC;YAElF,IAAI5C,SAASQ,QAAQC,MAAM4B,SAASrC,SAASQ,QAAQC,MAAMyB,UAAU;gBACnE,OAAQ,MAAMlC,QAAQ+C,MAAM,CAAC;oBAC3BX,YAAY1C;oBACZwB;oBACAmB,OAAOrC,QAAQQ,MAAM,CAACC,IAAI,CAAC4B,KAAK,IAAI;oBACpC/B;oBACAH;gBACF;YACF,OAAO;gBACL,OAAOV,aAAa;oBAClBe,QAAQR,QAAQQ,MAAM;oBACtBwC,KAAK,MAAMhD,QAAQ6C,EAAE,CAACE,MAAM,CAAC;wBAC3BX,YAAY1C;wBACZwB;wBACAf;oBACF;gBACF;YACF;QACF;QAEA8C,KAAK,OAAOhD;YAoDV,MAAMC,SAAyBD,MAAME,OAAQ,MAAMZ,eAAe,CAAC,GAAGS;YAEtE,OAAO,MAAMJ,QAAQ;gBACnBQ,WAAWH,MAAMG;gBACjB8C,OAAOjD,MAAMiD;gBACb5C,gBAAgBL,MAAMK,mBAAmB;gBACzC6C,iBAAiBlD,MAAMkD;gBACvB9C,OAAOJ,MAAMI;gBACbF,KAAKD;gBACLkD,YAAYnD,MAAMmD;gBAClBC,QAAQpD,MAAMoD;gBACdd,OAAOtC,MAAMsC;YACf;QACF;QAEAe,SAAS,OAAOrD;YAsBd,MAAMC,SAAyBD,KAAKE,GAAG,IAAK,MAAMZ,eAAe,CAAC,GAAGS;YAErE,OAAO,MAAMJ,QAAQ;gBACnB2D,IAAItD,KAAKsD,EAAE;gBACXjD,gBAAgBL,KAAKK,cAAc,KAAK;gBACxCH,KAAKD;gBACLmD,QAAQpD,KAAKoD,MAAM;YACrB;QACF;QAEAG,QAAQ,OAAOvD;YAcb,MAAME,MAAsBF,KAAKE,GAAG,IAAK,MAAMZ,eAAe,CAAC,GAAGS;YAElE,MAAMM,iBAAiBL,KAAKK,cAAc,KAAK;YAC/C,IAAI,CAACA,gBAAgB;gBACnB;;OAEC,GACD,MAAMC,WAAWP,QAAQQ,MAAM,CAACC,IAAI,EAAEC,QAAQ8C,UAAW,CAAA,IAAM,IAAG;gBAClE,MAAM7C,YAAY,MAAMJ,SAAS;oBAAEJ;gBAAI;gBACvC,IAAI,CAACQ,WAAW;oBACd,MAAM,IAAInB,UAAUW,IAAIS,CAAC;gBAC3B;YACF;YAEA,MAAM4B,MAAe;gBACnBvC,KAAKsC,KAAK;gBACV;oBACEI,aAAa;wBACXC,QAAQ;oBACV;gBACF;gBACA;oBACEa,UAAU;wBACRC,YAAY;oBACd;gBACF;aACD;YAED,IAAIzD,KAAKI,KAAK,EAAE;gBACdmC,IAAImB,IAAI,CAAC;oBACPtD,OAAO;wBACLoC,QAAQxC,KAAKI,KAAK;oBACpB;gBACF;YACF;YAEA,MAAMP,WAAW;gBACfoB,MAAM;oBACJyB,aAAa;oBACbiB,OAAO;wBACLC,WAAW;oBACb;oBACAJ,UAAU;oBACVf,YAAY;oBACZtB,WAAW;gBACb;gBACAiB,OAAO;gBACPC,oBAAoB;gBACpBnC;gBACA2D,WAAW;gBACXvB,OAAO;oBAAEC;gBAAI;YACf;QACF;QAEAuB,YAAY,OAAO9D;YAajB,MAAME,MAAsBF,KAAKE,GAAG,IAAK,MAAMZ,eAAe,CAAC,GAAGS;YAElE,MAAMM,iBAAiBL,KAAKK,cAAc,KAAK;YAC/C,IAAI,CAACA,gBAAgB;gBACnB;;OAEC,GACD,MAAMC,WAAWP,QAAQQ,MAAM,CAACC,IAAI,EAAEC,QAAQ8C,UAAW,CAAA,IAAM,IAAG;gBAClE,MAAM7C,YAAY,MAAMJ,SAAS;oBAAEJ;gBAAI;gBACvC,IAAI,CAACQ,WAAW;oBACd,MAAM,IAAInB,UAAUW,IAAIS,CAAC;gBAC3B;YACF;YAEA,MAAMf,UAAU;gBACd0D,IAAItD,KAAKsD,EAAE;gBACXrC,MAAM;oBACJyB,aAAa;oBACbiB,OAAO;wBACLC,WAAW;oBACb;oBACAJ,UAAU;oBACVf,YAAY;oBACZtB,WAAW;gBACb;gBACAiB,OAAO;gBACPC,oBAAoB;gBACpBnC;gBACA2D,WAAW;YACb;QACF;IACF,CAAA,EAAE"}
1
+ {"version":3,"sources":["../../src/queues/localAPI.ts"],"sourcesContent":["import type { BaseJob, RunningJobFromTask } from './config/types/workflowTypes.js'\n\nimport {\n createLocalReq,\n Forbidden,\n type Job,\n type Payload,\n type PayloadRequest,\n type Sort,\n type TypedJobs,\n type Where,\n} from '../index.js'\nimport { jobAfterRead, jobsCollectionSlug } from './config/collection.js'\nimport { handleSchedules, type HandleSchedulesResult } from './operations/handleSchedules/index.js'\nimport { runJobs } from './operations/runJobs/index.js'\nimport { updateJob, updateJobs } from './utilities/updateJob.js'\n\nexport type RunJobsSilent =\n | {\n error?: boolean\n info?: boolean\n }\n | boolean\nexport const getJobsLocalAPI = (payload: Payload) => ({\n handleSchedules: async (args?: {\n /**\n * If you want to schedule jobs from all queues, set this to true.\n * If you set this to true, the `queue` property will be ignored.\n *\n * @default false\n */\n allQueues?: boolean\n // By default, schedule all queues - only scheduling jobs scheduled to be added to the `default` queue would not make sense\n // here, as you'd usually specify a different queue than `default` here, especially if this is used in combination with autorun.\n // The `queue` property for setting up schedules is required, and not optional.\n /**\n * If you want to only schedule jobs that are set to schedule in a specific queue, set this to the queue name.\n *\n * @default jobs from the `default` queue will be executed.\n */\n queue?: string\n req?: PayloadRequest\n }): Promise<HandleSchedulesResult> => {\n const newReq: PayloadRequest = args?.req ?? (await createLocalReq({}, payload))\n\n return await handleSchedules({\n allQueues: args?.allQueues,\n queue: args?.queue,\n req: newReq,\n })\n },\n queue: async <\n // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents\n TTaskOrWorkflowSlug extends keyof TypedJobs['tasks'] | keyof TypedJobs['workflows'],\n >(\n args:\n | {\n input: TypedJobs['tasks'][TTaskOrWorkflowSlug]['input']\n meta?: BaseJob['meta']\n /**\n * If set to false, access control as defined in jobsConfig.access.queue will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.queue defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n /**\n * The queue to add the job to.\n * If not specified, the job will be added to the default queue.\n *\n * @default 'default'\n */\n queue?: string\n req?: PayloadRequest\n task: TTaskOrWorkflowSlug extends keyof TypedJobs['tasks'] ? TTaskOrWorkflowSlug : never\n waitUntil?: Date\n workflow?: never\n }\n | {\n input: TypedJobs['workflows'][TTaskOrWorkflowSlug]['input']\n meta?: BaseJob['meta']\n /**\n * If set to false, access control as defined in jobsConfig.access.queue will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.queue defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n /**\n * The queue to add the job to.\n * If not specified, the job will be added to the default queue.\n *\n * @default 'default'\n */\n queue?: string\n req?: PayloadRequest\n task?: never\n waitUntil?: Date\n workflow: TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? TTaskOrWorkflowSlug\n : never\n },\n ): Promise<\n TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? Job<TTaskOrWorkflowSlug>\n : RunningJobFromTask<TTaskOrWorkflowSlug>\n > => {\n const overrideAccess = args?.overrideAccess !== false\n const req: PayloadRequest = args.req ?? (await createLocalReq({}, payload))\n\n if (!overrideAccess) {\n /**\n * By default, jobsConfig.access.queue will be `defaultAccess` which is a function that returns `true` if the user is logged in.\n */\n const accessFn = payload.config.jobs?.access?.queue ?? (() => true)\n const hasAccess = await accessFn({ req })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n let queue: string | undefined = undefined\n\n // If user specifies queue, use that\n if (args.queue) {\n queue = args.queue\n } else if (args.workflow) {\n // Otherwise, if there is a workflow specified, and it has a default queue to use,\n // use that\n const workflow = payload.config.jobs?.workflows?.find(({ slug }) => slug === args.workflow)\n if (workflow?.queue) {\n queue = workflow.queue\n }\n }\n\n const data: Partial<Job> = {\n input: args.input,\n }\n\n if (queue) {\n data.queue = queue\n }\n if (args.waitUntil) {\n data.waitUntil = args.waitUntil?.toISOString()\n }\n if (args.workflow) {\n data.workflowSlug = args.workflow as string\n }\n if (args.task) {\n data.taskSlug = args.task as string\n }\n\n if (args.meta) {\n data.meta = args.meta\n }\n\n // Compute concurrency key from workflow or task config (only if feature is enabled)\n if (payload.config.jobs?.enableConcurrencyControl) {\n let concurrencyKey: null | string = null\n let supersedes = false\n const queueName = queue || 'default'\n\n if (args.workflow) {\n const workflow = payload.config.jobs?.workflows?.find(({ slug }) => slug === args.workflow)\n if (workflow?.concurrency) {\n const concurrencyConfig = workflow.concurrency\n if (typeof concurrencyConfig === 'function') {\n concurrencyKey = concurrencyConfig({ input: args.input, queue: queueName })\n } else {\n concurrencyKey = concurrencyConfig.key({ input: args.input, queue: queueName })\n supersedes = concurrencyConfig.supersedes ?? false\n }\n }\n } else if (args.task) {\n const task = payload.config.jobs?.tasks?.find(({ slug }) => slug === args.task)\n if (task?.concurrency) {\n const concurrencyConfig = task.concurrency\n if (typeof concurrencyConfig === 'function') {\n concurrencyKey = concurrencyConfig({ input: args.input, queue: queueName })\n } else {\n concurrencyKey = concurrencyConfig.key({ input: args.input, queue: queueName })\n supersedes = concurrencyConfig.supersedes ?? false\n }\n }\n }\n\n if (concurrencyKey) {\n data.concurrencyKey = concurrencyKey\n\n // If supersedes is enabled, delete older pending jobs with the same key\n if (supersedes) {\n await payload.db.deleteMany({\n collection: jobsCollectionSlug,\n req,\n where: {\n and: [\n { concurrencyKey: { equals: concurrencyKey } },\n { processing: { equals: false } },\n { completedAt: { exists: false } },\n ],\n },\n })\n }\n }\n }\n\n type ReturnType = TTaskOrWorkflowSlug extends keyof TypedJobs['workflows']\n ? Job<TTaskOrWorkflowSlug>\n : RunningJobFromTask<TTaskOrWorkflowSlug> // Type assertion is still needed here\n\n return jobAfterRead({\n config: payload.config,\n doc: await payload.db.create({\n collection: jobsCollectionSlug,\n data,\n req,\n }),\n }) as unknown as ReturnType\n },\n\n run: async (args?: {\n /**\n * If you want to run jobs from all queues, set this to true.\n * If you set this to true, the `queue` property will be ignored.\n *\n * @default false\n */\n allQueues?: boolean\n /**\n * The maximum number of jobs to run in this invocation\n *\n * @default 10\n */\n limit?: number\n /**\n * If set to false, access control as defined in jobsConfig.access.run will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.run defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n /**\n * Adjust the job processing order using a Payload sort string.\n *\n * FIFO would equal `createdAt` and LIFO would equal `-createdAt`.\n */\n processingOrder?: Sort\n /**\n * If you want to run jobs from a specific queue, set this to the queue name.\n *\n * @default jobs from the `default` queue will be executed.\n */\n queue?: string\n req?: PayloadRequest\n /**\n * By default, jobs are run in parallel.\n * If you want to run them in sequence, set this to true.\n */\n sequential?: boolean\n /**\n * If set to true, the job system will not log any output to the console (for both info and error logs).\n * Can be an option for more granular control over logging.\n *\n * This will not automatically affect user-configured logs (e.g. if you call `console.log` or `payload.logger.info` in your job code).\n *\n * @default false\n */\n silent?: RunJobsSilent\n where?: Where\n }): Promise<ReturnType<typeof runJobs>> => {\n const newReq: PayloadRequest = args?.req ?? (await createLocalReq({}, payload))\n\n return await runJobs({\n allQueues: args?.allQueues,\n limit: args?.limit,\n overrideAccess: args?.overrideAccess !== false,\n processingOrder: args?.processingOrder,\n queue: args?.queue,\n req: newReq,\n sequential: args?.sequential,\n silent: args?.silent,\n where: args?.where,\n })\n },\n\n runByID: async (args: {\n id: number | string\n /**\n * If set to false, access control as defined in jobsConfig.access.run will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.run defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n req?: PayloadRequest\n /**\n * If set to true, the job system will not log any output to the console (for both info and error logs).\n * Can be an option for more granular control over logging.\n *\n * This will not automatically affect user-configured logs (e.g. if you call `console.log` or `payload.logger.info` in your job code).\n *\n * @default false\n */\n silent?: RunJobsSilent\n }): Promise<ReturnType<typeof runJobs>> => {\n const newReq: PayloadRequest = args.req ?? (await createLocalReq({}, payload))\n\n return await runJobs({\n id: args.id,\n overrideAccess: args.overrideAccess !== false,\n req: newReq,\n silent: args.silent,\n })\n },\n\n cancel: async (args: {\n /**\n * If set to false, access control as defined in jobsConfig.access.cancel will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.cancel defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n queue?: string\n req?: PayloadRequest\n where: Where\n }): Promise<void> => {\n const req: PayloadRequest = args.req ?? (await createLocalReq({}, payload))\n\n const overrideAccess = args.overrideAccess !== false\n if (!overrideAccess) {\n /**\n * By default, jobsConfig.access.cancel will be `defaultAccess` which is a function that returns `true` if the user is logged in.\n */\n const accessFn = payload.config.jobs?.access?.cancel ?? (() => true)\n const hasAccess = await accessFn({ req })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n const and: Where[] = [\n args.where,\n {\n completedAt: {\n exists: false,\n },\n },\n {\n hasError: {\n not_equals: true,\n },\n },\n ]\n\n if (args.queue) {\n and.push({\n queue: {\n equals: args.queue,\n },\n })\n }\n\n await updateJobs({\n data: {\n completedAt: null,\n error: {\n cancelled: true,\n },\n hasError: true,\n processing: false,\n waitUntil: null,\n },\n req,\n returning: false,\n where: { and },\n })\n },\n\n cancelByID: async (args: {\n id: number | string\n /**\n * If set to false, access control as defined in jobsConfig.access.cancel will be run.\n * By default, this is true and no access control will be run.\n * If you set this to false and do not have jobsConfig.access.cancel defined, the default access control will be\n * run (which is a function that returns `true` if the user is logged in).\n *\n * @default true\n */\n overrideAccess?: boolean\n req?: PayloadRequest\n }): Promise<void> => {\n const req: PayloadRequest = args.req ?? (await createLocalReq({}, payload))\n\n const overrideAccess = args.overrideAccess !== false\n if (!overrideAccess) {\n /**\n * By default, jobsConfig.access.cancel will be `defaultAccess` which is a function that returns `true` if the user is logged in.\n */\n const accessFn = payload.config.jobs?.access?.cancel ?? (() => true)\n const hasAccess = await accessFn({ req })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n await updateJob({\n id: args.id,\n data: {\n completedAt: null,\n error: {\n cancelled: true,\n },\n hasError: true,\n processing: false,\n waitUntil: null,\n },\n req,\n returning: false,\n })\n },\n})\n"],"names":["createLocalReq","Forbidden","jobAfterRead","jobsCollectionSlug","handleSchedules","runJobs","updateJob","updateJobs","getJobsLocalAPI","payload","args","newReq","req","allQueues","queue","overrideAccess","accessFn","config","jobs","access","hasAccess","t","undefined","workflow","workflows","find","slug","data","input","waitUntil","toISOString","workflowSlug","task","taskSlug","meta","enableConcurrencyControl","concurrencyKey","supersedes","queueName","concurrency","concurrencyConfig","key","tasks","db","deleteMany","collection","where","and","equals","processing","completedAt","exists","doc","create","run","limit","processingOrder","sequential","silent","runByID","id","cancel","hasError","not_equals","push","error","cancelled","returning","cancelByID"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getQueuesWithSchedules.d.ts","sourceRoot":"","sources":["../../../../src/queues/operations/handleSchedules/getQueuesWithSchedules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEzE,KAAK,mBAAmB,GAAG;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,SAAS,EAAE;YACT,cAAc,EAAE,cAAc,CAAA;YAC9B,UAAU,CAAC,EAAE,UAAU,CAAA;YACvB,cAAc,CAAC,EAAE,cAAc,CAAA;SAChC,EAAE,CAAA;KACJ,CAAA;CACF,CAAA;AAED,eAAO,MAAM,sBAAsB,oBAEhC;IACD,UAAU,EAAE,mBAAmB,CAAA;CAChC,KAAG,mBA+BH,CAAA"}
1
+ {"version":3,"file":"getQueuesWithSchedules.d.ts","sourceRoot":"","sources":["../../../../src/queues/operations/handleSchedules/getQueuesWithSchedules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEzE,KAAK,mBAAmB,GAAG;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,SAAS,EAAE;YACT,cAAc,EAAE,cAAc,CAAA;YAC9B,UAAU,CAAC,EAAE,UAAU,CAAA;YACvB,cAAc,CAAC,EAAE,cAAc,CAAA;SAChC,EAAE,CAAA;KACJ,CAAA;CACF,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,iBAEpC;IACD,UAAU,EAAE,mBAAmB,CAAA;CAChC,KAAG,mBA+BH,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/queues/operations/handleSchedules/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAoB,SAAS,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE9F,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,wBAAwB,CAAA;AAK1E,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,MAAM,EAAE,SAAS,EAAE,CAAA;IACnB,OAAO,EAAE,SAAS,EAAE,CAAA;CACrB,CAAA;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,EACpC,SAAiB,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,GACJ,EAAE;IACD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA+EjC;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,KAAK,EACL,cAAc,EACd,KAAK,EACL,UAAU,EACV,cAAc,GACf,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,cAAc,CAAA;IAC9B,KAAK,EAAE,QAAQ,CAAA;IACf,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC,GAAG,KAAK,GAAG,SAAS,CAqBpB;AAED,wBAAsB,iBAAiB,CAAC,EACtC,SAAS,EACT,GAAG,EACH,KAAK,GACN,EAAE;IACD,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,KAAK,EAAE,QAAQ,CAAA;CAChB,GAAG,OAAO,CAAC;IACV,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;IAChB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;CACxC,CAAC,CAyED"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/queues/operations/handleSchedules/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAoB,SAAS,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE9F,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,wBAAwB,CAAA;AAK1E,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,MAAM,EAAE,SAAS,EAAE,CAAA;IACnB,OAAO,EAAE,SAAS,EAAE,CAAA;CACrB,CAAA;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,EACpC,SAAiB,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,GACJ,EAAE;IACD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;CACpB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA+EjC;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,KAAK,EACL,cAAc,EACd,KAAK,EACL,UAAU,EACV,cAAc,GACf,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,cAAc,CAAA;IAC9B,KAAK,EAAE,QAAQ,CAAA;IACf,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC,GAAG,KAAK,GAAG,SAAS,CAkBpB;AAED,wBAAsB,iBAAiB,CAAC,EACtC,SAAS,EACT,GAAG,EACH,KAAK,GACN,EAAE;IACD,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,KAAK,EAAE,QAAQ,CAAA;CAChB,GAAG,OAAO,CAAC;IACV,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;IAChB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;CACxC,CAAC,CAyED"}
@@ -82,10 +82,7 @@ import { getQueuesWithSchedules } from './getQueuesWithSchedules.js';
82
82
  export function checkQueueableTimeConstraints({ queue, scheduleConfig, stats, taskConfig, workflowConfig }) {
83
83
  const queueScheduleStats = stats?.stats?.scheduledRuns?.queues?.[queue];
84
84
  const lastScheduledRun = taskConfig ? queueScheduleStats?.tasks?.[taskConfig.slug]?.lastScheduledRun : queueScheduleStats?.workflows?.[workflowConfig?.slug ?? '']?.lastScheduledRun;
85
- const nextRun = new Cron(scheduleConfig.cron, {
86
- // TODO: Remove this compatibility option in 4.0. This only exists to ensure backwards-compatibility between Croner v9 and Croner v10 cron syntax
87
- sloppyRanges: true
88
- }).nextRun(lastScheduledRun ?? undefined);
85
+ const nextRun = new Cron(scheduleConfig.cron).nextRun(lastScheduledRun ?? undefined);
89
86
  if (!nextRun) {
90
87
  return false;
91
88
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/queues/operations/handleSchedules/index.ts"],"sourcesContent":["import { Cron } from 'croner'\n\nimport type { Job, TaskConfig, WorkflowConfig } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { BeforeScheduleFn, Queueable, ScheduleConfig } from '../../config/types/index.js'\n\nimport { type JobStats, jobStatsGlobalSlug } from '../../config/global.js'\nimport { defaultAfterSchedule } from './defaultAfterSchedule.js'\nimport { defaultBeforeSchedule } from './defaultBeforeSchedule.js'\nimport { getQueuesWithSchedules } from './getQueuesWithSchedules.js'\n\nexport type HandleSchedulesResult = {\n errored: Queueable[]\n queued: Queueable[]\n skipped: Queueable[]\n}\n\n/**\n * On vercel, we cannot auto-schedule jobs using a Cron - instead, we'll use this same endpoint that can\n * also be called from Vercel Cron for auto-running jobs.\n *\n * The benefit of doing it like this instead of a separate endpoint is that we can run jobs immediately\n * after they are scheduled\n */\nexport async function handleSchedules({\n allQueues = false,\n queue: _queue,\n req,\n}: {\n /**\n * If you want to schedule jobs from all queues, set this to true.\n * If you set this to true, the `queue` property will be ignored.\n *\n * @default false\n */\n allQueues?: boolean\n /**\n * If you want to only schedule jobs that are set to schedule in a specific queue, set this to the queue name.\n *\n * @default jobs from the `default` queue will be executed.\n */\n queue?: string\n req: PayloadRequest\n}): Promise<HandleSchedulesResult> {\n const queue = _queue ?? 'default'\n const jobsConfig = req.payload.config.jobs\n const queuesWithSchedules = getQueuesWithSchedules({\n jobsConfig,\n })\n\n if (Object.keys(queuesWithSchedules).length === 0) {\n // No schedules defined => return early, before fetching jobsStatsGlobal, as the global may not even exist\n return {\n errored: [],\n queued: [],\n skipped: [],\n }\n }\n\n const stats: JobStats = await req.payload.db.findGlobal({\n slug: jobStatsGlobalSlug,\n req,\n })\n\n /**\n * Almost last step! Tasks and Workflows added here just need to be constraint-checked (e.g max. 1 running task etc.),\n * before we can queue them\n */\n const queueables: Queueable[] = []\n\n // Need to know when that particular job was last scheduled in that particular queue\n\n for (const [queueName, { schedules }] of Object.entries(queuesWithSchedules)) {\n if (!allQueues && queueName !== queue) {\n // If a queue is specified, only schedule jobs for that queue\n continue\n }\n for (const schedulable of schedules) {\n const queuable = checkQueueableTimeConstraints({\n queue: queueName,\n scheduleConfig: schedulable.scheduleConfig,\n stats,\n taskConfig: schedulable.taskConfig,\n workflowConfig: schedulable.workflowConfig,\n })\n if (queuable) {\n queueables.push(queuable)\n }\n }\n }\n\n const queued: Queueable[] = []\n const skipped: Queueable[] = []\n const errored: Queueable[] = []\n\n /**\n * Now queue, but check for constraints (= beforeSchedule) first.\n * Default constraint (= defaultBeforeSchedule): max. 1 running / scheduled task or workflow per queue\n */\n for (const queueable of queueables) {\n const { status } = await scheduleQueueable({\n queueable,\n req,\n stats,\n })\n switch (status) {\n case 'error':\n errored.push(queueable)\n break\n case 'skipped':\n skipped.push(queueable)\n break\n case 'success':\n queued.push(queueable)\n break\n }\n }\n return {\n errored,\n queued,\n skipped,\n }\n}\n\nexport function checkQueueableTimeConstraints({\n queue,\n scheduleConfig,\n stats,\n taskConfig,\n workflowConfig,\n}: {\n queue: string\n scheduleConfig: ScheduleConfig\n stats: JobStats\n taskConfig?: TaskConfig\n workflowConfig?: WorkflowConfig\n}): false | Queueable {\n const queueScheduleStats = stats?.stats?.scheduledRuns?.queues?.[queue]\n\n const lastScheduledRun = taskConfig\n ? queueScheduleStats?.tasks?.[taskConfig.slug]?.lastScheduledRun\n : queueScheduleStats?.workflows?.[workflowConfig?.slug ?? '']?.lastScheduledRun\n\n const nextRun = new Cron(scheduleConfig.cron, {\n // TODO: Remove this compatibility option in 4.0. This only exists to ensure backwards-compatibility between Croner v9 and Croner v10 cron syntax\n sloppyRanges: true,\n }).nextRun(lastScheduledRun ?? undefined)\n\n if (!nextRun) {\n return false\n }\n return {\n scheduleConfig,\n taskConfig,\n waitUntil: nextRun,\n workflowConfig,\n }\n}\n\nexport async function scheduleQueueable({\n queueable,\n req,\n stats,\n}: {\n queueable: Queueable\n req: PayloadRequest\n stats: JobStats\n}): Promise<{\n job?: Job<false>\n status: 'error' | 'skipped' | 'success'\n}> {\n if (!queueable.taskConfig && !queueable.workflowConfig) {\n return {\n status: 'error',\n }\n }\n\n const beforeScheduleFn = queueable.scheduleConfig.hooks?.beforeSchedule\n const afterScheduleFN = queueable.scheduleConfig.hooks?.afterSchedule\n\n try {\n const beforeScheduleResult: Awaited<ReturnType<BeforeScheduleFn>> = await (\n beforeScheduleFn ?? defaultBeforeSchedule\n )({\n // @ts-expect-error we know defaultBeforeSchedule will never call itself => pass null\n defaultBeforeSchedule: beforeScheduleFn ? defaultBeforeSchedule : null,\n jobStats: stats,\n queueable,\n req,\n })\n\n if (!beforeScheduleResult.shouldSchedule) {\n await (afterScheduleFN ?? defaultAfterSchedule)({\n // @ts-expect-error we know defaultAfterchedule will never call itself => pass null\n defaultAfterSchedule: afterScheduleFN ? defaultAfterSchedule : null,\n jobStats: stats,\n queueable,\n req,\n status: 'skipped',\n })\n return {\n status: 'skipped',\n }\n }\n\n const job = (await req.payload.jobs.queue({\n input: beforeScheduleResult.input ?? {},\n meta: {\n scheduled: true,\n },\n queue: queueable.scheduleConfig.queue,\n req,\n task: queueable?.taskConfig?.slug,\n waitUntil: beforeScheduleResult.waitUntil,\n workflow: queueable.workflowConfig?.slug,\n } as Parameters<typeof req.payload.jobs.queue>[0])) as unknown as Job<false>\n\n await (afterScheduleFN ?? defaultAfterSchedule)({\n // @ts-expect-error we know defaultAfterchedule will never call itself => pass null\n defaultAfterSchedule: afterScheduleFN ? defaultAfterSchedule : null,\n job,\n jobStats: stats,\n queueable,\n req,\n status: 'success',\n })\n return {\n status: 'success',\n }\n } catch (error) {\n await (afterScheduleFN ?? defaultAfterSchedule)({\n // @ts-expect-error we know defaultAfterchedule will never call itself => pass null\n defaultAfterSchedule: afterScheduleFN ? defaultAfterSchedule : null,\n error: error as Error,\n jobStats: stats,\n queueable,\n req,\n status: 'error',\n })\n return {\n status: 'error',\n }\n }\n}\n"],"names":["Cron","jobStatsGlobalSlug","defaultAfterSchedule","defaultBeforeSchedule","getQueuesWithSchedules","handleSchedules","allQueues","queue","_queue","req","jobsConfig","payload","config","jobs","queuesWithSchedules","Object","keys","length","errored","queued","skipped","stats","db","findGlobal","slug","queueables","queueName","schedules","entries","schedulable","queuable","checkQueueableTimeConstraints","scheduleConfig","taskConfig","workflowConfig","push","queueable","status","scheduleQueueable","queueScheduleStats","scheduledRuns","queues","lastScheduledRun","tasks","workflows","nextRun","cron","sloppyRanges","undefined","waitUntil","beforeScheduleFn","hooks","beforeSchedule","afterScheduleFN","afterSchedule","beforeScheduleResult","jobStats","shouldSchedule","job","input","meta","scheduled","task","workflow","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/queues/operations/handleSchedules/index.ts"],"sourcesContent":["import { Cron } from 'croner'\n\nimport type { Job, TaskConfig, WorkflowConfig } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\nimport type { BeforeScheduleFn, Queueable, ScheduleConfig } from '../../config/types/index.js'\n\nimport { type JobStats, jobStatsGlobalSlug } from '../../config/global.js'\nimport { defaultAfterSchedule } from './defaultAfterSchedule.js'\nimport { defaultBeforeSchedule } from './defaultBeforeSchedule.js'\nimport { getQueuesWithSchedules } from './getQueuesWithSchedules.js'\n\nexport type HandleSchedulesResult = {\n errored: Queueable[]\n queued: Queueable[]\n skipped: Queueable[]\n}\n\n/**\n * On vercel, we cannot auto-schedule jobs using a Cron - instead, we'll use this same endpoint that can\n * also be called from Vercel Cron for auto-running jobs.\n *\n * The benefit of doing it like this instead of a separate endpoint is that we can run jobs immediately\n * after they are scheduled\n */\nexport async function handleSchedules({\n allQueues = false,\n queue: _queue,\n req,\n}: {\n /**\n * If you want to schedule jobs from all queues, set this to true.\n * If you set this to true, the `queue` property will be ignored.\n *\n * @default false\n */\n allQueues?: boolean\n /**\n * If you want to only schedule jobs that are set to schedule in a specific queue, set this to the queue name.\n *\n * @default jobs from the `default` queue will be executed.\n */\n queue?: string\n req: PayloadRequest\n}): Promise<HandleSchedulesResult> {\n const queue = _queue ?? 'default'\n const jobsConfig = req.payload.config.jobs\n const queuesWithSchedules = getQueuesWithSchedules({\n jobsConfig,\n })\n\n if (Object.keys(queuesWithSchedules).length === 0) {\n // No schedules defined => return early, before fetching jobsStatsGlobal, as the global may not even exist\n return {\n errored: [],\n queued: [],\n skipped: [],\n }\n }\n\n const stats: JobStats = await req.payload.db.findGlobal({\n slug: jobStatsGlobalSlug,\n req,\n })\n\n /**\n * Almost last step! Tasks and Workflows added here just need to be constraint-checked (e.g max. 1 running task etc.),\n * before we can queue them\n */\n const queueables: Queueable[] = []\n\n // Need to know when that particular job was last scheduled in that particular queue\n\n for (const [queueName, { schedules }] of Object.entries(queuesWithSchedules)) {\n if (!allQueues && queueName !== queue) {\n // If a queue is specified, only schedule jobs for that queue\n continue\n }\n for (const schedulable of schedules) {\n const queuable = checkQueueableTimeConstraints({\n queue: queueName,\n scheduleConfig: schedulable.scheduleConfig,\n stats,\n taskConfig: schedulable.taskConfig,\n workflowConfig: schedulable.workflowConfig,\n })\n if (queuable) {\n queueables.push(queuable)\n }\n }\n }\n\n const queued: Queueable[] = []\n const skipped: Queueable[] = []\n const errored: Queueable[] = []\n\n /**\n * Now queue, but check for constraints (= beforeSchedule) first.\n * Default constraint (= defaultBeforeSchedule): max. 1 running / scheduled task or workflow per queue\n */\n for (const queueable of queueables) {\n const { status } = await scheduleQueueable({\n queueable,\n req,\n stats,\n })\n switch (status) {\n case 'error':\n errored.push(queueable)\n break\n case 'skipped':\n skipped.push(queueable)\n break\n case 'success':\n queued.push(queueable)\n break\n }\n }\n return {\n errored,\n queued,\n skipped,\n }\n}\n\nexport function checkQueueableTimeConstraints({\n queue,\n scheduleConfig,\n stats,\n taskConfig,\n workflowConfig,\n}: {\n queue: string\n scheduleConfig: ScheduleConfig\n stats: JobStats\n taskConfig?: TaskConfig\n workflowConfig?: WorkflowConfig\n}): false | Queueable {\n const queueScheduleStats = stats?.stats?.scheduledRuns?.queues?.[queue]\n\n const lastScheduledRun = taskConfig\n ? queueScheduleStats?.tasks?.[taskConfig.slug]?.lastScheduledRun\n : queueScheduleStats?.workflows?.[workflowConfig?.slug ?? '']?.lastScheduledRun\n\n const nextRun = new Cron(scheduleConfig.cron).nextRun(lastScheduledRun ?? undefined)\n\n if (!nextRun) {\n return false\n }\n return {\n scheduleConfig,\n taskConfig,\n waitUntil: nextRun,\n workflowConfig,\n }\n}\n\nexport async function scheduleQueueable({\n queueable,\n req,\n stats,\n}: {\n queueable: Queueable\n req: PayloadRequest\n stats: JobStats\n}): Promise<{\n job?: Job<false>\n status: 'error' | 'skipped' | 'success'\n}> {\n if (!queueable.taskConfig && !queueable.workflowConfig) {\n return {\n status: 'error',\n }\n }\n\n const beforeScheduleFn = queueable.scheduleConfig.hooks?.beforeSchedule\n const afterScheduleFN = queueable.scheduleConfig.hooks?.afterSchedule\n\n try {\n const beforeScheduleResult: Awaited<ReturnType<BeforeScheduleFn>> = await (\n beforeScheduleFn ?? defaultBeforeSchedule\n )({\n // @ts-expect-error we know defaultBeforeSchedule will never call itself => pass null\n defaultBeforeSchedule: beforeScheduleFn ? defaultBeforeSchedule : null,\n jobStats: stats,\n queueable,\n req,\n })\n\n if (!beforeScheduleResult.shouldSchedule) {\n await (afterScheduleFN ?? defaultAfterSchedule)({\n // @ts-expect-error we know defaultAfterchedule will never call itself => pass null\n defaultAfterSchedule: afterScheduleFN ? defaultAfterSchedule : null,\n jobStats: stats,\n queueable,\n req,\n status: 'skipped',\n })\n return {\n status: 'skipped',\n }\n }\n\n const job = (await req.payload.jobs.queue({\n input: beforeScheduleResult.input ?? {},\n meta: {\n scheduled: true,\n },\n queue: queueable.scheduleConfig.queue,\n req,\n task: queueable?.taskConfig?.slug,\n waitUntil: beforeScheduleResult.waitUntil,\n workflow: queueable.workflowConfig?.slug,\n } as Parameters<typeof req.payload.jobs.queue>[0])) as unknown as Job<false>\n\n await (afterScheduleFN ?? defaultAfterSchedule)({\n // @ts-expect-error we know defaultAfterchedule will never call itself => pass null\n defaultAfterSchedule: afterScheduleFN ? defaultAfterSchedule : null,\n job,\n jobStats: stats,\n queueable,\n req,\n status: 'success',\n })\n return {\n status: 'success',\n }\n } catch (error) {\n await (afterScheduleFN ?? defaultAfterSchedule)({\n // @ts-expect-error we know defaultAfterchedule will never call itself => pass null\n defaultAfterSchedule: afterScheduleFN ? defaultAfterSchedule : null,\n error: error as Error,\n jobStats: stats,\n queueable,\n req,\n status: 'error',\n })\n return {\n status: 'error',\n }\n }\n}\n"],"names":["Cron","jobStatsGlobalSlug","defaultAfterSchedule","defaultBeforeSchedule","getQueuesWithSchedules","handleSchedules","allQueues","queue","_queue","req","jobsConfig","payload","config","jobs","queuesWithSchedules","Object","keys","length","errored","queued","skipped","stats","db","findGlobal","slug","queueables","queueName","schedules","entries","schedulable","queuable","checkQueueableTimeConstraints","scheduleConfig","taskConfig","workflowConfig","push","queueable","status","scheduleQueueable","queueScheduleStats","scheduledRuns","queues","lastScheduledRun","tasks","workflows","nextRun","cron","undefined","waitUntil","beforeScheduleFn","hooks","beforeSchedule","afterScheduleFN","afterSchedule","beforeScheduleResult","jobStats","shouldSchedule","job","input","meta","scheduled","task","workflow","error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/queues/operations/runJobs/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAarD,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,IAAI,CAAA;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,OAAO,SAAgB,WAAW,KAAG,OAAO,CAAC,aAAa,CAoctE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/queues/operations/runJobs/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAarD,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,IAAI,CAAA;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,cAAc,CAAA;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,OAAO,GAAU,MAAM,WAAW,KAAG,OAAO,CAAC,aAAa,CA2ctE,CAAA"}
@@ -132,8 +132,6 @@ export const runJobs = async (args)=>{
132
132
  data: {
133
133
  processing: true
134
134
  },
135
- depth: jobsConfig.depth,
136
- disableTransaction: true,
137
135
  req,
138
136
  returning: true
139
137
  });
@@ -160,8 +158,6 @@ export const runJobs = async (args)=>{
160
158
  data: {
161
159
  processing: true
162
160
  },
163
- depth: jobsConfig.depth,
164
- disableTransaction: true,
165
161
  limit,
166
162
  req,
167
163
  returning: true,
@@ -207,7 +203,6 @@ export const runJobs = async (args)=>{
207
203
  data: {
208
204
  processing: false
209
205
  },
210
- disableTransaction: true,
211
206
  req,
212
207
  returning: false,
213
208
  where: {
@@ -248,22 +243,45 @@ export const runJobs = async (args)=>{
248
243
  throw new Error('Job must have either a workflowSlug or a taskSlug');
249
244
  }
250
245
  const jobReq = isolateObjectProperty(req, 'transactionID');
251
- const workflowConfig = job.workflowSlug && jobsConfig.workflows?.length ? jobsConfig.workflows.find(({ slug })=>slug === job.workflowSlug) : {
252
- slug: 'singleTask',
253
- handler: async ({ job, tasks })=>{
254
- await tasks[job.taskSlug]('1', {
255
- input: job.input
256
- });
246
+ let workflowConfig = undefined;
247
+ if (job.workflowSlug && jobsConfig.workflows?.length) {
248
+ workflowConfig = jobsConfig.workflows.find(({ slug })=>slug === job.workflowSlug);
249
+ } else if (job.taskSlug && jobsConfig.tasks?.length) {
250
+ const taskExists = jobsConfig.tasks.some(({ slug })=>slug === job.taskSlug);
251
+ if (taskExists) {
252
+ workflowConfig = {
253
+ slug: 'singleTask',
254
+ handler: async ({ job, tasks })=>{
255
+ await tasks[job.taskSlug]('1', {
256
+ input: job.input
257
+ });
258
+ }
259
+ };
257
260
  }
258
- };
261
+ }
259
262
  if (!workflowConfig) {
263
+ // Permanently fail jobs whose task/workflow slug is no longer registered in config — they can never complete.
264
+ const errorMessage = `${job.taskSlug ? `Task '${job.taskSlug}'` : `Workflow '${job.workflowSlug}'`} is not registered in payload.config.jobs.`;
265
+ if (!silent || typeof silent === 'object' && !silent.error) {
266
+ payload.logger.error({
267
+ msg: `Error running job ${job.workflowSlug || `Task: ${job.taskSlug}`} id: ${job.id} - ${errorMessage}`
268
+ });
269
+ }
270
+ const updateJob = getUpdateJobFunction(job, jobReq);
271
+ await updateJob({
272
+ error: {
273
+ message: errorMessage
274
+ },
275
+ hasError: true,
276
+ processing: false,
277
+ totalTried: (job.totalTried ?? 0) + 1
278
+ });
260
279
  return {
261
280
  id: job.id,
262
281
  result: {
263
- status: 'error'
282
+ status: 'error-reached-max-retries'
264
283
  }
265
- } // Skip jobs with no workflow configuration
266
- ;
284
+ };
267
285
  }
268
286
  try {
269
287
  const updateJob = getUpdateJobFunction(job, jobReq);
@@ -346,8 +364,6 @@ export const runJobs = async (args)=>{
346
364
  processing: false,
347
365
  waitUntil: null
348
366
  },
349
- depth: 0,
350
- disableTransaction: true,
351
367
  req,
352
368
  returning: false
353
369
  });
@@ -376,27 +392,14 @@ export const runJobs = async (args)=>{
376
392
  }
377
393
  if (jobsConfig.deleteJobOnComplete && successfullyCompletedJobs.length) {
378
394
  try {
379
- if (jobsConfig.runHooks) {
380
- await payload.delete({
381
- collection: jobsCollectionSlug,
382
- depth: 0,
383
- disableTransaction: true,
384
- where: {
385
- id: {
386
- in: successfullyCompletedJobs
387
- }
388
- }
389
- });
390
- } else {
391
- await payload.db.deleteMany({
392
- collection: jobsCollectionSlug,
393
- where: {
394
- id: {
395
- in: successfullyCompletedJobs
396
- }
395
+ await payload.db.deleteMany({
396
+ collection: jobsCollectionSlug,
397
+ where: {
398
+ id: {
399
+ in: successfullyCompletedJobs
397
400
  }
398
- });
399
- }
401
+ }
402
+ });
400
403
  } catch (err) {
401
404
  if (!silent || typeof silent === 'object' && !silent.error) {
402
405
  payload.logger.error({