@shivaedev/jobs 0.30.0 → 0.31.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 (381) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +52 -19
  3. package/dist/display.d.ts +14 -0
  4. package/dist/display.d.ts.map +1 -0
  5. package/dist/display.js +2 -0
  6. package/dist/display.js.map +1 -0
  7. package/dist/server/ClientDatabase.d.ts +21 -0
  8. package/dist/server/ClientDatabase.d.ts.map +1 -0
  9. package/dist/server/ClientDatabase.js +2 -0
  10. package/dist/server/ClientDatabase.js.map +1 -0
  11. package/dist/server/PgBoss.d.ts +2 -2
  12. package/dist/server/PgBoss.d.ts.map +1 -1
  13. package/dist/server/adapters/batchClockOffset.d.ts +2 -2
  14. package/dist/server/adapters/batchClockOffset.d.ts.map +1 -1
  15. package/dist/server/adapters/batchClockOffset.js +5 -4
  16. package/dist/server/adapters/batchClockOffset.js.map +1 -1
  17. package/dist/server/adapters/batchHandler.d.ts +5 -0
  18. package/dist/server/adapters/batchHandler.d.ts.map +1 -0
  19. package/dist/server/{internal → adapters}/batchHandler.js +6 -6
  20. package/dist/server/adapters/batchHandler.js.map +1 -0
  21. package/dist/server/adapters/clientCache.d.ts +10 -0
  22. package/dist/server/adapters/clientCache.d.ts.map +1 -0
  23. package/dist/server/{internal → adapters}/clientCache.js +5 -19
  24. package/dist/server/adapters/clientCache.js.map +1 -0
  25. package/dist/server/adapters/clientErrorLogger.js +1 -1
  26. package/dist/server/adapters/clientErrorLogger.js.map +1 -1
  27. package/dist/server/adapters/defaultClientFactory.d.ts +4 -0
  28. package/dist/server/adapters/defaultClientFactory.d.ts.map +1 -0
  29. package/dist/server/adapters/defaultClientFactory.js.map +1 -0
  30. package/dist/server/adapters/deferralCount.d.ts +3 -3
  31. package/dist/server/adapters/deferralCount.d.ts.map +1 -1
  32. package/dist/server/adapters/deferralCount.js +2 -2
  33. package/dist/server/adapters/deferralCount.js.map +1 -1
  34. package/dist/server/adapters/expireAttempt.d.ts +4 -0
  35. package/dist/server/adapters/expireAttempt.d.ts.map +1 -0
  36. package/dist/server/{internal → adapters}/expireAttempt.js +1 -1
  37. package/dist/server/{internal → adapters}/expireAttempt.js.map +1 -1
  38. package/dist/server/adapters/installSchema.d.ts +1 -1
  39. package/dist/server/adapters/installSchema.d.ts.map +1 -1
  40. package/dist/server/adapters/installSchema.js +1 -1
  41. package/dist/server/adapters/installSchema.js.map +1 -1
  42. package/dist/server/adapters/jobEngine.d.ts +5 -0
  43. package/dist/server/adapters/jobEngine.d.ts.map +1 -0
  44. package/dist/server/adapters/jobEngine.js +50 -0
  45. package/dist/server/adapters/jobEngine.js.map +1 -0
  46. package/dist/server/adapters/lifecycle.d.ts +11 -0
  47. package/dist/server/adapters/lifecycle.d.ts.map +1 -0
  48. package/dist/server/adapters/lifecycle.js +48 -0
  49. package/dist/server/adapters/lifecycle.js.map +1 -0
  50. package/dist/server/adapters/listJobs.d.ts +5 -0
  51. package/dist/server/adapters/listJobs.d.ts.map +1 -0
  52. package/dist/server/adapters/listJobs.js +37 -0
  53. package/dist/server/adapters/listJobs.js.map +1 -0
  54. package/dist/server/adapters/observeTestingSettlements.d.ts +6 -0
  55. package/dist/server/adapters/observeTestingSettlements.d.ts.map +1 -0
  56. package/dist/server/adapters/observeTestingSettlements.js.map +1 -0
  57. package/dist/server/adapters/queueAdministration.d.ts +4 -0
  58. package/dist/server/adapters/queueAdministration.d.ts.map +1 -0
  59. package/dist/server/adapters/queueAdministration.js +42 -0
  60. package/dist/server/adapters/queueAdministration.js.map +1 -0
  61. package/dist/server/adapters/registerWorker.d.ts +5 -3
  62. package/dist/server/adapters/registerWorker.d.ts.map +1 -1
  63. package/dist/server/adapters/registerWorker.js +9 -6
  64. package/dist/server/adapters/registerWorker.js.map +1 -1
  65. package/dist/server/adapters/retireJobs.d.ts +3 -3
  66. package/dist/server/adapters/retireJobs.d.ts.map +1 -1
  67. package/dist/server/adapters/retireJobs.js +3 -3
  68. package/dist/server/adapters/retireJobs.js.map +1 -1
  69. package/dist/server/adapters/schemaIndexBuilds.d.ts +2 -2
  70. package/dist/server/adapters/schemaIndexBuilds.d.ts.map +1 -1
  71. package/dist/server/adapters/schemaIndexBuilds.js.map +1 -1
  72. package/dist/server/adapters/settleDeferral.d.ts +7 -0
  73. package/dist/server/adapters/settleDeferral.d.ts.map +1 -0
  74. package/dist/server/{internal → adapters}/settleDeferral.js +2 -2
  75. package/dist/server/adapters/settleDeferral.js.map +1 -0
  76. package/dist/server/adapters/testingClient.d.ts +14 -0
  77. package/dist/server/adapters/testingClient.d.ts.map +1 -0
  78. package/dist/server/{internal → adapters}/testingClient.js +12 -11
  79. package/dist/server/adapters/testingClient.js.map +1 -0
  80. package/dist/server/adapters/testingController.d.ts +34 -0
  81. package/dist/server/adapters/testingController.d.ts.map +1 -0
  82. package/dist/server/adapters/testingController.js +98 -0
  83. package/dist/server/adapters/testingController.js.map +1 -0
  84. package/dist/server/adapters/testingDueNow.d.ts +3 -3
  85. package/dist/server/adapters/testingDueNow.d.ts.map +1 -1
  86. package/dist/server/adapters/testingDueNow.js +2 -2
  87. package/dist/server/adapters/testingDueNow.js.map +1 -1
  88. package/dist/server/adapters/testingEngine.d.ts +5 -0
  89. package/dist/server/adapters/testingEngine.d.ts.map +1 -0
  90. package/dist/server/adapters/testingEngine.js +23 -0
  91. package/dist/server/adapters/testingEngine.js.map +1 -0
  92. package/dist/server/adapters/testingExpirations.d.ts +6 -4
  93. package/dist/server/adapters/testingExpirations.d.ts.map +1 -1
  94. package/dist/server/adapters/testingExpirations.js.map +1 -1
  95. package/dist/server/adapters/transactionDb.d.ts +2 -2
  96. package/dist/server/adapters/transactionDb.d.ts.map +1 -1
  97. package/dist/server/adapters/transactionDb.js.map +1 -1
  98. package/dist/server/client.d.ts +92 -18
  99. package/dist/server/client.d.ts.map +1 -1
  100. package/dist/server/clientOptions.d.ts +75 -0
  101. package/dist/server/clientOptions.d.ts.map +1 -0
  102. package/dist/server/clientOptions.js +2 -0
  103. package/dist/server/clientOptions.js.map +1 -0
  104. package/dist/server/defineSchedule.d.ts +1 -1
  105. package/dist/server/defineSchedule.d.ts.map +1 -1
  106. package/dist/server/defineSchedule.js +2 -1
  107. package/dist/server/defineSchedule.js.map +1 -1
  108. package/dist/server/definition.d.ts +17 -15
  109. package/dist/server/definition.d.ts.map +1 -1
  110. package/dist/server/definition.js +3 -1
  111. package/dist/server/definition.js.map +1 -1
  112. package/dist/server/engineClient.d.ts +26 -0
  113. package/dist/server/engineClient.d.ts.map +1 -0
  114. package/dist/server/engineClient.js +2 -0
  115. package/dist/server/engineClient.js.map +1 -0
  116. package/dist/server/enqueueOptions.d.ts +22 -0
  117. package/dist/server/enqueueOptions.d.ts.map +1 -0
  118. package/dist/server/enqueueOptions.js +2 -0
  119. package/dist/server/enqueueOptions.js.map +1 -0
  120. package/dist/server/error.d.ts +11 -1
  121. package/dist/server/error.d.ts.map +1 -1
  122. package/dist/server/error.js +8 -1
  123. package/dist/server/error.js.map +1 -1
  124. package/dist/server/health.d.ts +2 -2
  125. package/dist/server/health.d.ts.map +1 -1
  126. package/dist/server/internal/acquireClient.d.ts +11 -0
  127. package/dist/server/internal/acquireClient.d.ts.map +1 -0
  128. package/dist/server/internal/acquireClient.js +21 -0
  129. package/dist/server/internal/acquireClient.js.map +1 -0
  130. package/dist/server/internal/adapters/testingFetches.d.ts +2 -2
  131. package/dist/server/internal/adapters/testingFetches.d.ts.map +1 -1
  132. package/dist/server/internal/adapters/testingFetches.js.map +1 -1
  133. package/dist/server/internal/clientErrors.d.ts +1 -1
  134. package/dist/server/internal/clientErrors.d.ts.map +1 -1
  135. package/dist/server/internal/countsFor.d.ts +3 -3
  136. package/dist/server/internal/countsFor.d.ts.map +1 -1
  137. package/dist/server/internal/countsFor.js +2 -2
  138. package/dist/server/internal/countsFor.js.map +1 -1
  139. package/dist/server/internal/deadLetterResolutionPlan.js +1 -1
  140. package/dist/server/internal/deadLetterResolutionPlan.js.map +1 -1
  141. package/dist/server/internal/deadlineOf.d.ts +2 -2
  142. package/dist/server/internal/deadlineOf.d.ts.map +1 -1
  143. package/dist/server/internal/deadlineOf.js.map +1 -1
  144. package/dist/server/internal/deferrableAttempt.d.ts +4 -5
  145. package/dist/server/internal/deferrableAttempt.d.ts.map +1 -1
  146. package/dist/server/internal/deferrableAttempt.js +5 -14
  147. package/dist/server/internal/deferrableAttempt.js.map +1 -1
  148. package/dist/server/internal/deferral.d.ts +3 -3
  149. package/dist/server/internal/deferral.d.ts.map +1 -1
  150. package/dist/server/internal/deferral.js.map +1 -1
  151. package/dist/server/internal/deferralStorePlan.js +2 -2
  152. package/dist/server/internal/deferralStorePlan.js.map +1 -1
  153. package/dist/server/internal/definitionOptions.d.ts +7 -7
  154. package/dist/server/internal/definitionOptions.d.ts.map +1 -1
  155. package/dist/server/internal/engine.d.ts +30 -0
  156. package/dist/server/internal/engine.d.ts.map +1 -0
  157. package/dist/server/internal/engine.js +6 -0
  158. package/dist/server/internal/engine.js.map +1 -0
  159. package/dist/server/internal/enqueueFor.d.ts +2 -2
  160. package/dist/server/internal/enqueueFor.d.ts.map +1 -1
  161. package/dist/server/internal/enqueueFor.js +3 -3
  162. package/dist/server/internal/enqueueFor.js.map +1 -1
  163. package/dist/server/internal/ensureQueue.d.ts +2 -3
  164. package/dist/server/internal/ensureQueue.d.ts.map +1 -1
  165. package/dist/server/internal/ensureQueue.js +2 -2
  166. package/dist/server/internal/ensureQueue.js.map +1 -1
  167. package/dist/server/internal/healthFor.d.ts +3 -3
  168. package/dist/server/internal/healthFor.d.ts.map +1 -1
  169. package/dist/server/internal/healthFor.js +2 -2
  170. package/dist/server/internal/healthFor.js.map +1 -1
  171. package/dist/server/internal/jobControl.d.ts +9 -4
  172. package/dist/server/internal/jobControl.d.ts.map +1 -1
  173. package/dist/server/internal/jobControl.js +13 -40
  174. package/dist/server/internal/jobControl.js.map +1 -1
  175. package/dist/server/internal/jobListings.d.ts +16 -0
  176. package/dist/server/internal/jobListings.d.ts.map +1 -0
  177. package/dist/server/internal/jobListings.js +52 -0
  178. package/dist/server/internal/jobListings.js.map +1 -0
  179. package/dist/server/internal/jobStorePlans.js +2 -2
  180. package/dist/server/internal/jobStorePlans.js.map +1 -1
  181. package/dist/server/internal/lifecycle.d.ts +11 -7
  182. package/dist/server/internal/lifecycle.d.ts.map +1 -1
  183. package/dist/server/internal/lifecycle.js +2 -49
  184. package/dist/server/internal/lifecycle.js.map +1 -1
  185. package/dist/server/internal/makeService.d.ts +5 -3
  186. package/dist/server/internal/makeService.d.ts.map +1 -1
  187. package/dist/server/internal/makeService.js +15 -11
  188. package/dist/server/internal/makeService.js.map +1 -1
  189. package/dist/server/internal/register.d.ts +5 -5
  190. package/dist/server/internal/register.d.ts.map +1 -1
  191. package/dist/server/internal/register.js +6 -6
  192. package/dist/server/internal/register.js.map +1 -1
  193. package/dist/server/internal/registerReleasedJobs.d.ts +4 -4
  194. package/dist/server/internal/registerReleasedJobs.d.ts.map +1 -1
  195. package/dist/server/internal/registerReleasedJobs.js +2 -2
  196. package/dist/server/internal/registerReleasedJobs.js.map +1 -1
  197. package/dist/server/internal/retryWake.d.ts +1 -1
  198. package/dist/server/internal/retryWake.d.ts.map +1 -1
  199. package/dist/server/internal/retryWake.js +2 -2
  200. package/dist/server/internal/retryWake.js.map +1 -1
  201. package/dist/server/internal/runQueueWorker.d.ts +4 -4
  202. package/dist/server/internal/runQueueWorker.d.ts.map +1 -1
  203. package/dist/server/internal/runQueueWorker.js +5 -5
  204. package/dist/server/internal/runQueueWorker.js.map +1 -1
  205. package/dist/server/internal/storedRows.d.ts +2 -2
  206. package/dist/server/internal/storedRows.d.ts.map +1 -1
  207. package/dist/server/internal/storedRows.js +2 -2
  208. package/dist/server/internal/storedRows.js.map +1 -1
  209. package/dist/server/internal/testingDeferrals.d.ts +3 -3
  210. package/dist/server/internal/testingDeferrals.d.ts.map +1 -1
  211. package/dist/server/internal/testingDeferrals.js +2 -2
  212. package/dist/server/internal/testingDeferrals.js.map +1 -1
  213. package/dist/server/internal/testingIdle.d.ts +3 -3
  214. package/dist/server/internal/testingIdle.d.ts.map +1 -1
  215. package/dist/server/internal/testingIdle.js +2 -2
  216. package/dist/server/internal/testingIdle.js.map +1 -1
  217. package/dist/server/internal/testingReadout.d.ts +7 -41
  218. package/dist/server/internal/testingReadout.d.ts.map +1 -1
  219. package/dist/server/internal/testingReadout.js +2 -2
  220. package/dist/server/internal/testingReadout.js.map +1 -1
  221. package/dist/server/internal/testingRegistrations.d.ts +1 -1
  222. package/dist/server/internal/testingRegistrations.d.ts.map +1 -1
  223. package/dist/server/internal/testingSchedules.d.ts +3 -3
  224. package/dist/server/internal/testingSchedules.d.ts.map +1 -1
  225. package/dist/server/internal/testingSchedules.js +1 -1
  226. package/dist/server/internal/testingSchedules.js.map +1 -1
  227. package/dist/server/internal/testingSnapshot.d.ts +4 -4
  228. package/dist/server/internal/testingSnapshot.d.ts.map +1 -1
  229. package/dist/server/internal/testingSnapshot.js +2 -2
  230. package/dist/server/internal/testingSnapshot.js.map +1 -1
  231. package/dist/server/internal/testingWaits.d.ts +8 -7
  232. package/dist/server/internal/testingWaits.d.ts.map +1 -1
  233. package/dist/server/internal/testingWaits.js +3 -3
  234. package/dist/server/internal/testingWaits.js.map +1 -1
  235. package/dist/server/internal/tracing.d.ts +2 -2
  236. package/dist/server/internal/tracing.d.ts.map +1 -1
  237. package/dist/server/internal/tracing.js.map +1 -1
  238. package/dist/server/internal/validateQueueNames.d.ts +2 -2
  239. package/dist/server/internal/validateQueueNames.d.ts.map +1 -1
  240. package/dist/server/internal/validateQueueNames.js +1 -1
  241. package/dist/server/internal/validateQueueNames.js.map +1 -1
  242. package/dist/server/internal/waitForBatchExpiry.d.ts +4 -4
  243. package/dist/server/internal/waitForBatchExpiry.d.ts.map +1 -1
  244. package/dist/server/internal/waitForBatchExpiry.js +1 -1
  245. package/dist/server/internal/waitForBatchExpiry.js.map +1 -1
  246. package/dist/server/job.d.ts +42 -0
  247. package/dist/server/job.d.ts.map +1 -0
  248. package/dist/server/job.js +2 -0
  249. package/dist/server/job.js.map +1 -0
  250. package/dist/server/jobModule.d.ts +6 -4
  251. package/dist/server/jobModule.d.ts.map +1 -1
  252. package/dist/server/jobModule.js +7 -5
  253. package/dist/server/jobModule.js.map +1 -1
  254. package/dist/server/queueOptions.d.ts +19 -0
  255. package/dist/server/queueOptions.d.ts.map +1 -0
  256. package/dist/server/queueOptions.js +2 -0
  257. package/dist/server/queueOptions.js.map +1 -0
  258. package/dist/server/readJobFailure.d.ts +5 -0
  259. package/dist/server/readJobFailure.d.ts.map +1 -0
  260. package/dist/server/readJobFailure.js +8 -0
  261. package/dist/server/readJobFailure.js.map +1 -0
  262. package/dist/server/schema.d.ts +1 -1
  263. package/dist/server/schema.d.ts.map +1 -1
  264. package/dist/server/schema.js +18 -7
  265. package/dist/server/schema.js.map +1 -1
  266. package/dist/server/service.d.ts +15 -10
  267. package/dist/server/service.d.ts.map +1 -1
  268. package/dist/server/service.js +18 -27
  269. package/dist/server/service.js.map +1 -1
  270. package/dist/server/testing.d.ts +30 -69
  271. package/dist/server/testing.d.ts.map +1 -1
  272. package/dist/server/testing.js +5 -97
  273. package/dist/server/testing.js.map +1 -1
  274. package/dist/server/workerOptions.d.ts +25 -0
  275. package/dist/server/workerOptions.d.ts.map +1 -0
  276. package/dist/server/workerOptions.js +2 -0
  277. package/dist/server/workerOptions.js.map +1 -0
  278. package/package.json +11 -16
  279. package/src/display.ts +12 -0
  280. package/src/server/ClientDatabase.ts +7 -0
  281. package/src/server/PgBoss.ts +2 -2
  282. package/src/server/adapters/batchClockOffset.ts +8 -5
  283. package/src/server/{internal → adapters}/batchHandler.ts +13 -13
  284. package/src/server/{internal → adapters}/clientCache.ts +10 -22
  285. package/src/server/adapters/clientErrorLogger.ts +1 -1
  286. package/src/server/{defaultClientFactory.ts → adapters/defaultClientFactory.ts} +4 -2
  287. package/src/server/adapters/deferralCount.ts +5 -5
  288. package/src/server/{internal → adapters}/expireAttempt.ts +4 -3
  289. package/src/server/adapters/installSchema.ts +2 -2
  290. package/src/server/adapters/jobEngine.ts +59 -0
  291. package/src/server/adapters/lifecycle.ts +67 -0
  292. package/src/server/adapters/listJobs.ts +43 -0
  293. package/src/server/{internal → adapters}/observeTestingSettlements.ts +2 -2
  294. package/src/server/adapters/queueAdministration.ts +47 -0
  295. package/src/server/adapters/registerWorker.ts +17 -12
  296. package/src/server/adapters/retireJobs.ts +5 -5
  297. package/src/server/adapters/schemaIndexBuilds.ts +2 -2
  298. package/src/server/{internal → adapters}/settleDeferral.ts +5 -5
  299. package/src/server/{internal → adapters}/testingClient.ts +31 -26
  300. package/src/server/adapters/testingController.ts +109 -0
  301. package/src/server/adapters/testingDueNow.ts +5 -5
  302. package/src/server/adapters/testingEngine.ts +28 -0
  303. package/src/server/adapters/testingExpirations.ts +6 -4
  304. package/src/server/adapters/transactionDb.ts +2 -2
  305. package/src/server/client.ts +83 -30
  306. package/src/server/clientOptions.ts +81 -0
  307. package/src/server/defineSchedule.ts +3 -2
  308. package/src/server/definition.ts +20 -17
  309. package/src/server/engineClient.ts +24 -0
  310. package/src/server/enqueueOptions.ts +20 -0
  311. package/src/server/error.ts +17 -2
  312. package/src/server/health.ts +2 -2
  313. package/src/server/internal/acquireClient.ts +26 -0
  314. package/src/server/internal/adapters/testingFetches.ts +2 -2
  315. package/src/server/internal/clientErrors.ts +1 -1
  316. package/src/server/internal/countsFor.ts +5 -5
  317. package/src/server/internal/deadLetterResolutionPlan.ts +1 -1
  318. package/src/server/internal/deadlineOf.ts +2 -2
  319. package/src/server/internal/deferrableAttempt.ts +5 -22
  320. package/src/server/internal/deferral.ts +3 -3
  321. package/src/server/internal/deferralStorePlan.ts +2 -2
  322. package/src/server/internal/definitionOptions.ts +1 -1
  323. package/src/server/internal/engine.ts +41 -0
  324. package/src/server/internal/enqueueFor.ts +5 -5
  325. package/src/server/internal/ensureQueue.ts +5 -6
  326. package/src/server/internal/healthFor.ts +4 -4
  327. package/src/server/internal/jobControl.ts +15 -50
  328. package/src/server/internal/jobListings.ts +85 -0
  329. package/src/server/internal/jobStorePlans.ts +2 -2
  330. package/src/server/internal/lifecycle.ts +14 -55
  331. package/src/server/internal/makeService.ts +21 -13
  332. package/src/server/internal/register.ts +9 -9
  333. package/src/server/internal/registerReleasedJobs.ts +5 -5
  334. package/src/server/internal/retryWake.ts +3 -3
  335. package/src/server/internal/runQueueWorker.ts +8 -8
  336. package/src/server/internal/storedRows.ts +3 -3
  337. package/src/server/internal/testingDeferrals.ts +5 -5
  338. package/src/server/internal/testingIdle.ts +5 -5
  339. package/src/server/internal/testingReadout.ts +12 -6
  340. package/src/server/internal/testingRegistrations.ts +1 -1
  341. package/src/server/internal/testingSchedules.ts +4 -4
  342. package/src/server/internal/testingSnapshot.ts +6 -6
  343. package/src/server/internal/testingWaits.ts +11 -10
  344. package/src/server/internal/tracing.ts +2 -2
  345. package/src/server/internal/validateQueueNames.ts +2 -2
  346. package/src/server/internal/waitForBatchExpiry.ts +4 -4
  347. package/src/server/job.ts +42 -0
  348. package/src/server/jobModule.ts +19 -7
  349. package/src/server/queueOptions.ts +20 -0
  350. package/src/server/readJobFailure.ts +12 -0
  351. package/src/server/schema.ts +18 -7
  352. package/src/server/service.ts +40 -44
  353. package/src/server/testing.ts +7 -109
  354. package/src/server/workerOptions.ts +28 -0
  355. package/dist/server/defaultClientFactory.d.ts +0 -3
  356. package/dist/server/defaultClientFactory.d.ts.map +0 -1
  357. package/dist/server/defaultClientFactory.js.map +0 -1
  358. package/dist/server/internal/batchHandler.d.ts +0 -5
  359. package/dist/server/internal/batchHandler.d.ts.map +0 -1
  360. package/dist/server/internal/batchHandler.js.map +0 -1
  361. package/dist/server/internal/clientCache.d.ts +0 -8
  362. package/dist/server/internal/clientCache.d.ts.map +0 -1
  363. package/dist/server/internal/clientCache.js.map +0 -1
  364. package/dist/server/internal/expireAttempt.d.ts +0 -3
  365. package/dist/server/internal/expireAttempt.d.ts.map +0 -1
  366. package/dist/server/internal/listJobs.d.ts +0 -5
  367. package/dist/server/internal/listJobs.d.ts.map +0 -1
  368. package/dist/server/internal/listJobs.js +0 -75
  369. package/dist/server/internal/listJobs.js.map +0 -1
  370. package/dist/server/internal/observeTestingSettlements.d.ts +0 -6
  371. package/dist/server/internal/observeTestingSettlements.d.ts.map +0 -1
  372. package/dist/server/internal/observeTestingSettlements.js.map +0 -1
  373. package/dist/server/internal/settleDeferral.d.ts +0 -7
  374. package/dist/server/internal/settleDeferral.d.ts.map +0 -1
  375. package/dist/server/internal/settleDeferral.js.map +0 -1
  376. package/dist/server/internal/testingClient.d.ts +0 -13
  377. package/dist/server/internal/testingClient.d.ts.map +0 -1
  378. package/dist/server/internal/testingClient.js.map +0 -1
  379. package/src/server/internal/listJobs.ts +0 -116
  380. /package/dist/server/{defaultClientFactory.js → adapters/defaultClientFactory.js} +0 -0
  381. /package/dist/server/{internal → adapters}/observeTestingSettlements.js +0 -0
