@shivaedev/jobs 0.37.1 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +43 -10
  3. package/dist/server/InspectionEngine.d.ts +27 -0
  4. package/dist/server/InspectionEngine.d.ts.map +1 -0
  5. package/dist/server/InspectionEngine.js +4 -0
  6. package/dist/server/InspectionEngine.js.map +1 -0
  7. package/dist/server/JobQueues.d.ts +6 -0
  8. package/dist/server/JobQueues.d.ts.map +1 -0
  9. package/dist/server/JobQueues.js +4 -0
  10. package/dist/server/JobQueues.js.map +1 -0
  11. package/dist/server/PgBoss.d.ts +1 -1
  12. package/dist/server/PgBoss.d.ts.map +1 -1
  13. package/dist/server/SchemaConnection.d.ts +7 -0
  14. package/dist/server/SchemaConnection.d.ts.map +1 -0
  15. package/dist/server/SchemaConnection.js +4 -0
  16. package/dist/server/SchemaConnection.js.map +1 -0
  17. package/dist/server/{internal/acquireClient.d.ts → acquireClient.d.ts} +3 -3
  18. package/dist/server/acquireClient.d.ts.map +1 -0
  19. package/dist/server/acquireClient.js.map +1 -0
  20. package/dist/server/adapters/batchClockOffset.js +1 -1
  21. package/dist/server/adapters/batchClockOffset.js.map +1 -1
  22. package/dist/server/adapters/batchHandler.d.ts.map +1 -1
  23. package/dist/server/adapters/batchHandler.js +4 -4
  24. package/dist/server/adapters/batchHandler.js.map +1 -1
  25. package/dist/server/adapters/clientErrorLogger.js +1 -1
  26. package/dist/server/adapters/clientErrorLogger.js.map +1 -1
  27. package/dist/server/adapters/clientErrorSubscription.js +1 -1
  28. package/dist/server/adapters/clientErrorSubscription.js.map +1 -1
  29. package/dist/server/{internal → adapters}/countsFor.d.ts.map +1 -1
  30. package/dist/server/{internal → adapters}/countsFor.js +1 -1
  31. package/dist/server/{internal → adapters}/countsFor.js.map +1 -1
  32. package/dist/server/adapters/deferralCount.d.ts.map +1 -1
  33. package/dist/server/adapters/deferralCount.js +1 -1
  34. package/dist/server/adapters/deferralCount.js.map +1 -1
  35. package/dist/server/{internal → adapters}/ensureQueue.d.ts.map +1 -1
  36. package/dist/server/{internal → adapters}/ensureQueue.js.map +1 -1
  37. package/dist/server/{internal → adapters}/healthFor.d.ts.map +1 -1
  38. package/dist/server/{internal → adapters}/healthFor.js.map +1 -1
  39. package/dist/server/adapters/inspection.d.ts +1 -2
  40. package/dist/server/adapters/inspection.d.ts.map +1 -1
  41. package/dist/server/adapters/inspection.js +20 -24
  42. package/dist/server/adapters/inspection.js.map +1 -1
  43. package/dist/server/adapters/inspectionDeferrals.d.ts.map +1 -1
  44. package/dist/server/adapters/inspectionDeferrals.js +1 -1
  45. package/dist/server/adapters/inspectionDeferrals.js.map +1 -1
  46. package/dist/server/adapters/inspectionJobs.d.ts +1 -43
  47. package/dist/server/adapters/inspectionJobs.d.ts.map +1 -1
  48. package/dist/server/adapters/inspectionJobs.js +1 -5
  49. package/dist/server/adapters/inspectionJobs.js.map +1 -1
  50. package/dist/server/adapters/inspectionLayer.d.ts +4 -0
  51. package/dist/server/adapters/inspectionLayer.d.ts.map +1 -0
  52. package/dist/server/adapters/inspectionLayer.js +7 -0
  53. package/dist/server/adapters/inspectionLayer.js.map +1 -0
  54. package/dist/server/adapters/inspectionPlan.js +1 -1
  55. package/dist/server/adapters/inspectionPlan.js.map +1 -1
  56. package/dist/server/adapters/inspectionReads.d.ts +12 -46
  57. package/dist/server/adapters/inspectionReads.d.ts.map +1 -1
  58. package/dist/server/adapters/inspectionReads.js +3 -3
  59. package/dist/server/adapters/inspectionReads.js.map +1 -1
  60. package/dist/server/adapters/inspectionSnapshot.d.ts +9 -4
  61. package/dist/server/adapters/inspectionSnapshot.d.ts.map +1 -1
  62. package/dist/server/adapters/inspectionSnapshot.js +17 -26
  63. package/dist/server/adapters/inspectionSnapshot.js.map +1 -1
  64. package/dist/server/adapters/installSchema.d.ts.map +1 -1
  65. package/dist/server/adapters/installSchema.js +5 -4
  66. package/dist/server/adapters/installSchema.js.map +1 -1
  67. package/dist/server/adapters/jobEngine.d.ts +1 -1
  68. package/dist/server/adapters/jobEngine.d.ts.map +1 -1
  69. package/dist/server/adapters/jobEngine.js.map +1 -1
  70. package/dist/server/adapters/lifecycle.d.ts +1 -1
  71. package/dist/server/adapters/lifecycle.d.ts.map +1 -1
  72. package/dist/server/adapters/lifecycle.js +2 -2
  73. package/dist/server/adapters/lifecycle.js.map +1 -1
  74. package/dist/server/adapters/listJobs.d.ts +1 -1
  75. package/dist/server/adapters/listJobs.d.ts.map +1 -1
  76. package/dist/server/adapters/listJobs.js +1 -1
  77. package/dist/server/adapters/listJobs.js.map +1 -1
  78. package/dist/server/adapters/makeService.d.ts +4 -0
  79. package/dist/server/adapters/makeService.d.ts.map +1 -0
  80. package/dist/server/adapters/makeService.js +26 -0
  81. package/dist/server/adapters/makeService.js.map +1 -0
  82. package/dist/server/adapters/operationsLayer.d.ts +4 -0
  83. package/dist/server/adapters/operationsLayer.d.ts.map +1 -0
  84. package/dist/server/adapters/operationsLayer.js +17 -0
  85. package/dist/server/adapters/operationsLayer.js.map +1 -0
  86. package/dist/server/{internal → adapters}/pgBossDefinitionLayer.d.ts.map +1 -1
  87. package/dist/server/{internal → adapters}/pgBossDefinitionLayer.js +7 -9
  88. package/dist/server/adapters/pgBossDefinitionLayer.js.map +1 -0
  89. package/dist/server/{internal → adapters}/register.d.ts +2 -2
  90. package/dist/server/adapters/register.d.ts.map +1 -0
  91. package/dist/server/{internal → adapters}/register.js +9 -9
  92. package/dist/server/adapters/register.js.map +1 -0
  93. package/dist/server/adapters/registerReleasedJobs.d.ts +7 -0
  94. package/dist/server/adapters/registerReleasedJobs.d.ts.map +1 -0
  95. package/dist/server/{internal → adapters}/registerReleasedJobs.js +5 -4
  96. package/dist/server/adapters/registerReleasedJobs.js.map +1 -0
  97. package/dist/server/adapters/registerWorker.d.ts +1 -1
  98. package/dist/server/adapters/registerWorker.d.ts.map +1 -1
  99. package/dist/server/adapters/registerWorker.js +6 -5
  100. package/dist/server/adapters/registerWorker.js.map +1 -1
  101. package/dist/server/adapters/retireJobs.d.ts.map +1 -1
  102. package/dist/server/adapters/retireJobs.js +1 -1
  103. package/dist/server/adapters/retireJobs.js.map +1 -1
  104. package/dist/server/adapters/runSchemaPlan.d.ts +4 -4
  105. package/dist/server/adapters/runSchemaPlan.d.ts.map +1 -1
  106. package/dist/server/adapters/runSchemaPlan.js +7 -4
  107. package/dist/server/adapters/runSchemaPlan.js.map +1 -1
  108. package/dist/server/adapters/settleDeferral.d.ts +1 -1
  109. package/dist/server/adapters/settleDeferral.d.ts.map +1 -1
  110. package/dist/server/adapters/settleDeferral.js +2 -2
  111. package/dist/server/adapters/settleDeferral.js.map +1 -1
  112. package/dist/server/clientErrors.d.ts.map +1 -0
  113. package/dist/server/clientErrors.js.map +1 -0
  114. package/dist/server/deadLetterResolutionPlan.d.ts.map +1 -0
  115. package/dist/server/{internal/deadLetterResolutionPlan.js → deadLetterResolutionPlan.js} +1 -1
  116. package/dist/server/deadLetterResolutionPlan.js.map +1 -0
  117. package/dist/server/deadlineOf.d.ts.map +1 -0
  118. package/dist/server/deadlineOf.js.map +1 -0
  119. package/dist/server/deferrableAttempt.d.ts +6 -0
  120. package/dist/server/deferrableAttempt.d.ts.map +1 -0
  121. package/dist/server/{internal/deferrableAttempt.js → deferrableAttempt.js} +2 -2
  122. package/dist/server/deferrableAttempt.js.map +1 -0
  123. package/dist/server/deferral.d.ts.map +1 -0
  124. package/dist/server/deferral.js.map +1 -0
  125. package/dist/server/deferralStorePlan.d.ts.map +1 -0
  126. package/dist/server/{internal/deferralStorePlan.js → deferralStorePlan.js} +2 -2
  127. package/dist/server/deferralStorePlan.js.map +1 -0
  128. package/dist/server/defineSchedule.js +1 -1
  129. package/dist/server/defineSchedule.js.map +1 -1
  130. package/dist/server/definition.d.ts.map +1 -1
  131. package/dist/server/definition.js +1 -1
  132. package/dist/server/definition.js.map +1 -1
  133. package/dist/server/definitionOptions.d.ts.map +1 -0
  134. package/dist/server/definitionOptions.js.map +1 -0
  135. package/dist/server/engine.d.ts.map +1 -0
  136. package/dist/server/engine.js.map +1 -0
  137. package/dist/server/enqueuePayload.d.ts +6 -0
  138. package/dist/server/enqueuePayload.d.ts.map +1 -0
  139. package/dist/server/enqueuePayload.js +29 -0
  140. package/dist/server/enqueuePayload.js.map +1 -0
  141. package/dist/server/error.js +1 -1
  142. package/dist/server/error.js.map +1 -1
  143. package/dist/server/failureOutput.d.ts.map +1 -0
  144. package/dist/server/failureOutput.js.map +1 -0
  145. package/dist/server/getJob.d.ts +88 -0
  146. package/dist/server/getJob.d.ts.map +1 -0
  147. package/dist/server/{internal/jobControl.js → getJob.js} +7 -9
  148. package/dist/server/getJob.js.map +1 -0
  149. package/dist/server/inspection.d.ts +13 -80
  150. package/dist/server/inspection.d.ts.map +1 -1
  151. package/dist/server/inspection.js +4 -39
  152. package/dist/server/inspection.js.map +1 -1
  153. package/dist/server/{internal/operations/jobs.d.ts → inspectionJobs.d.ts} +8 -6
  154. package/dist/server/inspectionJobs.d.ts.map +1 -0
  155. package/dist/server/inspectionJobs.js +9 -0
  156. package/dist/server/inspectionJobs.js.map +1 -0
  157. package/dist/server/inspectionSnapshot.d.ts +82 -0
  158. package/dist/server/inspectionSnapshot.d.ts.map +1 -0
  159. package/dist/server/inspectionSnapshot.js +16 -0
  160. package/dist/server/inspectionSnapshot.js.map +1 -0
  161. package/dist/server/jobListings.d.ts +46 -0
  162. package/dist/server/jobListings.d.ts.map +1 -0
  163. package/dist/server/{internal/jobListings.js → jobListings.js} +9 -8
  164. package/dist/server/jobListings.js.map +1 -0
  165. package/dist/server/jobStorePlans.d.ts.map +1 -0
  166. package/dist/server/{internal/jobStorePlans.js → jobStorePlans.js} +2 -2
  167. package/dist/server/jobStorePlans.js.map +1 -0
  168. package/dist/server/lifecycle.d.ts.map +1 -0
  169. package/dist/server/lifecycle.js.map +1 -0
  170. package/dist/server/retryWake.d.ts.map +1 -0
  171. package/dist/server/retryWake.js.map +1 -0
  172. package/dist/server/runQueueWorker.d.ts +8 -0
  173. package/dist/server/runQueueWorker.d.ts.map +1 -0
  174. package/dist/server/{internal/runQueueWorker.js → runQueueWorker.js} +6 -4
  175. package/dist/server/runQueueWorker.js.map +1 -0
  176. package/dist/server/service.d.ts.map +1 -1
  177. package/dist/server/service.js +3 -3
  178. package/dist/server/service.js.map +1 -1
  179. package/dist/server/services/inspection/busy.d.ts +4 -0
  180. package/dist/server/services/inspection/busy.d.ts.map +1 -0
  181. package/dist/server/services/inspection/busy.js +7 -0
  182. package/dist/server/services/inspection/busy.js.map +1 -0
  183. package/dist/server/services/inspection/changes.d.ts +9 -0
  184. package/dist/server/services/inspection/changes.d.ts.map +1 -0
  185. package/dist/server/services/inspection/changes.js +8 -0
  186. package/dist/server/services/inspection/changes.js.map +1 -0
  187. package/dist/server/services/inspection/counts.d.ts +6 -0
  188. package/dist/server/services/inspection/counts.d.ts.map +1 -0
  189. package/dist/server/services/inspection/counts.js +8 -0
  190. package/dist/server/services/inspection/counts.js.map +1 -0
  191. package/dist/server/services/inspection/deferred.d.ts +7 -0
  192. package/dist/server/services/inspection/deferred.d.ts.map +1 -0
  193. package/dist/server/services/inspection/deferred.js +7 -0
  194. package/dist/server/services/inspection/deferred.js.map +1 -0
  195. package/dist/server/services/inspection/health.d.ts +6 -0
  196. package/dist/server/services/inspection/health.d.ts.map +1 -0
  197. package/dist/server/services/inspection/health.js +8 -0
  198. package/dist/server/services/inspection/health.js.map +1 -0
  199. package/dist/server/services/inspection/queue.d.ts +4 -0
  200. package/dist/server/services/inspection/queue.d.ts.map +1 -0
  201. package/dist/server/services/inspection/queue.js +7 -0
  202. package/dist/server/services/inspection/queue.js.map +1 -0
  203. package/dist/server/services/inspection/schedules.d.ts +4 -0
  204. package/dist/server/services/inspection/schedules.d.ts.map +1 -0
  205. package/dist/server/services/inspection/schedules.js +7 -0
  206. package/dist/server/services/inspection/schedules.js.map +1 -0
  207. package/dist/server/services/inspection/schemaVersion.d.ts +4 -0
  208. package/dist/server/services/inspection/schemaVersion.d.ts.map +1 -0
  209. package/dist/server/services/inspection/schemaVersion.js +7 -0
  210. package/dist/server/services/inspection/schemaVersion.js.map +1 -0
  211. package/dist/server/services/inspection/service.d.ts +40 -0
  212. package/dist/server/services/inspection/service.d.ts.map +1 -0
  213. package/dist/server/services/inspection/service.js +21 -0
  214. package/dist/server/services/inspection/service.js.map +1 -0
  215. package/dist/server/services/inspection/snapshot.d.ts +12 -0
  216. package/dist/server/services/inspection/snapshot.d.ts.map +1 -0
  217. package/dist/server/services/inspection/snapshot.js +7 -0
  218. package/dist/server/services/inspection/snapshot.js.map +1 -0
  219. package/dist/server/services/inspection/storedJobs.d.ts +6 -0
  220. package/dist/server/services/inspection/storedJobs.d.ts.map +1 -0
  221. package/dist/server/services/inspection/storedJobs.js +7 -0
  222. package/dist/server/services/inspection/storedJobs.js.map +1 -0
  223. package/dist/server/services/operations/counts.d.ts +6 -0
  224. package/dist/server/services/operations/counts.d.ts.map +1 -0
  225. package/dist/server/services/operations/counts.js +8 -0
  226. package/dist/server/services/operations/counts.js.map +1 -0
  227. package/dist/server/services/operations/deleteQueue.d.ts +4 -0
  228. package/dist/server/services/operations/deleteQueue.d.ts.map +1 -0
  229. package/dist/server/services/operations/deleteQueue.js +7 -0
  230. package/dist/server/services/operations/deleteQueue.js.map +1 -0
  231. package/dist/server/services/operations/enqueue.d.ts +5 -0
  232. package/dist/server/services/operations/enqueue.d.ts.map +1 -0
  233. package/dist/server/services/operations/enqueue.js +12 -0
  234. package/dist/server/services/operations/enqueue.js.map +1 -0
  235. package/dist/server/services/operations/getJob.d.ts +4 -0
  236. package/dist/server/services/operations/getJob.d.ts.map +1 -0
  237. package/dist/server/services/operations/getJob.js +7 -0
  238. package/dist/server/services/operations/getJob.js.map +1 -0
  239. package/dist/server/services/operations/health.d.ts +7 -0
  240. package/dist/server/services/operations/health.d.ts.map +1 -0
  241. package/dist/server/services/operations/health.js +10 -0
  242. package/dist/server/services/operations/health.js.map +1 -0
  243. package/dist/server/services/operations/listJobs.d.ts +6 -0
  244. package/dist/server/services/operations/listJobs.d.ts.map +1 -0
  245. package/dist/server/services/operations/listJobs.js +7 -0
  246. package/dist/server/services/operations/listJobs.js.map +1 -0
  247. package/dist/server/services/operations/refreshQueueStats.d.ts +4 -0
  248. package/dist/server/services/operations/refreshQueueStats.d.ts.map +1 -0
  249. package/dist/server/services/operations/refreshQueueStats.js +7 -0
  250. package/dist/server/services/operations/refreshQueueStats.js.map +1 -0
  251. package/dist/server/services/operations/retry.d.ts +4 -0
  252. package/dist/server/services/operations/retry.d.ts.map +1 -0
  253. package/dist/server/services/operations/retry.js +7 -0
  254. package/dist/server/services/operations/retry.js.map +1 -0
  255. package/dist/server/services/operations/service.d.ts +22 -0
  256. package/dist/server/services/operations/service.d.ts.map +1 -0
  257. package/dist/server/services/operations/service.js +21 -0
  258. package/dist/server/services/operations/service.js.map +1 -0
  259. package/dist/server/services/operations/unschedule.d.ts +4 -0
  260. package/dist/server/services/operations/unschedule.d.ts.map +1 -0
  261. package/dist/server/services/operations/unschedule.js +7 -0
  262. package/dist/server/services/operations/unschedule.js.map +1 -0
  263. package/dist/server/storedRows.d.ts.map +1 -0
  264. package/dist/server/{internal/storedRows.js → storedRows.js} +1 -1
  265. package/dist/server/storedRows.js.map +1 -0
  266. package/dist/server/tracing.d.ts.map +1 -0
  267. package/dist/server/tracing.js.map +1 -0
  268. package/dist/server/validateQueueNames.d.ts.map +1 -0
  269. package/dist/server/{internal/validateQueueNames.js → validateQueueNames.js} +1 -1
  270. package/dist/server/validateQueueNames.js.map +1 -0
  271. package/dist/server/waitForBatchExpiry.d.ts.map +1 -0
  272. package/dist/server/waitForBatchExpiry.js.map +1 -0
  273. package/package.json +13 -13
  274. package/src/server/InspectionEngine.ts +3 -0
  275. package/src/server/JobQueues.ts +2 -0
  276. package/src/server/PgBoss.ts +1 -1
  277. package/src/server/SchemaConnection.ts +3 -0
  278. package/src/server/adapters/batchClockOffset.ts +1 -1
  279. package/src/server/adapters/batchHandler.ts +4 -4
  280. package/src/server/adapters/clientErrorLogger.ts +1 -1
  281. package/src/server/adapters/clientErrorSubscription.ts +1 -1
  282. package/src/server/{internal → adapters}/countsFor.ts +1 -1
  283. package/src/server/adapters/deferralCount.ts +1 -1
  284. package/src/server/adapters/inspection.ts +24 -29
  285. package/src/server/adapters/inspectionDeferrals.ts +1 -1
  286. package/src/server/adapters/inspectionJobs.ts +2 -12
  287. package/src/server/adapters/inspectionLayer.ts +7 -0
  288. package/src/server/adapters/inspectionPlan.ts +1 -1
  289. package/src/server/adapters/inspectionReads.ts +3 -6
  290. package/src/server/adapters/inspectionSnapshot.ts +15 -33
  291. package/src/server/adapters/installSchema.ts +9 -6
  292. package/src/server/adapters/jobEngine.ts +1 -1
  293. package/src/server/adapters/lifecycle.ts +3 -3
  294. package/src/server/adapters/listJobs.ts +2 -2
  295. package/src/server/adapters/makeService.ts +31 -0
  296. package/src/server/adapters/operationsLayer.ts +23 -0
  297. package/src/server/{internal → adapters}/pgBossDefinitionLayer.ts +7 -14
  298. package/src/server/{internal → adapters}/register.ts +8 -23
  299. package/src/server/{internal → adapters}/registerReleasedJobs.ts +6 -5
  300. package/src/server/adapters/registerWorker.ts +5 -5
  301. package/src/server/adapters/retireJobs.ts +1 -1
  302. package/src/server/adapters/runSchemaPlan.ts +7 -11
  303. package/src/server/adapters/settleDeferral.ts +3 -3
  304. package/src/server/{internal/deadLetterResolutionPlan.ts → deadLetterResolutionPlan.ts} +1 -1
  305. package/src/server/{internal/deferrableAttempt.ts → deferrableAttempt.ts} +2 -2
  306. package/src/server/{internal/deferralStorePlan.ts → deferralStorePlan.ts} +2 -2
  307. package/src/server/defineSchedule.ts +1 -1
  308. package/src/server/definition.ts +1 -1
  309. package/src/server/enqueuePayload.ts +38 -0
  310. package/src/server/error.ts +1 -1
  311. package/src/server/getJob.ts +28 -0
  312. package/src/server/inspection.ts +18 -43
  313. package/src/server/inspectionJobs.ts +13 -0
  314. package/src/server/inspectionSnapshot.ts +18 -0
  315. package/src/server/{internal/jobListings.ts → jobListings.ts} +21 -17
  316. package/src/server/{internal/jobStorePlans.ts → jobStorePlans.ts} +2 -2
  317. package/src/server/{internal/runQueueWorker.ts → runQueueWorker.ts} +6 -7
  318. package/src/server/service.ts +3 -3
  319. package/src/server/services/inspection/busy.ts +6 -0
  320. package/src/server/services/inspection/changes.ts +7 -0
  321. package/src/server/services/inspection/counts.ts +7 -0
  322. package/src/server/services/inspection/deferred.ts +8 -0
  323. package/src/server/services/inspection/health.ts +10 -0
  324. package/src/server/services/inspection/queue.ts +8 -0
  325. package/src/server/services/inspection/schedules.ts +8 -0
  326. package/src/server/services/inspection/schemaVersion.ts +8 -0
  327. package/src/server/services/inspection/service.ts +20 -0
  328. package/src/server/services/inspection/snapshot.ts +8 -0
  329. package/src/server/services/inspection/storedJobs.ts +8 -0
  330. package/src/server/services/operations/counts.ts +7 -0
  331. package/src/server/services/operations/deleteQueue.ts +7 -0
  332. package/src/server/services/operations/enqueue.ts +12 -0
  333. package/src/server/services/operations/getJob.ts +6 -0
  334. package/src/server/services/operations/health.ts +9 -0
  335. package/src/server/services/operations/listJobs.ts +8 -0
  336. package/src/server/services/operations/refreshQueueStats.ts +7 -0
  337. package/src/server/services/operations/retry.ts +6 -0
  338. package/src/server/services/operations/service.ts +20 -0
  339. package/src/server/services/operations/unschedule.ts +7 -0
  340. package/src/server/{internal/storedRows.ts → storedRows.ts} +1 -1
  341. package/src/server/{internal/validateQueueNames.ts → validateQueueNames.ts} +1 -1
  342. package/dist/server/internal/PgBossInitialization.d.ts +0 -9
  343. package/dist/server/internal/PgBossInitialization.d.ts.map +0 -1
  344. package/dist/server/internal/PgBossInitialization.js +0 -4
  345. package/dist/server/internal/PgBossInitialization.js.map +0 -1
  346. package/dist/server/internal/PgBossOperations.d.ts +0 -27
  347. package/dist/server/internal/PgBossOperations.d.ts.map +0 -1
  348. package/dist/server/internal/PgBossOperations.js +0 -35
  349. package/dist/server/internal/PgBossOperations.js.map +0 -1
  350. package/dist/server/internal/acquireClient.d.ts.map +0 -1
  351. package/dist/server/internal/acquireClient.js.map +0 -1
  352. package/dist/server/internal/clientErrors.d.ts.map +0 -1
  353. package/dist/server/internal/clientErrors.js.map +0 -1
  354. package/dist/server/internal/deadLetterResolutionPlan.d.ts.map +0 -1
  355. package/dist/server/internal/deadLetterResolutionPlan.js.map +0 -1
  356. package/dist/server/internal/deadlineOf.d.ts.map +0 -1
  357. package/dist/server/internal/deadlineOf.js.map +0 -1
  358. package/dist/server/internal/deferrableAttempt.d.ts +0 -6
  359. package/dist/server/internal/deferrableAttempt.d.ts.map +0 -1
  360. package/dist/server/internal/deferrableAttempt.js.map +0 -1
  361. package/dist/server/internal/deferral.d.ts.map +0 -1
  362. package/dist/server/internal/deferral.js.map +0 -1
  363. package/dist/server/internal/deferralStorePlan.d.ts.map +0 -1
  364. package/dist/server/internal/deferralStorePlan.js.map +0 -1
  365. package/dist/server/internal/definitionOptions.d.ts.map +0 -1
  366. package/dist/server/internal/definitionOptions.js.map +0 -1
  367. package/dist/server/internal/engine.d.ts.map +0 -1
  368. package/dist/server/internal/engine.js.map +0 -1
  369. package/dist/server/internal/enqueueFor.d.ts +0 -4
  370. package/dist/server/internal/enqueueFor.d.ts.map +0 -1
  371. package/dist/server/internal/enqueueFor.js +0 -36
  372. package/dist/server/internal/enqueueFor.js.map +0 -1
  373. package/dist/server/internal/failureOutput.d.ts.map +0 -1
  374. package/dist/server/internal/failureOutput.js.map +0 -1
  375. package/dist/server/internal/initializeInspection.d.ts +0 -4
  376. package/dist/server/internal/initializeInspection.d.ts.map +0 -1
  377. package/dist/server/internal/initializeInspection.js +0 -8
  378. package/dist/server/internal/initializeInspection.js.map +0 -1
  379. package/dist/server/internal/initializeJobs.d.ts +0 -4
  380. package/dist/server/internal/initializeJobs.d.ts.map +0 -1
  381. package/dist/server/internal/initializeJobs.js +0 -4
  382. package/dist/server/internal/initializeJobs.js.map +0 -1
  383. package/dist/server/internal/jobControl.d.ts +0 -10
  384. package/dist/server/internal/jobControl.d.ts.map +0 -1
  385. package/dist/server/internal/jobControl.js.map +0 -1
  386. package/dist/server/internal/jobListings.d.ts +0 -16
  387. package/dist/server/internal/jobListings.d.ts.map +0 -1
  388. package/dist/server/internal/jobListings.js.map +0 -1
  389. package/dist/server/internal/jobStorePlans.d.ts.map +0 -1
  390. package/dist/server/internal/jobStorePlans.js.map +0 -1
  391. package/dist/server/internal/lifecycle.d.ts.map +0 -1
  392. package/dist/server/internal/lifecycle.js.map +0 -1
  393. package/dist/server/internal/makeService.d.ts +0 -6
  394. package/dist/server/internal/makeService.d.ts.map +0 -1
  395. package/dist/server/internal/makeService.js +0 -22
  396. package/dist/server/internal/makeService.js.map +0 -1
  397. package/dist/server/internal/operations/busy.d.ts +0 -3
  398. package/dist/server/internal/operations/busy.d.ts.map +0 -1
  399. package/dist/server/internal/operations/busy.js +0 -4
  400. package/dist/server/internal/operations/busy.js.map +0 -1
  401. package/dist/server/internal/operations/changes.d.ts +0 -5
  402. package/dist/server/internal/operations/changes.d.ts.map +0 -1
  403. package/dist/server/internal/operations/changes.js +0 -4
  404. package/dist/server/internal/operations/changes.js.map +0 -1
  405. package/dist/server/internal/operations/counts.d.ts +0 -3
  406. package/dist/server/internal/operations/counts.d.ts.map +0 -1
  407. package/dist/server/internal/operations/counts.js +0 -4
  408. package/dist/server/internal/operations/counts.js.map +0 -1
  409. package/dist/server/internal/operations/deadLetteredJobs.d.ts +0 -6
  410. package/dist/server/internal/operations/deadLetteredJobs.d.ts.map +0 -1
  411. package/dist/server/internal/operations/deadLetteredJobs.js +0 -4
  412. package/dist/server/internal/operations/deadLetteredJobs.js.map +0 -1
  413. package/dist/server/internal/operations/deferred.d.ts +0 -6
  414. package/dist/server/internal/operations/deferred.d.ts.map +0 -1
  415. package/dist/server/internal/operations/deferred.js +0 -4
  416. package/dist/server/internal/operations/deferred.js.map +0 -1
  417. package/dist/server/internal/operations/deleteQueue.d.ts +0 -3
  418. package/dist/server/internal/operations/deleteQueue.d.ts.map +0 -1
  419. package/dist/server/internal/operations/deleteQueue.js +0 -4
  420. package/dist/server/internal/operations/deleteQueue.js.map +0 -1
  421. package/dist/server/internal/operations/enqueue.d.ts +0 -3
  422. package/dist/server/internal/operations/enqueue.d.ts.map +0 -1
  423. package/dist/server/internal/operations/enqueue.js +0 -4
  424. package/dist/server/internal/operations/enqueue.js.map +0 -1
  425. package/dist/server/internal/operations/failedJobs.d.ts +0 -6
  426. package/dist/server/internal/operations/failedJobs.d.ts.map +0 -1
  427. package/dist/server/internal/operations/failedJobs.js +0 -4
  428. package/dist/server/internal/operations/failedJobs.js.map +0 -1
  429. package/dist/server/internal/operations/getJob.d.ts +0 -6
  430. package/dist/server/internal/operations/getJob.d.ts.map +0 -1
  431. package/dist/server/internal/operations/getJob.js +0 -4
  432. package/dist/server/internal/operations/getJob.js.map +0 -1
  433. package/dist/server/internal/operations/health.d.ts +0 -3
  434. package/dist/server/internal/operations/health.d.ts.map +0 -1
  435. package/dist/server/internal/operations/health.js +0 -4
  436. package/dist/server/internal/operations/health.js.map +0 -1
  437. package/dist/server/internal/operations/inspection.d.ts +0 -3
  438. package/dist/server/internal/operations/inspection.d.ts.map +0 -1
  439. package/dist/server/internal/operations/inspection.js +0 -4
  440. package/dist/server/internal/operations/inspection.js.map +0 -1
  441. package/dist/server/internal/operations/inspectionHealth.d.ts +0 -5
  442. package/dist/server/internal/operations/inspectionHealth.d.ts.map +0 -1
  443. package/dist/server/internal/operations/inspectionHealth.js +0 -4
  444. package/dist/server/internal/operations/inspectionHealth.js.map +0 -1
  445. package/dist/server/internal/operations/jobs.d.ts.map +0 -1
  446. package/dist/server/internal/operations/jobs.js +0 -4
  447. package/dist/server/internal/operations/jobs.js.map +0 -1
  448. package/dist/server/internal/operations/queue.d.ts +0 -3
  449. package/dist/server/internal/operations/queue.d.ts.map +0 -1
  450. package/dist/server/internal/operations/queue.js +0 -4
  451. package/dist/server/internal/operations/queue.js.map +0 -1
  452. package/dist/server/internal/operations/refreshQueueStats.d.ts +0 -3
  453. package/dist/server/internal/operations/refreshQueueStats.d.ts.map +0 -1
  454. package/dist/server/internal/operations/refreshQueueStats.js +0 -4
  455. package/dist/server/internal/operations/refreshQueueStats.js.map +0 -1
  456. package/dist/server/internal/operations/retry.d.ts +0 -3
  457. package/dist/server/internal/operations/retry.d.ts.map +0 -1
  458. package/dist/server/internal/operations/retry.js +0 -4
  459. package/dist/server/internal/operations/retry.js.map +0 -1
  460. package/dist/server/internal/operations/schedules.d.ts +0 -3
  461. package/dist/server/internal/operations/schedules.d.ts.map +0 -1
  462. package/dist/server/internal/operations/schedules.js +0 -4
  463. package/dist/server/internal/operations/schedules.js.map +0 -1
  464. package/dist/server/internal/operations/schemaVersion.d.ts +0 -3
  465. package/dist/server/internal/operations/schemaVersion.d.ts.map +0 -1
  466. package/dist/server/internal/operations/schemaVersion.js +0 -4
  467. package/dist/server/internal/operations/schemaVersion.js.map +0 -1
  468. package/dist/server/internal/operations/snapshot.d.ts +0 -3
  469. package/dist/server/internal/operations/snapshot.d.ts.map +0 -1
  470. package/dist/server/internal/operations/snapshot.js +0 -4
  471. package/dist/server/internal/operations/snapshot.js.map +0 -1
  472. package/dist/server/internal/operations/storedJobs.d.ts +0 -5
  473. package/dist/server/internal/operations/storedJobs.d.ts.map +0 -1
  474. package/dist/server/internal/operations/storedJobs.js +0 -4
  475. package/dist/server/internal/operations/storedJobs.js.map +0 -1
  476. package/dist/server/internal/operations/unschedule.d.ts +0 -3
  477. package/dist/server/internal/operations/unschedule.d.ts.map +0 -1
  478. package/dist/server/internal/operations/unschedule.js +0 -4
  479. package/dist/server/internal/operations/unschedule.js.map +0 -1
  480. package/dist/server/internal/pgBossDefinitionLayer.js.map +0 -1
  481. package/dist/server/internal/register.d.ts.map +0 -1
  482. package/dist/server/internal/register.js.map +0 -1
  483. package/dist/server/internal/registerReleasedJobs.d.ts +0 -6
  484. package/dist/server/internal/registerReleasedJobs.d.ts.map +0 -1
  485. package/dist/server/internal/registerReleasedJobs.js.map +0 -1
  486. package/dist/server/internal/retryWake.d.ts.map +0 -1
  487. package/dist/server/internal/retryWake.js.map +0 -1
  488. package/dist/server/internal/runQueueWorker.d.ts +0 -8
  489. package/dist/server/internal/runQueueWorker.d.ts.map +0 -1
  490. package/dist/server/internal/runQueueWorker.js.map +0 -1
  491. package/dist/server/internal/storedRows.d.ts.map +0 -1
  492. package/dist/server/internal/storedRows.js.map +0 -1
  493. package/dist/server/internal/tracing.d.ts.map +0 -1
  494. package/dist/server/internal/tracing.js.map +0 -1
  495. package/dist/server/internal/validateQueueNames.d.ts.map +0 -1
  496. package/dist/server/internal/validateQueueNames.js.map +0 -1
  497. package/dist/server/internal/waitForBatchExpiry.d.ts.map +0 -1
  498. package/dist/server/internal/waitForBatchExpiry.js.map +0 -1
  499. package/src/server/internal/PgBossInitialization.ts +0 -9
  500. package/src/server/internal/PgBossOperations.ts +0 -35
  501. package/src/server/internal/enqueueFor.ts +0 -44
  502. package/src/server/internal/initializeInspection.ts +0 -8
  503. package/src/server/internal/initializeJobs.ts +0 -4
  504. package/src/server/internal/jobControl.ts +0 -27
  505. package/src/server/internal/makeService.ts +0 -28
  506. package/src/server/internal/operations/busy.ts +0 -5
  507. package/src/server/internal/operations/changes.ts +0 -5
  508. package/src/server/internal/operations/counts.ts +0 -5
  509. package/src/server/internal/operations/deadLetteredJobs.ts +0 -5
  510. package/src/server/internal/operations/deferred.ts +0 -5
  511. package/src/server/internal/operations/deleteQueue.ts +0 -5
  512. package/src/server/internal/operations/enqueue.ts +0 -5
  513. package/src/server/internal/operations/failedJobs.ts +0 -5
  514. package/src/server/internal/operations/getJob.ts +0 -5
  515. package/src/server/internal/operations/health.ts +0 -5
  516. package/src/server/internal/operations/inspection.ts +0 -5
  517. package/src/server/internal/operations/inspectionHealth.ts +0 -5
  518. package/src/server/internal/operations/jobs.ts +0 -5
  519. package/src/server/internal/operations/queue.ts +0 -5
  520. package/src/server/internal/operations/refreshQueueStats.ts +0 -5
  521. package/src/server/internal/operations/retry.ts +0 -5
  522. package/src/server/internal/operations/schedules.ts +0 -5
  523. package/src/server/internal/operations/schemaVersion.ts +0 -5
  524. package/src/server/internal/operations/snapshot.ts +0 -5
  525. package/src/server/internal/operations/storedJobs.ts +0 -5
  526. package/src/server/internal/operations/unschedule.ts +0 -5
  527. /package/dist/server/{internal/acquireClient.js → acquireClient.js} +0 -0
  528. /package/dist/server/{internal → adapters}/countsFor.d.ts +0 -0
  529. /package/dist/server/{internal → adapters}/ensureQueue.d.ts +0 -0
  530. /package/dist/server/{internal → adapters}/ensureQueue.js +0 -0
  531. /package/dist/server/{internal → adapters}/healthFor.d.ts +0 -0
  532. /package/dist/server/{internal → adapters}/healthFor.js +0 -0
  533. /package/dist/server/{internal → adapters}/pgBossDefinitionLayer.d.ts +0 -0
  534. /package/dist/server/{internal/clientErrors.d.ts → clientErrors.d.ts} +0 -0
  535. /package/dist/server/{internal/clientErrors.js → clientErrors.js} +0 -0
  536. /package/dist/server/{internal/deadLetterResolutionPlan.d.ts → deadLetterResolutionPlan.d.ts} +0 -0
  537. /package/dist/server/{internal/deadlineOf.d.ts → deadlineOf.d.ts} +0 -0
  538. /package/dist/server/{internal/deadlineOf.js → deadlineOf.js} +0 -0
  539. /package/dist/server/{internal/deferral.d.ts → deferral.d.ts} +0 -0
  540. /package/dist/server/{internal/deferral.js → deferral.js} +0 -0
  541. /package/dist/server/{internal/deferralStorePlan.d.ts → deferralStorePlan.d.ts} +0 -0
  542. /package/dist/server/{internal/definitionOptions.d.ts → definitionOptions.d.ts} +0 -0
  543. /package/dist/server/{internal/definitionOptions.js → definitionOptions.js} +0 -0
  544. /package/dist/server/{internal/engine.d.ts → engine.d.ts} +0 -0
  545. /package/dist/server/{internal/engine.js → engine.js} +0 -0
  546. /package/dist/server/{internal/failureOutput.d.ts → failureOutput.d.ts} +0 -0
  547. /package/dist/server/{internal/failureOutput.js → failureOutput.js} +0 -0
  548. /package/dist/server/{internal/jobStorePlans.d.ts → jobStorePlans.d.ts} +0 -0
  549. /package/dist/server/{internal/lifecycle.d.ts → lifecycle.d.ts} +0 -0
  550. /package/dist/server/{internal/lifecycle.js → lifecycle.js} +0 -0
  551. /package/dist/server/{internal/retryWake.d.ts → retryWake.d.ts} +0 -0
  552. /package/dist/server/{internal/retryWake.js → retryWake.js} +0 -0
  553. /package/dist/server/{internal/storedRows.d.ts → storedRows.d.ts} +0 -0
  554. /package/dist/server/{internal/tracing.d.ts → tracing.d.ts} +0 -0
  555. /package/dist/server/{internal/tracing.js → tracing.js} +0 -0
  556. /package/dist/server/{internal/validateQueueNames.d.ts → validateQueueNames.d.ts} +0 -0
  557. /package/dist/server/{internal/waitForBatchExpiry.d.ts → waitForBatchExpiry.d.ts} +0 -0
  558. /package/dist/server/{internal/waitForBatchExpiry.js → waitForBatchExpiry.js} +0 -0
  559. /package/src/server/{internal/acquireClient.ts → acquireClient.ts} +0 -0
  560. /package/src/server/{internal → adapters}/ensureQueue.ts +0 -0
  561. /package/src/server/{internal → adapters}/healthFor.ts +0 -0
  562. /package/src/server/{internal/clientErrors.ts → clientErrors.ts} +0 -0
  563. /package/src/server/{internal/deadlineOf.ts → deadlineOf.ts} +0 -0
  564. /package/src/server/{internal/deferral.ts → deferral.ts} +0 -0
  565. /package/src/server/{internal/definitionOptions.ts → definitionOptions.ts} +0 -0
  566. /package/src/server/{internal/engine.ts → engine.ts} +0 -0
  567. /package/src/server/{internal/failureOutput.ts → failureOutput.ts} +0 -0
  568. /package/src/server/{internal/lifecycle.ts → lifecycle.ts} +0 -0
  569. /package/src/server/{internal/retryWake.ts → retryWake.ts} +0 -0
  570. /package/src/server/{internal/tracing.ts → tracing.ts} +0 -0
  571. /package/src/server/{internal/waitForBatchExpiry.ts → waitForBatchExpiry.ts} +0 -0
