@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.
Files changed (185) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +19 -5
  3. package/dist/server/adapters/clientErrorSubscription.d.ts +4 -0
  4. package/dist/server/adapters/clientErrorSubscription.d.ts.map +1 -0
  5. package/dist/server/adapters/clientErrorSubscription.js +6 -0
  6. package/dist/server/adapters/clientErrorSubscription.js.map +1 -0
  7. package/dist/server/adapters/settleDeferral.d.ts.map +1 -1
  8. package/dist/server/adapters/settleDeferral.js +8 -2
  9. package/dist/server/adapters/settleDeferral.js.map +1 -1
  10. package/dist/server/adapters/testingClient.d.ts.map +1 -1
  11. package/dist/server/adapters/testingClient.js +2 -0
  12. package/dist/server/adapters/testingClient.js.map +1 -1
  13. package/dist/server/adapters/testingController.d.ts +2 -1
  14. package/dist/server/adapters/testingController.d.ts.map +1 -1
  15. package/dist/server/adapters/testingController.js +14 -2
  16. package/dist/server/adapters/testingController.js.map +1 -1
  17. package/dist/server/adapters/testingTime.d.ts +10 -0
  18. package/dist/server/adapters/testingTime.d.ts.map +1 -0
  19. package/dist/server/adapters/testingTime.js +18 -0
  20. package/dist/server/adapters/testingTime.js.map +1 -0
  21. package/dist/server/inspection.d.ts +17 -17
  22. package/dist/server/inspection.d.ts.map +1 -1
  23. package/dist/server/inspection.js +30 -20
  24. package/dist/server/inspection.js.map +1 -1
  25. package/dist/server/internal/PgBossInitialization.d.ts +9 -0
  26. package/dist/server/internal/PgBossInitialization.d.ts.map +1 -0
  27. package/dist/server/internal/PgBossInitialization.js +4 -0
  28. package/dist/server/internal/PgBossInitialization.js.map +1 -0
  29. package/dist/server/internal/PgBossOperations.d.ts +27 -0
  30. package/dist/server/internal/PgBossOperations.d.ts.map +1 -0
  31. package/dist/server/internal/PgBossOperations.js +35 -0
  32. package/dist/server/internal/PgBossOperations.js.map +1 -0
  33. package/dist/server/internal/adapters/deferralChanges.d.ts +3 -0
  34. package/dist/server/internal/adapters/deferralChanges.d.ts.map +1 -0
  35. package/dist/server/internal/adapters/deferralChanges.js +2 -0
  36. package/dist/server/internal/adapters/deferralChanges.js.map +1 -0
  37. package/dist/server/internal/initializeInspection.d.ts +4 -0
  38. package/dist/server/internal/initializeInspection.d.ts.map +1 -0
  39. package/dist/server/internal/initializeInspection.js +8 -0
  40. package/dist/server/internal/initializeInspection.js.map +1 -0
  41. package/dist/server/internal/initializeJobs.d.ts +4 -0
  42. package/dist/server/internal/initializeJobs.d.ts.map +1 -0
  43. package/dist/server/internal/initializeJobs.js +4 -0
  44. package/dist/server/internal/initializeJobs.js.map +1 -0
  45. package/dist/server/internal/operations/busy.d.ts +3 -0
  46. package/dist/server/internal/operations/busy.d.ts.map +1 -0
  47. package/dist/server/internal/operations/busy.js +4 -0
  48. package/dist/server/internal/operations/busy.js.map +1 -0
  49. package/dist/server/internal/operations/changes.d.ts +5 -0
  50. package/dist/server/internal/operations/changes.d.ts.map +1 -0
  51. package/dist/server/internal/operations/changes.js +4 -0
  52. package/dist/server/internal/operations/changes.js.map +1 -0
  53. package/dist/server/internal/operations/counts.d.ts +3 -0
  54. package/dist/server/internal/operations/counts.d.ts.map +1 -0
  55. package/dist/server/internal/operations/counts.js +4 -0
  56. package/dist/server/internal/operations/counts.js.map +1 -0
  57. package/dist/server/internal/operations/deadLetteredJobs.d.ts +6 -0
  58. package/dist/server/internal/operations/deadLetteredJobs.d.ts.map +1 -0
  59. package/dist/server/internal/operations/deadLetteredJobs.js +4 -0
  60. package/dist/server/internal/operations/deadLetteredJobs.js.map +1 -0
  61. package/dist/server/internal/operations/deferred.d.ts +6 -0
  62. package/dist/server/internal/operations/deferred.d.ts.map +1 -0
  63. package/dist/server/internal/operations/deferred.js +4 -0
  64. package/dist/server/internal/operations/deferred.js.map +1 -0
  65. package/dist/server/internal/operations/deleteQueue.d.ts +3 -0
  66. package/dist/server/internal/operations/deleteQueue.d.ts.map +1 -0
  67. package/dist/server/internal/operations/deleteQueue.js +4 -0
  68. package/dist/server/internal/operations/deleteQueue.js.map +1 -0
  69. package/dist/server/internal/operations/enqueue.d.ts +3 -0
  70. package/dist/server/internal/operations/enqueue.d.ts.map +1 -0
  71. package/dist/server/internal/operations/enqueue.js +4 -0
  72. package/dist/server/internal/operations/enqueue.js.map +1 -0
  73. package/dist/server/internal/operations/failedJobs.d.ts +6 -0
  74. package/dist/server/internal/operations/failedJobs.d.ts.map +1 -0
  75. package/dist/server/internal/operations/failedJobs.js +4 -0
  76. package/dist/server/internal/operations/failedJobs.js.map +1 -0
  77. package/dist/server/internal/operations/getJob.d.ts +6 -0
  78. package/dist/server/internal/operations/getJob.d.ts.map +1 -0
  79. package/dist/server/internal/operations/getJob.js +4 -0
  80. package/dist/server/internal/operations/getJob.js.map +1 -0
  81. package/dist/server/internal/operations/health.d.ts +3 -0
  82. package/dist/server/internal/operations/health.d.ts.map +1 -0
  83. package/dist/server/internal/operations/health.js +4 -0
  84. package/dist/server/internal/operations/health.js.map +1 -0
  85. package/dist/server/internal/operations/inspection.d.ts +3 -0
  86. package/dist/server/internal/operations/inspection.d.ts.map +1 -0
  87. package/dist/server/internal/operations/inspection.js +4 -0
  88. package/dist/server/internal/operations/inspection.js.map +1 -0
  89. package/dist/server/internal/operations/inspectionHealth.d.ts +5 -0
  90. package/dist/server/internal/operations/inspectionHealth.d.ts.map +1 -0
  91. package/dist/server/internal/operations/inspectionHealth.js +4 -0
  92. package/dist/server/internal/operations/inspectionHealth.js.map +1 -0
  93. package/dist/server/internal/operations/jobs.d.ts +43 -0
  94. package/dist/server/internal/operations/jobs.d.ts.map +1 -0
  95. package/dist/server/internal/operations/jobs.js +4 -0
  96. package/dist/server/internal/operations/jobs.js.map +1 -0
  97. package/dist/server/internal/operations/queue.d.ts +3 -0
  98. package/dist/server/internal/operations/queue.d.ts.map +1 -0
  99. package/dist/server/internal/operations/queue.js +4 -0
  100. package/dist/server/internal/operations/queue.js.map +1 -0
  101. package/dist/server/internal/operations/refreshQueueStats.d.ts +3 -0
  102. package/dist/server/internal/operations/refreshQueueStats.d.ts.map +1 -0
  103. package/dist/server/internal/operations/refreshQueueStats.js +4 -0
  104. package/dist/server/internal/operations/refreshQueueStats.js.map +1 -0
  105. package/dist/server/internal/operations/retry.d.ts +3 -0
  106. package/dist/server/internal/operations/retry.d.ts.map +1 -0
  107. package/dist/server/internal/operations/retry.js +4 -0
  108. package/dist/server/internal/operations/retry.js.map +1 -0
  109. package/dist/server/internal/operations/schedules.d.ts +3 -0
  110. package/dist/server/internal/operations/schedules.d.ts.map +1 -0
  111. package/dist/server/internal/operations/schedules.js +4 -0
  112. package/dist/server/internal/operations/schedules.js.map +1 -0
  113. package/dist/server/internal/operations/schemaVersion.d.ts +3 -0
  114. package/dist/server/internal/operations/schemaVersion.d.ts.map +1 -0
  115. package/dist/server/internal/operations/schemaVersion.js +4 -0
  116. package/dist/server/internal/operations/schemaVersion.js.map +1 -0
  117. package/dist/server/internal/operations/snapshot.d.ts +3 -0
  118. package/dist/server/internal/operations/snapshot.d.ts.map +1 -0
  119. package/dist/server/internal/operations/snapshot.js +4 -0
  120. package/dist/server/internal/operations/snapshot.js.map +1 -0
  121. package/dist/server/internal/operations/storedJobs.d.ts +5 -0
  122. package/dist/server/internal/operations/storedJobs.d.ts.map +1 -0
  123. package/dist/server/internal/operations/storedJobs.js +4 -0
  124. package/dist/server/internal/operations/storedJobs.js.map +1 -0
  125. package/dist/server/internal/operations/unschedule.d.ts +3 -0
  126. package/dist/server/internal/operations/unschedule.d.ts.map +1 -0
  127. package/dist/server/internal/operations/unschedule.js +4 -0
  128. package/dist/server/internal/operations/unschedule.js.map +1 -0
  129. package/dist/server/internal/pgBossDefinitionLayer.d.ts +7 -0
  130. package/dist/server/internal/pgBossDefinitionLayer.d.ts.map +1 -0
  131. package/dist/server/internal/pgBossDefinitionLayer.js +32 -0
  132. package/dist/server/internal/pgBossDefinitionLayer.js.map +1 -0
  133. package/dist/server/internal/testingIdle.d.ts +1 -1
  134. package/dist/server/internal/testingIdle.d.ts.map +1 -1
  135. package/dist/server/internal/testingIdle.js +4 -3
  136. package/dist/server/internal/testingIdle.js.map +1 -1
  137. package/dist/server/internal/testingWaits.d.ts +1 -1
  138. package/dist/server/internal/testingWaits.d.ts.map +1 -1
  139. package/dist/server/internal/testingWaits.js +2 -4
  140. package/dist/server/internal/testingWaits.js.map +1 -1
  141. package/dist/server/service.d.ts +2 -2
  142. package/dist/server/service.d.ts.map +1 -1
  143. package/dist/server/service.js +4 -47
  144. package/dist/server/service.js.map +1 -1
  145. package/dist/server/testing.d.ts +4 -1
  146. package/dist/server/testing.d.ts.map +1 -1
  147. package/dist/server/testing.js.map +1 -1
  148. package/package.json +11 -11
  149. package/src/server/adapters/clientErrorSubscription.ts +7 -0
  150. package/src/server/adapters/settleDeferral.ts +8 -2
  151. package/src/server/adapters/testingClient.ts +2 -0
  152. package/src/server/adapters/testingController.ts +14 -2
  153. package/src/server/adapters/testingTime.ts +25 -0
  154. package/src/server/inspection.ts +31 -20
  155. package/src/server/internal/PgBossInitialization.ts +9 -0
  156. package/src/server/internal/PgBossOperations.ts +35 -0
  157. package/src/server/internal/adapters/deferralChanges.ts +3 -0
  158. package/src/server/internal/initializeInspection.ts +8 -0
  159. package/src/server/internal/initializeJobs.ts +4 -0
  160. package/src/server/internal/operations/busy.ts +5 -0
  161. package/src/server/internal/operations/changes.ts +5 -0
  162. package/src/server/internal/operations/counts.ts +5 -0
  163. package/src/server/internal/operations/deadLetteredJobs.ts +5 -0
  164. package/src/server/internal/operations/deferred.ts +5 -0
  165. package/src/server/internal/operations/deleteQueue.ts +5 -0
  166. package/src/server/internal/operations/enqueue.ts +5 -0
  167. package/src/server/internal/operations/failedJobs.ts +5 -0
  168. package/src/server/internal/operations/getJob.ts +5 -0
  169. package/src/server/internal/operations/health.ts +5 -0
  170. package/src/server/internal/operations/inspection.ts +5 -0
  171. package/src/server/internal/operations/inspectionHealth.ts +5 -0
  172. package/src/server/internal/operations/jobs.ts +5 -0
  173. package/src/server/internal/operations/queue.ts +5 -0
  174. package/src/server/internal/operations/refreshQueueStats.ts +5 -0
  175. package/src/server/internal/operations/retry.ts +5 -0
  176. package/src/server/internal/operations/schedules.ts +5 -0
  177. package/src/server/internal/operations/schemaVersion.ts +5 -0
  178. package/src/server/internal/operations/snapshot.ts +5 -0
  179. package/src/server/internal/operations/storedJobs.ts +5 -0
  180. package/src/server/internal/operations/unschedule.ts +5 -0
  181. package/src/server/internal/pgBossDefinitionLayer.ts +65 -0
  182. package/src/server/internal/testingIdle.ts +4 -2
  183. package/src/server/internal/testingWaits.ts +2 -6
  184. package/src/server/service.ts +9 -66
  185. 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: "live",
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 at 50 ms intervals to observe other clients. These intervals use wall time even on a story's `TestClock`. A kit settles by yielding `waitForIdle` and then reading jobs once. As with any idle snapshot, a producer can enqueue more work after the wait returns.
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) of wall time, which a story's `TestClock` does not move, and fail with `PgBossWaitError`, whose message names what the wait expected and what it last saw:
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;AAEtD,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;;;GA6C3I"}
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 client.getDb().executeSql(`WITH claimed AS MATERIALIZED (
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
- return Schema.decodeUnknownSync(Settlement)(rows[0]);
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,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,CAC/C;;;UAGQ,MAAM;;;;;iBAKC,MAAM;;;;;;;;YAQX,MAAM;sDACoC,uBAAuB;;;;;;iBAM5D,MAAM;uCACgB,MAAM;kEACqB,MAAM;;;qBAGnD,MAAM;;;;;;gGAMqE,EAC9F,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,CAC3F,CAAC;IACF,OAAO,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
1
+ {"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;AAChE,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,CAsG3G"}
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":"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"}
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, Exclude<TPayload["DecodingServices"], never>>;
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;AAIjE,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;;;;;;;;;;;;;;sBAwCjD,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;;;EAK3E"}
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: testingIdle(inspection, work, signal),
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":"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"}
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 { type DateTime, Effect } from "effect";
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,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAI/C,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;AAC/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;;;uBA4BiB,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
+ {"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 { inspection } from "#server/adapters/inspection.ts";
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: Effect.gen(function* () {
9
- const acquired = yield* PgBoss;
10
- return yield* inspection(acquired.client, acquired.schema);
11
- }),
21
+ initialize: initializeInspection,
12
22
  methods: (service) => ({
13
- busy: service.busy,
14
- changes: service.changes,
15
- counts: service.counts,
16
- deadLetteredJobs: genericMethod(service.deadLetteredJobs),
17
- deferred: service.deferred,
18
- failedJobs: genericMethod(service.failedJobs),
19
- getJob: genericMethod(service.getJob),
20
- health: service.health,
21
- jobs: genericMethod(service.jobs),
22
- queue: service.queue,
23
- schedules: service.schedules,
24
- schemaVersion: service.schemaVersion,
25
- snapshot: genericMethod(service.snapshot),
26
- storedJobs: service.storedJobs,
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":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAa3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC7C,EAAE,EAAE,kCAAkC;IACtC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;QAC/B,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC;IACF,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACzD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;QAC7C,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzC,UAAU,EAAE,OAAO,CAAC,UAAU;KAC9B,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,CAAU;CAC3B,CAAC,CAAC"}
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,4 @@
1
+ import { Context } from "effect";
2
+ export class PgBossInitialization extends Context.Service()("@shivaedev/jobs/PgBossInitialization") {
3
+ }
4
+ //# sourceMappingURL=PgBossInitialization.js.map
@@ -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"}