@@ -1,20 +1,32 @@
1
- import { Context, Effect, Exit, Layer, type Option, Redacted, type Schema, Scope } from "effect";
2
- import type { ConstructorOptions, JobWithMetadata, SendOptions, StopOptions } from "pg-boss";
1
+ import { Context, Effect, Exit, Layer, type Option, type Redacted, type Schema, Scope } from "effect";
3
2
  import { defineService } from "@shivaedev/service/defineService.ts";
4
3
  import { genericMethod } from "@shivaedev/service/genericMethod.ts";
5
- import { clientErrorLogger } from "#adapters/clientErrorLogger.ts";
6
- import { clientErrorReporter } from "#adapters/clientErrorReporter.ts";
7
- import type { PgBossClientFactory } from "#client.ts";
8
- import type { JobPayloadSchema, JobRegistration, QueueDefinition, RegistrationRequirements } from "#definition.ts";
9
- import type { PgBossClientOptionsError, PgBossError, PgBossPayloadError, PgBossQueueNamesError, PgBossQueueOptionsError } from "#error.ts";
10
- import type { DeadLetteredJob, JobPage, JobPageOptions, JobsHealth, ListedJob, QueueCounts } from "#health.ts";
11
- import { logClientError, subscribeClientErrors } from "#internal/clientErrors.ts";
12
- import { acquireClient, releaseClient } from "#internal/lifecycle.ts";
13
- import { makeService } from "#internal/makeService.ts";
14
- import { registrationName } from "#internal/register.ts";
15
- import { registerReleasedJobs } from "#internal/registerReleasedJobs.ts";
16
- import { validateQueueNames } from "#internal/validateQueueNames.ts";
17
- import { PgBoss } from "#PgBoss.ts";
4
+ import { clientErrorReporter } from "#server/adapters/clientErrorReporter.ts";
5
+ import { jobEngine } from "#server/adapters/jobEngine.ts";
6
+ import { clientEngine } from "#server/adapters/lifecycle.ts";
7
+ import type { PgBossClientFactory } from "#server/client.ts";
8
+ import type { ClientOptions, StopOptions } from "#server/clientOptions.ts";
9
+ import type { JobPayloadSchema, JobRegistration, QueueDefinition, RegistrationRequirements, ScheduleDefinition } from "#server/definition.ts";
10
+ import type { EnqueueOptions } from "#server/enqueueOptions.ts";
11
+ import type {
12
+ PgBossClientOptionsError,
13
+ PgBossError,
14
+ PgBossNotFoundError,
15
+ PgBossPayloadError,
16
+ PgBossQueueNamesError,
17
+ PgBossQueueOptionsError,
18
+ } from "#server/error.ts";
19
+ import type { DeadLetteredJob, JobPage, JobPageOptions, JobsHealth, ListedJob, QueueCounts } from "#server/health.ts";
20
+ import { acquireClient } from "#server/internal/acquireClient.ts";
21
+ import { logClientError, subscribeClientErrors } from "#server/internal/clientErrors.ts";
22
+ import { JobEngine } from "#server/internal/engine.ts";
23
+ import { ClientEngine } from "#server/internal/lifecycle.ts";
24
+ import { makeService } from "#server/internal/makeService.ts";
25
+ import { registrationName } from "#server/internal/register.ts";
26
+ import { registerReleasedJobs } from "#server/internal/registerReleasedJobs.ts";
27
+ import { validateQueueNames } from "#server/internal/validateQueueNames.ts";
28
+ import type { Job } from "#server/job.ts";
29
+ import { PgBoss } from "#server/PgBoss.ts";
18
30
 