@@ -0,0 +1,31 @@
1
+ import { Context, Effect } from "effect";
2
+ import { inspection } from "#server/adapters/inspection.ts";
3
+ import { enqueuePayload } from "#server/enqueuePayload.ts";
4
+ import { getJob } from "#server/getJob.ts";
5
+ import { deadLetteredJobs, failedJobs } from "#server/jobListings.ts";
6
+ import type { PgBossService } from "#server/service.ts";
7
+ import { PgBossOperations } from "#server/services/operations/service.ts";
8
+
9
+ export const makeService = Effect.fnUntraced(function* (): Effect.fn.Return<
10
+ PgBossService,
11
+ never,
12
+ "@shivaedev/jobs/PgBossOperations" | "@shivaedev/jobs/PgBossInspectionReads"
13
+ > {
14
+ const ambient = yield* Effect.context<"@shivaedev/jobs/PgBossOperations">();
15
+ const context = Context.pick(PgBossOperations)(ambient);
16
+ const operations = yield* PgBossOperations;
17
+ const reads = yield* inspection();
18
+ return {
19
+ counts: operations.counts,
20
+ deadLetteredJobs: (queue, options) => deadLetteredJobs(queue, options).pipe(Effect.provide(context)),
21
+ deleteQueue: operations.deleteQueue,
22
+ enqueue: (queue, payload, options) => enqueuePayload(queue, payload, options).pipe(Effect.provide(context)),
23
+ failedJobs: (queue, options) => failedJobs(queue, options).pipe(Effect.provide(context)),
24
+ getJob: (queue, id) => getJob(queue, id).pipe(Effect.provide(context)),
25
+ health: operations.health,
26
+ inspection: () => Effect.succeed(reads),
27
+ refreshQueueStats: operations.refreshQueueStats,
28
+ retry: (queue, id) => operations.retry(queue.name, id),
29
+ unschedule: operations.unschedule,
30
+ };
31
+ });
@@ -0,0 +1,23 @@
1
+ import { Effect, Layer } from "effect";
2
+ import { JobEngine } from "#server/engine.ts";
3
+ import { InspectionEngine } from "#server/InspectionEngine.ts";
4
+ import { JobQueues } from "#server/JobQueues.ts";
5
+ import { PgBoss } from "#server/PgBoss.ts";
6
+ import { PgBossInspectionReads } from "#server/services/inspection/service.ts";
7
+ import { PgBossOperations } from "#server/services/operations/service.ts";
8
+ import { inspectionReads } from "./inspectionReads.ts";
9
+ import { jobEngine } from "./jobEngine.ts";
10
+ export function operationsLayer(names: readonly string[]) {
11
+ return Layer.unwrap(
12
+ Effect.gen(function* () {
13
+ const acquired = yield* PgBoss;
14
+ const ports = Layer.mergeAll(
15
+ Layer.succeed(JobEngine, jobEngine(acquired.client, acquired.schema)),
16
+ Layer.succeed(InspectionEngine, inspectionReads(acquired.client, acquired.schema ?? "pgboss")),
17
+ Layer.succeed(JobQueues, names),
18
+ Layer.succeed(PgBoss, acquired),
19
+ );
20
+ return Layer.mergeAll(Layer.fresh(PgBossOperations.layer), Layer.fresh(PgBossInspectionReads.layer)).pipe(Layer.provide(ports));
21
+ }),
22
+ );
23
+ }
@@ -1,19 +1,16 @@
1
1
  import { type Context, Effect, Exit, Layer, Scope } from "effect";
