@shivaedev/jobs 0.29.2 → 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.
- package/CHANGELOG.md +39 -0
- package/README.md +74 -22
- package/dist/display.d.ts +14 -0
- package/dist/display.d.ts.map +1 -0
- package/dist/display.js +2 -0
- package/dist/display.js.map +1 -0
- package/dist/server/ClientDatabase.d.ts +21 -0
- package/dist/server/ClientDatabase.d.ts.map +1 -0
- package/dist/server/ClientDatabase.js +2 -0
- package/dist/server/ClientDatabase.js.map +1 -0
- package/dist/server/PgBoss.d.ts +2 -2
- package/dist/server/PgBoss.d.ts.map +1 -1
- package/dist/server/adapters/batchClockOffset.d.ts +2 -2
- package/dist/server/adapters/batchClockOffset.d.ts.map +1 -1
- package/dist/server/adapters/batchClockOffset.js +5 -4
- package/dist/server/adapters/batchClockOffset.js.map +1 -1
- package/dist/server/adapters/batchHandler.d.ts +5 -0
- package/dist/server/adapters/batchHandler.d.ts.map +1 -0
- package/dist/server/{internal → adapters}/batchHandler.js +6 -6
- package/dist/server/adapters/batchHandler.js.map +1 -0
- package/dist/server/adapters/clientCache.d.ts +10 -0
- package/dist/server/adapters/clientCache.d.ts.map +1 -0
- package/dist/server/{internal → adapters}/clientCache.js +5 -19
- package/dist/server/adapters/clientCache.js.map +1 -0
- package/dist/server/adapters/clientErrorLogger.js +1 -1
- package/dist/server/adapters/clientErrorLogger.js.map +1 -1
- package/dist/server/adapters/defaultClientFactory.d.ts +4 -0
- package/dist/server/adapters/defaultClientFactory.d.ts.map +1 -0
- package/dist/server/adapters/defaultClientFactory.js.map +1 -0
- package/dist/server/adapters/deferralCount.d.ts +3 -3
- package/dist/server/adapters/deferralCount.d.ts.map +1 -1
- package/dist/server/adapters/deferralCount.js +2 -2
- package/dist/server/adapters/deferralCount.js.map +1 -1
- package/dist/server/adapters/expireAttempt.d.ts +4 -0
- package/dist/server/adapters/expireAttempt.d.ts.map +1 -0
- package/dist/server/{internal → adapters}/expireAttempt.js +1 -1
- package/dist/server/{internal → adapters}/expireAttempt.js.map +1 -1
- package/dist/server/adapters/installSchema.d.ts +1 -1
- package/dist/server/adapters/installSchema.d.ts.map +1 -1
- package/dist/server/adapters/installSchema.js +1 -1
- package/dist/server/adapters/installSchema.js.map +1 -1
- package/dist/server/adapters/jobEngine.d.ts +5 -0
- package/dist/server/adapters/jobEngine.d.ts.map +1 -0
- package/dist/server/adapters/jobEngine.js +50 -0
- package/dist/server/adapters/jobEngine.js.map +1 -0
- package/dist/server/adapters/lifecycle.d.ts +11 -0
- package/dist/server/adapters/lifecycle.d.ts.map +1 -0
- package/dist/server/adapters/lifecycle.js +48 -0
- package/dist/server/adapters/lifecycle.js.map +1 -0
- package/dist/server/adapters/listJobs.d.ts +5 -0
- package/dist/server/adapters/listJobs.d.ts.map +1 -0
- package/dist/server/adapters/listJobs.js +37 -0
- package/dist/server/adapters/listJobs.js.map +1 -0
- package/dist/server/adapters/observeTestingSettlements.d.ts +6 -0
- package/dist/server/adapters/observeTestingSettlements.d.ts.map +1 -0
- package/dist/server/adapters/observeTestingSettlements.js.map +1 -0
- package/dist/server/adapters/queueAdministration.d.ts +4 -0
- package/dist/server/adapters/queueAdministration.d.ts.map +1 -0
- package/dist/server/adapters/queueAdministration.js +42 -0
- package/dist/server/adapters/queueAdministration.js.map +1 -0
- package/dist/server/adapters/registerWorker.d.ts +5 -3
- package/dist/server/adapters/registerWorker.d.ts.map +1 -1
- package/dist/server/adapters/registerWorker.js +16 -7
- package/dist/server/adapters/registerWorker.js.map +1 -1
- package/dist/server/adapters/retireJobs.d.ts +3 -3
- package/dist/server/adapters/retireJobs.d.ts.map +1 -1
- package/dist/server/adapters/retireJobs.js +3 -3
- package/dist/server/adapters/retireJobs.js.map +1 -1
- package/dist/server/adapters/schemaIndexBuilds.d.ts +2 -2
- package/dist/server/adapters/schemaIndexBuilds.d.ts.map +1 -1
- package/dist/server/adapters/schemaIndexBuilds.js.map +1 -1
- package/dist/server/adapters/settleDeferral.d.ts +7 -0
- package/dist/server/adapters/settleDeferral.d.ts.map +1 -0
- package/dist/server/{internal → adapters}/settleDeferral.js +2 -2
- package/dist/server/adapters/settleDeferral.js.map +1 -0
- package/dist/server/adapters/testingClient.d.ts +14 -0
- package/dist/server/adapters/testingClient.d.ts.map +1 -0
- package/dist/server/{internal → adapters}/testingClient.js +15 -11
- package/dist/server/adapters/testingClient.js.map +1 -0
- package/dist/server/adapters/testingController.d.ts +34 -0
- package/dist/server/adapters/testingController.d.ts.map +1 -0
- package/dist/server/adapters/testingController.js +98 -0
- package/dist/server/adapters/testingController.js.map +1 -0
- package/dist/server/adapters/testingDueNow.d.ts +3 -3
- package/dist/server/adapters/testingDueNow.d.ts.map +1 -1
- package/dist/server/adapters/testingDueNow.js +2 -2
- package/dist/server/adapters/testingDueNow.js.map +1 -1
- package/dist/server/adapters/testingEngine.d.ts +5 -0
- package/dist/server/adapters/testingEngine.d.ts.map +1 -0
- package/dist/server/adapters/testingEngine.js +23 -0
- package/dist/server/adapters/testingEngine.js.map +1 -0
- package/dist/server/adapters/testingExpirations.d.ts +6 -4
- package/dist/server/adapters/testingExpirations.d.ts.map +1 -1
- package/dist/server/adapters/testingExpirations.js.map +1 -1
- package/dist/server/adapters/transactionDb.d.ts +2 -2
- package/dist/server/adapters/transactionDb.d.ts.map +1 -1
- package/dist/server/adapters/transactionDb.js.map +1 -1
- package/dist/server/client.d.ts +92 -18
- package/dist/server/client.d.ts.map +1 -1
- package/dist/server/clientOptions.d.ts +75 -0
- package/dist/server/clientOptions.d.ts.map +1 -0
- package/dist/server/clientOptions.js +2 -0
- package/dist/server/clientOptions.js.map +1 -0
- package/dist/server/defineSchedule.d.ts +1 -1
- package/dist/server/defineSchedule.d.ts.map +1 -1
- package/dist/server/defineSchedule.js +2 -1
- package/dist/server/defineSchedule.js.map +1 -1
- package/dist/server/definition.d.ts +20 -18
- package/dist/server/definition.d.ts.map +1 -1
- package/dist/server/definition.js +3 -1
- package/dist/server/definition.js.map +1 -1
- package/dist/server/engineClient.d.ts +26 -0
- package/dist/server/engineClient.d.ts.map +1 -0
- package/dist/server/engineClient.js +2 -0
- package/dist/server/engineClient.js.map +1 -0
- package/dist/server/enqueueOptions.d.ts +22 -0
- package/dist/server/enqueueOptions.d.ts.map +1 -0
- package/dist/server/enqueueOptions.js +2 -0
- package/dist/server/enqueueOptions.js.map +1 -0
- package/dist/server/error.d.ts +11 -1
- package/dist/server/error.d.ts.map +1 -1
- package/dist/server/error.js +8 -1
- package/dist/server/error.js.map +1 -1
- package/dist/server/health.d.ts +2 -2
- package/dist/server/health.d.ts.map +1 -1
- package/dist/server/internal/acquireClient.d.ts +11 -0
- package/dist/server/internal/acquireClient.d.ts.map +1 -0
- package/dist/server/internal/acquireClient.js +21 -0
- package/dist/server/internal/acquireClient.js.map +1 -0
- package/dist/server/internal/adapters/testingFetches.d.ts +2 -2
- package/dist/server/internal/adapters/testingFetches.d.ts.map +1 -1
- package/dist/server/internal/adapters/testingFetches.js.map +1 -1
- package/dist/server/internal/clientErrors.d.ts +1 -1
- package/dist/server/internal/clientErrors.d.ts.map +1 -1
- package/dist/server/internal/countsFor.d.ts +3 -3
- package/dist/server/internal/countsFor.d.ts.map +1 -1
- package/dist/server/internal/countsFor.js +2 -2
- package/dist/server/internal/countsFor.js.map +1 -1
- package/dist/server/internal/deadLetterResolutionPlan.js +1 -1
- package/dist/server/internal/deadLetterResolutionPlan.js.map +1 -1
- package/dist/server/internal/deadlineOf.d.ts +2 -2
- package/dist/server/internal/deadlineOf.d.ts.map +1 -1
- package/dist/server/internal/deadlineOf.js.map +1 -1
- package/dist/server/internal/deferrableAttempt.d.ts +4 -5
- package/dist/server/internal/deferrableAttempt.d.ts.map +1 -1
- package/dist/server/internal/deferrableAttempt.js +5 -14
- package/dist/server/internal/deferrableAttempt.js.map +1 -1
- package/dist/server/internal/deferral.d.ts +3 -3
- package/dist/server/internal/deferral.d.ts.map +1 -1
- package/dist/server/internal/deferral.js.map +1 -1
- package/dist/server/internal/deferralStorePlan.js +2 -2
- package/dist/server/internal/deferralStorePlan.js.map +1 -1
- package/dist/server/internal/definitionOptions.d.ts +7 -7
- package/dist/server/internal/definitionOptions.d.ts.map +1 -1
- package/dist/server/internal/engine.d.ts +30 -0
- package/dist/server/internal/engine.d.ts.map +1 -0
- package/dist/server/internal/engine.js +6 -0
- package/dist/server/internal/engine.js.map +1 -0
- package/dist/server/internal/enqueueFor.d.ts +2 -2
- package/dist/server/internal/enqueueFor.d.ts.map +1 -1
- package/dist/server/internal/enqueueFor.js +3 -3
- package/dist/server/internal/enqueueFor.js.map +1 -1
- package/dist/server/internal/ensureQueue.d.ts +2 -3
- package/dist/server/internal/ensureQueue.d.ts.map +1 -1
- package/dist/server/internal/ensureQueue.js +2 -2
- package/dist/server/internal/ensureQueue.js.map +1 -1
- package/dist/server/internal/healthFor.d.ts +3 -3
- package/dist/server/internal/healthFor.d.ts.map +1 -1
- package/dist/server/internal/healthFor.js +2 -2
- package/dist/server/internal/healthFor.js.map +1 -1
- package/dist/server/internal/jobControl.d.ts +9 -4
- package/dist/server/internal/jobControl.d.ts.map +1 -1
- package/dist/server/internal/jobControl.js +13 -40
- package/dist/server/internal/jobControl.js.map +1 -1
- package/dist/server/internal/jobListings.d.ts +16 -0
- package/dist/server/internal/jobListings.d.ts.map +1 -0
- package/dist/server/internal/jobListings.js +52 -0
- package/dist/server/internal/jobListings.js.map +1 -0
- package/dist/server/internal/jobStorePlans.js +2 -2
- package/dist/server/internal/jobStorePlans.js.map +1 -1
- package/dist/server/internal/lifecycle.d.ts +11 -7
- package/dist/server/internal/lifecycle.d.ts.map +1 -1
- package/dist/server/internal/lifecycle.js +2 -49
- package/dist/server/internal/lifecycle.js.map +1 -1
- package/dist/server/internal/makeService.d.ts +5 -3
- package/dist/server/internal/makeService.d.ts.map +1 -1
- package/dist/server/internal/makeService.js +15 -11
- package/dist/server/internal/makeService.js.map +1 -1
- package/dist/server/internal/register.d.ts +5 -5
- package/dist/server/internal/register.d.ts.map +1 -1
- package/dist/server/internal/register.js +17 -29
- package/dist/server/internal/register.js.map +1 -1
- package/dist/server/internal/registerReleasedJobs.d.ts +4 -4
- package/dist/server/internal/registerReleasedJobs.d.ts.map +1 -1
- package/dist/server/internal/registerReleasedJobs.js +2 -2
- package/dist/server/internal/registerReleasedJobs.js.map +1 -1
- package/dist/server/internal/retryWake.d.ts +1 -1
- package/dist/server/internal/retryWake.d.ts.map +1 -1
- package/dist/server/internal/retryWake.js +2 -2
- package/dist/server/internal/retryWake.js.map +1 -1
- package/dist/server/internal/runQueueWorker.d.ts +6 -4
- package/dist/server/internal/runQueueWorker.d.ts.map +1 -1
- package/dist/server/internal/runQueueWorker.js +5 -5
- package/dist/server/internal/runQueueWorker.js.map +1 -1
- package/dist/server/internal/storedRows.d.ts +2 -2
- package/dist/server/internal/storedRows.d.ts.map +1 -1
- package/dist/server/internal/storedRows.js +2 -2
- package/dist/server/internal/storedRows.js.map +1 -1
- package/dist/server/internal/testingDeferrals.d.ts +3 -3
- package/dist/server/internal/testingDeferrals.d.ts.map +1 -1
- package/dist/server/internal/testingDeferrals.js +2 -2
- package/dist/server/internal/testingDeferrals.js.map +1 -1
- package/dist/server/internal/testingIdle.d.ts +3 -3
- package/dist/server/internal/testingIdle.d.ts.map +1 -1
- package/dist/server/internal/testingIdle.js +11 -5
- package/dist/server/internal/testingIdle.js.map +1 -1
- package/dist/server/internal/testingReadout.d.ts +7 -41
- package/dist/server/internal/testingReadout.d.ts.map +1 -1
- package/dist/server/internal/testingReadout.js +2 -2
- package/dist/server/internal/testingReadout.js.map +1 -1
- package/dist/server/internal/testingRegistrations.d.ts +4 -0
- package/dist/server/internal/testingRegistrations.d.ts.map +1 -0
- package/dist/server/internal/testingRegistrations.js +8 -0
- package/dist/server/internal/testingRegistrations.js.map +1 -0
- package/dist/server/internal/testingSchedules.d.ts +3 -3
- package/dist/server/internal/testingSchedules.d.ts.map +1 -1
- package/dist/server/internal/testingSchedules.js +1 -1
- package/dist/server/internal/testingSchedules.js.map +1 -1
- package/dist/server/internal/testingSnapshot.d.ts +4 -4
- package/dist/server/internal/testingSnapshot.d.ts.map +1 -1
- package/dist/server/internal/testingSnapshot.js +7 -4
- package/dist/server/internal/testingSnapshot.js.map +1 -1
- package/dist/server/internal/testingWaits.d.ts +8 -7
- package/dist/server/internal/testingWaits.d.ts.map +1 -1
- package/dist/server/internal/testingWaits.js +3 -3
- package/dist/server/internal/testingWaits.js.map +1 -1
- package/dist/server/internal/tracing.d.ts +2 -2
- package/dist/server/internal/tracing.d.ts.map +1 -1
- package/dist/server/internal/tracing.js.map +1 -1
- package/dist/server/internal/validateQueueNames.d.ts +2 -2
- package/dist/server/internal/validateQueueNames.d.ts.map +1 -1
- package/dist/server/internal/validateQueueNames.js +1 -1
- package/dist/server/internal/validateQueueNames.js.map +1 -1
- package/dist/server/internal/waitForBatchExpiry.d.ts +4 -4
- package/dist/server/internal/waitForBatchExpiry.d.ts.map +1 -1
- package/dist/server/internal/waitForBatchExpiry.js +1 -1
- package/dist/server/internal/waitForBatchExpiry.js.map +1 -1
- package/dist/server/job.d.ts +42 -0
- package/dist/server/job.d.ts.map +1 -0
- package/dist/server/job.js +2 -0
- package/dist/server/job.js.map +1 -0
- package/dist/server/jobModule.d.ts +9 -0
- package/dist/server/jobModule.d.ts.map +1 -0
- package/dist/server/jobModule.js +15 -0
- package/dist/server/jobModule.js.map +1 -0
- package/dist/server/queueOptions.d.ts +19 -0
- package/dist/server/queueOptions.d.ts.map +1 -0
- package/dist/server/queueOptions.js +2 -0
- package/dist/server/queueOptions.js.map +1 -0
- package/dist/server/readJobFailure.d.ts +5 -0
- package/dist/server/readJobFailure.d.ts.map +1 -0
- package/dist/server/readJobFailure.js +8 -0
- package/dist/server/readJobFailure.js.map +1 -0
- package/dist/server/schema.d.ts +1 -1
- package/dist/server/schema.d.ts.map +1 -1
- package/dist/server/schema.js +18 -7
- package/dist/server/schema.js.map +1 -1
- package/dist/server/service.d.ts +15 -10
- package/dist/server/service.d.ts.map +1 -1
- package/dist/server/service.js +26 -33
- package/dist/server/service.js.map +1 -1
- package/dist/server/testing.d.ts +32 -70
- package/dist/server/testing.d.ts.map +1 -1
- package/dist/server/testing.js +9 -96
- package/dist/server/testing.js.map +1 -1
- package/dist/server/workerOptions.d.ts +25 -0
- package/dist/server/workerOptions.d.ts.map +1 -0
- package/dist/server/workerOptions.js +2 -0
- package/dist/server/workerOptions.js.map +1 -0
- package/package.json +11 -16
- package/src/display.ts +12 -0
- package/src/server/ClientDatabase.ts +7 -0
- package/src/server/PgBoss.ts +2 -2
- package/src/server/adapters/batchClockOffset.ts +8 -5
- package/src/server/{internal → adapters}/batchHandler.ts +13 -13
- package/src/server/{internal → adapters}/clientCache.ts +10 -22
- package/src/server/adapters/clientErrorLogger.ts +1 -1
- package/src/server/{defaultClientFactory.ts → adapters/defaultClientFactory.ts} +4 -2
- package/src/server/adapters/deferralCount.ts +5 -5
- package/src/server/{internal → adapters}/expireAttempt.ts +4 -3
- package/src/server/adapters/installSchema.ts +2 -2
- package/src/server/adapters/jobEngine.ts +59 -0
- package/src/server/adapters/lifecycle.ts +67 -0
- package/src/server/adapters/listJobs.ts +43 -0
- package/src/server/{internal → adapters}/observeTestingSettlements.ts +2 -2
- package/src/server/adapters/queueAdministration.ts +47 -0
- package/src/server/adapters/registerWorker.ts +24 -13
- package/src/server/adapters/retireJobs.ts +5 -5
- package/src/server/adapters/schemaIndexBuilds.ts +2 -2
- package/src/server/{internal → adapters}/settleDeferral.ts +5 -5
- package/src/server/{internal → adapters}/testingClient.ts +34 -26
- package/src/server/adapters/testingController.ts +109 -0
- package/src/server/adapters/testingDueNow.ts +5 -5
- package/src/server/adapters/testingEngine.ts +28 -0
- package/src/server/adapters/testingExpirations.ts +6 -4
- package/src/server/adapters/transactionDb.ts +2 -2
- package/src/server/client.ts +83 -30
- package/src/server/clientOptions.ts +81 -0
- package/src/server/defineSchedule.ts +3 -2
- package/src/server/definition.ts +24 -20
- package/src/server/engineClient.ts +24 -0
- package/src/server/enqueueOptions.ts +20 -0
- package/src/server/error.ts +17 -2
- package/src/server/health.ts +2 -2
- package/src/server/internal/acquireClient.ts +26 -0
- package/src/server/internal/adapters/testingFetches.ts +2 -2
- package/src/server/internal/clientErrors.ts +1 -1
- package/src/server/internal/countsFor.ts +5 -5
- package/src/server/internal/deadLetterResolutionPlan.ts +1 -1
- package/src/server/internal/deadlineOf.ts +2 -2
- package/src/server/internal/deferrableAttempt.ts +5 -22
- package/src/server/internal/deferral.ts +3 -3
- package/src/server/internal/deferralStorePlan.ts +2 -2
- package/src/server/internal/definitionOptions.ts +1 -1
- package/src/server/internal/engine.ts +41 -0
- package/src/server/internal/enqueueFor.ts +5 -5
- package/src/server/internal/ensureQueue.ts +5 -6
- package/src/server/internal/healthFor.ts +4 -4
- package/src/server/internal/jobControl.ts +15 -50
- package/src/server/internal/jobListings.ts +85 -0
- package/src/server/internal/jobStorePlans.ts +2 -2
- package/src/server/internal/lifecycle.ts +14 -55
- package/src/server/internal/makeService.ts +21 -13
- package/src/server/internal/register.ts +27 -45
- package/src/server/internal/registerReleasedJobs.ts +6 -6
- package/src/server/internal/retryWake.ts +3 -3
- package/src/server/internal/runQueueWorker.ts +14 -8
- package/src/server/internal/storedRows.ts +3 -3
- package/src/server/internal/testingDeferrals.ts +5 -5
- package/src/server/internal/testingIdle.ts +13 -8
- package/src/server/internal/testingReadout.ts +12 -6
- package/src/server/internal/testingRegistrations.ts +10 -0
- package/src/server/internal/testingSchedules.ts +4 -4
- package/src/server/internal/testingSnapshot.ts +11 -8
- package/src/server/internal/testingWaits.ts +11 -10
- package/src/server/internal/tracing.ts +2 -2
- package/src/server/internal/validateQueueNames.ts +2 -2
- package/src/server/internal/waitForBatchExpiry.ts +4 -4
- package/src/server/job.ts +42 -0
- package/src/server/jobModule.ts +30 -0
- package/src/server/queueOptions.ts +20 -0
- package/src/server/readJobFailure.ts +12 -0
- package/src/server/schema.ts +18 -7
- package/src/server/service.ts +63 -59
- package/src/server/testing.ts +17 -108
- package/src/server/workerOptions.ts +28 -0
- package/dist/server/defaultClientFactory.d.ts +0 -3
- package/dist/server/defaultClientFactory.d.ts.map +0 -1
- package/dist/server/defaultClientFactory.js.map +0 -1
- package/dist/server/internal/batchHandler.d.ts +0 -5
- package/dist/server/internal/batchHandler.d.ts.map +0 -1
- package/dist/server/internal/batchHandler.js.map +0 -1
- package/dist/server/internal/clientCache.d.ts +0 -8
- package/dist/server/internal/clientCache.d.ts.map +0 -1
- package/dist/server/internal/clientCache.js.map +0 -1
- package/dist/server/internal/expireAttempt.d.ts +0 -3
- package/dist/server/internal/expireAttempt.d.ts.map +0 -1
- package/dist/server/internal/listJobs.d.ts +0 -5
- package/dist/server/internal/listJobs.d.ts.map +0 -1
- package/dist/server/internal/listJobs.js +0 -75
- package/dist/server/internal/listJobs.js.map +0 -1
- package/dist/server/internal/observeTestingSettlements.d.ts +0 -6
- package/dist/server/internal/observeTestingSettlements.d.ts.map +0 -1
- package/dist/server/internal/observeTestingSettlements.js.map +0 -1
- package/dist/server/internal/settleDeferral.d.ts +0 -7
- package/dist/server/internal/settleDeferral.d.ts.map +0 -1
- package/dist/server/internal/settleDeferral.js.map +0 -1
- package/dist/server/internal/testingClient.d.ts +0 -13
- package/dist/server/internal/testingClient.d.ts.map +0 -1
- package/dist/server/internal/testingClient.js.map +0 -1
- package/src/server/internal/listJobs.ts +0 -116
- /package/dist/server/{defaultClientFactory.js → adapters/defaultClientFactory.js} +0 -0
- /package/dist/server/{internal → adapters}/observeTestingSettlements.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.31.0 - 2026-11-03
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Expose `readJobFailure` to read direct or wrapped pg-boss failures as sanitized `JobFailure | null` values, failing with `PgBossPayloadError` for invalid stored output.
|
|
8
|
+
- `linkedWorkerSpans(sender, spans)` in jobs testing returns recorded pg-boss worker spans linked to the sender's trace and span IDs, including retry attempts.
|
|
9
|
+
- Add `unschedule`, `deleteQueue` and `refreshQueueStats` to the jobs service so applications can administer queues through their owned client. Missing queues and schedule registrations fail with `PgBossNotFoundError`; engine failures retain the operation in `PgBossError`.
|
|
10
|
+
- Queues and schedules accept display labels, and queues declare subject columns whose fields come from the decoded payload schema.
|
|
11
|
+
- `jobModule` derives a module's queue declarations and worker Layer from its registrations.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- Share the failure readout across job details, failed listings and dead-letter source failures, preserving native timeout messages and tags while redacting secrets and removing diagnostic fields.
|
|
16
|
+
- Keep testing expiry failures in the Effect error channel as `PgBossTestingError`, with the original failure and queue retained.
|
|
17
|
+
- The pg-boss schema readiness check reports missing deferral tables, cleanup indexes, functions and triggers even when the pg-boss version is current. Its pending detail names the missing artifacts.
|
|
18
|
+
- Release the jobs engine client when acquisition is interrupted, including pending shared-client acquisitions. Keep the client alive until its final owning Scope closes.
|
|
19
|
+
- Log a tagged shutdown error when cleanup after a failed startup also fails, while preserving the startup error for callers.
|
|
20
|
+
- Preserve job module queue payload schemas and their Effect service requirements when composing queue inventories.
|
|
21
|
+
|
|
22
|
+
### Breaking
|
|
23
|
+
|
|
24
|
+
- Public declarations use jobs-owned types, including adapter and testing signatures. Replace pg-boss `WorkOptions`, `SendOptions`, `ScheduleOptions`, `ConstructorOptions`, `StopOptions`, `FindJobsOptions` and `JobWithMetadata` annotations with `WorkerOptions` from `@shivaedev/jobs/server/workerOptions.ts`, `EnqueueOptions` and `ScheduleOptions` from `@shivaedev/jobs/server/enqueueOptions.ts`, `ClientOptions` and `StopOptions` from `@shivaedev/jobs/server/clientOptions.ts`, `JobReadOptions` from `@shivaedev/jobs/server/client.ts`, and `Job` from `@shivaedev/jobs/server/job.ts`. `JobState` is declared in `@shivaedev/jobs/server/job.ts`; job reads explicitly allow null `startedOn` and `output` values, which callers must handle before dereferencing. Database adapters use `ClientDatabase` from `@shivaedev/jobs/server/ClientDatabase.ts`; decode their unknown row values before use.
|
|
25
|
+
- Move `QueueOptions` and `QueuePolicy` imports from `@shivaedev/jobs/server/definition.ts` to `@shivaedev/jobs/server/queueOptions.ts`. The previous module no longer exports those names. Move `batchHandler` imports from `@shivaedev/jobs/server/internal/batchHandler.ts` to its engine adapter at `@shivaedev/jobs/server/adapters/batchHandler.ts`.
|
|
26
|
+
- `defaultClientFactory` returns the jobs-owned `EngineClient` contract from `@shivaedev/jobs/server/engineClient.ts`. Code needing additional engine methods must own a pg-boss client in its custom factory. Constructor OpenTelemetry options support `enabled` and `propagateContext`; configure custom OpenTelemetry providers on the client inside that factory.
|
|
27
|
+
- Import `defaultClientFactory` from `@shivaedev/jobs/server/adapters/defaultClientFactory.ts` instead of `@shivaedev/jobs/server/defaultClientFactory.ts`. Its signature and the public jobs types are unchanged.
|
|
28
|
+
|
|
29
|
+
## 0.30.0 - 2026-11-02
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- Wake idle workers when `RetryAt` deferrals become due, without waiting for the polling backstop. Retry and deferral wakes account for differences between the runtime and PostgreSQL clocks.
|
|
34
|
+
|
|
35
|
+
### Breaking
|
|
36
|
+
|
|
37
|
+
- Job registrations require complete queue definitions, queue workers or scheduled workers. Reusable collections retain service requirements in the jobs Layer instead of erasing them. Replace tag-only registrations with `defineQueue`, `.handle` or `.run` results. Replace broad `JobRegistration[]` annotations with `satisfies readonly JobRegistration[]` or `readonly JobRegistration<Services>[]`, naming the union of handler, payload-decoding and scheduled-effect services.
|
|
38
|
+
- `waitForIdle` discovers all registered job queues, including producer-only definitions, and waits for ready and active work across clients. Consumers that previously ignored ready jobs without local workers must run a worker for those jobs or leave them scheduled for the future before settling.
|
|
39
|
+
- `UnfinishedJob.state` includes `deferred`. Handle this state when reading `snapshot(queues)`: a future `RetryAt` deferral reads as `deferred`, while a due deferral or a retry after a failure reads as `retry`.
|
|
40
|
+
- Queue and scheduled workers now fail Layer acquisition with a registration `PgBossError` when `worker.perJobResults` or `worker.transactional` is `true`. Omit these options or set them to `false`; the adapter owns per-job settlement and does not pass a pg-boss transaction client to handlers. Consumers needing pg-boss's result-array or transactional callback contracts must register those workers through pg-boss directly.
|
|
41
|
+
|
|
3
42
|
## 0.29.2 - 2026-11-02
|
|
4
43
|
|
|
5
44
|
### Fixed
|
package/README.md
CHANGED
|
@@ -35,6 +35,19 @@ Use a distinct literal identifier for each jobs service. The service and its Lay
|
|
|
35
35
|
|
|
36
36
|
The work separates naturally: declare the application services once, define a queue and its worker for each feature, provide the complete registration list at the runtime boundary, and enqueue from ordinary application Effects.
|
|
37
37
|
|
|
38
|
+
### Contribute workers to application modules
|
|
39
|
+
|
|
40
|
+
`jobModule` from `@shivaedev/jobs/server/jobModule.ts` returns `queues` and `workers` fields for an `AppModule` in `@shivaedev/server`. Its queue declarations come from the same registrations its worker Layer runs:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
import { jobModule } from "@shivaedev/jobs/server/jobModule.ts";
|
|
44
|
+
import { Jobs, SendEmail, Mail } from "./app.ts";
|
|
45
|
+
|
|
46
|
+
const jobs = jobModule(Jobs.layer, { jobs: [SendEmail.handle(({ userId }) => Mail.send(userId))] });
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Spread these fields into the owning module. Keep the producer's jobs Layer in its services or ports. The application builds `appModules` once and passes its result to `appHost` or `workerHost`; both hosts provide the module's services and ports to their work. Queue definitions without handlers and scheduled workers can also appear in the registration list.
|
|
50
|
+
|
|
38
51
|
### Share queue names with the browser
|
|
39
52
|
|
|
40
53
|
Keep names and payload Schemas in a browser-safe module such as `queues.ts`:
|
|
@@ -64,6 +77,21 @@ With the second argument, every `Jobs.layer({ jobs })` checks its registrations
|
|
|
64
77
|
|
|
65
78
|
Declare names per jobs service, so producer and worker Layers share a declaration when they register the same queues. Keep worker-only schedules in their own service when producers do not register them. Import only the browser-safe declaration module from client code; `defineQueue`, `defineSchedule` and `makePgBoss` stay on the server.
|
|
66
79
|
|
|
80
|
+
### Label queues and identify jobs
|
|
81
|
+
|
|
82
|
+
Queue and schedule definitions accept an optional `label`. A queue's `subject` declares display columns by naming fields in its decoded payload Schema:
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
const SendEmail = defineQueue({
|
|
86
|
+
name: "send-email",
|
|
87
|
+
label: "Email delivery",
|
|
88
|
+
schema: Schema.Struct({ userId: Schema.NumberFromString }),
|
|
89
|
+
subject: [{ field: "userId", label: "Recipient" }],
|
|
90
|
+
});
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`subject` fields are checked against the Schema's decoded keys. Keep labels and columns beside the name and Schema in the browser-safe declaration when using the admin Jobs view, then spread that declaration into `defineQueue`. The browser-safe types `QueueDisplay` and `SubjectColumn<PayloadSchema>` come from `@shivaedev/jobs/display.ts`. Pass the declarations to the admin page and view to show their labels and subjects. Subject columns read the masked inspection payload, so native `Redacted` values and sensitive keys stay masked in failed and dead-letter lists. Dead-letter copies stay with the source queue and use its columns. Definitions without labels display their internal names.
|
|
94
|
+
|
|
67
95
|
### Once per database: install the schema
|
|
68
96
|
|
|
69
97
|
For an application on the app host of `@shivaedev/server`, register `pgBossSchema` beside the migration loader. The host's `migrate` mode installs or upgrades it after committing the application ledger. Its `check` and `wait` modes include pg-boss readiness in the same check as the numbered migrations.
|
|
@@ -127,6 +155,8 @@ export const MailLive = Mail.layer;
|
|
|
127
155
|
|
|
128
156
|
`Jobs` is the service that callers yield. `Mail` is a separate domain service that workers use. The example implementation logs calls so the wiring is complete; an application supplies its own implementation of those methods. The jobs package does not need a provider-specific interface.
|
|
129
157
|
|
|
158
|
+
Registration collections retain their workers' handler, payload-decoding and scheduled-effect service requirements in `Jobs.layer`. Use `satisfies readonly JobRegistration[]` to check a reusable collection while preserving its inferred requirements, or annotate it as `readonly JobRegistration<Services>[]` with the union of services it needs. A plain `JobRegistration[]` leaves requirements `unknown`. Queue workers require both their queue and handler; scheduled workers require both their schedule and effect. Incomplete registrations are TypeScript errors. Producer-only queue definitions need no handler or decoding services at startup.
|
|
159
|
+
|
|
130
160
|
### Once per feature: the payload and handler
|
|
131
161
|
|
|
132
162
|
Define the feature's registrations in `jobs.ts`:
|
|
@@ -192,7 +222,7 @@ const Compare = defineQueue({
|
|
|
192
222
|
});
|
|
193
223
|
```
|
|
194
224
|
|
|
195
|
-
This worker runs up to five handlers at once. `worker` accepts
|
|
225
|
+
This worker runs up to five handlers at once. `worker` accepts jobs' `WorkerOptions`, including `batchSize`, `localConcurrency`, `pollingIntervalSeconds`, `notifyPollingIntervalSeconds` and the burst options. Explicit options override the adapter defaults. pg-boss ignores `burstWhenBatchFull` at `batchSize: 1`; keep a batch size of at least two for immediate backlog draining. Each job is settled separately through pg-boss: success completes that job, and a typed failure, payload decoding failure or defect fails only that job with its own error. A failed job does not spend the retries of other jobs in its batch or rerun their successful handlers. Interruption stops the batch and leaves the interrupted and remaining jobs to pg-boss expiry; handlers must still tolerate repeated side effects across retries and interrupted attempts.
|
|
196
226
|
|
|
197
227
|
Apps do not need to shorten the polling backstop to drain a backlog. With `notify: true` and an active LISTEN/NOTIFY listener, pg-boss wakes workers on notifications and defaults to a 30-second backstop (`notifyPollingIntervalSeconds`). Without active notifications its base poll defaults to two seconds (`pollingIntervalSeconds`). Bursting takes precedence over both intervals. After an adapter worker fails or defers a job, it reads pg-boss's stored retry time and schedules a wake for every native worker in its registration at that time, so an idle sibling can retry while another worker is busy. The wake accounts for differences between the runtime and PostgreSQL clocks. The wake, including its retry-time read, belongs to the worker Layer's scope and is canceled when that scope closes. Wake failures are logged with redacted diagnostics and do not fail the batch. Override the backstop when the application needs a different bound for other work that becomes runnable without a notification, such as delayed jobs or retries initiated outside the adapter worker.
|
|
198
228
|
|
|
@@ -372,6 +402,14 @@ export const readJobCounts = Effect.gen(function* () {
|
|
|
372
402
|
|
|
373
403
|
`health([{ name: "cleanup-mail" }])` reads only the supplied queues, in order, even when another runtime registered them. Omitting the argument keeps the Layer's registered names. Admin pages use this to include worker-only schedules without registering those schedules in the request runtime.
|
|
374
404
|
|
|
405
|
+
### Administer queues and schedules
|
|
406
|
+
|
|
407
|
+
`unschedule(schedule)` removes the registration named by the schedule definition and its `scheduleOptions.key` (the empty key by default). Other keys for that queue stay registered. A missing registration fails with `PgBossNotFoundError`, carrying `operation: "unschedule"`, `queue` and `key`.
|
|
408
|
+
|
|
409
|
+
`deleteQueue(queue)` stops local workers for that name and deletes the queue through the owned client. Other queues stay in place. A missing queue fails with `PgBossNotFoundError` with `operation: "deleteQueue"` and `queue`; a native refusal, such as deleting a dead-letter queue still in use, fails with `PgBossError`.
|
|
410
|
+
|
|
411
|
+
`refreshQueueStats(queue?)` requests a native pg-boss supervisor pass for one queue, or all queues when omitted, so `health` can read refreshed counts. The pass also performs native queue maintenance and respects pg-boss's monitor intervals and backoff; it does not promise a fresh snapshot on every call. Use `counts` for an immediate live read.
|
|
412
|
+
|
|
375
413
|
### Read live counts and retry a job
|
|
376
414
|
|
|
377
415
|
```ts
|
|
@@ -393,7 +431,7 @@ export const inspectEmail = (id: string) =>
|
|
|
393
431
|
|
|
394
432
|
`counts(queue)` reads the job table directly on each call. `queuedCount` includes created and retry-waiting jobs, including future jobs; `activeCount` counts running jobs, `failedCount` counts retained failures, and `totalCount` includes retained terminal jobs. A queue has drained when queued and active counts are both zero. These counts are a snapshot, so a producer can enqueue more work after the query returns.
|
|
395
433
|
|
|
396
|
-
`getJob(queue, id)` returns `None` when the ID is absent, or `Some`
|
|
434
|
+
`getJob(queue, id)` returns `None` when the ID is absent, or `Some` jobs-owned `Job<unknown>` metadata with masked inspection `data: unknown`. The queue's Schema decodes the stored payload before the errors package's redactor masks native `Redacted` values and sensitive keys, including nested objects and arrays. Invalid stored data fails with `PgBossPayloadError`, and the Effect requires the Schema's decoding services. `retry(queue, id)` reuses the original ID: it makes a failed job eligible for another attempt and pulls a retry-waiting job forward to run now. Missing IDs and jobs in other states are left unchanged. Its dead-letter copies stay listed while the retry is pending or fails again; a successful completion removes those copies in the same database transaction.
|
|
397
435
|
|
|
398
436
|
### List failed and dead-lettered jobs
|
|
399
437
|
|
|
@@ -419,7 +457,9 @@ export const failedEmails = (cursor?: string) =>
|
|
|
419
457
|
|
|
420
458
|
Each page holds at most `limit` jobs, newest first by creation time; a dead-letter copy is created when its original fails for good. `limit` must be a positive integer. When more jobs remain, `next` is `Some` opaque cursor; pass it back as `cursor` for the following page, and stop when `next` is `None`. Paging continues from the last job it returned, so jobs that fail while you page appear in a fresh listing instead of shifting later pages, and no job appears twice. A malformed cursor or limit fails with `SchemaError` before pg-boss is called.
|
|
421
459
|
|
|
422
|
-
An entry carries the job's `id`, `queue`, native `state`, `retryCount`, `retryLimit` and `attempt`, the one-based number of its last started attempt (zero for a job that never started). `createdOn` is a UTC `DateTime`; `startedOn` and `completedOn` are `Option`s of UTC `DateTime`s. `output` is `JobFailure | null`, decoded through `JobFailure` from `@shivaedev/jobs/JobFailure.ts`. Handler failures store only `{ _tag: string, message: string }`, with the message redacted through `@shivaedev/errors`; stack traces, cause chains and other error fields are omitted. `null` means pg-boss stored no output.
|
|
460
|
+
An entry carries the job's `id`, `queue`, native `state`, `retryCount`, `retryLimit` and `attempt`, the one-based number of its last started attempt (zero for a job that never started). `createdOn` is a UTC `DateTime`; `startedOn` and `completedOn` are `Option`s of UTC `DateTime`s. `output` is `JobFailure | null`, decoded through `JobFailure` from `@shivaedev/jobs/JobFailure.ts`. Handler failures store only `{ _tag: string, message: string }`, with the message redacted through `@shivaedev/errors`; stack traces, cause chains and other error fields are omitted. `null` means pg-boss stored no output. Direct failures and native pg-boss failures wrapped in `{ value: failure }` share the same sanitized readout in details and listings. Failures without a tag decode with `_tag: "Error"`; decoding also redacts messages from older stored failures. Stored output that does not match the Schema fails the listing with `PgBossPayloadError`. `data: unknown` is decoded by the queue's JSON codec and masked through the errors package's redactor, including traced payloads; invalid stored data fails the listing with `PgBossPayloadError`, as `getJob` does, and the Effect requires the Schema's decoding services. A dead-letter entry adds `sourceQueue`, the source queue name without the dead-letter suffix, `sourceId`, the original job's ID as an `Option`, and `sourceOutput`, the original's decoded `JobFailure | null`. The copy has not run, so its own `output` stays `null` and its `attempt` is zero.
|
|
461
|
+
|
|
462
|
+
`readJobFailure(queue, output)` from `@shivaedev/jobs/server/readJobFailure.ts` exposes this readout for adapters. It returns an Effect with `JobFailure | null` and fails with `PgBossPayloadError` when stored output cannot be decoded.
|
|
423
463
|
|
|
424
464
|
Pass a failed entry's `id` to `retry(queue, id)` to run that job again under its original ID; once it completes it leaves the failed listing and its copies leave the dead-letter listing. Dead-letter IDs belong to the `-dlq` queue, so `retry(queue, id)` does not find them and leaves them unchanged.
|
|
425
465
|
|
|
@@ -485,7 +525,9 @@ Include every target queue in `jobs`, as either a worker or a producer-only defi
|
|
|
485
525
|
|
|
486
526
|
### Test through the queue contract
|
|
487
527
|
|
|
488
|
-
`testing.ts`
|
|
528
|
+
`linkedWorkerSpans(sender, spans)` from `@shivaedev/jobs/server/testing.ts` reads native recorded Effect spans and returns the pg-boss consumer spans whose links match both the sender's `traceId` and `spanId`. It returns every matching attempt, including retries, and no matches before a worker runs. An untraced job has no sender link. Settle the workers before reading their completed attempts; this readout does not wait or read queue storage.
|
|
529
|
+
|
|
530
|
+
`testing.ts` gives story kits a controller for one real pg-boss client. Create a fresh controller per runtime, pass its `clientFactory` to `pgBossLayer`, and keep that Layer scoped as usual. `jobs(queue, options?)` returns jobs-owned `Job` metadata with `data` decoded through the queue's Schema, including traced payloads. Invalid durable data fails with `PgBossPayloadError`; decoding services remain in the Effect's requirements.
|
|
489
531
|
|
|
490
532
|
This producer story uses the `SendEmail` definition and `Jobs` service from above. `databaseUrl` points to the story's PostgreSQL database:
|
|
491
533
|
|
|
@@ -535,9 +577,9 @@ Set `retryPolicy: testRetryPolicy` through the controller to override queue and
|
|
|
535
577
|
|
|
536
578
|
`checkBatchWindow(queue, millisecondsPerJob)` checks that the declared sequential batch fits strictly inside the stored queue expiry window. `schemaVersion` reads the installed version, and `checkSchemaVersion(expected)` fails when it differs. Test control, read and check failures use `PgBossTestingError` with `operation`, optional `queue` and a redacted `original`.
|
|
537
579
|
|
|
538
|
-
`snapshot(queues)` reads the unfinished jobs of several queues in one query, so the result is one consistent PostgreSQL snapshot. It returns jobs in the `created`, `retry`, `active` and `failed` states, never completed ones, oldest first by creation. Each entry has the job's `id`, `queue` (the definition's name), `state`, `startAfter` as a UTC `DateTime` and `data` decoded by that queue's Schema. Only unfinished rows are decoded, so a completed job whose stored data the Schema no longer accepts does not fail the read; invalid unfinished data fails with `PgBossPayloadError`.
|
|
580
|
+
`snapshot(queues)` reads the unfinished jobs of several queues in one query, so the result is one consistent PostgreSQL snapshot. It returns jobs in the `created`, `retry`, `active` and `failed` states, never completed ones, oldest first by creation. A waiting `RetryAt` job reads as `deferred` while its `startAfter` is in the future; once due, it reads as `retry` until claimed. A retry after a handler failure reads as `retry` even when its next attempt is in the future. Each entry has the job's `id`, `queue` (the definition's name), `state`, `startAfter` as a UTC `DateTime` and `data` decoded by that queue's Schema. Only unfinished rows are decoded, so a completed job whose stored data the Schema no longer accepts does not fail the read; invalid unfinished data fails with `PgBossPayloadError`.
|
|
539
581
|
|
|
540
|
-
`waitForIdle`
|
|
582
|
+
`waitForIdle` discovers queues from the jobs registered in the controller's Layer, including producer-only definitions and schedules; it takes no queue list. It completes when none of those queues has an active job or an unblocked job ready to fetch, including work claimed by another client. Ready jobs keep the wait open even when no local worker runs them. A terminal native worker timeout lets the wait complete after pg-boss fails the job. Jobs whose `startAfter` is in the future do not hold the wait open. While a local fetched batch has no settlement yet, the wait reads nothing and waits for the next local change; otherwise it checks PostgreSQL on local changes and at 50 ms intervals to observe other clients. These intervals use wall time even on a story's `TestClock`. A kit settles by yielding `waitForIdle` and then reading jobs once. As with any idle snapshot, a producer can enqueue more work after the wait returns.
|
|
541
583
|
|
|
542
584
|
A kit can also capture `revision` before reading jobs and yield `waitForChange(revision)` when its condition is unmet. The wait resumes after a local send, settlement or worker fetch, and when a local worker returns to idle as `waitForIdle` defines it, including terminal native worker timeouts. It also resumes immediately if a change occurred between the read and the wait. This signal observes the controller's client; external clients, future scheduled work and external database writes need their own wake source. Stories should retain a bounded test timeout.
|
|
543
585
|
|
|
@@ -552,22 +594,32 @@ yield* testing.untilJob(SendEmail, id, "completed", { within: "5 seconds" });
|
|
|
552
594
|
|
|
553
595
|
Import the module that defines the name; the package has no root entry.
|
|
554
596
|
|
|
555
|
-
| Module
|
|
556
|
-
|
|
|
557
|
-
| `@shivaedev/jobs/
|
|
558
|
-
| `@shivaedev/jobs/server/
|
|
559
|
-
| `@shivaedev/jobs/server/
|
|
560
|
-
| `@shivaedev/jobs/server/
|
|
561
|
-
| `@shivaedev/jobs/server/
|
|
562
|
-
| `@shivaedev/jobs/server/
|
|
563
|
-
| `@shivaedev/jobs/server/
|
|
564
|
-
| `@shivaedev/jobs/server/
|
|
565
|
-
| `@shivaedev/jobs/server/
|
|
566
|
-
| `@shivaedev/jobs/server/
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
597
|
+
| Module | Public names |
|
|
598
|
+
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
599
|
+
| `@shivaedev/jobs/display.ts` | `QueueDisplay`, `SubjectColumn` |
|
|
600
|
+
| `@shivaedev/jobs/server/definition.ts` | `defineQueue`, `jobContext`, `RetryAt`; `DefineQueueOptions`, `DefineScheduleOptions`, `JobContext`, `JobPayloadSchema`, `JobRegistration`, `QueueDefinition`, `QueueWorker`, `RegistrationRequirements`, `ScheduleDefinition`, `ScheduledWorker` |
|
|
601
|
+
| `@shivaedev/jobs/server/service.ts` | `makePgBoss`, `pgBossLayer`; `PgBossDefinition`, `PgBossLayerOptions`, `PgBossOptions`, `PgBossService` |
|
|
602
|
+
| `@shivaedev/jobs/server/PgBoss.ts` | `PgBoss`: the shared client Context service. |
|
|
603
|
+
| `@shivaedev/jobs/server/schema.ts` | `installPgBossSchema`, `pgBossSchema`; `PgBossSchemaOptions` |
|
|
604
|
+
| `@shivaedev/jobs/server/health.ts` | `deadLetterQueueName`; `DeadLetteredJob`, `JobPage`, `JobPageOptions`, `JobsHealth`, `ListedJob`, `QueueCounts`, `QueueHealth` |
|
|
605
|
+
| `@shivaedev/jobs/server/error.ts` | `PgBossError`, `PgBossNotFoundError`, `PgBossPayloadError`, `PgBossQueueNamesError`, `PgBossQueueOptionsError`, `PgBossClientOptionsError`, `PgBossTestingError`, `PgBossWaitError`, `toPgBossError`; `PgBossOperation` |
|
|
606
|
+
| `@shivaedev/jobs/server/queueOptions.ts` | `QueueOptions`, `QueuePolicy`, `RetryOptions` |
|
|
607
|
+
| `@shivaedev/jobs/server/workerOptions.ts` | `WorkerOptions`, `GroupConcurrencyConfig` |
|
|
608
|
+
| `@shivaedev/jobs/server/enqueueOptions.ts` | `EnqueueOptions`, `ScheduleOptions` |
|
|
609
|
+
| `@shivaedev/jobs/server/job.ts` | `Job`, `JobState`, `WorkerJob` |
|
|
610
|
+
| `@shivaedev/jobs/server/clientOptions.ts` | `ClientOptions`, `StopOptions`, `Clock`, `ReindexOptions`, `IndexBloatOptions` |
|
|
611
|
+
| `@shivaedev/jobs/server/ClientDatabase.ts` | `ClientDatabase` |
|
|
612
|
+
| `@shivaedev/jobs/server/engineClient.ts` | `EngineClient`, `EngineSchedule` |
|
|
613
|
+
| `@shivaedev/jobs/server/client.ts` | `PgBossClient`, `PgBossClientFactory` |
|
|
614
|
+
| `@shivaedev/jobs/server/testing.ts` | `makePgBossTesting`, `testRetryPolicy`; `PgBossTesting`, `PgBossTestingOptions`, `PgBossTestingWaitOptions`, `SnapshotQueue`, `UnfinishedJob` |
|
|
615
|
+
| `@shivaedev/jobs/server/defineSchedule.ts` | `defineSchedule` |
|
|
616
|
+
| `@shivaedev/jobs/server/adapters/defaultClientFactory.ts` | `defaultClientFactory` |
|
|
617
|
+
|
|
618
|
+
Jobs declares its public types independently of pg-boss. The option fields keep their familiar names: `queue` uses `QueueOptions`, including literal `QueuePolicy` values and `maxDeferrals`; `worker` uses `WorkerOptions`; a schedule's `schedule` uses `ScheduleOptions`; enqueueing uses `EnqueueOptions`. A queue also requires `name` and `schema`; a schedule requires `name` and `cron`.
|
|
619
|
+
|
|
620
|
+
Queue and scheduled workers reject `perJobResults: true` and `transactional: true` during Layer acquisition with a registration `PgBossError`; its redacted `original` names the unsupported options. Omit these options or set them to `false`. The adapter settles each job itself and does not expose pg-boss's transaction client to handlers.
|
|
621
|
+
|
|
622
|
+
`pgBossLayer(options)` accepts `PgBossOptions`, built from jobs-owned `ClientOptions` with a redacted connection string and lifecycle settings. `Jobs.layer(options)` accepts registrations, retired names and `onError`. Custom clients must supply native `complete` and `fail` capabilities to register queue or schedule workers; missing settlement capabilities fail Layer acquisition with a registration `PgBossError`. Workers also require `getDb()` to read the PostgreSQL clock when a batch arrives. Producer-only clients do not need these capabilities. Custom clients can also supply the optional native capabilities `findJobs`, `retry`, `update`, `getDb` and `updateQueue` for lookup, retry, live counts and listings, deferral and reconciliation; administration uses optional `deleteQueue`, `getSchedule`, `unschedule` and `supervise` capabilities. A requested operation fails with `PgBossError` if its required capability is absent.
|
|
571
623
|
|
|
572
624
|
`onError` handles pg-boss client `error` events using the services captured by the Layer. The Layer interrupts pending callbacks and waits for them to end before release completes. Only the owning jobs service is supplied automatically; a handler using another jobs definition still requires that definition's Layer.
|
|
573
625
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Schema } from "effect";
|
|
2
|
+
export interface SubjectColumn<TPayload extends Schema.Top> {
|
|
3
|
+
readonly field: Extract<keyof TPayload["Type"], string>;
|
|
4
|
+
readonly label: string;
|
|
5
|
+
}
|
|
6
|
+
export interface QueueDisplay {
|
|
7
|
+
readonly label?: string;
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly subject?: readonly {
|
|
10
|
+
readonly field: string;
|
|
11
|
+
readonly label: string;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,MAAM,CAAC,GAAG;IACzD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjF"}
|
package/dist/display.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ClientDatabase {
|
|
2
|
+
beginTransaction?: () => Promise<{
|
|
3
|
+
db: ClientDatabase;
|
|
4
|
+
commit: () => Promise<void>;
|
|
5
|
+
rollback: () => Promise<void>;
|
|
6
|
+
}>;
|
|
7
|
+
executeSql: (text: string, values?: unknown[]) => Promise<{
|
|
8
|
+
rows: Record<string, unknown>[];
|
|
9
|
+
}>;
|
|
10
|
+
listen?: (channel: string, onNotification: (payload: string) => void, onReconnect: () => void) => Promise<{
|
|
11
|
+
close: () => Promise<void>;
|
|
12
|
+
}>;
|
|
13
|
+
poolCounts?: () => {
|
|
14
|
+
max: number;
|
|
15
|
+
total: number;
|
|
16
|
+
idle: number;
|
|
17
|
+
waiting: number;
|
|
18
|
+
} | null;
|
|
19
|
+
setSessionStatements?: (statements: string[]) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ClientDatabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientDatabase.d.ts","sourceRoot":"","sources":["../../src/server/ClientDatabase.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC9B,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,EAAE,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,CAAC;IACrH,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/F,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAAE,WAAW,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,CAAC;IAC1I,UAAU,CAAC,EAAE,MAAM;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACxF,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientDatabase.js","sourceRoot":"","sources":["../../src/server/ClientDatabase.ts"],"names":[],"mappings":""}
|
package/dist/server/PgBoss.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context } from "effect";
|
|
2
|
-
import type { StopOptions } from "
|
|
3
|
-
import type { AcquiredClient } from "#internal/lifecycle.ts";
|
|
2
|
+
import type { StopOptions } from "#server/clientOptions.ts";
|
|
3
|
+
import type { AcquiredClient } from "#server/internal/lifecycle.ts";
|
|
4
4
|
declare const PgBoss_base: Context.ServiceClass<PgBoss, "@shivaedev/jobs/PgBoss", AcquiredClient & {
|
|
5
5
|
readonly schema: string | undefined;
|
|
6
6
|
readonly stop: StopOptions | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PgBoss.d.ts","sourceRoot":"","sources":["../../src/server/PgBoss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"PgBoss.d.ts","sourceRoot":"","sources":["../../src/server/PgBoss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;;qBAI/B,MAAM,GAAG,SAAS;mBAAiB,WAAW,GAAG,SAAS;;AAF/F,qBAAa,MAAO,SAAQ,WAGC;CAAG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import type { PgBossClient } from "#client.ts";
|
|
3
|
-
export declare const batchClockOffset: (client: PgBossClient, schema: string, name: string) => Effect.Effect<number, import("#error.ts").PgBossError, never>;
|
|
2
|
+
import type { PgBossClient } from "#server/client.ts";
|
|
3
|
+
export declare const batchClockOffset: (client: PgBossClient, schema: string, name: string) => Effect.Effect<number, import("#server/error.ts").PgBossError, never>;
|
|
4
4
|
//# sourceMappingURL=batchClockOffset.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchClockOffset.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/batchClockOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"batchClockOffset.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/batchClockOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAU,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,eAAO,MAAM,gBAAgB,8HAc3B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Clock, Effect } from "effect";
|
|
2
|
-
import { toPgBossError } from "#error.ts";
|
|
3
|
-
import { quotedSchema } from "#internal/storedRows.ts";
|
|
1
|
+
import { Clock, Effect, Schema } from "effect";
|
|
2
|
+
import { toPgBossError } from "#server/error.ts";
|
|
3
|
+
import { quotedSchema } from "#server/internal/storedRows.ts";
|
|
4
4
|
export const batchClockOffset = Effect.fnUntraced(function* (client, schema, name) {
|
|
5
5
|
const { rows } = yield* Effect.tryPromise({
|
|
6
6
|
catch: (error) => toPgBossError("settle", error, name),
|
|
@@ -11,6 +11,7 @@ export const batchClockOffset = Effect.fnUntraced(function* (client, schema, nam
|
|
|
11
11
|
return client.getDb().executeSql(`SELECT EXTRACT(EPOCH FROM ${quotedSchema(schema)}.job_now()) * 1000 AS now`);
|
|
12
12
|
},
|
|
13
13
|
});
|
|
14
|
-
|
|
14
|
+
const row = yield* Schema.decodeUnknownEffect(Schema.Struct({ now: Schema.Union([Schema.String, Schema.Number]) }))(rows[0]).pipe(Effect.mapError((error) => toPgBossError("settle", error, name)));
|
|
15
|
+
return (yield* Clock.currentTimeMillis) - Number(row.now);
|
|
15
16
|
});
|
|
16
17
|
//# sourceMappingURL=batchClockOffset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchClockOffset.js","sourceRoot":"","sources":["../../../src/server/adapters/batchClockOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"batchClockOffset.js","sourceRoot":"","sources":["../../../src/server/adapters/batchClockOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAoB,EAAE,MAAc,EAAE,IAAY;IAC9G,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QACzC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;QACtD,GAAG,EAAE,GAAG,EAAE;YACT,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,6BAA6B,YAAY,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAChH,CAAC;KACD,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAChI,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAChE,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { PgBossClient } from "#server/client.ts";
|
|
3
|
+
import type { WorkerJob } from "#server/job.ts";
|
|
4
|
+
export declare function batchHandler<R>(client: PgBossClient, name: string, schema: string, run: (job: WorkerJob<unknown>, deadline: number) => Effect.Effect<unknown, unknown, R>, afterRetry?: (job: WorkerJob<unknown>) => Effect.Effect<void, unknown>): (jobs: readonly WorkerJob<unknown>[]) => Effect.Effect<void, unknown, R>;
|
|
5
|
+
//# sourceMappingURL=batchHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batchHandler.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/batchHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAQ,MAAM,QAAQ,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAyChD,wBAAgB,YAAY,CAAC,CAAC,EAC7B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EACtF,UAAU,GAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAqB,UA0B3E,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,qCAiB3C"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Cause, Clock, Effect, Exit } from "effect";
|
|
2
|
-
import { batchClockOffset } from "#adapters/batchClockOffset.ts";
|
|
3
|
-
import { toPgBossError } from "#error.ts";
|
|
4
|
-
import { deadlineOf } from "#internal/deadlineOf.ts";
|
|
5
|
-
import { deferredAttempt } from "#internal/deferral.ts";
|
|
6
|
-
import { failureOutput } from "#internal/failureOutput.ts";
|
|
7
|
-
import { waitForBatchExpiry } from "#internal/waitForBatchExpiry.ts";
|
|
2
|
+
import { batchClockOffset } from "#server/adapters/batchClockOffset.ts";
|
|
3
|
+
import { toPgBossError } from "#server/error.ts";
|
|
4
|
+
import { deadlineOf } from "#server/internal/deadlineOf.ts";
|
|
5
|
+
import { deferredAttempt } from "#server/internal/deferral.ts";
|
|
6
|
+
import { failureOutput } from "#server/internal/failureOutput.ts";
|
|
7
|
+
import { waitForBatchExpiry } from "#server/internal/waitForBatchExpiry.ts";
|
|
8
8
|
function settleAttempt(complete, fail, name, job, exit) {
|
|
9
9
|
if (Exit.isSuccess(exit) && exit.value === deferredAttempt) {
|
|
10
10
|
return Effect.void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batchHandler.js","sourceRoot":"","sources":["../../../src/server/adapters/batchHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ClientOptions } from "#server/clientOptions.ts";
|
|
2
|
+
import type { StartingClient } from "./lifecycle.ts";
|
|
3
|
+
export declare function acquireCachedClient(key: string | symbol, constructorOptions: ClientOptions, start: () => StartingClient): {
|
|
4
|
+
reused: boolean;
|
|
5
|
+
client: import("../client.ts").PgBossClient;
|
|
6
|
+
ready: Promise<void>;
|
|
7
|
+
stop: (options?: import("#server/clientOptions.ts").StopOptions) => Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
export declare function releaseCachedClient(key: string | symbol): StartingClient | undefined;
|
|
10
|
+
//# sourceMappingURL=clientCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientCache.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/clientCache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA4BrD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,cAAc;;;;;EAgBvH;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,CAWpF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isDeepStrictEqual } from "node:util";
|
|
2
|
-
import { PgBossClientOptionsError } from "#error.ts";
|
|
2
|
+
import { PgBossClientOptionsError } from "#server/error.ts";
|
|
3
3
|
const cacheSymbol = Symbol.for("@shivaedev/jobs/server/client-cache");
|
|
4
4
|
const shared = Reflect.get(globalThis, cacheSymbol);
|
|
5
5
|
const clients = shared instanceof Map ? shared : new Map();
|
|
@@ -11,11 +11,11 @@ function entryFor(key) {
|
|
|
11
11
|
function isCachedClient(value) {
|
|
12
12
|
return (typeof value === "object"
|
|
13
13
|
&& value !== null
|
|
14
|
-
&& Reflect.get(value, "client")
|
|
14
|
+
&& typeof Reflect.get(value, "client") === "object"
|
|
15
15
|
&& typeof Reflect.get(value, "constructorOptions") === "object"
|
|
16
16
|
&& typeof Reflect.get(value, "references") === "number");
|
|
17
17
|
}
|
|
18
|
-
export
|
|
18
|
+
export function acquireCachedClient(key, constructorOptions, start) {
|
|
19
19
|
const existing = entryFor(key);
|
|
20
20
|
if (existing !== undefined) {
|
|
21
21
|
const options = [...new Set([...Object.keys(existing.constructorOptions), ...Object.keys(constructorOptions)])]
|
|
@@ -25,26 +25,12 @@ export async function acquireCachedClient(key, constructorOptions, start) {
|
|
|
25
25
|
throw new PgBossClientOptionsError({ key, options });
|
|
26
26
|
}
|
|
27
27
|
existing.references += 1;
|
|
28
|
-
|
|
29
|
-
return { client: await existing.client, reused: true };
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
existing.references -= 1;
|
|
33
|
-
throw error;
|
|
34
|
-
}
|
|
28
|
+
return { ...existing.client, reused: true };
|
|
35
29
|
}
|
|
36
30
|
const settings = { ...constructorOptions };
|
|
37
31
|
const entry = { client: start(), constructorOptions: settings, references: 1 };
|
|
38
32
|
clients.set(key, entry);
|
|
39
|
-
|
|
40
|
-
return { client: await entry.client, reused: false };
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
if (clients.get(key) === entry) {
|
|
44
|
-
clients.delete(key);
|
|
45
|
-
}
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
33
|
+
return { ...entry.client, reused: false };
|
|
48
34
|
}
|
|
49
35
|
export function releaseCachedClient(key) {
|
|
50
36
|
const entry = entryFor(key);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientCache.js","sourceRoot":"","sources":["../../../src/server/adapters/clientCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { logClientError } from "#internal/clientErrors.ts";
|
|
2
|
+
import { logClientError } from "#server/internal/clientErrors.ts";
|
|
3
3
|
export const clientErrorLogger = Effect.fnUntraced(function* () {
|
|
4
4
|
const run = Effect.runForkWith(yield* Effect.context());
|
|
5
5
|
return (error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientErrorLogger.js","sourceRoot":"","sources":["../../../src/server/adapters/clientErrorLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"clientErrorLogger.js","sourceRoot":"","sources":["../../../src/server/adapters/clientErrorLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAY,EAAQ,EAAE;QAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultClientFactory.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/defaultClientFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CA0BzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultClientFactory.js","sourceRoot":"","sources":["../../../src/server/adapters/defaultClientFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,MAAM,UAAU,oBAAoB,CAAC,OAAsB;IAC1D,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 +1,5 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
export declare const deferralCount: (client: PgBossClient, schema: string, job:
|
|
2
|
+
import type { PgBossClient } from "#server/client.ts";
|
|
3
|
+
import type { WorkerJob } from "#server/job.ts";
|
|
4
|
+
export declare const deferralCount: (client: PgBossClient, schema: string, job: WorkerJob<unknown>) => Effect.Effect<number, import("#server/error.ts").PgBossError, never>;
|
|
5
5
|
//# sourceMappingURL=deferralCount.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferralCount.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/deferralCount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"deferralCount.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/deferralCount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,eAAO,MAAM,aAAa,yIAmBxB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, Schema } from "effect";
|
|
2
|
-
import { toPgBossError } from "#error.ts";
|
|
3
|
-
import { quotedSchema } from "#internal/storedRows.ts";
|
|
2
|
+
import { toPgBossError } from "#server/error.ts";
|
|
3
|
+
import { quotedSchema } from "#server/internal/storedRows.ts";
|
|
4
4
|
const Count = Schema.Struct({ count: Schema.NumberFromString });
|
|
5
5
|
export const deferralCount = Effect.fnUntraced(function* (client, schema, job) {
|
|
6
6
|
const quoted = quotedSchema(schema);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferralCount.js","sourceRoot":"","sources":["../../../src/server/adapters/deferralCount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"deferralCount.js","sourceRoot":"","sources":["../../../src/server/adapters/deferralCount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAoB,EAAE,MAAc,EAAE,GAAuB;IACtH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC;QAC1D,GAAG,EAAE,KAAK,IAAI,EAAE;YACf,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,CAC/C;kCAC8B,MAAM;YAC5B,MAAM;;yBAEO,EACrB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAClB,CAAC;YACF,OAAO,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EngineClient } from "#server/engineClient.ts";
|
|
2
|
+
import type { JobAttempt } from "#server/internal/engine.ts";
|
|
3
|
+
export declare function expireAttempt(client: EngineClient, schema: string, job: JobAttempt, cause?: "expiry" | "heartbeat"): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=expireAttempt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expireAttempt.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/expireAttempt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,GAAE,QAAQ,GAAG,WAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBlJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { quotedSchema } from "#internal/storedRows.ts";
|
|
1
|
+
import { quotedSchema } from "#server/internal/storedRows.ts";
|
|
2
2
|
export async function expireAttempt(client, schema, job, cause = "expiry") {
|
|
3
3
|
if ((await client.schemaVersion()) !== 46) {
|
|
4
4
|
throw new Error("Testing expiry requires pg-boss schema version 46");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expireAttempt.js","sourceRoot":"","sources":["../../../src/server/
|
|
1
|
+
{"version":3,"file":"expireAttempt.js","sourceRoot":"","sources":["../../../src/server/adapters/expireAttempt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAoB,EAAE,MAAc,EAAE,GAAe,EAAE,KAAK,GAA2B,QAAQ;IAClI,IAAI,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;IACrE,MAAM,OAAO,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC5E,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,CAC9B,UAAU,MAAM,YAAY,SAAS,MAAM,MAAM,iBAAiB,OAAO;wEACH,EACtE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAClC,CAAC;IACF,0FAA0F;IAC1F,MAAM,MAAM;SACV,KAAK,EAAE;SACP,UAAU,CAAC,UAAU,MAAM,iCAAiC,MAAM,gDAAgD,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAClI,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
|