19
31
  export interface PgBossService {
20
32
  readonly counts: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<QueueCounts, PgBossError>;
@@ -22,10 +34,11 @@ export interface PgBossService {
22
34
  queue: { readonly name: TName; readonly schema: TPayload },
23
35
  options: JobPageOptions,
24
36
  ) => Effect.Effect<JobPage<DeadLetteredJob<unknown>>, PgBossError | PgBossPayloadError | Schema.SchemaError, TPayload["DecodingServices"]>;
37
+ readonly deleteQueue: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<void, PgBossError | PgBossNotFoundError>;
25
38
  readonly enqueue: <const TName extends string, const TPayload extends JobPayloadSchema, const TQueue extends QueueDefinition<TName, TPayload>>(
26
39
  queue: QueueDefinition<TName, TPayload> & TQueue,
27
40
  payload: NoInfer<Schema.Schema.Type<TPayload>>,
28
- options?: NoInfer<TQueue["key"] extends undefined ? SendOptions : Omit<SendOptions, "singletonKey"> & { readonly singletonKey?: never }>,
41
+ options?: NoInfer<TQueue["key"] extends undefined ? EnqueueOptions : Omit<EnqueueOptions, "singletonKey"> & { readonly singletonKey?: never }>,
29
42
  ) => Effect.Effect<Option.Option<string>, PgBossError | PgBossPayloadError, TPayload["EncodingServices"]>;
30
43
  readonly failedJobs: <const TName extends string, const TPayload extends JobPayloadSchema | typeof Schema.Null>(
31
44
  queue: { readonly name: TName; readonly schema: TPayload },
@@ -34,12 +47,14 @@ export interface PgBossService {
34
47
  readonly getJob: <const TName extends string, const TPayload extends JobPayloadSchema | typeof Schema.Null>(
35
48
  queue: { readonly name: TName; readonly schema: TPayload },
36
49
  id: string,
37
- ) => Effect.Effect<Option.Option<JobWithMetadata<unknown>>, PgBossError | PgBossPayloadError, TPayload["DecodingServices"]>;
50
+ ) => Effect.Effect<Option.Option<Job<unknown>>, PgBossError | PgBossPayloadError, TPayload["DecodingServices"]>;
38
51
  readonly health: (queues?: readonly Pick<QueueDefinition, "name">[]) => Effect.Effect<JobsHealth, PgBossError>;
52
+ readonly refreshQueueStats: (queue?: Pick<QueueDefinition, "name">) => Effect.Effect<void, PgBossError>;
39
53
  readonly retry: (queue: Pick<QueueDefinition, "name">, id: string) => Effect.Effect<void, PgBossError>;
54
+ readonly unschedule: (schedule: Pick<ScheduleDefinition, "name" | "scheduleOptions">) => Effect.Effect<void, PgBossError | PgBossNotFoundError>;
40
55
  }
41
56
 
42
- export type PgBossOptions = Omit<ConstructorOptions, "connectionString"> & {
57
+ export type PgBossOptions = Omit<ClientOptions, "connectionString"> & {
43
58
  readonly connectionString?: Redacted.Redacted<string>;
44
59
  readonly idleTimeoutMillis?: number;
45
60
  readonly maxLifetimeSeconds?: number;
@@ -49,31 +64,7 @@ export type PgBossOptions = Omit<ConstructorOptions, "connectionString"> & {
49
64
  };
50
65
 
51
66
  export function pgBossLayer(options: PgBossOptions): Layer.Layer<PgBoss, PgBossError | PgBossClientOptionsError> {
52
- const { connectionString, clientFactory, clientCacheKey, stop, ...settings } = options;
53
- const constructorOptions = {
54
- ...settings,
55
- idleTimeoutMillis: settings.idleTimeoutMillis ?? 60_000,
56
- maxLifetimeSeconds: settings.maxLifetimeSeconds ?? 600,
57
- ...(connectionString === undefined ? {} : { connectionString: Redacted.value(connectionString) }),
58
- };
59
- return Layer.effect(
60
- PgBoss,
61
- Effect.gen(function* () {
62
- const report = yield* clientErrorLogger();
63
- const acquired = yield* Effect.acquireRelease(
64
- acquireClient(
65
- {
66
- clientCacheKey,
67
- clientFactory,
68
- constructor: constructorOptions,
69
- },
70
- report,
71
- ),
72
- (client) => releaseClient(client, stop),
73
- );
74
- return { ...acquired, schema: settings.schema, stop };
75
- }),
76
- );
67
+ return Layer.effect(PgBoss, acquireClient(options)).pipe(Layer.provide(Layer.succeed(ClientEngine, clientEngine)));
77
68
  }
78
69
 
79
70
  export interface PgBossLayerOptions<TRegistrations extends readonly JobRegistration[], TErrorRequirements> {
@@ -103,7 +94,9 @@ export function makePgBoss<const TIdentifier extends string>(identifier: TIdenti
103
94
  yield* validateQueueNames(options.jobs, queueNames);
104
95
  const acquired = yield* PgBoss;
105
96
  const workerScope = yield* Scope.make();
106
- const service = makeService(acquired.client, options.jobs.map(registrationName), acquired.schema);
97
+ const service = yield* makeService(acquired.client, options.jobs.map(registrationName), acquired.schema).pipe(
98
+ Effect.provideService(JobEngine, jobEngine(acquired.client, acquired.schema)),
99
+ );
107
100
  yield* Effect.gen(function* () {
108
101
  const context = yield* Effect.context<R | E>();
109
102
  const reportError = options.onError ?? logClientError;
@@ -119,11 +112,14 @@ export function makePgBoss<const TIdentifier extends string>(identifier: TIdenti
119
112
  methods: (service) => ({
120
113
  counts: service.counts,
121
114
  deadLetteredJobs: genericMethod(service.deadLetteredJobs),
115
+ deleteQueue: service.deleteQueue,
122
116
  enqueue: genericMethod(service.enqueue),
123
117
  failedJobs: genericMethod(service.failedJobs),
124
118
  getJob: genericMethod(service.getJob),
125
119
  health: service.health,
120
+ refreshQueueStats: service.refreshQueueStats,
126
121
  retry: service.retry,
122
+ unschedule: service.unschedule,
127
123
  }),
128
124
  requires: [PgBoss],
129
125
  });
@@ -1,19 +1,10 @@
1
- import { type DateTime, Duration, Effect, Redacted, type Tracer } from "effect";
2
- import type { PgBoss } from "pg-boss";
3
- import { testingDueNow } from "#adapters/testingDueNow.ts";
4
- import type { PgBossClientFactory } from "#client.ts";
5
- import { defaultClientFactory } from "#defaultClientFactory.ts";
6
- import type { JobPayloadSchema, QueueDefinition } from "#definition.ts";
7
- import { PgBossTestingError } from "#error.ts";
8
- import { type TestingFetches, testingFetches } from "#internal/adapters/testingFetches.ts";
9
- import { testingClient } from "#internal/testingClient.ts";
10
- import { testingDeferrals } from "#internal/testingDeferrals.ts";
11
- import { type TestingWork, testingIdle } from "#internal/testingIdle.ts";
12
- import { testingOperation, testingReadout } from "#internal/testingReadout.ts";
13
- import { testingSchedules } from "#internal/testingSchedules.ts";
14
- import { testingSignal } from "#internal/testingSignal.ts";
15
- import { testingSnapshot } from "#internal/testingSnapshot.ts";
16
- import { testingWaits } from "#internal/testingWaits.ts";
1
+ import { type DateTime, type Duration, Effect, type Tracer } from "effect";
2
+ import { testingController } from "#server/adapters/testingController.ts";
3
+ import type { JobPayloadSchema, QueueDefinition } from "#server/definition.ts";
4
+
5
+ export function makePgBossTesting(options: PgBossTestingOptions = {}) {
6
+ return testingController(options);
7
+ }
17
8
 
18
9
  export type SnapshotQueue = Pick<QueueDefinition<string, JobPayloadSchema>, "name" | "schema">;
19
10
 
@@ -46,97 +37,4 @@ export function linkedWorkerSpans(sender: Pick<Tracer.AnySpan, "spanId" | "trace
46
37
  );
47
38
  }
48
39
 
49
- export function makePgBossTesting(options: PgBossTestingOptions = {}) {
50
- let current: PgBoss | undefined;
51
- let fetches: TestingFetches | undefined;
52
- let schema = "pgboss";
53
- const signal = testingSignal();
54
- const work: TestingWork = { batches: new Set(), queues: new Set() };
55
- const controls = {
56
- changed: signal.changed,
57
- expirations: new Map<string, number>(),
58
- expirySeconds: new Map<string, number>(),
59
- failures: new Set<string>(),
60
- retryPolicy: options.retryPolicy ?? {},
61
- work,
62
- };
63
- function client(): PgBoss {
64
- if (current === undefined) {
65
- throw new Error("Provide the testing clientFactory to a jobs Layer first");
66
- }
67
- return current;
68
- }
69
- const clientFactory: PgBossClientFactory = (clientOptions) => {
70
- if (current !== undefined) {
71
- throw new Error("A testing controller owns one jobs client; create a controller per runtime");
72
- }
73
- schema = clientOptions.schema ?? "pgboss";
74
- current = defaultClientFactory({ ...clientOptions, "__test__enableSpies": true });
75
- fetches = testingFetches(current.getDb(), signal.changed);
76
- return testingClient(current, clientOptions.schema ?? "pgboss", controls);
77
- };
78
- return {
79
- ...testingDeferrals(client),
80
- ...testingDueNow(client, () => schema, signal.changed),
81
- ...testingSchedules(client, signal.changed),
82
- ...testingWaits(client, () => fetches, signal),
83
- checkBatchWindow: (queue: Pick<QueueDefinition, "name" | "workerOptions">, millisecondsPerJob: number) =>
84
- testingOperation(
85
- "checkBatchWindow",
86
- async () => {
87
- const stored = await client().getQueue(queue.name);
88
- if (stored === null) {
89
- throw new Error("Queue is not registered");
90
- }
91
- if (stored.expireInSeconds === undefined) {
92
- throw new Error("Queue has no expiry window");
93
- }
94
- if (!Number.isFinite(millisecondsPerJob) || millisecondsPerJob < 0) {
95
- throw new RangeError("Job duration must be nonnegative and finite");
96
- }
97
- const required = (queue.workerOptions.batchSize ?? 10) * millisecondsPerJob;
98
- if (required >= stored.expireInSeconds * 1000) {
99
- throw new Error("Sequential batch work must fit within the queue expiry window");
100
- }
101
- },
102
- queue.name,
103
- ),
104
- checkSchemaVersion: (expected: number) =>
105
- testingOperation("checkSchemaVersion", async () => {
106
- if ((await client().schemaVersion()) !== expected) {
107
- throw new Error(`Expected pg-boss schema version ${expected}`);
108
- }
109
- }),
110
- clientFactory,
111
- expireAfter: (queue: Pick<QueueDefinition, "name">, attempts: number) =>
112
- Effect.try({
113
- catch: (original) => new PgBossTestingError({ operation: "expireAfter", original: Redacted.make(original), queue: queue.name }),
114
- try: () => {
115
- if (!Number.isSafeInteger(attempts) || attempts < 1) {
116
- throw new RangeError("Attempts must be a positive integer");
117
- }
118
- controls.expirations.set(queue.name, attempts);
119
- },
120
- }),
121
- expireIn: (queue: Pick<QueueDefinition, "name">, duration: Duration.Input) =>
122
- Effect.try({
123
- catch: (original) => new PgBossTestingError({ operation: "expireIn", original: Redacted.make(original), queue: queue.name }),
124
- try: () => {
125
- const milliseconds = Duration.toMillis(Duration.fromInputUnsafe(duration));
126
- if (!Number.isFinite(milliseconds) || milliseconds < 1000) {
127
- throw new RangeError("Expiry must be finite and at least one second");
128
- }
129
- controls.expirySeconds.set(queue.name, Math.ceil(milliseconds / 1000));
130
- },
131
- }),
132
- failNextSend: (queue: Pick<QueueDefinition, "name">) => Effect.sync(() => controls.failures.add(queue.name)).pipe(Effect.asVoid),
133
- jobs: testingReadout(client),
134
- revision: signal.revision,
135
- schemaVersion: testingOperation("schemaVersion", () => client().schemaVersion()),
136
- snapshot: testingSnapshot(client, () => schema),
137
- waitForChange: signal.waitForChange,
138
- waitForIdle: testingIdle(client, () => schema, work, signal),
139
- };
140
- }
141
-
142
40
  export type PgBossTesting = ReturnType<typeof makePgBossTesting>;
@@ -0,0 +1,28 @@
1
+ export interface GroupConcurrencyConfig {
2
+ default: number;
3
+ tiers?: Record<string, number>;
4
+ }
5
+
6
+ export interface WorkerOptions {
7
+ batchSize?: number;
8
+ burstWhenBatchFull?: boolean;
9
+ burstWhenReadyExceeds?: number;
10
+ groupConcurrency?: number | GroupConcurrencyConfig;
11
+
12
+ heartbeatRefreshSeconds?: number;
13
+ ignoreStartAfter?: boolean;
14
+ includeMetadata?: boolean;
15
+
16
+ localConcurrency?: number;
17
+ localGroupConcurrency?: number | GroupConcurrencyConfig;
18
+ maxPriority?: number;
19
+ minPriority?: number;
20
+ notifyPollingIntervalSeconds?: number;
21
+ orderByCreatedOn?: boolean;
22
+ perJobResults?: boolean;
23
+
24
+ pollingIntervalSeconds?: number;
25
+ priority?: boolean;
26
+ transactional?: boolean;
27
+ transactionTimeoutSeconds?: number;
28
+ }
@@ -1,3 +0,0 @@
1
- import { type ConstructorOptions, PgBoss } from "pg-boss";
2
- export declare function defaultClientFactory(options: ConstructorOptions): PgBoss;
3
- //# sourceMappingURL=defaultClientFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaultClientFactory.d.ts","sourceRoot":"","sources":["../../src/server/defaultClientFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE1D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,UA0B/D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaultClientFactory.js","sourceRoot":"","sources":["../../src/server/defaultClientFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAA2B,MAAM,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,UAAU,oBAAoB,CAAC,OAA2B;IAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC9C,MAAM,MAAM,GAAG;QACd,GAAG,OAAO;QACV,MAAM,EAAE,GAAG,EAAE;YACZ,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAC5C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACzB,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACX,CAAC,CAAC,CACF,CAAC;YACF,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,MAAM,CAAC;QACf,CAAC;KACD,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,GAAG,KAAK,EAAE,WAAW,EAAE,EAAE;QACnC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,0EAA0E;QAC1E,IAAI,WAAW,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;QACtC,CAAC;IACF,CAAC,CAAC;IACF,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1,5 +0,0 @@
1
- import { Effect } from "effect";
2
- import type { Job } from "pg-boss";
3
- import type { PgBossClient } from "#client.ts";
4
- export declare function batchHandler<R>(client: PgBossClient, name: string, schema: string, run: (job: Job<unknown>, deadline: number) => Effect.Effect<unknown, unknown, R>, afterRetry?: (job: Job<unknown>) => Effect.Effect<void, unknown>): (jobs: readonly Job<unknown>[]) => Effect.Effect<void, unknown, R>;
5
- //# sourceMappingURL=batchHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"batchHandler.d.ts","sourceRoot":"","sources":["../../../src/server/internal/batchHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAQ,MAAM,QAAQ,CAAC;AACpD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8C/C,wBAAgB,YAAY,CAAC,CAAC,EAC7B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAChF,UAAU,GAAE,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAqB,UA0BrE,SAAS,GAAG,CAAC,OAAO,CAAC,EAAE,qCAiBrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"batchHandler.js","sourceRoot":"","sources":["../../../src/server/internal/batchHandler.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { ConstructorOptions } from "pg-boss";
2
- import type { PgBossClient } from "#client.ts";
3
- export declare function acquireCachedClient(key: string | symbol, constructorOptions: ConstructorOptions, start: () => Promise<PgBossClient>): Promise<{
4
- client: PgBossClient;
5
- reused: boolean;
6
- }>;
7
- export declare function releaseCachedClient(key: string | symbol): Promise<PgBossClient> | undefined;
8
- //# sourceMappingURL=clientCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clientCache.d.ts","sourceRoot":"","sources":["../../../src/server/internal/clientCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6B/C,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC;;;GA4BzI;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,CAW3F"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clientCache.js","sourceRoot":"","sources":["../../../src/server/internal/clientCache.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Job, PgBoss } from "pg-boss";
2
- export declare function expireAttempt(client: PgBoss, schema: string, job: Job<unknown>, cause?: "expiry" | "heartbeat"): Promise<void>;
3
- //# sourceMappingURL=expireAttempt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expireAttempt.d.ts","sourceRoot":"","sources":["../../../src/server/internal/expireAttempt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAG3C,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,GAAE,QAAQ,GAAG,WAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9I"}
@@ -1,5 +0,0 @@
1
- import type { PgBossClient } from "#client.ts";
2
- import type { PgBossService } from "#service.ts";
3
- export declare function failedJobsFor(client: PgBossClient, schema: string): PgBossService["failedJobs"];
4
- export declare function deadLetteredJobsFor(client: PgBossClient, schema: string): PgBossService["deadLetteredJobs"];
5
- //# sourceMappingURL=listJobs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"listJobs.d.ts","sourceRoot":"","sources":["../../../src/server/internal/listJobs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqCjD,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,CAK/F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAK3G"}
@@ -1,75 +0,0 @@
1
- import { Effect, Option, Redacted, Schema } from "effect";
2
- import { redact } from "@shivaedev/errors/redact.ts";
3
- import { PgBossPayloadError, toPgBossError } from "#error.ts";
4
- import { deadLetterQueueName } from "#health.ts";
5
- import { decodeStoredData, quotedSchema } from "#internal/storedRows.ts";
6
- import { JobFailure } from "#JobFailure.ts";
7
- const Cursor = Schema.StringFromBase64Url.pipe(Schema.decodeTo(Schema.fromJsonString(Schema.Tuple([
8
- Schema.String.check(Schema.makeFilter((value) => Option.isSome(Schema.decodeUnknownOption(Schema.DateTimeUtcFromString)(value)))),
9
- Schema.String.check(Schema.isUUID()),
10
- ]))));
11
- const PageOptions = Schema.Struct({
12
- cursor: Schema.optionalKey(Schema.UndefinedOr(Cursor)),
13
- limit: Schema.Number.check(Schema.isInt(), Schema.isGreaterThan(0)),
14
- });
15
- const Row = Schema.Struct({
16
- completedOn: Schema.OptionFromNullOr(Schema.DateTimeUtcFromDate),
17
- createdOn: Schema.DateTimeUtcFromDate,
18
- cursorAt: Schema.String,
19
- data: Schema.Unknown,
20
- id: Schema.String,
21
- output: Schema.NullOr(JobFailure),
22
- queue: Schema.String,
23
- retryCount: Schema.Number,
24
- retryLimit: Schema.Number,
25
- sourceId: Schema.OptionFromNullOr(Schema.String),
26
- sourceOutput: Schema.NullOr(JobFailure),
27
- startedOn: Schema.OptionFromNullOr(Schema.DateTimeUtcFromDate),
28
- state: Schema.Literals(["created", "retry", "active", "completed", "cancelled", "failed"]),
29
- });
30
- const Rows = Schema.Array(Row);
31
- export function failedJobsFor(client, schema) {
32
- return (queue, options) => listJobs(client, schema, "failedJobs", queue, options).pipe(Effect.map(({ jobs, next }) => ({ jobs: jobs.map(({ sourceId: _id, sourceOutput: _output, ...job }) => job), next })));
33
- }
34
- export function deadLetteredJobsFor(client, schema) {
35
- return (queue, options) => listJobs(client, schema, "deadLetteredJobs", queue, options).pipe(Effect.map(({ jobs, next }) => ({ jobs: jobs.map((job) => ({ ...job, sourceQueue: queue.name })), next })));
36
- }
37
- const listJobs = Effect.fnUntraced(function* (client, schema, listing, queue, options) {
38
- const { cursor: after, limit } = yield* Schema.decodeUnknownEffect(PageOptions)(options);
39
- const rows = yield* Effect.tryPromise({
40
- catch: (error) => toPgBossError(listing, error, queue.name),
41
- try: async () => {
42
- if (client.getDb === undefined) {
43
- throw new TypeError("This pg-boss client does not support getDb");
44
- }
45
- const quoted = quotedSchema(schema);
46
- const { rows: storedRows } = await client.getDb().executeSql(`SELECT
47
- id,
48
- name AS queue,
49
- state,
50
- retry_count AS "retryCount",
51
- retry_limit AS "retryLimit",
52
- created_on AS "createdOn",
53
- started_on AS "startedOn",
54
- completed_on AS "completedOn",
55
- output,
56
- data,
57
- source_id AS "sourceId",
58
- source_output AS "sourceOutput",
59
- to_json(created_on) #>> '{}' AS "cursorAt"
60
- FROM ${quoted}.job
61
- WHERE name = $1
62
- ${listing === "failedJobs" ? "AND state = 'failed'" : ""}
63
- AND ($2::timestamptz IS NULL OR (created_on, id) < ($2::timestamptz, $3::uuid))
64
- ORDER BY created_on DESC, id DESC
65
- LIMIT $4`, [listing === "failedJobs" ? queue.name : deadLetterQueueName(queue.name), after?.[0] ?? null, after?.[1] ?? null, limit + 1]);
66
- return storedRows;
67
- },
68
- });
69
- const decodedRows = yield* Schema.decodeUnknownEffect(Rows)(rows).pipe(Effect.mapError((error) => new PgBossPayloadError({ direction: "decode", original: Redacted.make(error), queue: queue.name })));
70
- const page = decodedRows.slice(0, limit);
71
- const last = page.at(-1);
72
- const next = decodedRows.length > limit && last !== undefined ? Option.some(Schema.encodeSync(Cursor)([last.cursorAt, last.id])) : Option.none();
73
- return yield* Effect.forEach(page, ({ cursorAt: _, data, ...row }) => decodeStoredData(queue, data).pipe(Effect.map((decoded) => ({ ...row, attempt: Option.isSome(row.startedOn) ? row.retryCount + 1 : 0, data: redact(decoded) })))).pipe(Effect.map((jobs) => ({ jobs, next })));
74
- });
75
- //# sourceMappingURL=listJobs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"listJobs.js","sourceRoot":"","sources":["../../../src/server/internal/listJobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,OAAO,EAAoB,kBAAkB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAwB,mBAAmB,EAAqC,MAAM,YAAY,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAC7C,MAAM,CAAC,QAAQ,CACd,MAAM,CAAC,cAAc,CACpB,MAAM,CAAC,KAAK,CAAC;IACZ,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;CACpC,CAAC,CACF,CACD,CACD,CAAC;AACF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC,mBAAmB;IACrC,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,IAAI,EAAE,MAAM,CAAC,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;IAChD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAC9D,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;CAC1F,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAI/B,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,MAAc;IACjE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CACrH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAoB,EAAE,MAAc;IACvE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAChE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1G,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC3C,MAAoB,EACpB,MAAc,EACd,OAAgB,EAChB,KAA0D,EAC1D,OAAuB;IAMvB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QACrC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;QAC3D,GAAG,EAAE,KAAK,IAAI,EAAE;YACf,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,CAC3D;;;;;;;;;;;;;;WAcO,MAAM;;OAEV,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;;;aAGhD,EACT,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAC5H,CAAC;YACF,OAAO,UAAU,CAAC;QACnB,CAAC;KACD,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACrE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAC9H,CAAC;IACF,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjJ,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CACpE,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CACjC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAC5H,CACD,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { PgBoss } from "pg-boss";
2
- export declare function observeTestingSettlements(client: PgBoss, settled: (name: string) => void): {
3
- close(): void;
4
- watch(name: string): void;
5
- };
6
- //# sourceMappingURL=observeTestingSettlements.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observeTestingSettlements.d.ts","sourceRoot":"","sources":["../../../src/server/internal/observeTestingSettlements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAGvF,KAAK;IAML,KAAK,OAAO,MAAM;EAwBnB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"observeTestingSettlements.js","sourceRoot":"","sources":["../../../src/server/internal/observeTestingSettlements.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,OAA+B;IACxF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAChD,OAAO;QACN,KAAK;YACJ,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxC,KAAK,EAAE,CAAC;YACT,CAAC;YACD,SAAS,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAY;YACjB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,KAAK,UAAU,OAAO;gBACrB,OAAO,IAAI,EAAE,CAAC;oBACb,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACpG,IAAI,CAAC,IAAI,EAAE,CAAC;wBACX,OAAO;oBACR,CAAC;oBACD,iGAAiG;oBACjG,GAAG,CAAC,KAAK,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,CAAC;YACF,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;gBACxB,IAAI,GAAG,KAAK,CAAC;gBACb,GAAG,CAAC,KAAK,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;YACH,KAAK,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3H,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -1,7 +0,0 @@
1
- import type { Job } from "pg-boss";
2
- import type { PgBossClient } from "#client.ts";
3
- export declare function settleDeferral(client: PgBossClient, schema: string, job: Job<unknown>, at: string, reason: string, maxDeferrals: number): Promise<{
4
- readonly claimed: boolean;
5
- readonly deferred: boolean;
6
- }>;
7
- //# sourceMappingURL=settleDeferral.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settleDeferral.d.ts","sourceRoot":"","sources":["../../../src/server/internal/settleDeferral.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;GA6C7I"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"settleDeferral.js","sourceRoot":"","sources":["../../../src/server/internal/settleDeferral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAExF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAoB,EAAE,MAAc,EAAE,GAAiB,EAAE,EAAU,EAAE,MAAc,EAAE,YAAoB;IAC7I,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,gHAAgH;IAChH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,CAC/C;;;UAGQ,MAAM;;;;;iBAKC,MAAM;;;;;;;;YAQX,MAAM;sDACoC,uBAAuB;;;;;;iBAM5D,MAAM;uCACgB,MAAM;kEACqB,MAAM;;;qBAGnD,MAAM;;;;;;gGAMqE,EAC9F,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,CAC3F,CAAC;IACF,OAAO,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -1,13 +0,0 @@
1
- import type { PgBoss, SendOptions } from "pg-boss";
2
- import type { PgBossClient } from "#client.ts";
3
- import type { TestingWork } from "#internal/testingIdle.ts";
4
- export interface TestingControls {
5
- readonly changed: () => void;
6
- readonly expirations: Map<string, number>;
7
- readonly expirySeconds: Map<string, number>;
8
- readonly failures: Set<string>;
9
- readonly retryPolicy: Pick<SendOptions, "retryBackoff" | "retryDelay">;
10
- readonly work: TestingWork;
11
- }
12
- export declare function testingClient(client: PgBoss, schema: string, controls: TestingControls): PgBossClient;
13
- //# sourceMappingURL=testingClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testingClient.d.ts","sourceRoot":"","sources":["../../../src/server/internal/testingClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,MAAM,EAAE,WAAW,EAAgD,MAAM,SAAS,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG1E,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,YAAY,CAsHrG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"testingClient.js","sourceRoot":"","sources":["../../../src/server/internal/testingClient.ts"],"names":[],"mappings":"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"}