2
2
  import { clientErrorReporter } from "#server/adapters/clientErrorReporter.ts";
3
3
  import { clientErrorSubscription } from "#server/adapters/clientErrorSubscription.ts";
4
- import { jobEngine } from "#server/adapters/jobEngine.ts";
4
+ import { logClientError } from "#server/clientErrors.ts";
5
5
  import type { JobRegistration, RegistrationRequirements } from "#server/definition.ts";
6
6
  import type { PgBossError, PgBossQueueNamesError, PgBossQueueOptionsError } from "#server/error.ts";
7
7
  import { PgBoss } from "#server/PgBoss.ts";
8
8
  import type { PgBossLayerOptions, PgBossService } from "#server/service.ts";
9
- import { logClientError } from "./clientErrors.ts";
10
- import { JobEngine } from "./engine.ts";
9
+ import { validateQueueNames } from "#server/validateQueueNames.ts";
11
10
  import { makeService } from "./makeService.ts";
12
- import { PgBossInitialization } from "./PgBossInitialization.ts";
13
- import { PgBossOperations } from "./PgBossOperations.ts";
11
+ import { operationsLayer } from "./operationsLayer.ts";
14
12
  import { registrationName } from "./register.ts";
15
13
  import { registerReleasedJobs } from "./registerReleasedJobs.ts";
