@shivaedev/jobs 0.32.0 → 0.35.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 +22 -0
- package/README.md +19 -5
- package/dist/server/adapters/clientErrorSubscription.d.ts +4 -0
- package/dist/server/adapters/clientErrorSubscription.d.ts.map +1 -0
- package/dist/server/adapters/clientErrorSubscription.js +6 -0
- package/dist/server/adapters/clientErrorSubscription.js.map +1 -0
- package/dist/server/adapters/settleDeferral.d.ts.map +1 -1
- package/dist/server/adapters/settleDeferral.js +8 -2
- package/dist/server/adapters/settleDeferral.js.map +1 -1
- package/dist/server/adapters/testingClient.d.ts.map +1 -1
- package/dist/server/adapters/testingClient.js +2 -0
- package/dist/server/adapters/testingClient.js.map +1 -1
- package/dist/server/adapters/testingController.d.ts +2 -1
- package/dist/server/adapters/testingController.d.ts.map +1 -1
- package/dist/server/adapters/testingController.js +14 -2
- package/dist/server/adapters/testingController.js.map +1 -1
- package/dist/server/adapters/testingTime.d.ts +10 -0
- package/dist/server/adapters/testingTime.d.ts.map +1 -0
- package/dist/server/adapters/testingTime.js +18 -0
- package/dist/server/adapters/testingTime.js.map +1 -0
- package/dist/server/inspection.d.ts +17 -17
- package/dist/server/inspection.d.ts.map +1 -1
- package/dist/server/inspection.js +30 -20
- package/dist/server/inspection.js.map +1 -1
- package/dist/server/internal/PgBossInitialization.d.ts +9 -0
- package/dist/server/internal/PgBossInitialization.d.ts.map +1 -0
- package/dist/server/internal/PgBossInitialization.js +4 -0
- package/dist/server/internal/PgBossInitialization.js.map +1 -0
- package/dist/server/internal/PgBossOperations.d.ts +27 -0
- package/dist/server/internal/PgBossOperations.d.ts.map +1 -0
- package/dist/server/internal/PgBossOperations.js +35 -0
- package/dist/server/internal/PgBossOperations.js.map +1 -0
- package/dist/server/internal/adapters/deferralChanges.d.ts +3 -0
- package/dist/server/internal/adapters/deferralChanges.d.ts.map +1 -0
- package/dist/server/internal/adapters/deferralChanges.js +2 -0
- package/dist/server/internal/adapters/deferralChanges.js.map +1 -0
- package/dist/server/internal/initializeInspection.d.ts +4 -0
- package/dist/server/internal/initializeInspection.d.ts.map +1 -0
- package/dist/server/internal/initializeInspection.js +8 -0
- package/dist/server/internal/initializeInspection.js.map +1 -0
- package/dist/server/internal/initializeJobs.d.ts +4 -0
- package/dist/server/internal/initializeJobs.d.ts.map +1 -0
- package/dist/server/internal/initializeJobs.js +4 -0
- package/dist/server/internal/initializeJobs.js.map +1 -0
- package/dist/server/internal/operations/busy.d.ts +3 -0
- package/dist/server/internal/operations/busy.d.ts.map +1 -0
- package/dist/server/internal/operations/busy.js +4 -0
- package/dist/server/internal/operations/busy.js.map +1 -0
- package/dist/server/internal/operations/changes.d.ts +5 -0
- package/dist/server/internal/operations/changes.d.ts.map +1 -0
- package/dist/server/internal/operations/changes.js +4 -0
- package/dist/server/internal/operations/changes.js.map +1 -0
- package/dist/server/internal/operations/counts.d.ts +3 -0
- package/dist/server/internal/operations/counts.d.ts.map +1 -0
- package/dist/server/internal/operations/counts.js +4 -0
- package/dist/server/internal/operations/counts.js.map +1 -0
- package/dist/server/internal/operations/deadLetteredJobs.d.ts +6 -0
- package/dist/server/internal/operations/deadLetteredJobs.d.ts.map +1 -0
- package/dist/server/internal/operations/deadLetteredJobs.js +4 -0
- package/dist/server/internal/operations/deadLetteredJobs.js.map +1 -0
- package/dist/server/internal/operations/deferred.d.ts +6 -0
- package/dist/server/internal/operations/deferred.d.ts.map +1 -0
- package/dist/server/internal/operations/deferred.js +4 -0
- package/dist/server/internal/operations/deferred.js.map +1 -0
- package/dist/server/internal/operations/deleteQueue.d.ts +3 -0
- package/dist/server/internal/operations/deleteQueue.d.ts.map +1 -0
- package/dist/server/internal/operations/deleteQueue.js +4 -0
- package/dist/server/internal/operations/deleteQueue.js.map +1 -0
- package/dist/server/internal/operations/enqueue.d.ts +3 -0
- package/dist/server/internal/operations/enqueue.d.ts.map +1 -0
- package/dist/server/internal/operations/enqueue.js +4 -0
- package/dist/server/internal/operations/enqueue.js.map +1 -0
- package/dist/server/internal/operations/failedJobs.d.ts +6 -0
- package/dist/server/internal/operations/failedJobs.d.ts.map +1 -0
- package/dist/server/internal/operations/failedJobs.js +4 -0
- package/dist/server/internal/operations/failedJobs.js.map +1 -0
- package/dist/server/internal/operations/getJob.d.ts +6 -0
- package/dist/server/internal/operations/getJob.d.ts.map +1 -0
- package/dist/server/internal/operations/getJob.js +4 -0
- package/dist/server/internal/operations/getJob.js.map +1 -0
- package/dist/server/internal/operations/health.d.ts +3 -0
- package/dist/server/internal/operations/health.d.ts.map +1 -0
- package/dist/server/internal/operations/health.js +4 -0
- package/dist/server/internal/operations/health.js.map +1 -0
- package/dist/server/internal/operations/inspection.d.ts +3 -0
- package/dist/server/internal/operations/inspection.d.ts.map +1 -0
- package/dist/server/internal/operations/inspection.js +4 -0
- package/dist/server/internal/operations/inspection.js.map +1 -0
- package/dist/server/internal/operations/inspectionHealth.d.ts +5 -0
- package/dist/server/internal/operations/inspectionHealth.d.ts.map +1 -0
- package/dist/server/internal/operations/inspectionHealth.js +4 -0
- package/dist/server/internal/operations/inspectionHealth.js.map +1 -0
- package/dist/server/internal/operations/jobs.d.ts +43 -0
- package/dist/server/internal/operations/jobs.d.ts.map +1 -0
- package/dist/server/internal/operations/jobs.js +4 -0
- package/dist/server/internal/operations/jobs.js.map +1 -0
- package/dist/server/internal/operations/queue.d.ts +3 -0
- package/dist/server/internal/operations/queue.d.ts.map +1 -0
- package/dist/server/internal/operations/queue.js +4 -0
- package/dist/server/internal/operations/queue.js.map +1 -0
- package/dist/server/internal/operations/refreshQueueStats.d.ts +3 -0
- package/dist/server/internal/operations/refreshQueueStats.d.ts.map +1 -0
- package/dist/server/internal/operations/refreshQueueStats.js +4 -0
- package/dist/server/internal/operations/refreshQueueStats.js.map +1 -0
- package/dist/server/internal/operations/retry.d.ts +3 -0
- package/dist/server/internal/operations/retry.d.ts.map +1 -0
- package/dist/server/internal/operations/retry.js +4 -0
- package/dist/server/internal/operations/retry.js.map +1 -0
- package/dist/server/internal/operations/schedules.d.ts +3 -0
- package/dist/server/internal/operations/schedules.d.ts.map +1 -0
- package/dist/server/internal/operations/schedules.js +4 -0
- package/dist/server/internal/operations/schedules.js.map +1 -0
- package/dist/server/internal/operations/schemaVersion.d.ts +3 -0
- package/dist/server/internal/operations/schemaVersion.d.ts.map +1 -0
- package/dist/server/internal/operations/schemaVersion.js +4 -0
- package/dist/server/internal/operations/schemaVersion.js.map +1 -0
- package/dist/server/internal/operations/snapshot.d.ts +3 -0
- package/dist/server/internal/operations/snapshot.d.ts.map +1 -0
- package/dist/server/internal/operations/snapshot.js +4 -0
- package/dist/server/internal/operations/snapshot.js.map +1 -0
- package/dist/server/internal/operations/storedJobs.d.ts +5 -0
- package/dist/server/internal/operations/storedJobs.d.ts.map +1 -0
- package/dist/server/internal/operations/storedJobs.js +4 -0
- package/dist/server/internal/operations/storedJobs.js.map +1 -0
- package/dist/server/internal/operations/unschedule.d.ts +3 -0
- package/dist/server/internal/operations/unschedule.d.ts.map +1 -0
- package/dist/server/internal/operations/unschedule.js +4 -0
- package/dist/server/internal/operations/unschedule.js.map +1 -0
- package/dist/server/internal/pgBossDefinitionLayer.d.ts +7 -0
- package/dist/server/internal/pgBossDefinitionLayer.d.ts.map +1 -0
- package/dist/server/internal/pgBossDefinitionLayer.js +32 -0
- package/dist/server/internal/pgBossDefinitionLayer.js.map +1 -0
- package/dist/server/internal/testingIdle.d.ts +1 -1
- package/dist/server/internal/testingIdle.d.ts.map +1 -1
- package/dist/server/internal/testingIdle.js +4 -3
- package/dist/server/internal/testingIdle.js.map +1 -1
- package/dist/server/internal/testingWaits.d.ts +1 -1
- package/dist/server/internal/testingWaits.d.ts.map +1 -1
- package/dist/server/internal/testingWaits.js +2 -4
- package/dist/server/internal/testingWaits.js.map +1 -1
- package/dist/server/service.d.ts +2 -2
- package/dist/server/service.d.ts.map +1 -1
- package/dist/server/service.js +4 -47
- package/dist/server/service.js.map +1 -1
- package/dist/server/testing.d.ts +4 -1
- package/dist/server/testing.d.ts.map +1 -1
- package/dist/server/testing.js.map +1 -1
- package/package.json +11 -11
- package/src/server/adapters/clientErrorSubscription.ts +7 -0
- package/src/server/adapters/settleDeferral.ts +8 -2
- package/src/server/adapters/testingClient.ts +2 -0
- package/src/server/adapters/testingController.ts +14 -2
- package/src/server/adapters/testingTime.ts +25 -0
- package/src/server/inspection.ts +31 -20
- package/src/server/internal/PgBossInitialization.ts +9 -0
- package/src/server/internal/PgBossOperations.ts +35 -0
- package/src/server/internal/adapters/deferralChanges.ts +3 -0
- package/src/server/internal/initializeInspection.ts +8 -0
- package/src/server/internal/initializeJobs.ts +4 -0
- package/src/server/internal/operations/busy.ts +5 -0
- package/src/server/internal/operations/changes.ts +5 -0
- package/src/server/internal/operations/counts.ts +5 -0
- package/src/server/internal/operations/deadLetteredJobs.ts +5 -0
- package/src/server/internal/operations/deferred.ts +5 -0
- package/src/server/internal/operations/deleteQueue.ts +5 -0
- package/src/server/internal/operations/enqueue.ts +5 -0
- package/src/server/internal/operations/failedJobs.ts +5 -0
- package/src/server/internal/operations/getJob.ts +5 -0
- package/src/server/internal/operations/health.ts +5 -0
- package/src/server/internal/operations/inspection.ts +5 -0
- package/src/server/internal/operations/inspectionHealth.ts +5 -0
- package/src/server/internal/operations/jobs.ts +5 -0
- package/src/server/internal/operations/queue.ts +5 -0
- package/src/server/internal/operations/refreshQueueStats.ts +5 -0
- package/src/server/internal/operations/retry.ts +5 -0
- package/src/server/internal/operations/schedules.ts +5 -0
- package/src/server/internal/operations/schemaVersion.ts +5 -0
- package/src/server/internal/operations/snapshot.ts +5 -0
- package/src/server/internal/operations/storedJobs.ts +5 -0
- package/src/server/internal/operations/unschedule.ts +5 -0
- package/src/server/internal/pgBossDefinitionLayer.ts +65 -0
- package/src/server/internal/testingIdle.ts +4 -2
- package/src/server/internal/testingWaits.ts +2 -6
- package/src/server/service.ts +9 -66
- package/src/server/testing.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.35.0 - 2026-11-04
|
|
4
|
+
|
|
5
|
+
### Breaking
|
|
6
|
+
|
|
7
|
+
- TypeScript source exports now use `@shivaedev/source` instead of `source`. Replace `source` with `@shivaedev/source` in Node `--conditions`, TypeScript `customConditions`, and Vite/Vitest `resolve.conditions`. Bare `source` selects built JavaScript; no compatibility alias is provided.
|
|
8
|
+
|
|
9
|
+
## 0.34.0 - 2026-11-04
|
|
10
|
+
|
|
11
|
+
### Breaking
|
|
12
|
+
|
|
13
|
+
- Testing controller wait budgets now use the caller's Effect clock. Stories on TestClock must fork waits and advance their clock to test a timeout; applications using the default clock keep wall-time budgets.
|
|
14
|
+
|
|
15
|
+
## 0.33.0 - 2026-11-03
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Testing controllers accept a native Effect TestClock and expose `timePasses` to advance PostgreSQL job time, wake due RetryAt jobs and wait for their settlement.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- Advance the testing controller's revision when a job's deferral commits, before the next job in its batch runs, without waiting for PostgreSQL notifications.
|
|
24
|
+
|
|
3
25
|
## 0.32.0 - 2026-11-03
|
|
4
26
|
|
|
5
27
|
### Added
|
package/README.md
CHANGED
|
@@ -560,16 +560,17 @@ Include every target queue in `jobs`, as either a worker or a producer-only defi
|
|
|
560
560
|
This producer story uses the `SendEmail` definition and `Jobs` service from above. `databaseUrl` points to the story's PostgreSQL database:
|
|
561
561
|
|
|
562
562
|
```ts
|
|
563
|
-
import { Context, Layer, Option } from "effect";
|
|
563
|
+
import { Context, Effect, Layer, Option } from "effect";
|
|
564
|
+
import { TestClock } from "effect/testing";
|
|
564
565
|
import { expect } from "vitest";
|
|
565
566
|
import { storyKit } from "@shivaedev/test-story/server/storyKit.ts";
|
|
566
567
|
import { pgBossLayer } from "@shivaedev/jobs/server/service.ts";
|
|
567
568
|
import { makePgBossTesting, testRetryPolicy } from "@shivaedev/jobs/server/testing.ts";
|
|
568
569
|
|
|
569
570
|
const emailStories = storyKit({
|
|
570
|
-
clock: "
|
|
571
|
+
clock: "test",
|
|
571
572
|
*create() {
|
|
572
|
-
const testing = makePgBossTesting({ retryPolicy: testRetryPolicy });
|
|
573
|
+
const testing = makePgBossTesting({ clock: yield* TestClock.testClockWith(Effect.succeed), retryPolicy: testRetryPolicy });
|
|
573
574
|
const context = yield* Layer.build(
|
|
574
575
|
Jobs.layer({ jobs: [SendEmail] }).pipe(Layer.provide(pgBossLayer({ connectionString: databaseUrl, clientFactory: testing.clientFactory }))),
|
|
575
576
|
);
|
|
@@ -591,6 +592,19 @@ emailStories.it("decodes the queued email", [], function* ({ enqueue, testing })
|
|
|
591
592
|
|
|
592
593
|
Set `retryPolicy: testRetryPolicy` through the controller to override queue and send settings with `retryDelay: 0` and `retryBackoff: false`. A failing worker can then exhaust its native retries without production backoff. The policy applies to subsequently sent jobs; it does not rewrite jobs already stored.
|
|
593
594
|
|
|
595
|
+
To pass time, use the controller's `timePasses` verb with the same native story `TestClock`:
|
|
596
|
+
|
|
597
|
+
```ts
|
|
598
|
+
import { Effect } from "effect";
|
|
599
|
+
import { TestClock } from "effect/testing";
|
|
600
|
+
import { makePgBossTesting } from "@shivaedev/jobs/server/testing.ts";
|
|
601
|
+
|
|
602
|
+
const testing = makePgBossTesting({ clock: yield* TestClock.testClockWith(Effect.succeed) });
|
|
603
|
+
yield* testing.timePasses("1 day");
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
The controller advances the application clock and pg-boss's PostgreSQL clock together, wakes due workers and waits for their settlement. A `RetryAt` later than the new time remains deferred. Provide `testing.clientFactory` to the jobs Layer as above, and use an isolated database for each story. Passing time first waits for existing work to settle; release a held handler before advancing this controller. Supply the story clock so both the application and pg-boss stay under the kit's control.
|
|
607
|
+
|
|
594
608
|
`schedules()` lists registered schedules as `{ name, cron, timezone }` entries from PostgreSQL. `trigger(schedule)` takes a schedule definition, such as `Cleanup`, and enqueues one run now using its stored schedule data and options. It returns the run ID, or null when pg-boss suppresses the send. Register `Cleanup.run(effect)` in the testing Layer first, then yield `testing.trigger(Cleanup)` and `testing.waitForIdle` before observing the Effect's result. An unregistered schedule fails with `PgBossTestingError` (`operation: "trigger"`).
|
|
595
609
|
|
|
596
610
|
`refreshQueueStats(queue?)` requests a native pg-boss supervisor pass for one queue, or all queues when omitted, before reading cached counts through the jobs service's `health`. Like the service method, it performs native queue maintenance and respects pg-boss monitor intervals and backoff.
|
|
@@ -609,11 +623,11 @@ Set `retryPolicy: testRetryPolicy` through the controller to override queue and
|
|
|
609
623
|
|
|
610
624
|
`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`.
|
|
611
625
|
|
|
612
|
-
`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
|
|
626
|
+
`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 committed job-change notifications from other clients. 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.
|
|
613
627
|
|
|
614
628
|
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.
|
|
615
629
|
|
|
616
|
-
`untilJob(queue, id, state)` waits that way for one job: it reads the job, waits for the next change when the job is in another state, and returns the job with `data` decoded through the queue's Schema once it reaches `state`. It also accepts `{ name, schema: Schema.Null }` for a triggered schedule's run. `fetchesPass(queue, n)` completes once `n` worker fetches on the queue that began after the wait started have finished, whether or not they claimed anything, so a story can show that a job stayed untaken by fetches that could have claimed it. Each fetch also counts as a change for `waitForChange`. Both waits give up after `within` (default 20 seconds)
|
|
630
|
+
`untilJob(queue, id, state)` waits that way for one job: it reads the job, waits for the next change when the job is in another state, and returns the job with `data` decoded through the queue's Schema once it reaches `state`. It also accepts `{ name, schema: Schema.Null }` for a triggered schedule's run. `fetchesPass(queue, n)` completes once `n` worker fetches on the queue that began after the wait started have finished, whether or not they claimed anything, so a story can show that a job stayed untaken by fetches that could have claimed it. Each fetch also counts as a change for `waitForChange`. Both waits give up after `within` (default 20 seconds) on the caller's Effect clock, so a story forks the wait and advances its `TestClock` to exercise a timeout, and fail with `PgBossWaitError`, whose message names what the wait expected and what it last saw:
|
|
617
631
|
|
|
618
632
|
```ts
|
|
619
633
|
yield* testing.untilJob(SendEmail, id, "completed", { within: "5 seconds" });
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { PgBossClient } from "#server/client.ts";
|
|
3
|
+
export declare function clientErrorSubscription(client: PgBossClient, report: (error: Error) => void): Effect.Effect<() => void, never, never>;
|
|
4
|
+
//# sourceMappingURL=clientErrorSubscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientErrorSubscription.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/clientErrorSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,2CAE3F"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { subscribeClientErrors } from "#server/internal/clientErrors.ts";
|
|
3
|
+
export function clientErrorSubscription(client, report) {
|
|
4
|
+
return Effect.sync(() => subscribeClientErrors(client, report));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=clientErrorSubscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientErrorSubscription.js","sourceRoot":"","sources":["../../../src/server/adapters/clientErrorSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,UAAU,uBAAuB,CAAC,MAAoB,EAAE,MAA8B;IAC3F,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settleDeferral.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/settleDeferral.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"settleDeferral.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/settleDeferral.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAK7D,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;GAkD3I"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
+
import { deferralChanges } from "#server/internal/adapters/deferralChanges.ts";
|
|
2
3
|
import { STATELY_DEFERRAL_POLICY } from "#server/internal/deferral.ts";
|
|
3
4
|
import { quotedSchema } from "#server/internal/storedRows.ts";
|
|
4
5
|
const Settlement = Schema.Struct({ claimed: Schema.Boolean, deferred: Schema.Boolean });
|
|
@@ -7,8 +8,9 @@ export async function settleDeferral(client, schema, job, at, reason, maxDeferra
|
|
|
7
8
|
throw new TypeError("This pg-boss client does not support getDb for RetryAt");
|
|
8
9
|
}
|
|
9
10
|
const quoted = quotedSchema(schema);
|
|
11
|
+
const db = client.getDb();
|
|
10
12
|
// Native failure settlement deletes and reinserts jobs, so a cascading job foreign key would erase the counter.
|
|
11
|
-
const { rows } = await
|
|
13
|
+
const { rows } = await db.executeSql(`WITH claimed AS MATERIALIZED (
|
|
12
14
|
SELECT name, id, created_on,
|
|
13
15
|
GREATEST(keep_until, $4::timestamptz + (keep_until - start_after)) AS keep_until
|
|
14
16
|
FROM ${quoted}.job
|
|
@@ -43,6 +45,10 @@ export async function settleDeferral(client, schema, job, at, reason, maxDeferra
|
|
|
43
45
|
)
|
|
44
46
|
)
|
|
45
47
|
SELECT EXISTS (SELECT 1 FROM claimed) AS claimed, EXISTS (SELECT 1 FROM deferred) AS deferred`, [job.name, job.id, job.retryCount, at, reason, Reflect.get(job, "startedOn"), maxDeferrals]);
|
|
46
|
-
|
|
48
|
+
const settled = Schema.decodeUnknownSync(Settlement)(rows[0]);
|
|
49
|
+
if (settled.deferred) {
|
|
50
|
+
deferralChanges.get(db)?.();
|
|
51
|
+
}
|
|
52
|
+
return settled;
|
|
47
53
|
}
|
|
48
54
|
//# sourceMappingURL=settleDeferral.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settleDeferral.js","sourceRoot":"","sources":["../../../src/server/adapters/settleDeferral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAExF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAoB,EAAE,MAAc,EAAE,GAAe,EAAE,EAAU,EAAE,MAAc,EAAE,YAAoB;IAC3I,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,gHAAgH;IAChH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"settleDeferral.js","sourceRoot":"","sources":["../../../src/server/adapters/settleDeferral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAExF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAoB,EAAE,MAAc,EAAE,GAAe,EAAE,EAAU,EAAE,MAAc,EAAE,YAAoB;IAC3I,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1B,gHAAgH;IAChH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,UAAU,CACnC;;;UAGQ,MAAM;;;;;iBAKC,MAAM;;;;;;;;YAQX,MAAM;sDACoC,uBAAuB;;;;;;iBAM5D,MAAM;uCACgB,MAAM;kEACqB,MAAM;;;qBAGnD,MAAM;;;;;;gGAMqE,EAC9F,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,CAC3F,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingClient.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingClient.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"testingClient.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingClient.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGjF,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC;IAC1E,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,YAAY,CAuG3G"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { testingEngine } from "#server/adapters/testingEngine.ts";
|
|
3
3
|
import { testingExpirations } from "#server/adapters/testingExpirations.ts";
|
|
4
|
+
import { deferralChanges } from "#server/internal/adapters/deferralChanges.ts";
|
|
4
5
|
export function testingClient(client, schema, controls) {
|
|
5
6
|
const engine = testingEngine(client, schema);
|
|
7
|
+
deferralChanges.set(client.getDb(), controls.changed);
|
|
6
8
|
const expirations = testingExpirations(client);
|
|
7
9
|
async function update(request, data, options) {
|
|
8
10
|
const result = typeof request === "string" ? await client.update(request, data, options) : await client.update(request);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingClient.js","sourceRoot":"","sources":["../../../src/server/adapters/testingClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"testingClient.js","sourceRoot":"","sources":["../../../src/server/adapters/testingClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import type { PgBossTestingOptions } from "#server/testing.ts";
|
|
|
7
7
|
export declare function testingController(settings?: PgBossTestingOptions): {
|
|
8
8
|
runDeferredNow: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<void, PgBossTestingError, never>;
|
|
9
9
|
runDueNow: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<void, PgBossTestingError, never>;
|
|
10
|
+
timePasses: (duration: Duration.Input) => Effect.Effect<undefined, PgBossTestingError, never>;
|
|
10
11
|
schedules: () => Effect.Effect<{
|
|
11
12
|
cron: string;
|
|
12
13
|
name: string;
|
|
@@ -17,7 +18,7 @@ export declare function testingController(settings?: PgBossTestingOptions): {
|
|
|
17
18
|
untilJob: <TName extends string, TPayload extends JobPayloadSchema | typeof Schema.Null>(queue: {
|
|
18
19
|
readonly name: TName;
|
|
19
20
|
readonly schema: TPayload;
|
|
20
|
-
}, id: string, state: import("../job.ts").JobState, options?: import("#server/testing.ts").PgBossTestingWaitOptions) => Effect.Effect<import("../job.ts").Job<TPayload["Type"]>, import("#server/error.ts").PgBossPayloadError | PgBossTestingError | import("#server/error.ts").PgBossWaitError,
|
|
21
|
+
}, id: string, state: import("../job.ts").JobState, options?: import("#server/testing.ts").PgBossTestingWaitOptions) => Effect.Effect<import("../job.ts").Job<TPayload["Type"]>, import("#server/error.ts").PgBossPayloadError | PgBossTestingError | import("#server/error.ts").PgBossWaitError, TPayload["DecodingServices"]>;
|
|
21
22
|
deferred: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<{
|
|
22
23
|
at: import("effect/DateTime").Utc;
|
|
23
24
|
reason: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingController.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAY,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"testingController.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAY,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMjE,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAA2B,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,oBAAyB;;;;;;;;;;;;;;;sBAiDjD,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;;;;8BAIrB,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,eAAe,CAAC,sBAAsB,MAAM;mCAqBtE,MAAM;;yBAOhB,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,MAAM;sBAUlD,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,QAAQ,CAAC,KAAK;0BAWnD,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;WAC5C,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,gBAAgB,GAAG,OAAO,MAAM,CAAC,IAAI,SAC3E;QAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;KAAE,gBAC5C,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAED,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;;;eAI9C,KAAK,CAAC,OAAO,SAAS,SAAS,aAAa,EAAE,UAAU,OAAO;;;EAM3E"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Duration, Effect, Redacted } from "effect";
|
|
2
|
+
import { TestClock as PgBossTestClock } from "pg-boss";
|
|
2
3
|
import { defaultClientFactory } from "#server/adapters/defaultClientFactory.ts";
|
|
3
4
|
import { testingClient } from "#server/adapters/testingClient.ts";
|
|
4
5
|
import { testingDueNow } from "#server/adapters/testingDueNow.ts";
|
|
6
|
+
import { testingTime } from "#server/adapters/testingTime.ts";
|
|
5
7
|
import { PgBossTestingError } from "#server/error.ts";
|
|
6
8
|
import { testingFetches } from "#server/internal/adapters/testingFetches.ts";
|
|
7
9
|
import { testingIdle } from "#server/internal/testingIdle.ts";
|
|
@@ -11,6 +13,7 @@ import { testingWaits } from "#server/internal/testingWaits.ts";
|
|
|
11
13
|
import { queueSignal } from "./queueSignal.js";
|
|
12
14
|
import { testingInspectionClient } from "./testingInspectionClient.js";
|
|
13
15
|
export function testingController(settings = {}) {
|
|
16
|
+
const clock = settings.clock === undefined ? undefined : new PgBossTestClock(settings.clock.currentTimeMillisUnsafe());
|
|
14
17
|
let current;
|
|
15
18
|
let fetches;
|
|
16
19
|
let schema = "pgboss";
|
|
@@ -42,13 +45,21 @@ export function testingController(settings = {}) {
|
|
|
42
45
|
throw new Error("A testing controller owns one jobs client; create a controller per runtime");
|
|
43
46
|
}
|
|
44
47
|
schema = clientOptions.schema ?? "pgboss";
|
|
45
|
-
current = defaultClientFactory(clientOptions);
|
|
48
|
+
current = defaultClientFactory({ ...clientOptions, ...(clock === undefined ? {} : { clock }) });
|
|
46
49
|
fetches = testingFetches(current.getDb(), signal.changed);
|
|
47
50
|
current = testingClient(current, schema, controls);
|
|
48
51
|
return testingInspectionClient(current, schema, work, signal.changed, (reads) => {
|
|
49
52
|
observed = reads;
|
|
50
53
|
});
|
|
51
54
|
};
|
|
55
|
+
const wake = Effect.sync(() => {
|
|
56
|
+
if (clock !== undefined) {
|
|
57
|
+
for (const worker of client().getWipData()) {
|
|
58
|
+
client().notifyWorker(worker.id);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const idle = testingIdle(inspection, work, signal, wake);
|
|
52
63
|
return {
|
|
53
64
|
deferred: (queue) => Effect.suspend(() => testingInspection("deferred", inspection().deferred(queue), queue.name)),
|
|
54
65
|
...testingDueNow(client, () => schema, signal.changed),
|
|
@@ -102,7 +113,8 @@ export function testingController(settings = {}) {
|
|
|
102
113
|
schemaVersion: Effect.suspend(() => testingInspection("schemaVersion", inspection().schemaVersion())),
|
|
103
114
|
snapshot: (queues) => Effect.suspend(() => testingInspection("snapshot", inspection().snapshot(queues))),
|
|
104
115
|
waitForChange: signal.waitForChange,
|
|
105
|
-
waitForIdle:
|
|
116
|
+
waitForIdle: idle,
|
|
117
|
+
...testingTime(settings.clock, clock, idle),
|
|
106
118
|
};
|
|
107
119
|
}
|
|
108
120
|
//# sourceMappingURL=testingController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingController.js","sourceRoot":"","sources":["../../../src/server/adapters/testingController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAe,MAAM,QAAQ,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"testingController.js","sourceRoot":"","sources":["../../../src/server/adapters/testingController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Duration, Effect } from "effect";
|
|
2
|
+
import type { TestClock } from "effect/testing";
|
|
3
|
+
import type { PgBossTestingError } from "#server/error.ts";
|
|
4
|
+
export declare function testingTime(clock: TestClock.TestClock | undefined, jobs: {
|
|
5
|
+
readonly setTime: (time: number) => Promise<void>;
|
|
6
|
+
readonly tick: (milliseconds: number) => Promise<void>;
|
|
7
|
+
} | undefined, idle: Effect.Effect<void, PgBossTestingError>): {
|
|
8
|
+
timePasses: (duration: Duration.Input) => Effect.Effect<undefined, PgBossTestingError, never>;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=testingTime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingTime.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG3D,wBAAgB,WAAW,CAC1B,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,EACtC,IAAI,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,SAAS,EAC/H,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAG5C,UAAU,aAAa,QAAQ,CAAC,KAAK;EAatC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Duration, Effect } from "effect";
|
|
2
|
+
import { testingOperation } from "#server/internal/testingOperation.ts";
|
|
3
|
+
export function testingTime(clock, jobs, idle) {
|
|
4
|
+
return {
|
|
5
|
+
timePasses: (duration) => Effect.gen(function* () {
|
|
6
|
+
if (clock === undefined || jobs === undefined) {
|
|
7
|
+
return yield* Effect.die(new Error("Provide the story's TestClock to makePgBossTesting before passing time"));
|
|
8
|
+
}
|
|
9
|
+
yield* idle;
|
|
10
|
+
const next = clock.currentTimeMillisUnsafe() + Duration.toMillis(Duration.fromInputUnsafe(duration));
|
|
11
|
+
yield* testingOperation("timePasses", () => jobs.setTime(next));
|
|
12
|
+
yield* clock.adjust(duration);
|
|
13
|
+
yield* testingOperation("timePasses", () => jobs.tick(0));
|
|
14
|
+
yield* idle;
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=testingTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingTime.js","sourceRoot":"","sources":["../../../src/server/adapters/testingTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,MAAM,UAAU,WAAW,CAC1B,KAAsC,EACtC,IAA+H,EAC/H,IAA6C;IAE7C,OAAO;QACN,UAAU,EAAE,CAAC,QAAwB,EAAE,EAAE,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnB,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC,CAAC;YAC/G,CAAC;YACD,KAAK,CAAC,CAAC,IAAI,CAAC;YACZ,MAAM,IAAI,GAAG,KAAK,CAAC,uBAAuB,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrG,KAAK,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAChE,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,KAAK,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,KAAK,CAAC,CAAC,IAAI,CAAC;QACb,CAAC,CAAC;KACH,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { DateTime } from "effect";
|
|
2
2
|
import type { inspectionChanges } from "#server/adapters/inspectionChanges.ts";
|
|
3
3
|
import type { inspectionReads } from "#server/adapters/inspectionReads.ts";
|
|
4
4
|
import type { JobPayloadSchema, QueueDefinition } from "#server/definition.ts";
|
|
@@ -13,37 +13,37 @@ export interface UnfinishedJob<TQueue extends SnapshotQueue> {
|
|
|
13
13
|
readonly state: "active" | "created" | "deferred" | "failed" | "retry";
|
|
14
14
|
}
|
|
15
15
|
export declare const PgBossInspection: import("effect/Context").Service<"@shivaedev/jobs/PgBossInspection", Readonly<{
|
|
16
|
-
readonly busy: (queues: readonly Pick<QueueDefinition<string, JobPayloadSchema>, "name">[]) => Effect.Effect<boolean, import("./error.ts").PgBossError, never>;
|
|
16
|
+
readonly busy: (queues: readonly Pick<QueueDefinition<string, JobPayloadSchema>, "name">[]) => import("effect/Effect").Effect<boolean, import("./error.ts").PgBossError, never>;
|
|
17
17
|
readonly changes: (queue?: {
|
|
18
18
|
readonly name: string;
|
|
19
|
-
} | undefined) => Effect.Effect<{
|
|
20
|
-
revision: Effect.Effect<number, never, never>;
|
|
21
|
-
waitForChange: (after: number) => Effect.Effect<number>;
|
|
19
|
+
} | undefined) => import("effect/Effect").Effect<{
|
|
20
|
+
revision: import("effect/Effect").Effect<number, never, never>;
|
|
21
|
+
waitForChange: (after: number) => import("effect/Effect").Effect<number>;
|
|
22
22
|
}, import("./error.ts").PgBossError, import("effect/Scope").Scope>;
|
|
23
|
-
readonly counts: (queue: Pick<QueueDefinition<string, JobPayloadSchema>, "name">) => Effect.Effect<import("./health.ts").QueueCounts, import("./error.ts").PgBossError, never>;
|
|
23
|
+
readonly counts: (queue: Pick<QueueDefinition<string, JobPayloadSchema>, "name">) => import("effect/Effect").Effect<import("./health.ts").QueueCounts, import("./error.ts").PgBossError, never>;
|
|
24
24
|
readonly deadLetteredJobs: <const TName extends string, const TPayload extends JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
25
25
|
readonly name: TName;
|
|
26
26
|
readonly schema: TPayload;
|
|
27
|
-
}, options: import("./health.ts").JobPageOptions) => 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"]>;
|
|
28
|
-
readonly deferred: (queue: Pick<QueueDefinition<string, JobPayloadSchema>, "name">) => Effect.Effect<{
|
|
27
|
+
}, 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"]>;
|
|
28
|
+
readonly deferred: (queue: Pick<QueueDefinition<string, JobPayloadSchema>, "name">) => import("effect/Effect").Effect<{
|
|
29
29
|
at: DateTime.Utc;
|
|
30
30
|
reason: string;
|
|
31
31
|
}[], import("./error.ts").PgBossError, never>;
|
|
32
32
|
readonly failedJobs: <const TName extends string, const TPayload extends JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
33
33
|
readonly name: TName;
|
|
34
34
|
readonly schema: TPayload;
|
|
35
|
-
}, options: import("./health.ts").JobPageOptions) => 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"]>;
|
|
35
|
+
}, 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"]>;
|
|
36
36
|
readonly getJob: <const TName extends string, const TPayload extends JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
37
37
|
readonly name: TName;
|
|
38
38
|
readonly schema: TPayload;
|
|
39
|
-
}, id: string) => Effect.Effect<import("effect/Option").Option<import("./job.ts").Job<unknown>>, import("./error.ts").PgBossError | import("./error.ts").PgBossPayloadError, TPayload["DecodingServices"]>;
|
|
39
|
+
}, 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"]>;
|
|
40
40
|
readonly health: (queues: readonly {
|
|
41
41
|
readonly name: string;
|
|
42
|
-
}[]) => Effect.Effect<import("./health.ts").JobsHealth, import("./error.ts").PgBossError, never>;
|
|
42
|
+
}[]) => import("effect/Effect").Effect<import("./health.ts").JobsHealth, import("./error.ts").PgBossError, never>;
|
|
43
43
|
readonly jobs: <TName extends string, TPayload extends JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
44
44
|
readonly name: TName;
|
|
45
45
|
readonly schema: TPayload;
|
|
46
|
-
}, options?: import("./client.ts").JobReadOptions) => Effect.Effect<{
|
|
46
|
+
}, options?: import("./client.ts").JobReadOptions) => import("effect/Effect").Effect<{
|
|
47
47
|
expireInSeconds: number;
|
|
48
48
|
groupId?: string | null;
|
|
49
49
|
groupTier?: string | null;
|
|
@@ -81,13 +81,13 @@ export declare const PgBossInspection: import("effect/Context").Service<"@shivae
|
|
|
81
81
|
state: import("./job.ts").JobState;
|
|
82
82
|
data: TPayload["Type"];
|
|
83
83
|
}[], import("./error.ts").PgBossError | import("./error.ts").PgBossPayloadError, TPayload["DecodingServices"]>;
|
|
84
|
-
readonly queue: (queue: Pick<QueueDefinition<string, JobPayloadSchema>, "name">) => Effect.Effect<import("./client.ts").ClientQueue | null, import("./error.ts").PgBossError, never>;
|
|
85
|
-
readonly schedules: (name?: string | undefined, key?: string | undefined) => Effect.Effect<import("./engineClient.ts").EngineSchedule[], import("./error.ts").PgBossError, never>;
|
|
86
|
-
readonly schemaVersion: () => Effect.Effect<number | null, import("./error.ts").PgBossError, never>;
|
|
87
|
-
readonly snapshot: <const TQueues extends readonly SnapshotQueue[]>(queues: TQueues) => Effect.Effect<readonly UnfinishedJob<TQueues[number]>[], import("./error.ts").PgBossPayloadError | import("./error.ts").PgBossError, TQueues[number]["schema"]["DecodingServices"]>;
|
|
84
|
+
readonly queue: (queue: Pick<QueueDefinition<string, JobPayloadSchema>, "name">) => import("effect/Effect").Effect<import("./client.ts").ClientQueue | null, import("./error.ts").PgBossError, never>;
|
|
85
|
+
readonly schedules: (name?: string | undefined, key?: string | undefined) => import("effect/Effect").Effect<import("./engineClient.ts").EngineSchedule[], import("./error.ts").PgBossError, never>;
|
|
86
|
+
readonly schemaVersion: () => import("effect/Effect").Effect<number | null, import("./error.ts").PgBossError, never>;
|
|
87
|
+
readonly snapshot: <const TQueues extends readonly SnapshotQueue[]>(queues: TQueues) => import("effect/Effect").Effect<readonly UnfinishedJob<TQueues[number]>[], import("./error.ts").PgBossPayloadError | import("./error.ts").PgBossError, TQueues[number]["schema"]["DecodingServices"]>;
|
|
88
88
|
readonly storedJobs: (queue: {
|
|
89
89
|
readonly name: string;
|
|
90
|
-
}, options?: import("./client.ts").JobReadOptions | undefined) => Effect.Effect<readonly import("./job.ts").Job<unknown>[], import("./error.ts").PgBossError, never>;
|
|
90
|
+
}, options?: import("./client.ts").JobReadOptions | undefined) => import("effect/Effect").Effect<readonly import("./job.ts").Job<unknown>[], import("./error.ts").PgBossError, never>;
|
|
91
91
|
}>> & {
|
|
92
92
|
readonly layer: import("effect/Layer").Layer<"@shivaedev/jobs/PgBossInspection", never, PgBoss>;
|
|
93
93
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../../src/server/inspection.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../../src/server/inspection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAgB/E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;AAE/F,MAAM,WAAW,aAAa,CAAC,MAAM,SAAS,aAAa;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;CACvE;AAED,eAAO,MAAM,gBAAgB;;;uBAyBiB,MAAM;;;;;;;;;;;;;;;;;;;;;;;uBADE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAJ1D,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,GACvE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,kBAAkB,GAAG,YAAY,GAAG,QAAQ,CAAC,GAAG;IAC9E,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvG,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;CAC9F,CAAC"}
|
|
@@ -1,29 +1,39 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
2
1
|
import { defineService } from "@shivaedev/service/defineService.ts";
|
|
3
2
|
import { genericMethod } from "@shivaedev/service/genericMethod.ts";
|
|
4
|
-
import {
|
|
3
|
+
import { initializeInspection } from "#server/internal/initializeInspection.ts";
|
|
4
|
+
import { busy } from "#server/internal/operations/busy.ts";
|
|
5
|
+
import { changes } from "#server/internal/operations/changes.ts";
|
|
6
|
+
import { counts } from "#server/internal/operations/counts.ts";
|
|
7
|
+
import { deadLetteredJobs } from "#server/internal/operations/deadLetteredJobs.ts";
|
|
8
|
+
import { deferred } from "#server/internal/operations/deferred.ts";
|
|
9
|
+
import { failedJobs } from "#server/internal/operations/failedJobs.ts";
|
|
10
|
+
import { getJob } from "#server/internal/operations/getJob.ts";
|
|
11
|
+
import { inspectionHealth } from "#server/internal/operations/inspectionHealth.ts";
|
|
12
|
+
import { jobs } from "#server/internal/operations/jobs.ts";
|
|
13
|
+
import { queue } from "#server/internal/operations/queue.ts";
|
|
14
|
+
import { schedules } from "#server/internal/operations/schedules.ts";
|
|
15
|
+
import { schemaVersion } from "#server/internal/operations/schemaVersion.ts";
|
|
16
|
+
import { snapshot } from "#server/internal/operations/snapshot.ts";
|
|
17
|
+
import { storedJobs } from "#server/internal/operations/storedJobs.ts";
|
|
5
18
|
import { PgBoss } from "#server/PgBoss.ts";
|
|
6
19
|
export const PgBossInspection = defineService({
|
|
7
20
|
id: "@shivaedev/jobs/PgBossInspection",
|
|
8
|
-
initialize:
|
|
9
|
-
const acquired = yield* PgBoss;
|
|
10
|
-
return yield* inspection(acquired.client, acquired.schema);
|
|
11
|
-
}),
|
|
21
|
+
initialize: initializeInspection,
|
|
12
22
|
methods: (service) => ({
|
|
13
|
-
busy: service
|
|
14
|
-
changes: service
|
|
15
|
-
counts: service
|
|
16
|
-
deadLetteredJobs: genericMethod(service
|
|
17
|
-
deferred: service
|
|
18
|
-
failedJobs: genericMethod(service
|
|
19
|
-
getJob: genericMethod(service
|
|
20
|
-
health: service
|
|
21
|
-
jobs: genericMethod(service
|
|
22
|
-
queue: service
|
|
23
|
-
schedules: service
|
|
24
|
-
schemaVersion: service
|
|
25
|
-
snapshot: genericMethod(service
|
|
26
|
-
storedJobs: service
|
|
23
|
+
busy: busy(service),
|
|
24
|
+
changes: changes(service),
|
|
25
|
+
counts: counts(service),
|
|
26
|
+
deadLetteredJobs: genericMethod(deadLetteredJobs(service)),
|
|
27
|
+
deferred: deferred(service),
|
|
28
|
+
failedJobs: genericMethod(failedJobs(service)),
|
|
29
|
+
getJob: genericMethod(getJob(service)),
|
|
30
|
+
health: inspectionHealth(service),
|
|
31
|
+
jobs: genericMethod(jobs(service)),
|
|
32
|
+
queue: queue(service),
|
|
33
|
+
schedules: schedules(service),
|
|
34
|
+
schemaVersion: schemaVersion(service),
|
|
35
|
+
snapshot: genericMethod(snapshot(service)),
|
|
36
|
+
storedJobs: storedJobs(service),
|
|
27
37
|
}),
|
|
28
38
|
requires: [PgBoss],
|
|
29
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspection.js","sourceRoot":"","sources":["../../src/server/inspection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inspection.js","sourceRoot":"","sources":["../../src/server/inspection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAIpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAa3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC7C,EAAE,EAAE,kCAAkC;IACtC,UAAU,EAAE,oBAAoB;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;QACvB,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1D,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC3B,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACjC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC;QAC7B,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC;QACrC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1C,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC;KAC/B,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,CAAU;CAC3B,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PgBossInitialization.d.ts","sourceRoot":"","sources":["../../../src/server/internal/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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PgBossInitialization.js","sourceRoot":"","sources":["../../../src/server/internal/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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PgBossOperations.d.ts","sourceRoot":"","sources":["../../../src/server/internal/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"}
|