@shivaedev/jobs 0.39.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +43 -10
- package/dist/server/InspectionEngine.d.ts +27 -0
- package/dist/server/InspectionEngine.d.ts.map +1 -0
- package/dist/server/InspectionEngine.js +4 -0
- package/dist/server/InspectionEngine.js.map +1 -0
- package/dist/server/JobQueues.d.ts +6 -0
- package/dist/server/JobQueues.d.ts.map +1 -0
- package/dist/server/JobQueues.js +4 -0
- package/dist/server/JobQueues.js.map +1 -0
- package/dist/server/SchemaConnection.d.ts +7 -0
- package/dist/server/SchemaConnection.d.ts.map +1 -0
- package/dist/server/SchemaConnection.js +4 -0
- package/dist/server/SchemaConnection.js.map +1 -0
- package/dist/server/adapters/countsFor.d.ts.map +1 -0
- package/dist/server/adapters/countsFor.js.map +1 -0
- package/dist/server/adapters/ensureQueue.d.ts.map +1 -0
- package/dist/server/adapters/ensureQueue.js.map +1 -0
- package/dist/server/adapters/healthFor.d.ts.map +1 -0
- package/dist/server/adapters/healthFor.js.map +1 -0
- package/dist/server/adapters/inspection.d.ts +1 -2
- package/dist/server/adapters/inspection.d.ts.map +1 -1
- package/dist/server/adapters/inspection.js +20 -24
- package/dist/server/adapters/inspection.js.map +1 -1
- package/dist/server/adapters/inspectionJobs.d.ts +1 -43
- package/dist/server/adapters/inspectionJobs.d.ts.map +1 -1
- package/dist/server/adapters/inspectionJobs.js +1 -5
- package/dist/server/adapters/inspectionJobs.js.map +1 -1
- package/dist/server/adapters/inspectionLayer.d.ts +4 -0
- package/dist/server/adapters/inspectionLayer.d.ts.map +1 -0
- package/dist/server/adapters/inspectionLayer.js +7 -0
- package/dist/server/adapters/inspectionLayer.js.map +1 -0
- package/dist/server/adapters/inspectionReads.d.ts +12 -46
- package/dist/server/adapters/inspectionReads.d.ts.map +1 -1
- package/dist/server/adapters/inspectionReads.js +2 -2
- package/dist/server/adapters/inspectionReads.js.map +1 -1
- package/dist/server/adapters/inspectionSnapshot.d.ts +9 -4
- package/dist/server/adapters/inspectionSnapshot.d.ts.map +1 -1
- package/dist/server/adapters/inspectionSnapshot.js +17 -26
- package/dist/server/adapters/inspectionSnapshot.js.map +1 -1
- package/dist/server/adapters/installSchema.d.ts.map +1 -1
- package/dist/server/adapters/installSchema.js +4 -3
- package/dist/server/adapters/installSchema.js.map +1 -1
- package/dist/server/adapters/makeService.d.ts +4 -0
- package/dist/server/adapters/makeService.d.ts.map +1 -0
- package/dist/server/adapters/makeService.js +26 -0
- package/dist/server/adapters/makeService.js.map +1 -0
- package/dist/server/adapters/operationsLayer.d.ts +4 -0
- package/dist/server/adapters/operationsLayer.d.ts.map +1 -0
- package/dist/server/adapters/operationsLayer.js +17 -0
- package/dist/server/adapters/operationsLayer.js.map +1 -0
- package/dist/server/adapters/pgBossDefinitionLayer.d.ts.map +1 -0
- package/dist/server/{pgBossDefinitionLayer.js → adapters/pgBossDefinitionLayer.js} +7 -9
- package/dist/server/adapters/pgBossDefinitionLayer.js.map +1 -0
- package/dist/server/{register.d.ts → adapters/register.d.ts} +2 -2
- package/dist/server/adapters/register.d.ts.map +1 -0
- package/dist/server/{register.js → adapters/register.js} +8 -8
- package/dist/server/adapters/register.js.map +1 -0
- package/dist/server/adapters/registerReleasedJobs.d.ts +7 -0
- package/dist/server/adapters/registerReleasedJobs.d.ts.map +1 -0
- package/dist/server/{registerReleasedJobs.js → adapters/registerReleasedJobs.js} +5 -4
- package/dist/server/adapters/registerReleasedJobs.js.map +1 -0
- package/dist/server/adapters/registerWorker.d.ts +1 -1
- package/dist/server/adapters/registerWorker.d.ts.map +1 -1
- package/dist/server/adapters/registerWorker.js +2 -1
- package/dist/server/adapters/registerWorker.js.map +1 -1
- package/dist/server/adapters/retireJobs.d.ts.map +1 -1
- package/dist/server/adapters/retireJobs.js +1 -1
- package/dist/server/adapters/retireJobs.js.map +1 -1
- package/dist/server/adapters/runSchemaPlan.d.ts +4 -4
- package/dist/server/adapters/runSchemaPlan.d.ts.map +1 -1
- package/dist/server/adapters/runSchemaPlan.js +7 -4
- package/dist/server/adapters/runSchemaPlan.js.map +1 -1
- package/dist/server/enqueuePayload.d.ts +6 -0
- package/dist/server/enqueuePayload.d.ts.map +1 -0
- package/dist/server/enqueuePayload.js +29 -0
- package/dist/server/enqueuePayload.js.map +1 -0
- package/dist/server/getJob.d.ts +88 -0
- package/dist/server/getJob.d.ts.map +1 -0
- package/dist/server/{jobControl.js → getJob.js} +5 -7
- package/dist/server/getJob.js.map +1 -0
- package/dist/server/inspection.d.ts +13 -80
- package/dist/server/inspection.d.ts.map +1 -1
- package/dist/server/inspection.js +4 -39
- package/dist/server/inspection.js.map +1 -1
- package/dist/server/{operations/jobs.d.ts → inspectionJobs.d.ts} +8 -6
- package/dist/server/inspectionJobs.d.ts.map +1 -0
- package/dist/server/inspectionJobs.js +9 -0
- package/dist/server/inspectionJobs.js.map +1 -0
- package/dist/server/inspectionSnapshot.d.ts +82 -0
- package/dist/server/inspectionSnapshot.d.ts.map +1 -0
- package/dist/server/inspectionSnapshot.js +16 -0
- package/dist/server/inspectionSnapshot.js.map +1 -0
- package/dist/server/jobListings.d.ts +43 -13
- package/dist/server/jobListings.d.ts.map +1 -1
- package/dist/server/jobListings.js +8 -7
- package/dist/server/jobListings.js.map +1 -1
- package/dist/server/runQueueWorker.d.ts +3 -3
- package/dist/server/runQueueWorker.d.ts.map +1 -1
- package/dist/server/runQueueWorker.js +5 -3
- package/dist/server/runQueueWorker.js.map +1 -1
- package/dist/server/service.d.ts.map +1 -1
- package/dist/server/service.js +1 -1
- package/dist/server/service.js.map +1 -1
- package/dist/server/services/inspection/busy.d.ts +4 -0
- package/dist/server/services/inspection/busy.d.ts.map +1 -0
- package/dist/server/services/inspection/busy.js +7 -0
- package/dist/server/services/inspection/busy.js.map +1 -0
- package/dist/server/services/inspection/changes.d.ts +9 -0
- package/dist/server/services/inspection/changes.d.ts.map +1 -0
- package/dist/server/services/inspection/changes.js +8 -0
- package/dist/server/services/inspection/changes.js.map +1 -0
- package/dist/server/services/inspection/counts.d.ts +6 -0
- package/dist/server/services/inspection/counts.d.ts.map +1 -0
- package/dist/server/services/inspection/counts.js +8 -0
- package/dist/server/services/inspection/counts.js.map +1 -0
- package/dist/server/services/inspection/deferred.d.ts +7 -0
- package/dist/server/services/inspection/deferred.d.ts.map +1 -0
- package/dist/server/services/inspection/deferred.js +7 -0
- package/dist/server/services/inspection/deferred.js.map +1 -0
- package/dist/server/services/inspection/health.d.ts +6 -0
- package/dist/server/services/inspection/health.d.ts.map +1 -0
- package/dist/server/services/inspection/health.js +8 -0
- package/dist/server/services/inspection/health.js.map +1 -0
- package/dist/server/services/inspection/queue.d.ts +4 -0
- package/dist/server/services/inspection/queue.d.ts.map +1 -0
- package/dist/server/services/inspection/queue.js +7 -0
- package/dist/server/services/inspection/queue.js.map +1 -0
- package/dist/server/services/inspection/schedules.d.ts +4 -0
- package/dist/server/services/inspection/schedules.d.ts.map +1 -0
- package/dist/server/services/inspection/schedules.js +7 -0
- package/dist/server/services/inspection/schedules.js.map +1 -0
- package/dist/server/services/inspection/schemaVersion.d.ts +4 -0
- package/dist/server/services/inspection/schemaVersion.d.ts.map +1 -0
- package/dist/server/services/inspection/schemaVersion.js +7 -0
- package/dist/server/services/inspection/schemaVersion.js.map +1 -0
- package/dist/server/services/inspection/service.d.ts +40 -0
- package/dist/server/services/inspection/service.d.ts.map +1 -0
- package/dist/server/services/inspection/service.js +21 -0
- package/dist/server/services/inspection/service.js.map +1 -0
- package/dist/server/services/inspection/snapshot.d.ts +12 -0
- package/dist/server/services/inspection/snapshot.d.ts.map +1 -0
- package/dist/server/services/inspection/snapshot.js +7 -0
- package/dist/server/services/inspection/snapshot.js.map +1 -0
- package/dist/server/services/inspection/storedJobs.d.ts +6 -0
- package/dist/server/services/inspection/storedJobs.d.ts.map +1 -0
- package/dist/server/services/inspection/storedJobs.js +7 -0
- package/dist/server/services/inspection/storedJobs.js.map +1 -0
- package/dist/server/services/operations/counts.d.ts +6 -0
- package/dist/server/services/operations/counts.d.ts.map +1 -0
- package/dist/server/services/operations/counts.js +8 -0
- package/dist/server/services/operations/counts.js.map +1 -0
- package/dist/server/services/operations/deleteQueue.d.ts +4 -0
- package/dist/server/services/operations/deleteQueue.d.ts.map +1 -0
- package/dist/server/services/operations/deleteQueue.js +7 -0
- package/dist/server/services/operations/deleteQueue.js.map +1 -0
- package/dist/server/services/operations/enqueue.d.ts +5 -0
- package/dist/server/services/operations/enqueue.d.ts.map +1 -0
- package/dist/server/services/operations/enqueue.js +12 -0
- package/dist/server/services/operations/enqueue.js.map +1 -0
- package/dist/server/services/operations/getJob.d.ts +4 -0
- package/dist/server/services/operations/getJob.d.ts.map +1 -0
- package/dist/server/services/operations/getJob.js +7 -0
- package/dist/server/services/operations/getJob.js.map +1 -0
- package/dist/server/services/operations/health.d.ts +7 -0
- package/dist/server/services/operations/health.d.ts.map +1 -0
- package/dist/server/services/operations/health.js +10 -0
- package/dist/server/services/operations/health.js.map +1 -0
- package/dist/server/services/operations/listJobs.d.ts +6 -0
- package/dist/server/services/operations/listJobs.d.ts.map +1 -0
- package/dist/server/services/operations/listJobs.js +7 -0
- package/dist/server/services/operations/listJobs.js.map +1 -0
- package/dist/server/services/operations/refreshQueueStats.d.ts +4 -0
- package/dist/server/services/operations/refreshQueueStats.d.ts.map +1 -0
- package/dist/server/services/operations/refreshQueueStats.js +7 -0
- package/dist/server/services/operations/refreshQueueStats.js.map +1 -0
- package/dist/server/services/operations/retry.d.ts +4 -0
- package/dist/server/services/operations/retry.d.ts.map +1 -0
- package/dist/server/services/operations/retry.js +7 -0
- package/dist/server/services/operations/retry.js.map +1 -0
- package/dist/server/services/operations/service.d.ts +22 -0
- package/dist/server/services/operations/service.d.ts.map +1 -0
- package/dist/server/services/operations/service.js +21 -0
- package/dist/server/services/operations/service.js.map +1 -0
- package/dist/server/services/operations/unschedule.d.ts +4 -0
- package/dist/server/services/operations/unschedule.d.ts.map +1 -0
- package/dist/server/services/operations/unschedule.js +7 -0
- package/dist/server/services/operations/unschedule.js.map +1 -0
- package/dist/server/validateQueueNames.d.ts.map +1 -1
- package/dist/server/validateQueueNames.js +1 -1
- package/dist/server/validateQueueNames.js.map +1 -1
- package/package.json +6 -6
- package/src/server/InspectionEngine.ts +3 -0
- package/src/server/JobQueues.ts +2 -0
- package/src/server/SchemaConnection.ts +3 -0
- package/src/server/adapters/inspection.ts +24 -29
- package/src/server/adapters/inspectionJobs.ts +2 -12
- package/src/server/adapters/inspectionLayer.ts +7 -0
- package/src/server/adapters/inspectionReads.ts +2 -5
- package/src/server/adapters/inspectionSnapshot.ts +15 -33
- package/src/server/adapters/installSchema.ts +8 -5
- package/src/server/adapters/makeService.ts +31 -0
- package/src/server/adapters/operationsLayer.ts +23 -0
- package/src/server/{pgBossDefinitionLayer.ts → adapters/pgBossDefinitionLayer.ts} +7 -14
- package/src/server/{register.ts → adapters/register.ts} +7 -22
- package/src/server/{registerReleasedJobs.ts → adapters/registerReleasedJobs.ts} +6 -5
- package/src/server/adapters/registerWorker.ts +1 -1
- package/src/server/adapters/retireJobs.ts +1 -1
- package/src/server/adapters/runSchemaPlan.ts +7 -11
- package/src/server/enqueuePayload.ts +38 -0
- package/src/server/getJob.ts +28 -0
- package/src/server/inspection.ts +18 -43
- package/src/server/inspectionJobs.ts +13 -0
- package/src/server/inspectionSnapshot.ts +18 -0
- package/src/server/jobListings.ts +20 -16
- package/src/server/runQueueWorker.ts +5 -6
- package/src/server/service.ts +1 -1
- package/src/server/services/inspection/busy.ts +6 -0
- package/src/server/services/inspection/changes.ts +7 -0
- package/src/server/services/inspection/counts.ts +7 -0
- package/src/server/services/inspection/deferred.ts +8 -0
- package/src/server/services/inspection/health.ts +10 -0
- package/src/server/services/inspection/queue.ts +8 -0
- package/src/server/services/inspection/schedules.ts +8 -0
- package/src/server/services/inspection/schemaVersion.ts +8 -0
- package/src/server/services/inspection/service.ts +20 -0
- package/src/server/services/inspection/snapshot.ts +8 -0
- package/src/server/services/inspection/storedJobs.ts +8 -0
- package/src/server/services/operations/counts.ts +7 -0
- package/src/server/services/operations/deleteQueue.ts +7 -0
- package/src/server/services/operations/enqueue.ts +12 -0
- package/src/server/services/operations/getJob.ts +6 -0
- package/src/server/services/operations/health.ts +9 -0
- package/src/server/services/operations/listJobs.ts +8 -0
- package/src/server/services/operations/refreshQueueStats.ts +7 -0
- package/src/server/services/operations/retry.ts +6 -0
- package/src/server/services/operations/service.ts +20 -0
- package/src/server/services/operations/unschedule.ts +7 -0
- package/src/server/validateQueueNames.ts +1 -1
- package/dist/server/PgBossInitialization.d.ts +0 -9
- package/dist/server/PgBossInitialization.d.ts.map +0 -1
- package/dist/server/PgBossInitialization.js +0 -4
- package/dist/server/PgBossInitialization.js.map +0 -1
- package/dist/server/PgBossOperations.d.ts +0 -27
- package/dist/server/PgBossOperations.d.ts.map +0 -1
- package/dist/server/PgBossOperations.js +0 -35
- package/dist/server/PgBossOperations.js.map +0 -1
- package/dist/server/countsFor.d.ts.map +0 -1
- package/dist/server/countsFor.js.map +0 -1
- package/dist/server/enqueueFor.d.ts +0 -4
- package/dist/server/enqueueFor.d.ts.map +0 -1
- package/dist/server/enqueueFor.js +0 -36
- package/dist/server/enqueueFor.js.map +0 -1
- package/dist/server/ensureQueue.d.ts.map +0 -1
- package/dist/server/ensureQueue.js.map +0 -1
- package/dist/server/healthFor.d.ts.map +0 -1
- package/dist/server/healthFor.js.map +0 -1
- package/dist/server/initializeInspection.d.ts +0 -4
- package/dist/server/initializeInspection.d.ts.map +0 -1
- package/dist/server/initializeInspection.js +0 -8
- package/dist/server/initializeInspection.js.map +0 -1
- package/dist/server/initializeJobs.d.ts +0 -4
- package/dist/server/initializeJobs.d.ts.map +0 -1
- package/dist/server/initializeJobs.js +0 -4
- package/dist/server/initializeJobs.js.map +0 -1
- package/dist/server/jobControl.d.ts +0 -10
- package/dist/server/jobControl.d.ts.map +0 -1
- package/dist/server/jobControl.js.map +0 -1
- package/dist/server/makeService.d.ts +0 -6
- package/dist/server/makeService.d.ts.map +0 -1
- package/dist/server/makeService.js +0 -22
- package/dist/server/makeService.js.map +0 -1
- package/dist/server/operations/busy.d.ts +0 -3
- package/dist/server/operations/busy.d.ts.map +0 -1
- package/dist/server/operations/busy.js +0 -4
- package/dist/server/operations/busy.js.map +0 -1
- package/dist/server/operations/changes.d.ts +0 -5
- package/dist/server/operations/changes.d.ts.map +0 -1
- package/dist/server/operations/changes.js +0 -4
- package/dist/server/operations/changes.js.map +0 -1
- package/dist/server/operations/counts.d.ts +0 -3
- package/dist/server/operations/counts.d.ts.map +0 -1
- package/dist/server/operations/counts.js +0 -4
- package/dist/server/operations/counts.js.map +0 -1
- package/dist/server/operations/deadLetteredJobs.d.ts +0 -6
- package/dist/server/operations/deadLetteredJobs.d.ts.map +0 -1
- package/dist/server/operations/deadLetteredJobs.js +0 -4
- package/dist/server/operations/deadLetteredJobs.js.map +0 -1
- package/dist/server/operations/deferred.d.ts +0 -6
- package/dist/server/operations/deferred.d.ts.map +0 -1
- package/dist/server/operations/deferred.js +0 -4
- package/dist/server/operations/deferred.js.map +0 -1
- package/dist/server/operations/deleteQueue.d.ts +0 -3
- package/dist/server/operations/deleteQueue.d.ts.map +0 -1
- package/dist/server/operations/deleteQueue.js +0 -4
- package/dist/server/operations/deleteQueue.js.map +0 -1
- package/dist/server/operations/enqueue.d.ts +0 -3
- package/dist/server/operations/enqueue.d.ts.map +0 -1
- package/dist/server/operations/enqueue.js +0 -4
- package/dist/server/operations/enqueue.js.map +0 -1
- package/dist/server/operations/failedJobs.d.ts +0 -6
- package/dist/server/operations/failedJobs.d.ts.map +0 -1
- package/dist/server/operations/failedJobs.js +0 -4
- package/dist/server/operations/failedJobs.js.map +0 -1
- package/dist/server/operations/getJob.d.ts +0 -6
- package/dist/server/operations/getJob.d.ts.map +0 -1
- package/dist/server/operations/getJob.js +0 -4
- package/dist/server/operations/getJob.js.map +0 -1
- package/dist/server/operations/health.d.ts +0 -3
- package/dist/server/operations/health.d.ts.map +0 -1
- package/dist/server/operations/health.js +0 -4
- package/dist/server/operations/health.js.map +0 -1
- package/dist/server/operations/inspection.d.ts +0 -3
- package/dist/server/operations/inspection.d.ts.map +0 -1
- package/dist/server/operations/inspection.js +0 -4
- package/dist/server/operations/inspection.js.map +0 -1
- package/dist/server/operations/inspectionHealth.d.ts +0 -5
- package/dist/server/operations/inspectionHealth.d.ts.map +0 -1
- package/dist/server/operations/inspectionHealth.js +0 -4
- package/dist/server/operations/inspectionHealth.js.map +0 -1
- package/dist/server/operations/jobs.d.ts.map +0 -1
- package/dist/server/operations/jobs.js +0 -4
- package/dist/server/operations/jobs.js.map +0 -1
- package/dist/server/operations/queue.d.ts +0 -3
- package/dist/server/operations/queue.d.ts.map +0 -1
- package/dist/server/operations/queue.js +0 -4
- package/dist/server/operations/queue.js.map +0 -1
- package/dist/server/operations/refreshQueueStats.d.ts +0 -3
- package/dist/server/operations/refreshQueueStats.d.ts.map +0 -1
- package/dist/server/operations/refreshQueueStats.js +0 -4
- package/dist/server/operations/refreshQueueStats.js.map +0 -1
- package/dist/server/operations/retry.d.ts +0 -3
- package/dist/server/operations/retry.d.ts.map +0 -1
- package/dist/server/operations/retry.js +0 -4
- package/dist/server/operations/retry.js.map +0 -1
- package/dist/server/operations/schedules.d.ts +0 -3
- package/dist/server/operations/schedules.d.ts.map +0 -1
- package/dist/server/operations/schedules.js +0 -4
- package/dist/server/operations/schedules.js.map +0 -1
- package/dist/server/operations/schemaVersion.d.ts +0 -3
- package/dist/server/operations/schemaVersion.d.ts.map +0 -1
- package/dist/server/operations/schemaVersion.js +0 -4
- package/dist/server/operations/schemaVersion.js.map +0 -1
- package/dist/server/operations/snapshot.d.ts +0 -3
- package/dist/server/operations/snapshot.d.ts.map +0 -1
- package/dist/server/operations/snapshot.js +0 -4
- package/dist/server/operations/snapshot.js.map +0 -1
- package/dist/server/operations/storedJobs.d.ts +0 -5
- package/dist/server/operations/storedJobs.d.ts.map +0 -1
- package/dist/server/operations/storedJobs.js +0 -4
- package/dist/server/operations/storedJobs.js.map +0 -1
- package/dist/server/operations/unschedule.d.ts +0 -3
- package/dist/server/operations/unschedule.d.ts.map +0 -1
- package/dist/server/operations/unschedule.js +0 -4
- package/dist/server/operations/unschedule.js.map +0 -1
- package/dist/server/pgBossDefinitionLayer.d.ts.map +0 -1
- package/dist/server/pgBossDefinitionLayer.js.map +0 -1
- package/dist/server/register.d.ts.map +0 -1
- package/dist/server/register.js.map +0 -1
- package/dist/server/registerReleasedJobs.d.ts +0 -6
- package/dist/server/registerReleasedJobs.d.ts.map +0 -1
- package/dist/server/registerReleasedJobs.js.map +0 -1
- package/src/server/PgBossInitialization.ts +0 -9
- package/src/server/PgBossOperations.ts +0 -35
- package/src/server/enqueueFor.ts +0 -44
- package/src/server/initializeInspection.ts +0 -8
- package/src/server/initializeJobs.ts +0 -4
- package/src/server/jobControl.ts +0 -27
- package/src/server/makeService.ts +0 -28
- package/src/server/operations/busy.ts +0 -5
- package/src/server/operations/changes.ts +0 -5
- package/src/server/operations/counts.ts +0 -5
- package/src/server/operations/deadLetteredJobs.ts +0 -5
- package/src/server/operations/deferred.ts +0 -5
- package/src/server/operations/deleteQueue.ts +0 -5
- package/src/server/operations/enqueue.ts +0 -5
- package/src/server/operations/failedJobs.ts +0 -5
- package/src/server/operations/getJob.ts +0 -5
- package/src/server/operations/health.ts +0 -5
- package/src/server/operations/inspection.ts +0 -5
- package/src/server/operations/inspectionHealth.ts +0 -5
- package/src/server/operations/jobs.ts +0 -5
- package/src/server/operations/queue.ts +0 -5
- package/src/server/operations/refreshQueueStats.ts +0 -5
- package/src/server/operations/retry.ts +0 -5
- package/src/server/operations/schedules.ts +0 -5
- package/src/server/operations/schemaVersion.ts +0 -5
- package/src/server/operations/snapshot.ts +0 -5
- package/src/server/operations/storedJobs.ts +0 -5
- package/src/server/operations/unschedule.ts +0 -5
- /package/dist/server/{countsFor.d.ts → adapters/countsFor.d.ts} +0 -0
- /package/dist/server/{countsFor.js → adapters/countsFor.js} +0 -0
- /package/dist/server/{ensureQueue.d.ts → adapters/ensureQueue.d.ts} +0 -0
- /package/dist/server/{ensureQueue.js → adapters/ensureQueue.js} +0 -0
- /package/dist/server/{healthFor.d.ts → adapters/healthFor.d.ts} +0 -0
- /package/dist/server/{healthFor.js → adapters/healthFor.js} +0 -0
- /package/dist/server/{pgBossDefinitionLayer.d.ts → adapters/pgBossDefinitionLayer.d.ts} +0 -0
- /package/src/server/{countsFor.ts → adapters/countsFor.ts} +0 -0
- /package/src/server/{ensureQueue.ts → adapters/ensureQueue.ts} +0 -0
- /package/src/server/{healthFor.ts → adapters/healthFor.ts} +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Effect, Redacted, Schema } from "effect";
|
|
2
|
+
import { payloadJobId, payloadKey } from "#server/adapters/payloadIdentity.ts";
|
|
3
|
+
import type { JobPayloadSchema, QueueDefinition } from "#server/definition.ts";
|
|
4
|
+
import type { EnqueueOptions, QueueEnqueueOptions } from "#server/enqueueOptions.ts";
|
|
5
|
+
import { PgBossPayloadError } from "#server/error.ts";
|
|
6
|
+
import { PgBossOperations } from "#server/services/operations/service.ts";
|
|
7
|
+
import { capturePayload } from "#server/tracing.ts";
|
|
8
|
+
|
|
9
|
+
function identityOptions(queue: Pick<QueueDefinition, "id" | "key" | "name">, payload: object, options?: EnqueueOptions) {
|
|
10
|
+
return queue.id === undefined && queue.key === undefined
|
|
11
|
+
? options
|
|
12
|
+
: {
|
|
13
|
+
...options,
|
|
14
|
+
...(queue.id === undefined ? {} : { id: payloadJobId(queue.name, queue.id, payload) }),
|
|
15
|
+
...(queue.key === undefined ? {} : { singletonKey: payloadKey(queue.key, payload) }),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const enqueuePayload = Effect.fnUntraced(function* <
|
|
20
|
+
const TName extends string,
|
|
21
|
+
const TPayload extends JobPayloadSchema,
|
|
22
|
+
const TQueue extends QueueDefinition<TName, TPayload>,
|
|
23
|
+
>(queue: QueueDefinition<TName, TPayload> & TQueue, payload: NoInfer<Schema.Schema.Type<TPayload>>, options?: NoInfer<QueueEnqueueOptions<TQueue>>) {
|
|
24
|
+
const operations = yield* PgBossOperations;
|
|
25
|
+
const encoded = yield* Schema.encodeUnknownEffect(Schema.toCodecJson(queue.schema))(payload).pipe(
|
|
26
|
+
Effect.mapError((error) => new PgBossPayloadError({ direction: "encode", original: Redacted.make(error), queue: queue.name })),
|
|
27
|
+
);
|
|
28
|
+
if (typeof encoded !== "object" || encoded === null) {
|
|
29
|
+
return yield* new PgBossPayloadError({
|
|
30
|
+
direction: "encode",
|
|
31
|
+
original: Redacted.make(new TypeError("pg-boss payloads must encode to objects")),
|
|
32
|
+
queue: queue.name,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const data = yield* capturePayload(encoded);
|
|
36
|
+
const sendOptions = identityOptions(queue, payload, options);
|
|
37
|
+
return yield* operations.enqueue(queue.name, data, sendOptions);
|
|
38
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Schema } from "effect";
|
|
2
|
+
import { Effect, Option } from "effect";
|
|
3
|
+
import { redact } from "@shivaedev/errors/redact.ts";
|
|
4
|
+
import { deferralOf } from "#server/deferral.ts";
|
|
5
|
+
import type { JobPayloadSchema } from "#server/definition.ts";
|
|
6
|
+
import { readJobFailure } from "#server/readJobFailure.ts";
|
|
7
|
+
import { PgBossOperations } from "#server/services/operations/service.ts";
|
|
8
|
+
import { decodeStoredData } from "#server/storedRows.ts";
|
|
9
|
+
|
|
10
|
+
export const getJob = Effect.fnUntraced(function* <const TName extends string, const TPayload extends JobPayloadSchema | typeof Schema.Null>(
|
|
11
|
+
queue: { readonly name: TName; readonly schema: TPayload },
|
|
12
|
+
id: string,
|
|
13
|
+
) {
|
|
14
|
+
const engine = yield* PgBossOperations;
|
|
15
|
+
return yield* engine.getJob(queue.name, id).pipe(
|
|
16
|
+
Effect.flatMap(
|
|
17
|
+
Effect.fnUntraced(function* (job) {
|
|
18
|
+
if (job === undefined) {
|
|
19
|
+
return Option.none();
|
|
20
|
+
}
|
|
21
|
+
const data = yield* decodeStoredData(queue, job.data);
|
|
22
|
+
const output = deferralOf(job) === undefined ? yield* readJobFailure(queue.name, job.output) : job.output;
|
|
23
|
+
const sourceOutput = yield* readJobFailure(queue.name, job.sourceOutput);
|
|
24
|
+
return Option.some({ ...job, data: redact(data), output, sourceOutput });
|
|
25
|
+
}),
|
|
26
|
+
),
|
|
27
|
+
);
|
|
28
|
+
});
|
package/src/server/inspection.ts
CHANGED
|
@@ -1,25 +1,12 @@
|
|
|
1
|
-
import type { DateTime } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import { genericMethod } from "@shivaedev/service/genericMethod.ts";
|
|
1
|
+
import type { DateTime, Effect, Schema } from "effect";
|
|
2
|
+
import { Context } from "effect";
|
|
4
3
|
import type { inspectionChanges } from "#server/adapters/inspectionChanges.ts";
|
|
4
|
+
import { inspectionLayer } from "#server/adapters/inspectionLayer.ts";
|
|
5
5
|
import type { inspectionReads } from "#server/adapters/inspectionReads.ts";
|
|
6
|
+
import type { JobReadOptions } from "#server/client.ts";
|
|
6
7
|
import type { JobPayloadSchema, QueueDefinition } from "#server/definition.ts";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { changes } from "#server/operations/changes.ts";
|
|
10
|
-
import { counts } from "#server/operations/counts.ts";
|
|
11
|
-
import { deadLetteredJobs } from "#server/operations/deadLetteredJobs.ts";
|
|
12
|
-
import { deferred } from "#server/operations/deferred.ts";
|
|
13
|
-
import { failedJobs } from "#server/operations/failedJobs.ts";
|
|
14
|
-
import { getJob } from "#server/operations/getJob.ts";
|
|
15
|
-
import { inspectionHealth } from "#server/operations/inspectionHealth.ts";
|
|
16
|
-
import { jobs } from "#server/operations/jobs.ts";
|
|
17
|
-
import { queue } from "#server/operations/queue.ts";
|
|
18
|
-
import { schedules } from "#server/operations/schedules.ts";
|
|
19
|
-
import { schemaVersion } from "#server/operations/schemaVersion.ts";
|
|
20
|
-
import { snapshot } from "#server/operations/snapshot.ts";
|
|
21
|
-
import { storedJobs } from "#server/operations/storedJobs.ts";
|
|
22
|
-
import { PgBoss } from "#server/PgBoss.ts";
|
|
8
|
+
import type { PgBossError, PgBossPayloadError } from "#server/error.ts";
|
|
9
|
+
import type { Job } from "#server/job.ts";
|
|
23
10
|
import type { PgBossService } from "#server/service.ts";
|
|
24
11
|
|
|
25
12
|
export type SnapshotQueue = Pick<QueueDefinition<string, JobPayloadSchema>, "name" | "schema">;
|
|
@@ -32,30 +19,18 @@ export interface UnfinishedJob<TQueue extends SnapshotQueue> {
|
|
|
32
19
|
readonly state: "active" | "created" | "deferred" | "failed" | "retry";
|
|
33
20
|
}
|
|
34
21
|
|
|
35
|
-
export
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
failedJobs: genericMethod(failedJobs(service)),
|
|
45
|
-
getJob: genericMethod(getJob(service)),
|
|
46
|
-
health: inspectionHealth(service),
|
|
47
|
-
jobs: genericMethod(jobs(service)),
|
|
48
|
-
queue: queue(service),
|
|
49
|
-
schedules: schedules(service),
|
|
50
|
-
schemaVersion: schemaVersion(service),
|
|
51
|
-
snapshot: genericMethod(snapshot(service)),
|
|
52
|
-
storedJobs: storedJobs(service),
|
|
53
|
-
}),
|
|
54
|
-
requires: [PgBoss] as const,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
export type PgBossInspectionService = ReturnType<typeof inspectionReads> &
|
|
58
|
-
Pick<PgBossService, "counts" | "deadLetteredJobs" | "failedJobs" | "getJob"> & {
|
|
22
|
+
export type PgBossInspectionService = Omit<ReturnType<typeof inspectionReads>, "snapshot"> & {
|
|
23
|
+
readonly jobs: <TName extends string, TPayload extends JobPayloadSchema | typeof Schema.Null>(
|
|
24
|
+
queue: { readonly name: TName; readonly schema: TPayload },
|
|
25
|
+
options?: JobReadOptions,
|
|
26
|
+
) => Effect.Effect<Job<TPayload["Type"]>[], PgBossError | PgBossPayloadError, TPayload["DecodingServices"]>;
|
|
27
|
+
readonly snapshot: <const TQueues extends readonly SnapshotQueue[]>(
|
|
28
|
+
queues: TQueues,
|
|
29
|
+
) => Effect.Effect<readonly UnfinishedJob<TQueues[number]>[], PgBossPayloadError | PgBossError, TQueues[number]["schema"]["DecodingServices"]>;
|
|
30
|
+
} & Pick<PgBossService, "counts" | "deadLetteredJobs" | "failedJobs" | "getJob"> & {
|
|
59
31
|
readonly health: (queues: readonly { readonly name: string }[]) => ReturnType<PgBossService["health"]>;
|
|
60
32
|
readonly changes: (queue?: { readonly name: string }) => ReturnType<typeof inspectionChanges>;
|
|
61
33
|
};
|
|
34
|
+
|
|
35
|
+
const Inspection = Context.Service<"@shivaedev/jobs/PgBossInspection", PgBossInspectionService>("@shivaedev/jobs/PgBossInspection");
|
|
36
|
+
export const PgBossInspection = Object.assign(Inspection, { layer: inspectionLayer(Inspection) });
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Effect, type Schema } from "effect";
|
|
2
|
+
import type { JobReadOptions } from "#server/client.ts";
|
|
3
|
+
import type { JobPayloadSchema } from "#server/definition.ts";
|
|
4
|
+
import { PgBossInspectionReads } from "#server/services/inspection/service.ts";
|
|
5
|
+
import { decodeStoredData } from "#server/storedRows.ts";
|
|
6
|
+
export const inspectionJobs = Effect.fnUntraced(function* <TName extends string, TPayload extends JobPayloadSchema | typeof Schema.Null>(
|
|
7
|
+
queue: { readonly name: TName; readonly schema: TPayload },
|
|
8
|
+
options?: JobReadOptions,
|
|
9
|
+
) {
|
|
10
|
+
const inspection = yield* PgBossInspectionReads;
|
|
11
|
+
const rows = yield* inspection.storedJobs(queue, options);
|
|
12
|
+
return yield* Effect.forEach(rows, (job) => decodeStoredData(queue, job.data).pipe(Effect.map((data) => ({ ...job, data }))));
|
|
13
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { SnapshotQueue, UnfinishedJob } from "#server/inspection.ts";
|
|
3
|
+
import { PgBossInspectionReads } from "#server/services/inspection/service.ts";
|
|
4
|
+
import { decodeStoredData } from "#server/storedRows.ts";
|
|
5
|
+
export const inspectionSnapshot = Effect.fnUntraced(function* <const TQueues extends readonly SnapshotQueue[]>(queues: TQueues) {
|
|
6
|
+
const inspection = yield* PgBossInspectionReads;
|
|
7
|
+
const byName = new Map<string, TQueues[number]>(queues.map((queue) => [queue.name, queue]));
|
|
8
|
+
const rows = yield* inspection.snapshot(queues);
|
|
9
|
+
return yield* Effect.forEach(rows, ({ data, queue: name, ...row }) => {
|
|
10
|
+
const queue = byName.get(name);
|
|
11
|
+
if (queue === undefined) {
|
|
12
|
+
return Effect.die(new Error(`The snapshot returned a job of an unrequested queue ${name}`));
|
|
13
|
+
}
|
|
14
|
+
return decodeStoredData<TQueues[number]["name"], TQueues[number]["schema"]>(queue, data).pipe(
|
|
15
|
+
Effect.map((decoded): UnfinishedJob<TQueues[number]> => ({ ...row, data: decoded, queue: queue.name })),
|
|
16
|
+
);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Effect, Option, Redacted, Schema } from "effect";
|
|
2
2
|
import { redact } from "@shivaedev/errors/redact.ts";
|
|
3
3
|
import { keysetPage } from "@shivaedev/sql/keysetPage.ts";
|
|
4
4
|
import type { JobPayloadSchema } from "#server/definition.ts";
|
|
5
|
-
import {
|
|
5
|
+
import type { Listing } from "#server/engine.ts";
|
|
6
6
|
import { type PgBossError, PgBossPayloadError } from "#server/error.ts";
|
|
7
7
|
import type { DeadLetteredJob, JobPage, JobPageOptions } from "#server/health.ts";
|
|
8
8
|
import { readJobFailure } from "#server/readJobFailure.ts";
|
|
9
|
-
import
|
|
9
|
+
import { PgBossOperations } from "#server/services/operations/service.ts";
|
|
10
10
|
import { decodeStoredData } from "#server/storedRows.ts";
|
|
11
11
|
|
|
12
12
|
const Cursor = Schema.StringFromBase64Url.pipe(
|
|
@@ -42,29 +42,33 @@ const Row = Schema.Struct({
|
|
|
42
42
|
|
|
43
43
|
const Rows = Schema.Array(Row);
|
|
44
44
|
|
|
45
|
-
export const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
45
|
+
export const failedJobs = Effect.fnUntraced(function* <const TName extends string, const TPayload extends JobPayloadSchema | typeof Schema.Null>(
|
|
46
|
+
queue: { readonly name: TName; readonly schema: TPayload },
|
|
47
|
+
options: JobPageOptions,
|
|
48
|
+
) {
|
|
49
|
+
return yield* listJobs("failedJobs", queue, options).pipe(
|
|
50
|
+
Effect.map(({ jobs, next }) => ({ jobs: jobs.map(({ sourceId: _id, sourceOutput: _output, ...job }) => job), next })),
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
export const deadLetteredJobs = Effect.fnUntraced(function* <
|
|
54
|
+
const TName extends string,
|
|
55
|
+
const TPayload extends JobPayloadSchema | typeof Schema.Null,
|
|
56
|
+
>(queue: { readonly name: TName; readonly schema: TPayload }, options: JobPageOptions) {
|
|
57
|
+
return yield* listJobs("deadLetteredJobs", queue, options).pipe(
|
|
58
|
+
Effect.map(({ jobs, next }) => ({ jobs: jobs.map((job) => ({ ...job, sourceQueue: queue.name })), next })),
|
|
59
|
+
);
|
|
56
60
|
});
|
|
57
61
|
|
|
58
62
|
const listJobs = Effect.fnUntraced(function* <const TName extends string, const TPayload extends JobPayloadSchema | typeof Schema.Null>(
|
|
59
|
-
engine: Context.Service.Shape<typeof JobEngine>,
|
|
60
63
|
listing: Listing,
|
|
61
64
|
queue: { readonly name: TName; readonly schema: TPayload },
|
|
62
65
|
options: JobPageOptions,
|
|
63
66
|
): Effect.fn.Return<
|
|
64
67
|
JobPage<Omit<DeadLetteredJob<unknown>, "sourceQueue">>,
|
|
65
68
|
PgBossError | PgBossPayloadError | Schema.SchemaError,
|
|
66
|
-
TPayload["DecodingServices"]
|
|
69
|
+
TPayload["DecodingServices"] | "@shivaedev/jobs/PgBossOperations"
|
|
67
70
|
> {
|
|
71
|
+
const engine = yield* PgBossOperations;
|
|
68
72
|
const { cursor: after, limit } = yield* Schema.decodeUnknownEffect(PageOptions)(options);
|
|
69
73
|
const page = yield* keysetPage({
|
|
70
74
|
after,
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import { Effect, Redacted, Schema } from "effect";
|
|
2
2
|
import { deferralCount } from "#server/adapters/deferralCount.ts";
|
|
3
3
|
import { workerDiagnostics } from "#server/adapters/workerDiagnostics.ts";
|
|
4
|
-
import type { PgBossClient } from "#server/client.ts";
|
|
5
4
|
import { type JobPayloadSchema, jobContext, type QueueWorker } from "#server/definition.ts";
|
|
6
5
|
import { PgBossPayloadError } from "#server/error.ts";
|
|
7
6
|
import type { WorkerJob } from "#server/job.ts";
|
|
7
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
8
8
|
import { payloadOf } from "#server/tracing.ts";
|
|
9
9
|
|
|
10
|
-
export function
|
|
10
|
+
export const runQueueWorker = Effect.fnUntraced(function* <R>(
|
|
11
11
|
worker: QueueWorker<JobPayloadSchema & { readonly DecodingServices: R }, R>,
|
|
12
12
|
job: WorkerJob<unknown>,
|
|
13
13
|
deadline: number,
|
|
14
|
-
client: PgBossClient,
|
|
15
|
-
schema: string,
|
|
16
14
|
) {
|
|
17
|
-
|
|
15
|
+
const { client, schema = "pgboss" } = yield* PgBoss;
|
|
16
|
+
return yield* Schema.decodeUnknownEffect(Schema.toCodecJson(worker.queue.schema))(payloadOf(job.data)).pipe(
|
|
18
17
|
Effect.mapError(
|
|
19
18
|
(error) =>
|
|
20
19
|
new PgBossPayloadError({
|
|
@@ -28,4 +27,4 @@ export function runQueueWorker<R>(
|
|
|
28
27
|
),
|
|
29
28
|
workerDiagnostics,
|
|
30
29
|
);
|
|
31
|
-
}
|
|
30
|
+
});
|
package/src/server/service.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context, type Effect, Layer, type Option, type Redacted, type Schema } from "effect";
|
|
2
2
|
import { acquireClient } from "#server/acquireClient.ts";
|
|
3
3
|
import { clientEngine } from "#server/adapters/lifecycle.ts";
|
|
4
|
+
import { pgBossDefinitionLayer } from "#server/adapters/pgBossDefinitionLayer.ts";
|
|
4
5
|
import type { PgBossClientFactory } from "#server/client.ts";
|
|
5
6
|
import type { ClientOptions, StopOptions } from "#server/clientOptions.ts";
|
|
6
7
|
import type { JobPayloadSchema, JobRegistration, QueueDefinition, RegistrationRequirements, ScheduleDefinition } from "#server/definition.ts";
|
|
@@ -18,7 +19,6 @@ import type { PgBossInspectionService } from "#server/inspection.ts";
|
|
|
18
19
|
import type { Job } from "#server/job.ts";
|
|
19
20
|
import { ClientEngine } from "#server/lifecycle.ts";
|
|
20
21
|
import { PgBoss } from "#server/PgBoss.ts";
|
|
21
|
-
import { pgBossDefinitionLayer } from "#server/pgBossDefinitionLayer.ts";
|
|
22
22
|
|
|
23
23
|
export interface PgBossService {
|
|
24
24
|
readonly counts: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<QueueCounts, PgBossError>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Context, Effect } from "effect";
|
|
2
|
+
import { InspectionEngine } from "#server/InspectionEngine.ts";
|
|
3
|
+
export const busy = Effect.fn("PgBossInspectionReads.busy")(function* (...args: Parameters<Context.Service.Shape<typeof InspectionEngine>["busy"]>) {
|
|
4
|
+
const engine = yield* InspectionEngine;
|
|
5
|
+
return yield* engine.busy(...args);
|
|
6
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { inspectionChanges } from "#server/adapters/inspectionChanges.ts";
|
|
3
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
4
|
+
export const changes = Effect.fn("PgBossInspectionReads.changes")(function* (queue?: { readonly name: string }) {
|
|
5
|
+
const { client, schema } = yield* PgBoss;
|
|
6
|
+
return yield* inspectionChanges(client, schema ?? "pgboss", queue?.name);
|
|
7
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { countsFor } from "#server/adapters/countsFor.ts";
|
|
3
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
4
|
+
export const counts = Effect.fn("PgBossInspectionReads.counts")(function* (queue: { readonly name: string }) {
|
|
5
|
+
const { client, schema } = yield* PgBoss;
|
|
6
|
+
return yield* countsFor(client, schema ?? "pgboss", queue.name);
|
|
7
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Context, Effect } from "effect";
|
|
2
|
+
import { InspectionEngine } from "#server/InspectionEngine.ts";
|
|
3
|
+
export const deferred = Effect.fn("PgBossInspectionReads.deferred")(function* (
|
|
4
|
+
...args: Parameters<Context.Service.Shape<typeof InspectionEngine>["deferred"]>
|
|
5
|
+
) {
|
|
6
|
+
const engine = yield* InspectionEngine;
|
|
7
|
+
return yield* engine.deferred(...args);
|
|
8
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { healthFor } from "#server/adapters/healthFor.ts";
|
|
3
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
4
|
+
export const health = Effect.fn("PgBossInspectionReads.health")(function* (queues: readonly { readonly name: string }[]) {
|
|
5
|
+
const { client } = yield* PgBoss;
|
|
6
|
+
return yield* healthFor(
|
|
7
|
+
client,
|
|
8
|
+
queues.map(({ name }) => name),
|
|
9
|
+
);
|
|
10
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Context, Effect } from "effect";
|
|
2
|
+
import { InspectionEngine } from "#server/InspectionEngine.ts";
|
|
3
|
+
export const queue = Effect.fn("PgBossInspectionReads.queue")(function* (
|
|
4
|
+
...args: Parameters<Context.Service.Shape<typeof InspectionEngine>["queue"]>
|
|
5
|
+
) {
|
|
6
|
+
const engine = yield* InspectionEngine;
|
|
7
|
+
return yield* engine.queue(...args);
|
|
8
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Context, Effect } from "effect";
|
|
2
|
+
import { InspectionEngine } from "#server/InspectionEngine.ts";
|
|
3
|
+
export const schedules = Effect.fn("PgBossInspectionReads.schedules")(function* (
|
|
4
|
+
...args: Parameters<Context.Service.Shape<typeof InspectionEngine>["schedules"]>
|
|
5
|
+
) {
|
|
6
|
+
const engine = yield* InspectionEngine;
|
|
7
|
+
return yield* engine.schedules(...args);
|
|
8
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Context, Effect } from "effect";
|
|
2
|
+
import { InspectionEngine } from "#server/InspectionEngine.ts";
|
|
3
|
+
export const schemaVersion = Effect.fn("PgBossInspectionReads.schemaVersion")(function* (
|
|
4
|
+
...args: Parameters<Context.Service.Shape<typeof InspectionEngine>["schemaVersion"]>
|
|
5
|
+
) {
|
|
6
|
+
const engine = yield* InspectionEngine;
|
|
7
|
+
return yield* engine.schemaVersion(...args);
|
|
8
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { defineService } from "@shivaedev/service/defineService.ts";
|
|
3
|
+
import { InspectionEngine } from "#server/InspectionEngine.ts";
|
|
4
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
5
|
+
import { busy } from "./busy.ts";
|
|
6
|
+
import { changes } from "./changes.ts";
|
|
7
|
+
import { counts } from "./counts.ts";
|
|
8
|
+
import { deferred } from "./deferred.ts";
|
|
9
|
+
import { health } from "./health.ts";
|
|
10
|
+
import { queue } from "./queue.ts";
|
|
11
|
+
import { schedules } from "./schedules.ts";
|
|
12
|
+
import { schemaVersion } from "./schemaVersion.ts";
|
|
13
|
+
import { snapshot } from "./snapshot.ts";
|
|
14
|
+
import { storedJobs } from "./storedJobs.ts";
|
|
15
|
+
export const PgBossInspectionReads = defineService({
|
|
16
|
+
id: "@shivaedev/jobs/PgBossInspectionReads",
|
|
17
|
+
initialize: Effect.void,
|
|
18
|
+
methods: () => ({ busy, changes, counts, deferred, health, queue, schedules, schemaVersion, snapshot, storedJobs }),
|
|
19
|
+
requires: [PgBoss, InspectionEngine],
|
|
20
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Context, Effect } from "effect";
|
|
2
|
+
import { InspectionEngine } from "#server/InspectionEngine.ts";
|
|
3
|
+
export const snapshot = Effect.fn("PgBossInspectionReads.snapshot")(function* (
|
|
4
|
+
...args: Parameters<Context.Service.Shape<typeof InspectionEngine>["snapshot"]>
|
|
5
|
+
) {
|
|
6
|
+
const engine = yield* InspectionEngine;
|
|
7
|
+
return yield* engine.snapshot(...args);
|
|
8
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Context, Effect } from "effect";
|
|
2
|
+
import { InspectionEngine } from "#server/InspectionEngine.ts";
|
|
3
|
+
export const storedJobs = Effect.fn("PgBossInspectionReads.storedJobs")(function* (
|
|
4
|
+
...args: Parameters<Context.Service.Shape<typeof InspectionEngine>["storedJobs"]>
|
|
5
|
+
) {
|
|
6
|
+
const engine = yield* InspectionEngine;
|
|
7
|
+
return yield* engine.storedJobs(...args);
|
|
8
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { countsFor } from "#server/adapters/countsFor.ts";
|
|
3
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
4
|
+
export const counts = Effect.fn("PgBossOperations.counts")(function* (queue: { readonly name: string }) {
|
|
5
|
+
const { client, schema } = yield* PgBoss;
|
|
6
|
+
return yield* countsFor(client, schema ?? "pgboss", queue.name);
|
|
7
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { JobEngine } from "#server/engine.ts";
|
|
3
|
+
import type { PgBossService } from "#server/service.ts";
|
|
4
|
+
export const deleteQueue = Effect.fn("PgBossOperations.deleteQueue")(function* (...args: Parameters<PgBossService["deleteQueue"]>) {
|
|
5
|
+
const engine = yield* JobEngine;
|
|
6
|
+
return yield* engine.deleteQueue(...args);
|
|
7
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Effect, Option } from "effect";
|
|
2
|
+
import { transactionDb } from "#server/adapters/transactionDb.ts";
|
|
3
|
+
import type { EnqueueOptions } from "#server/enqueueOptions.ts";
|
|
4
|
+
import { toPgBossError } from "#server/error.ts";
|
|
5
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
6
|
+
export const enqueue = Effect.fn("PgBossOperations.enqueue")(function* (name: string, data: object, options?: EnqueueOptions) {
|
|
7
|
+
const { client } = yield* PgBoss;
|
|
8
|
+
const db = yield* transactionDb;
|
|
9
|
+
const sendOptions = db === undefined ? options : { ...options, db };
|
|
10
|
+
const send = Effect.tryPromise({ catch: (error) => toPgBossError("enqueue", error, name), try: () => client.send(name, data, sendOptions) });
|
|
11
|
+
return Option.fromNullishOr(yield* db === undefined ? send : Effect.uninterruptible(send));
|
|
12
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { healthFor } from "#server/adapters/healthFor.ts";
|
|
3
|
+
import { JobQueues } from "#server/JobQueues.ts";
|
|
4
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
5
|
+
export const health = Effect.fn("PgBossOperations.health")(function* (queues?: readonly { readonly name: string }[]) {
|
|
6
|
+
const { client } = yield* PgBoss;
|
|
7
|
+
const names = yield* JobQueues;
|
|
8
|
+
return yield* healthFor(client, queues?.map(({ name }) => name) ?? names);
|
|
9
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { KeysetPageQuery } from "@shivaedev/sql/keysetPage.ts";
|
|
3
|
+
import type { Listing } from "#server/engine.ts";
|
|
4
|
+
import { JobEngine } from "#server/engine.ts";
|
|
5
|
+
export const listJobs = Effect.fn("PgBossOperations.listJobs")(function* (listing: Listing, queue: string, query: KeysetPageQuery) {
|
|
6
|
+
const engine = yield* JobEngine;
|
|
7
|
+
return yield* engine.listJobs(listing, queue, query);
|
|
8
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { JobEngine } from "#server/engine.ts";
|
|
3
|
+
import type { PgBossService } from "#server/service.ts";
|
|
4
|
+
export const refreshQueueStats = Effect.fn("PgBossOperations.refreshQueueStats")(function* (...args: Parameters<PgBossService["refreshQueueStats"]>) {
|
|
5
|
+
const engine = yield* JobEngine;
|
|
6
|
+
return yield* engine.refreshQueueStats(...args);
|
|
7
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { defineService } from "@shivaedev/service/defineService.ts";
|
|
3
|
+
import { JobEngine } from "#server/engine.ts";
|
|
4
|
+
import { JobQueues } from "#server/JobQueues.ts";
|
|
5
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
6
|
+
import { counts } from "./counts.ts";
|
|
7
|
+
import { deleteQueue } from "./deleteQueue.ts";
|
|
8
|
+
import { enqueue } from "./enqueue.ts";
|
|
9
|
+
import { getJob } from "./getJob.ts";
|
|
10
|
+
import { health } from "./health.ts";
|
|
11
|
+
import { listJobs } from "./listJobs.ts";
|
|
12
|
+
import { refreshQueueStats } from "./refreshQueueStats.ts";
|
|
13
|
+
import { retry } from "./retry.ts";
|
|
14
|
+
import { unschedule } from "./unschedule.ts";
|
|
15
|
+
export const PgBossOperations = defineService({
|
|
16
|
+
id: "@shivaedev/jobs/PgBossOperations",
|
|
17
|
+
initialize: Effect.void,
|
|
18
|
+
methods: () => ({ counts, deleteQueue, enqueue, getJob, health, listJobs, refreshQueueStats, retry, unschedule }),
|
|
19
|
+
requires: [PgBoss, JobEngine, JobQueues],
|
|
20
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { JobEngine } from "#server/engine.ts";
|
|
3
|
+
import type { PgBossService } from "#server/service.ts";
|
|
4
|
+
export const unschedule = Effect.fn("PgBossOperations.unschedule")(function* (...args: Parameters<PgBossService["unschedule"]>) {
|
|
5
|
+
const engine = yield* JobEngine;
|
|
6
|
+
return yield* engine.unschedule(...args);
|
|
7
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
+
import { registrationName } from "#server/adapters/register.ts";
|
|
2
3
|
import type { JobRegistration } from "#server/definition.ts";
|
|
3
4
|
import { PgBossQueueNamesError } from "#server/error.ts";
|
|
4
|
-
import { registrationName } from "./register.ts";
|
|
5
5
|
|
|
6
6
|
export const validateQueueNames = Effect.fnUntraced(function* (jobs: readonly JobRegistration[], declared: readonly string[] | undefined) {
|
|
7
7
|
if (declared === undefined) {
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Context, type Effect, type Scope } from "effect";
|
|
2
|
-
import type { PgBossError, PgBossQueueNamesError, PgBossQueueOptionsError } from "#server/error.ts";
|
|
3
|
-
import type { PgBoss } from "#server/PgBoss.ts";
|
|
4
|
-
import type { PgBossService } from "#server/service.ts";
|
|
5
|
-
declare const PgBossInitialization_base: Context.ServiceClass<PgBossInitialization, "@shivaedev/jobs/PgBossInitialization", Effect.Effect<PgBossService, PgBossError | PgBossQueueNamesError | PgBossQueueOptionsError, PgBoss | Scope.Scope>>;
|
|
6
|
-
export declare class PgBossInitialization extends PgBossInitialization_base {
|
|
7
|
-
}
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=PgBossInitialization.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossInitialization.d.ts","sourceRoot":"","sources":["../../src/server/PgBossInitialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;;AAExD,qBAAa,oBAAqB,SAAQ,yBAGC;CAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossInitialization.js","sourceRoot":"","sources":["../../src/server/PgBossInitialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2B,MAAM,QAAQ,CAAC;AAK1D,MAAM,OAAO,oBAAqB,SAAQ,OAAO,CAAC,OAAO,EAGtD,CAAC,sCAAsC,CAAC;CAAG"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { PgBoss } from "#server/PgBoss.ts";
|
|
2
|
-
import { PgBossInitialization } from "./PgBossInitialization.ts";
|
|
3
|
-
export declare const PgBossOperations: import("effect/Context").Service<"@shivaedev/jobs/PgBossOperations", Readonly<{
|
|
4
|
-
readonly counts: (queue: Pick<import("./definition.ts").QueueDefinition<string, import("./definition.ts").JobPayloadSchema>, "name">) => import("effect/Effect").Effect<import("./health.ts").QueueCounts, import("./error.ts").PgBossError, never>;
|
|
5
|
-
readonly deadLetteredJobs: <const TName extends string, const TPayload extends import("./definition.ts").JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
6
|
-
readonly name: TName;
|
|
7
|
-
readonly schema: TPayload;
|
|
8
|
-
}, options: import("./health.ts").JobPageOptions) => import("effect/Effect").Effect<import("./health.ts").JobPage<import("./health.ts").DeadLetteredJob<unknown>>, import("./error.ts").PgBossError | import("./error.ts").PgBossPayloadError | import("effect/Schema").SchemaError, TPayload["DecodingServices"]>;
|
|
9
|
-
readonly deleteQueue: (queue: Pick<import("./definition.ts").QueueDefinition<string, import("./definition.ts").JobPayloadSchema>, "name">) => import("effect/Effect").Effect<void, import("./error.ts").PgBossError | import("./error.ts").PgBossNotFoundError, never>;
|
|
10
|
-
readonly enqueue: <const TName extends string, const TPayload extends import("./definition.ts").JobPayloadSchema, const TQueue extends import("./definition.ts").QueueDefinition<TName, TPayload>>(queue: import("./definition.ts").QueueDefinition<TName, TPayload> & TQueue, payload: NoInfer<import("effect/Schema").Schema.Type<TPayload>>, options?: NoInfer<import("./enqueueOptions.ts").QueueEnqueueOptions<TQueue>>) => import("effect/Effect").Effect<import("effect/Option").Option<string>, import("./error.ts").PgBossError | import("./error.ts").PgBossPayloadError, TPayload["EncodingServices"]>;
|
|
11
|
-
readonly failedJobs: <const TName extends string, const TPayload extends import("./definition.ts").JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
12
|
-
readonly name: TName;
|
|
13
|
-
readonly schema: TPayload;
|
|
14
|
-
}, options: import("./health.ts").JobPageOptions) => import("effect/Effect").Effect<import("./health.ts").JobPage<import("./health.ts").ListedJob<unknown>>, import("./error.ts").PgBossError | import("./error.ts").PgBossPayloadError | import("effect/Schema").SchemaError, TPayload["DecodingServices"]>;
|
|
15
|
-
readonly getJob: <const TName extends string, const TPayload extends import("./definition.ts").JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
16
|
-
readonly name: TName;
|
|
17
|
-
readonly schema: TPayload;
|
|
18
|
-
}, id: string) => import("effect/Effect").Effect<import("effect/Option").Option<import("./job.ts").Job<unknown>>, import("./error.ts").PgBossError | import("./error.ts").PgBossPayloadError, TPayload["DecodingServices"]>;
|
|
19
|
-
readonly health: (queues?: readonly Pick<import("./definition.ts").QueueDefinition<string, import("./definition.ts").JobPayloadSchema>, "name">[] | undefined) => import("effect/Effect").Effect<import("./health.ts").JobsHealth, import("./error.ts").PgBossError, never>;
|
|
20
|
-
readonly inspection: () => import("effect/Effect").Effect<import("./inspection.ts").PgBossInspectionService, never, never>;
|
|
21
|
-
readonly refreshQueueStats: (queue?: Pick<import("./definition.ts").QueueDefinition<string, import("./definition.ts").JobPayloadSchema>, "name"> | undefined) => import("effect/Effect").Effect<void, import("./error.ts").PgBossError, never>;
|
|
22
|
-
readonly retry: (queue: Pick<import("./definition.ts").QueueDefinition<string, import("./definition.ts").JobPayloadSchema>, "name">, id: string) => import("effect/Effect").Effect<void, import("./error.ts").PgBossError, never>;
|
|
23
|
-
readonly unschedule: (schedule: Pick<import("./definition.ts").ScheduleDefinition<string>, "name" | "scheduleOptions">) => import("effect/Effect").Effect<void, import("./error.ts").PgBossError | import("./error.ts").PgBossNotFoundError, never>;
|
|
24
|
-
}>> & {
|
|
25
|
-
readonly layer: import("effect/Layer").Layer<"@shivaedev/jobs/PgBossOperations", import("./error.ts").PgBossError | import("./error.ts").PgBossQueueNamesError | import("./error.ts").PgBossQueueOptionsError, PgBoss | PgBossInitialization>;
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=PgBossOperations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PgBossOperations.d.ts","sourceRoot":"","sources":["../../src/server/PgBossOperations.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;CAiB3B,CAAC"}
|