16
- import { validateQueueNames } from "./validateQueueNames.ts";
17
14
 
18
15
  export function pgBossDefinitionLayer<TIdentifier extends string, const TRegistrations extends readonly JobRegistration[], E>(
19
16
  Service: Context.Service<TIdentifier, PgBossService>,
@@ -31,10 +28,7 @@ export function pgBossDefinitionLayer<TIdentifier extends string, R, E>(
31
28
  ) {
32
29
  return Layer.unwrap(
33
30
  Effect.map(Effect.context<Exclude<R, TIdentifier> | E>(), (dependencies) =>
34
- Layer.effect(Service, PgBossOperations).pipe(
35
- Layer.provide(Layer.fresh(PgBossOperations.layer)),
36
- Layer.provide(Layer.succeed(PgBossInitialization, initializePgBoss(Service, options, dependencies, queueNames))),
37
- ),
31
+ Layer.effect(Service, initializePgBoss(Service, options, dependencies, queueNames)),
38
32
  ),
39
33
  );
40
34
  }
@@ -48,16 +42,15 @@ const initializePgBoss = Effect.fnUntraced(function* <TIdentifier extends string
48
42
  yield* validateQueueNames(options.jobs, queueNames);
49
43
  const acquired = yield* PgBoss;
50
44
  const workerScope = yield* Scope.make();
51
- const service = yield* makeService(acquired.client, options.jobs.map(registrationName), acquired.schema).pipe(
52
- Effect.provideService(JobEngine, jobEngine(acquired.client, acquired.schema)),
53
- );
45
+ const services = yield* Layer.build(operationsLayer(options.jobs.map(registrationName)));
46
+ const service = yield* makeService().pipe(Effect.provide(services));
54
47
  yield* Effect.gen(function* () {
55
48
  const context = yield* Effect.context<R | E>();
56
49
  const reportError = options.onError ?? logClientError;
57
50
  const report = yield* clientErrorReporter(reportError).pipe(Effect.provide(context));
58
51
  const unsubscribe = yield* clientErrorSubscription(acquired.client, report);
59
52
  yield* Effect.addFinalizer(() => Scope.close(workerScope, Exit.void).pipe(Effect.ensuring(Effect.sync(unsubscribe))));
60
- yield* registerReleasedJobs(acquired.client, options.jobs, context, acquired.reused, acquired.schema, acquired.stop, options.retired).pipe(
53
+ yield* registerReleasedJobs(acquired.client, options.jobs, acquired.reused, acquired.schema, acquired.stop, options.retired).pipe(
61
54
  Effect.provideService(Scope.Scope, workerScope),
62
55
  );
63
56
  }).pipe(Effect.provideService(Service, service), Effect.provide(dependencies));
@@ -1,12 +1,12 @@
1
- import { type Context, Effect, Scope } from "effect";
1
+ import { Effect, Scope } from "effect";
2
2
  import { registerWorker } from "#server/adapters/registerWorker.ts";
3
3
  import { workerDiagnostics } from "#server/adapters/workerDiagnostics.ts";
4
4
  import type { PgBossClient } from "#server/client.ts";
5
5
  import type { StopOptions } from "#server/clientOptions.ts";
6
6
  import type { JobPayloadSchema, JobRegistration, QueueDefinition, QueueWorker, ScheduleDefinition, ScheduledWorker } from "#server/definition.ts";
7
7
  import { PgBossQueueOptionsError, toPgBossError } from "#server/error.ts";
8
- import { ensureQueue } from "#server/internal/ensureQueue.ts";
9
- import { runQueueWorker } from "#server/internal/runQueueWorker.ts";
8
+ import { runQueueWorker } from "#server/runQueueWorker.ts";
9
+ import { ensureQueue } from "./ensureQueue.ts";
10
10
 
11
11
  function registrationDefinition(registration: JobRegistration): QueueDefinition | ScheduleDefinition {
12
12
  if (registration._tag === "QueueDefinition") {
@@ -39,8 +39,6 @@ const prepareQueues = Effect.fnUntraced(function* (client: PgBossClient, registr
39
39
  const registerQueue = Effect.fnUntraced(function* <R>(
40
40
  client: PgBossClient,
41
41
  registration: QueueWorker<JobPayloadSchema & { readonly DecodingServices: R }, R> | QueueDefinition,
42
- context: Context.Context<R>,
43
- scope: Scope.Scope,
44
42
  schema: string,
45
43
  stop: StopOptions | undefined,
46
44
  ) {
@@ -53,33 +51,21 @@ const registerQueue = Effect.fnUntraced(function* <R>(
53
51
  client,
54
52
  name,
55
53
  queue.workerOptions,
56
- (job, deadline) => runQueueWorker(registration, job, deadline, client, schema),
57
- scope,
54
+ (job, deadline) => runQueueWorker(registration, job, deadline),
58
55
  schema,
59
56
  queue.maxDeferrals,
60
57
  stop,
61
- ).pipe(Effect.provide(context));
58
+ );
62
59
  });
63
60
 
64
61
  const registerSchedule = Effect.fnUntraced(function* <R>(
65
62
  client: PgBossClient,
66
63
  worker: ScheduledWorker<R>,
67
- context: Context.Context<R>,
68
- scope: Scope.Scope,
69
64
  schema: string,
70
65
  stop: StopOptions | undefined,
71
66
  ) {
72
67
  const { schedule } = worker;
73
- yield* registerWorker(
74
- client,
75
- schedule.name,
76
- schedule.workerOptions,
77
- () => workerDiagnostics(worker.effect),
78
- scope,
79
- schema,
80
- schedule.maxDeferrals,
81
- stop,
82
- ).pipe(Effect.provide(context));
68
+ yield* registerWorker(client, schedule.name, schedule.workerOptions, () => workerDiagnostics(worker.effect), schema, schedule.maxDeferrals, stop);
83
69
  yield* Effect.tryPromise({
84
70
  catch: (error) => toPgBossError("register", error, schedule.name),
85
71
  try: () => client.schedule(schedule.name, schedule.cron, null, schedule.scheduleOptions),
@@ -97,7 +83,6 @@ export function registrationNames(registrations: readonly JobRegistration[]): re
97
83
  export const registerJobs = Effect.fnUntraced(function* <R>(
98
84
  client: PgBossClient,
99
85
  registrations: readonly JobRegistration<R>[],
100
- context: Context.Context<R>,
101
86
  replaceWorkers: boolean,
102
87
  schema = "pgboss",
103
88
  startWorkers = true,
@@ -111,9 +96,9 @@ export const registerJobs = Effect.fnUntraced(function* <R>(
111
96
  }
112
97
  for (const registration of registrations) {
113
98
  if (registration._tag === "QueueWorker" || registration._tag === "QueueDefinition") {
114
- yield* registerQueue(client, registration, context, scope, schema, stop);
99
+ yield* registerQueue(client, registration, schema, stop).pipe(Effect.provideService(Scope.Scope, scope));
115
100
  } else {
116
- yield* registerSchedule(client, registration, context, scope, schema, stop);
101
+ yield* registerSchedule(client, registration, schema, stop).pipe(Effect.provideService(Scope.Scope, scope));
117
102
  }
118
103
  }
119
104
  });
@@ -1,32 +1,33 @@
1
- import { type Context, Effect, Option, Scope } from "effect";
2
- import { WorkerRelease } from "@shivaedev/sql/WorkerRelease.ts";
1
+ import { Effect, Option, Scope } from "effect";
2
+ import { WorkerRelease } from "@shivaedev/sql/worker-release/service.ts";
3
3
  import { retireJobs } from "#server/adapters/retireJobs.ts";
4
4
  import type { PgBossClient } from "#server/client.ts";
5
5
  import type { StopOptions } from "#server/clientOptions.ts";
6
6
  import type { JobRegistration } from "#server/definition.ts";
7
7
  import { toPgBossError } from "#server/error.ts";
8
+ import type { PgBoss } from "#server/PgBoss.ts";
8
9
  import { registerJobs, registrationName } from "./register.ts";
9
10
 
10
11
  export const registerReleasedJobs = Effect.fnUntraced(function* <R>(
11
12
  client: PgBossClient,
12
13
  jobs: readonly JobRegistration<R>[],
13
- context: Context.Context<R>,
14
14
  replaceWorkers: boolean,
15
15
  schema: string | undefined,
16
16
  stop: StopOptions | undefined,
17
17
  retired: readonly string[] = [],
18
18
  ) {
19
+ const context = yield* Effect.context<R | PgBoss>();
19
20
  const signal = yield* Effect.serviceOption(WorkerRelease);
20
21
  const workers = jobs.filter((job) => job._tag !== "QueueDefinition");
21
22
  const scope = yield* Effect.scope;
22
23
  const register = retireJobs(client, jobs, retired).pipe(
23
- Effect.andThen(registerJobs(client, jobs, context, replaceWorkers, schema, true, stop)),
24
+ Effect.andThen(registerJobs(client, jobs, replaceWorkers, schema, true, stop)),
24
25
  Effect.provideService(Scope.Scope, scope),
25
26
  );
26
27
  if (Option.isNone(signal) || (workers.length === 0 && retired.length === 0)) {
27
28
  return yield* register;
28
29
  }
29
- yield* registerJobs(client, jobs, context, replaceWorkers, schema, false, stop);
30
+ yield* registerJobs(client, jobs, replaceWorkers, schema, false, stop);
30
31
  let working = replaceWorkers;
31
32
  let paused = false;
32
33
  yield* signal.value.register((active) =>
@@ -2,12 +2,12 @@ import { Effect, Fiber, Scope } from "effect";
2
2
  import { batchHandler } from "#server/adapters/batchHandler.ts";
3
3
  import type { PgBossClient } from "#server/client.ts";
4
4
  import type { StopOptions } from "#server/clientOptions.ts";
5
+ import { deferrableAttempt } from "#server/deferrableAttempt.ts";
6
+ import { JobEngine } from "#server/engine.ts";
5
7
  import { toPgBossError } from "#server/error.ts";
6
- import { deferrableAttempt } from "#server/internal/deferrableAttempt.ts";
7
- import { JobEngine } from "#server/internal/engine.ts";
8
- import { retryWake } from "#server/internal/retryWake.ts";
9
- import { traceJob } from "#server/internal/tracing.ts";
10
8
  import type { WorkerJob } from "#server/job.ts";
9
+ import { retryWake } from "#server/retryWake.ts";
10
+ import { traceJob } from "#server/tracing.ts";
11
11
  import type { WorkerOptions } from "#server/workerOptions.ts";
12
12
  import { jobEngine } from "./jobEngine.ts";
13
13
 
@@ -16,11 +16,11 @@ export const registerWorker = Effect.fnUntraced(function* <R>(
16
16
  name: string,
17
17
  options: WorkerOptions,
18
18
  run: (job: WorkerJob<unknown>, deadline: number) => Effect.Effect<unknown, unknown, R>,
19
- scope: Scope.Scope,
20
19
  schema: string,
21
20
  maxDeferrals: number,
22
21
  stop?: StopOptions,
23
22
  ) {
23
+ const scope = yield* Effect.scope;
24
24
  const execute = Effect.runPromiseWith(yield* Effect.context<R>());
25
25
  const workerScope = yield* Scope.fork(scope);
26
26
  const fibers = yield* Scope.fork(workerScope);
@@ -1,9 +1,9 @@
1
1
  import { Effect } from "effect";
2
+ import { registrationNames } from "#server/adapters/register.ts";
2
3
  import type { PgBossClient } from "#server/client.ts";
3
4
  import type { JobRegistration } from "#server/definition.ts";
4
5
  import { toPgBossError } from "#server/error.ts";
5
6
  import { deadLetterQueueName } from "#server/health.ts";
6
- import { registrationNames } from "#server/internal/register.ts";
7
7
 
8
8
  export const retireJobs = Effect.fnUntraced(function* (client: PgBossClient, jobs: readonly JobRegistration[], retired: readonly string[]) {
9
9
  yield* Effect.try({
@@ -1,13 +1,9 @@
1
- import type { Effect } from "effect";
2
- import type { Connection } from "effect/sql/SqlConnection";
1
+ import { Effect } from "effect";
2
+ import { SchemaConnection } from "#server/SchemaConnection.ts";
3
3
  import { pendingIndexInserts } from "./schemaIndexBuilds.ts";
4
4
 
5
- export async function runSchemaPlan(
6
- connection: Connection,
7
- plan: string,
8
- run: <A, E>(effect: Effect.Effect<A, E>) => Promise<A>,
9
- upgrade?: { readonly schema: string; readonly version: number },
10
- ): Promise<void> {
5
+ export const runSchemaPlan = Effect.fnUntraced(function* (plan: string, upgrade?: { readonly schema: string; readonly version: number }) {
6
+ const connection = yield* SchemaConnection;
11
7
  // Native exported plans append concurrent index DDL after the migration transaction.
12
8
  const parts = /^\s*BEGIN;(?<body>[\s\S]*)\n {4}COMMIT;(?<concurrent>[\s\S]*)$/u.exec(plan);
13
9
  if (parts?.groups === undefined) {
@@ -23,10 +19,10 @@ export async function runSchemaPlan(
23
19
  .filter((statement) => statement.trim() !== "");
24
20
  const pending = upgrade === undefined ? "" : pendingIndexInserts(upgrade.schema, upgrade.version, commands, quote);
25
21
  // Effect SQL uses the extended protocol, which accepts one statement per command.
26
- await run(connection.executeRaw(`DO ${quote(`BEGIN EXECUTE ${quote(`${body}\n${pending}`)}; END`)}`, []));
22
+ yield* connection.executeRaw(`DO ${quote(`BEGIN EXECUTE ${quote(`${body}\n${pending}`)}; END`)}`, []);
27
23
  if (upgrade === undefined) {
28
24
  for (const statement of commands) {
29
- await run(connection.executeRaw(statement, []));
25
+ yield* connection.executeRaw(statement, []);
30
26
  }
31
27
  }
32
- }
28
+ });
@@ -1,8 +1,8 @@
1
1
  import { Schema } from "effect";
2
2
  import type { PgBossClient } from "#server/client.ts";
3
- import { STATELY_DEFERRAL_POLICY } from "#server/internal/deferral.ts";
4
- import type { JobAttempt } from "#server/internal/engine.ts";
5
- import { quotedSchema } from "#server/internal/storedRows.ts";
3
+ import { STATELY_DEFERRAL_POLICY } from "#server/deferral.ts";
4
+ import type { JobAttempt } from "#server/engine.ts";
5
+ import { quotedSchema } from "#server/storedRows.ts";
6
6
  import { localInspectionChanges } from "./localInspectionChanges.ts";
7
7
 
8
8
  const Settlement = Schema.Struct({ claimed: Schema.Boolean, deferred: Schema.Boolean });
@@ -1,4 +1,4 @@
1
- import { quotedSchema } from "#server/internal/storedRows.ts";
1
+ import { quotedSchema } from "#server/storedRows.ts";
2
2
 
3
3
  export function deadLetterResolutionPlan(schema: string): string {
4
4
  const quoted = quotedSchema(schema);
@@ -1,7 +1,7 @@
1
1
  import { Clock, DateTime, Effect, Schema } from "effect";
2
+ import { deferredAttempt } from "#server/deferral.ts";
2
3
  import { RetryAt } from "#server/definition.ts";
3
- import { deferredAttempt } from "#server/internal/deferral.ts";
4
- import { type JobAttempt, JobEngine } from "#server/internal/engine.ts";
4
+ import { type JobAttempt, JobEngine } from "#server/engine.ts";
5
5
 
6
6
  const recordDeferral = Effect.fnUntraced(function* (at: string, reason: string) {
7
7
  const span = yield* Effect.currentSpan.pipe(Effect.orDie);
@@ -1,5 +1,5 @@
1
- import { STATELY_DEFERRAL_POLICY } from "#server/internal/deferral.ts";
2
- import { quotedSchema } from "#server/internal/storedRows.ts";
1
+ import { STATELY_DEFERRAL_POLICY } from "#server/deferral.ts";
2
+ import { quotedSchema } from "#server/storedRows.ts";
3
3
 
4
4
  export function deferralStorePlan(schema: string): string {
5
5
  const quoted = quotedSchema(schema);
@@ -1,5 +1,5 @@
1
1
  import type { DefineScheduleOptions, ScheduleDefinition } from "#server/definition.ts";
2
- import { maxDeferrals, nativeQueueOptions } from "#server/internal/definitionOptions.ts";
2
+ import { maxDeferrals, nativeQueueOptions } from "#server/definitionOptions.ts";
3
3
 
4
4
  export function defineSchedule<const TName extends string>(options: DefineScheduleOptions<TName>): ScheduleDefinition<TName> {
5
5
  const definition: ScheduleDefinition<TName> = {
@@ -1,7 +1,7 @@
1
1
  import { Clock, Duration, Effect, Schema } from "effect";
2
2
  import type { QueueDisplay, SubjectColumn } from "#display.ts";
3
+ import { maxDeferrals, nativeQueueOptions } from "#server/definitionOptions.ts";
3
4
  import type { ScheduleOptions } from "#server/enqueueOptions.ts";
4
- import { maxDeferrals, nativeQueueOptions } from "#server/internal/definitionOptions.ts";
5
5
  import type { WorkerJob } from "#server/job.ts";
6
6
  import type { QueueOptions, QueuePolicy } from "#server/queueOptions.ts";
7
7
  import type { WorkerOptions } from "#server/workerOptions.ts";
@@ -0,0 +1,38 @@
1
+ import { Effect, Redacted, Schema } from "effect";
2
+ import { payloadJobId, payloadKey } from "#server/adapters/payloadIdentity.ts";
3
+ import type { JobPayloadSchema, QueueDefinition } from "#server/definition.ts";
4
+ import type { EnqueueOptions, QueueEnqueueOptions } from "#server/enqueueOptions.ts";
5
+ import { PgBossPayloadError } from "#server/error.ts";
6
+ import { PgBossOperations } from "#server/services/operations/service.ts";
7
+ import { capturePayload } from "#server/tracing.ts";
8
+
9
+ function identityOptions(queue: Pick<QueueDefinition, "id" | "key" | "name">, payload: object, options?: EnqueueOptions) {
10
+ return queue.id === undefined && queue.key === undefined
11
+ ? options
12
+ : {
13
+ ...options,
14
+ ...(queue.id === undefined ? {} : { id: payloadJobId(queue.name, queue.id, payload) }),
15
+ ...(queue.key === undefined ? {} : { singletonKey: payloadKey(queue.key, payload) }),
16
+ };
17
+ }
18
+
19
+ export const enqueuePayload = Effect.fnUntraced(function* <
20
+ const TName extends string,
21
+ const TPayload extends JobPayloadSchema,
22
+ const TQueue extends QueueDefinition<TName, TPayload>,
23
+ >(queue: QueueDefinition<TName, TPayload> & TQueue, payload: NoInfer<Schema.Schema.Type<TPayload>>, options?: NoInfer<QueueEnqueueOptions<TQueue>>) {
24
+ const operations = yield* PgBossOperations;
25
+ const encoded = yield* Schema.encodeUnknownEffect(Schema.toCodecJson(queue.schema))(payload).pipe(
26
+ Effect.mapError((error) => new PgBossPayloadError({ direction: "encode", original: Redacted.make(error), queue: queue.name })),
27
+ );
28
+ if (typeof encoded !== "object" || encoded === null) {
29
+ return yield* new PgBossPayloadError({
30
+ direction: "encode",
31
+ original: Redacted.make(new TypeError("pg-boss payloads must encode to objects")),
32
+ queue: queue.name,
33
+ });
34
+ }
35
+ const data = yield* capturePayload(encoded);
36
+ const sendOptions = identityOptions(queue, payload, options);
37
+ return yield* operations.enqueue(queue.name, data, sendOptions);
38
+ });
@@ -1,5 +1,5 @@
1
1
  import { Cause, Data, Redacted } from "effect";
2
- import { failureOutput } from "#server/internal/failureOutput.ts";
2
+ import { failureOutput } from "#server/failureOutput.ts";
3
3
 
4
4
  export type PgBossOperation =
5
5
  | "counts"
@@ -0,0 +1,28 @@
1
+ import type { Schema } from "effect";
2
+ import { Effect, Option } from "effect";
3
+ import { redact } from "@shivaedev/errors/redact.ts";
4
+ import { deferralOf } from "#server/deferral.ts";
5
+ import type { JobPayloadSchema } from "#server/definition.ts";
6
+ import { readJobFailure } from "#server/readJobFailure.ts";
7
+ import { PgBossOperations } from "#server/services/operations/service.ts";
8
+ import { decodeStoredData } from "#server/storedRows.ts";
9
+
10
+ export const getJob = Effect.fnUntraced(function* <const TName extends string, const TPayload extends JobPayloadSchema | typeof Schema.Null>(
11
+ queue: { readonly name: TName; readonly schema: TPayload },
12
+ id: string,
13
+ ) {
14
+ const engine = yield* PgBossOperations;
15
+ return yield* engine.getJob(queue.name, id).pipe(
16
+ Effect.flatMap(
17
+ Effect.fnUntraced(function* (job) {
18
+ if (job === undefined) {
19
+ return Option.none();
20
+ }
21
+ const data = yield* decodeStoredData(queue, job.data);
22
+ const output = deferralOf(job) === undefined ? yield* readJobFailure(queue.name, job.output) : job.output;
23
+ const sourceOutput = yield* readJobFailure(queue.name, job.sourceOutput);
24
+ return Option.some({ ...job, data: redact(data), output, sourceOutput });
25
+ }),
26
+ ),
27
+ );
28
+ });
@@ -1,25 +1,12 @@
1
- import type { DateTime } from "effect";
2
- import { defineService } from "@shivaedev/service/defineService.ts";
3
- import { genericMethod } from "@shivaedev/service/genericMethod.ts";
1
+ import type { DateTime, Effect, Schema } from "effect";
2
+ import { Context } from "effect";
4
3
  import type { inspectionChanges } from "#server/adapters/inspectionChanges.ts";
4
+ import { inspectionLayer } from "#server/adapters/inspectionLayer.ts";
5
5
  import type { inspectionReads } from "#server/adapters/inspectionReads.ts";
6
+ import type { JobReadOptions } from "#server/client.ts";
6
7
  import type { JobPayloadSchema, QueueDefinition } from "#server/definition.ts";
7
- import { initializeInspection } from "#server/internal/initializeInspection.ts";
8
- import { busy } from "#server/internal/operations/busy.ts";
9
- import { changes } from "#server/internal/operations/changes.ts";
10
- import { counts } from "#server/internal/operations/counts.ts";
11
- import { deadLetteredJobs } from "#server/internal/operations/deadLetteredJobs.ts";
12
- import { deferred } from "#server/internal/operations/deferred.ts";
13
- import { failedJobs } from "#server/internal/operations/failedJobs.ts";
14
- import { getJob } from "#server/internal/operations/getJob.ts";
15
- import { inspectionHealth } from "#server/internal/operations/inspectionHealth.ts";
16
- import { jobs } from "#server/internal/operations/jobs.ts";
17
- import { queue } from "#server/internal/operations/queue.ts";
18
- import { schedules } from "#server/internal/operations/schedules.ts";
19
- import { schemaVersion } from "#server/internal/operations/schemaVersion.ts";
20
- import { snapshot } from "#server/internal/operations/snapshot.ts";
21
- import { storedJobs } from "#server/internal/operations/storedJobs.ts";
22
- import { PgBoss } from "#server/PgBoss.ts";
8
+ import type { PgBossError, PgBossPayloadError } from "#server/error.ts";
9
+ import type { Job } from "#server/job.ts";
23
10
  import type { PgBossService } from "#server/service.ts";
24
11
 
25
12
  export type SnapshotQueue = Pick<QueueDefinition<string, JobPayloadSchema>, "name" | "schema">;
@@ -32,30 +19,18 @@ export interface UnfinishedJob<TQueue extends SnapshotQueue> {
32
19
  readonly state: "active" | "created" | "deferred" | "failed" | "retry";
33
20
  }
34
21
 
35
- export const PgBossInspection = defineService({
36
- id: "@shivaedev/jobs/PgBossInspection",
37
- initialize: initializeInspection,
38
- methods: (service) => ({
39
- busy: busy(service),
40
- changes: changes(service),
41
- counts: counts(service),
42
- deadLetteredJobs: genericMethod(deadLetteredJobs(service)),
43
- deferred: deferred(service),
44
- failedJobs: genericMethod(failedJobs(service)),
45
- getJob: genericMethod(getJob(service)),
46
- health: inspectionHealth(service),
47
- jobs: genericMethod(jobs(service)),
48
- queue: queue(service),
49
- schedules: schedules(service),
50
- schemaVersion: schemaVersion(service),
51
- snapshot: genericMethod(snapshot(service)),
52
- storedJobs: storedJobs(service),
53
- }),
54
- requires: [PgBoss] as const,
55
- });
56
-
57
- export type PgBossInspectionService = ReturnType<typeof inspectionReads> &
58
- Pick<PgBossService, "counts" | "deadLetteredJobs" | "failedJobs" | "getJob"> & {
22
+ export type PgBossInspectionService = Omit<ReturnType<typeof inspectionReads>, "snapshot"> & {
23
+ readonly jobs: <TName extends string, TPayload extends JobPayloadSchema | typeof Schema.Null>(
24
+ queue: { readonly name: TName; readonly schema: TPayload },
25
+ options?: JobReadOptions,
26
+ ) => Effect.Effect<Job<TPayload["Type"]>[], PgBossError | PgBossPayloadError, TPayload["DecodingServices"]>;
27
+ readonly snapshot: <const TQueues extends readonly SnapshotQueue[]>(
28
+ queues: TQueues,
29
+ ) => Effect.Effect<readonly UnfinishedJob<TQueues[number]>[], PgBossPayloadError | PgBossError, TQueues[number]["schema"]["DecodingServices"]>;
30
+ } & Pick<PgBossService, "counts" | "deadLetteredJobs" | "failedJobs" | "getJob"> & {
59
31
  readonly health: (queues: readonly { readonly name: string }[]) => ReturnType<PgBossService["health"]>;
60
32
  readonly changes: (queue?: { readonly name: string }) => ReturnType<typeof inspectionChanges>;
61
33
  };
34
+
35
+ const Inspection = Context.Service<"@shivaedev/jobs/PgBossInspection", PgBossInspectionService>("@shivaedev/jobs/PgBossInspection");
36
+ export const PgBossInspection = Object.assign(Inspection, { layer: inspectionLayer(Inspection) });
@@ -0,0 +1,13 @@
1
+ import { Effect, type Schema } from "effect";
2
+ import type { JobReadOptions } from "#server/client.ts";
3
+ import type { JobPayloadSchema } from "#server/definition.ts";
4
+ import { PgBossInspectionReads } from "#server/services/inspection/service.ts";
5
+ import { decodeStoredData } from "#server/storedRows.ts";
6
+ export const inspectionJobs = Effect.fnUntraced(function* <TName extends string, TPayload extends JobPayloadSchema | typeof Schema.Null>(
7
+ queue: { readonly name: TName; readonly schema: TPayload },
8
+ options?: JobReadOptions,
9
+ ) {
10
+ const inspection = yield* PgBossInspectionReads;
11
+ const rows = yield* inspection.storedJobs(queue, options);
12
+ return yield* Effect.forEach(rows, (job) => decodeStoredData(queue, job.data).pipe(Effect.map((data) => ({ ...job, data }))));
13
+ });
@@ -0,0 +1,18 @@
1
+ import { Effect } from "effect";
2
+ import type { SnapshotQueue, UnfinishedJob } from "#server/inspection.ts";
3
+ import { PgBossInspectionReads } from "#server/services/inspection/service.ts";
4
+ import { decodeStoredData } from "#server/storedRows.ts";
5
+ export const inspectionSnapshot = Effect.fnUntraced(function* <const TQueues extends readonly SnapshotQueue[]>(queues: TQueues) {
6
+ const inspection = yield* PgBossInspectionReads;
7
+ const byName = new Map<string, TQueues[number]>(queues.map((queue) => [queue.name, queue]));
8
+ const rows = yield* inspection.snapshot(queues);
9
+ return yield* Effect.forEach(rows, ({ data, queue: name, ...row }) => {
10
+ const queue = byName.get(name);
11
+ if (queue === undefined) {
12
+ return Effect.die(new Error(`The snapshot returned a job of an unrequested queue ${name}`));
13
+ }
14
+ return decodeStoredData<TQueues[number]["name"], TQueues[number]["schema"]>(queue, data).pipe(
15
+ Effect.map((decoded): UnfinishedJob<TQueues[number]> => ({ ...row, data: decoded, queue: queue.name })),
16
+ );
17
+ });
18
+ });
@@ -1,13 +1,13 @@
1
- import { type Context, Effect, Option, Redacted, Schema } from "effect";
1
+ import { Effect, Option, Redacted, Schema } from "effect";
2
2
  import { redact } from "@shivaedev/errors/redact.ts";
3
3
  import { keysetPage } from "@shivaedev/sql/keysetPage.ts";
4
4
  import type { JobPayloadSchema } from "#server/definition.ts";
5
+ import type { Listing } from "#server/engine.ts";
5
6
  import { type PgBossError, PgBossPayloadError } from "#server/error.ts";
6
7
  import type { DeadLetteredJob, JobPage, JobPageOptions } from "#server/health.ts";
7
- import { JobEngine, type Listing } from "#server/internal/engine.ts";
8
- import { decodeStoredData } from "#server/internal/storedRows.ts";
9
8
  import { readJobFailure } from "#server/readJobFailure.ts";
10
- import type { PgBossService } from "#server/service.ts";
9
+ import { PgBossOperations } from "#server/services/operations/service.ts";
10
+ import { decodeStoredData } from "#server/storedRows.ts";
11
11
 
12
12
  const Cursor = Schema.StringFromBase64Url.pipe(
13
13
  Schema.decodeTo(
@@ -42,29 +42,33 @@ const Row = Schema.Struct({
42
42
 
43
43
  const Rows = Schema.Array(Row);
44
44
 
45
- export const jobListings = Effect.gen(function* () {
46
- const engine = yield* JobEngine;
47
- const failedJobs: PgBossService["failedJobs"] = (queue, options) =>
48
- listJobs(engine, "failedJobs", queue, options).pipe(
49
- Effect.map(({ jobs, next }) => ({ jobs: jobs.map(({ sourceId: _id, sourceOutput: _output, ...job }) => job), next })),
50
- );
51
- const deadLetteredJobs: PgBossService["deadLetteredJobs"] = (queue, options) =>
52
- listJobs(engine, "deadLetteredJobs", queue, options).pipe(
53
- Effect.map(({ jobs, next }) => ({ jobs: jobs.map((job) => ({ ...job, sourceQueue: queue.name })), next })),
54
- );
55
- return { deadLetteredJobs, failedJobs };
45
+ export const failedJobs = Effect.fnUntraced(function* <const TName extends string, const TPayload extends JobPayloadSchema | typeof Schema.Null>(
46
+ queue: { readonly name: TName; readonly schema: TPayload },
47
+ options: JobPageOptions,
48
+ ) {
49
+ return yield* listJobs("failedJobs", queue, options).pipe(
50
+ Effect.map(({ jobs, next }) => ({ jobs: jobs.map(({ sourceId: _id, sourceOutput: _output, ...job }) => job), next })),
51
+ );
52
+ });
53
+ export const deadLetteredJobs = Effect.fnUntraced(function* <
54
+ const TName extends string,
55
+ const TPayload extends JobPayloadSchema | typeof Schema.Null,
56
+ >(queue: { readonly name: TName; readonly schema: TPayload }, options: JobPageOptions) {
57
+ return yield* listJobs("deadLetteredJobs", queue, options).pipe(
58
+ Effect.map(({ jobs, next }) => ({ jobs: jobs.map((job) => ({ ...job, sourceQueue: queue.name })), next })),
59
+ );
56
60
  });
57
61
 
58
62
  const listJobs = Effect.fnUntraced(function* <const TName extends string, const TPayload extends JobPayloadSchema | typeof Schema.Null>(
59
- engine: Context.Service.Shape<typeof JobEngine>,
60
63
  listing: Listing,
61
64
  queue: { readonly name: TName; readonly schema: TPayload },
62
65
  options: JobPageOptions,
63
66
  ): Effect.fn.Return<
64
67
  JobPage<Omit<DeadLetteredJob<unknown>, "sourceQueue">>,
65
68
  PgBossError | PgBossPayloadError | Schema.SchemaError,
66
- TPayload["DecodingServices"]
69
+ TPayload["DecodingServices"] | "@shivaedev/jobs/PgBossOperations"
67
70
  > {
71
+ const engine = yield* PgBossOperations;
68
72
  const { cursor: after, limit } = yield* Schema.decodeUnknownEffect(PageOptions)(options);
69
73
  const page = yield* keysetPage({
70
74
  after,
@@ -1,6 +1,6 @@
1
1
  import { inspectionPlan } from "#server/adapters/inspectionPlan.ts";
2
- import { deadLetterResolutionPlan } from "#server/internal/deadLetterResolutionPlan.ts";
3
- import { deferralStorePlan } from "#server/internal/deferralStorePlan.ts";
2
+ import { deadLetterResolutionPlan } from "#server/deadLetterResolutionPlan.ts";
3
+ import { deferralStorePlan } from "#server/deferralStorePlan.ts";
4
4
 
5
5
  export function jobStorePlans(schema: string): readonly string[] {
6
6
  return [deferralStorePlan(schema), deadLetterResolutionPlan(schema), inspectionPlan(schema)];