@shivaedev/jobs 0.34.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 (147) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/server/adapters/clientErrorSubscription.d.ts +4 -0
  3. package/dist/server/adapters/clientErrorSubscription.d.ts.map +1 -0
  4. package/dist/server/adapters/clientErrorSubscription.js +6 -0
  5. package/dist/server/adapters/clientErrorSubscription.js.map +1 -0
  6. package/dist/server/inspection.d.ts +17 -17
  7. package/dist/server/inspection.d.ts.map +1 -1
  8. package/dist/server/inspection.js +30 -20
  9. package/dist/server/inspection.js.map +1 -1
  10. package/dist/server/internal/PgBossInitialization.d.ts +9 -0
  11. package/dist/server/internal/PgBossInitialization.d.ts.map +1 -0
  12. package/dist/server/internal/PgBossInitialization.js +4 -0
  13. package/dist/server/internal/PgBossInitialization.js.map +1 -0
  14. package/dist/server/internal/PgBossOperations.d.ts +27 -0
  15. package/dist/server/internal/PgBossOperations.d.ts.map +1 -0
  16. package/dist/server/internal/PgBossOperations.js +35 -0
  17. package/dist/server/internal/PgBossOperations.js.map +1 -0
  18. package/dist/server/internal/initializeInspection.d.ts +4 -0
  19. package/dist/server/internal/initializeInspection.d.ts.map +1 -0
  20. package/dist/server/internal/initializeInspection.js +8 -0
  21. package/dist/server/internal/initializeInspection.js.map +1 -0
  22. package/dist/server/internal/initializeJobs.d.ts +4 -0
  23. package/dist/server/internal/initializeJobs.d.ts.map +1 -0
  24. package/dist/server/internal/initializeJobs.js +4 -0
  25. package/dist/server/internal/initializeJobs.js.map +1 -0
  26. package/dist/server/internal/operations/busy.d.ts +3 -0
  27. package/dist/server/internal/operations/busy.d.ts.map +1 -0
  28. package/dist/server/internal/operations/busy.js +4 -0
  29. package/dist/server/internal/operations/busy.js.map +1 -0
  30. package/dist/server/internal/operations/changes.d.ts +5 -0
  31. package/dist/server/internal/operations/changes.d.ts.map +1 -0
  32. package/dist/server/internal/operations/changes.js +4 -0
  33. package/dist/server/internal/operations/changes.js.map +1 -0
  34. package/dist/server/internal/operations/counts.d.ts +3 -0
  35. package/dist/server/internal/operations/counts.d.ts.map +1 -0
  36. package/dist/server/internal/operations/counts.js +4 -0
  37. package/dist/server/internal/operations/counts.js.map +1 -0
  38. package/dist/server/internal/operations/deadLetteredJobs.d.ts +6 -0
  39. package/dist/server/internal/operations/deadLetteredJobs.d.ts.map +1 -0
  40. package/dist/server/internal/operations/deadLetteredJobs.js +4 -0
  41. package/dist/server/internal/operations/deadLetteredJobs.js.map +1 -0
  42. package/dist/server/internal/operations/deferred.d.ts +6 -0
  43. package/dist/server/internal/operations/deferred.d.ts.map +1 -0
  44. package/dist/server/internal/operations/deferred.js +4 -0
  45. package/dist/server/internal/operations/deferred.js.map +1 -0
  46. package/dist/server/internal/operations/deleteQueue.d.ts +3 -0
  47. package/dist/server/internal/operations/deleteQueue.d.ts.map +1 -0
  48. package/dist/server/internal/operations/deleteQueue.js +4 -0
  49. package/dist/server/internal/operations/deleteQueue.js.map +1 -0
  50. package/dist/server/internal/operations/enqueue.d.ts +3 -0
  51. package/dist/server/internal/operations/enqueue.d.ts.map +1 -0
  52. package/dist/server/internal/operations/enqueue.js +4 -0
  53. package/dist/server/internal/operations/enqueue.js.map +1 -0
  54. package/dist/server/internal/operations/failedJobs.d.ts +6 -0
  55. package/dist/server/internal/operations/failedJobs.d.ts.map +1 -0
  56. package/dist/server/internal/operations/failedJobs.js +4 -0
  57. package/dist/server/internal/operations/failedJobs.js.map +1 -0
  58. package/dist/server/internal/operations/getJob.d.ts +6 -0
  59. package/dist/server/internal/operations/getJob.d.ts.map +1 -0
  60. package/dist/server/internal/operations/getJob.js +4 -0
  61. package/dist/server/internal/operations/getJob.js.map +1 -0
  62. package/dist/server/internal/operations/health.d.ts +3 -0
  63. package/dist/server/internal/operations/health.d.ts.map +1 -0
  64. package/dist/server/internal/operations/health.js +4 -0
  65. package/dist/server/internal/operations/health.js.map +1 -0
  66. package/dist/server/internal/operations/inspection.d.ts +3 -0
  67. package/dist/server/internal/operations/inspection.d.ts.map +1 -0
  68. package/dist/server/internal/operations/inspection.js +4 -0
  69. package/dist/server/internal/operations/inspection.js.map +1 -0
  70. package/dist/server/internal/operations/inspectionHealth.d.ts +5 -0
  71. package/dist/server/internal/operations/inspectionHealth.d.ts.map +1 -0
  72. package/dist/server/internal/operations/inspectionHealth.js +4 -0
  73. package/dist/server/internal/operations/inspectionHealth.js.map +1 -0
  74. package/dist/server/internal/operations/jobs.d.ts +43 -0
  75. package/dist/server/internal/operations/jobs.d.ts.map +1 -0
  76. package/dist/server/internal/operations/jobs.js +4 -0
  77. package/dist/server/internal/operations/jobs.js.map +1 -0
  78. package/dist/server/internal/operations/queue.d.ts +3 -0
  79. package/dist/server/internal/operations/queue.d.ts.map +1 -0
  80. package/dist/server/internal/operations/queue.js +4 -0
  81. package/dist/server/internal/operations/queue.js.map +1 -0
  82. package/dist/server/internal/operations/refreshQueueStats.d.ts +3 -0
  83. package/dist/server/internal/operations/refreshQueueStats.d.ts.map +1 -0
  84. package/dist/server/internal/operations/refreshQueueStats.js +4 -0
  85. package/dist/server/internal/operations/refreshQueueStats.js.map +1 -0
  86. package/dist/server/internal/operations/retry.d.ts +3 -0
  87. package/dist/server/internal/operations/retry.d.ts.map +1 -0
  88. package/dist/server/internal/operations/retry.js +4 -0
  89. package/dist/server/internal/operations/retry.js.map +1 -0
  90. package/dist/server/internal/operations/schedules.d.ts +3 -0
  91. package/dist/server/internal/operations/schedules.d.ts.map +1 -0
  92. package/dist/server/internal/operations/schedules.js +4 -0
  93. package/dist/server/internal/operations/schedules.js.map +1 -0
  94. package/dist/server/internal/operations/schemaVersion.d.ts +3 -0
  95. package/dist/server/internal/operations/schemaVersion.d.ts.map +1 -0
  96. package/dist/server/internal/operations/schemaVersion.js +4 -0
  97. package/dist/server/internal/operations/schemaVersion.js.map +1 -0
  98. package/dist/server/internal/operations/snapshot.d.ts +3 -0
  99. package/dist/server/internal/operations/snapshot.d.ts.map +1 -0
  100. package/dist/server/internal/operations/snapshot.js +4 -0
  101. package/dist/server/internal/operations/snapshot.js.map +1 -0
  102. package/dist/server/internal/operations/storedJobs.d.ts +5 -0
  103. package/dist/server/internal/operations/storedJobs.d.ts.map +1 -0
  104. package/dist/server/internal/operations/storedJobs.js +4 -0
  105. package/dist/server/internal/operations/storedJobs.js.map +1 -0
  106. package/dist/server/internal/operations/unschedule.d.ts +3 -0
  107. package/dist/server/internal/operations/unschedule.d.ts.map +1 -0
  108. package/dist/server/internal/operations/unschedule.js +4 -0
  109. package/dist/server/internal/operations/unschedule.js.map +1 -0
  110. package/dist/server/internal/pgBossDefinitionLayer.d.ts +7 -0
  111. package/dist/server/internal/pgBossDefinitionLayer.d.ts.map +1 -0
  112. package/dist/server/internal/pgBossDefinitionLayer.js +32 -0
  113. package/dist/server/internal/pgBossDefinitionLayer.js.map +1 -0
  114. package/dist/server/service.d.ts +2 -2
  115. package/dist/server/service.d.ts.map +1 -1
  116. package/dist/server/service.js +4 -47
  117. package/dist/server/service.js.map +1 -1
  118. package/package.json +11 -11
  119. package/src/server/adapters/clientErrorSubscription.ts +7 -0
  120. package/src/server/inspection.ts +31 -20
  121. package/src/server/internal/PgBossInitialization.ts +9 -0
  122. package/src/server/internal/PgBossOperations.ts +35 -0
  123. package/src/server/internal/initializeInspection.ts +8 -0
  124. package/src/server/internal/initializeJobs.ts +4 -0
  125. package/src/server/internal/operations/busy.ts +5 -0
  126. package/src/server/internal/operations/changes.ts +5 -0
  127. package/src/server/internal/operations/counts.ts +5 -0
  128. package/src/server/internal/operations/deadLetteredJobs.ts +5 -0
  129. package/src/server/internal/operations/deferred.ts +5 -0
  130. package/src/server/internal/operations/deleteQueue.ts +5 -0
  131. package/src/server/internal/operations/enqueue.ts +5 -0
  132. package/src/server/internal/operations/failedJobs.ts +5 -0
  133. package/src/server/internal/operations/getJob.ts +5 -0
  134. package/src/server/internal/operations/health.ts +5 -0
  135. package/src/server/internal/operations/inspection.ts +5 -0
  136. package/src/server/internal/operations/inspectionHealth.ts +5 -0
  137. package/src/server/internal/operations/jobs.ts +5 -0
  138. package/src/server/internal/operations/queue.ts +5 -0
  139. package/src/server/internal/operations/refreshQueueStats.ts +5 -0
  140. package/src/server/internal/operations/retry.ts +5 -0
  141. package/src/server/internal/operations/schedules.ts +5 -0
  142. package/src/server/internal/operations/schemaVersion.ts +5 -0
  143. package/src/server/internal/operations/snapshot.ts +5 -0
  144. package/src/server/internal/operations/storedJobs.ts +5 -0
  145. package/src/server/internal/operations/unschedule.ts +5 -0
  146. package/src/server/internal/pgBossDefinitionLayer.ts +65 -0
  147. package/src/server/service.ts +9 -66
@@ -0,0 +1,4 @@
1
+ import { Effect } from "effect";
2
+ import { PgBossInitialization } from "./PgBossInitialization.ts";
3
+
4
+ export const initializeJobs = Effect.flatten(PgBossInitialization);
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function busy(state: Pick<PgBossInspectionService, "busy">) {
4
+ return state.busy;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function changes(state: Pick<PgBossInspectionService, "changes">) {
4
+ return state.changes;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function counts(state: Pick<PgBossService, "counts">) {
4
+ return state.counts;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function deadLetteredJobs(state: Pick<PgBossService, "deadLetteredJobs">) {
4
+ return state.deadLetteredJobs;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function deferred(state: Pick<PgBossInspectionService, "deferred">) {
4
+ return state.deferred;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function deleteQueue(state: Pick<PgBossService, "deleteQueue">) {
4
+ return state.deleteQueue;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function enqueue(state: Pick<PgBossService, "enqueue">) {
4
+ return state.enqueue;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function failedJobs(state: Pick<PgBossService, "failedJobs">) {
4
+ return state.failedJobs;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function getJob(state: Pick<PgBossService, "getJob">) {
4
+ return state.getJob;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function health(state: Pick<PgBossService, "health">) {
4
+ return state.health;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function inspection(state: Pick<PgBossService, "inspection">) {
4
+ return state.inspection;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function inspectionHealth(state: Pick<PgBossInspectionService, "health">) {
4
+ return state.health;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function jobs(state: Pick<PgBossInspectionService, "jobs">) {
4
+ return state.jobs;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function queue(state: Pick<PgBossInspectionService, "queue">) {
4
+ return state.queue;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function refreshQueueStats(state: Pick<PgBossService, "refreshQueueStats">) {
4
+ return state.refreshQueueStats;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function retry(state: Pick<PgBossService, "retry">) {
4
+ return state.retry;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function schedules(state: Pick<PgBossInspectionService, "schedules">) {
4
+ return state.schedules;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function schemaVersion(state: Pick<PgBossInspectionService, "schemaVersion">) {
4
+ return state.schemaVersion;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function snapshot(state: Pick<PgBossInspectionService, "snapshot">) {
4
+ return state.snapshot;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossInspectionService } from "#server/inspection.ts";
2
+
3
+ export function storedJobs(state: Pick<PgBossInspectionService, "storedJobs">) {
4
+ return state.storedJobs;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { PgBossService } from "#server/service.ts";
2
+
3
+ export function unschedule(state: Pick<PgBossService, "unschedule">) {
4
+ return state.unschedule;
5
+ }
@@ -0,0 +1,65 @@
1
+ import { type Context, Effect, Exit, Layer, Scope } from "effect";
2
+ import { clientErrorReporter } from "#server/adapters/clientErrorReporter.ts";
3
+ import { clientErrorSubscription } from "#server/adapters/clientErrorSubscription.ts";
4
+ import { jobEngine } from "#server/adapters/jobEngine.ts";
5
+ import type { JobRegistration, RegistrationRequirements } from "#server/definition.ts";
6
+ import type { PgBossError, PgBossQueueNamesError, PgBossQueueOptionsError } from "#server/error.ts";
7
+ import { PgBoss } from "#server/PgBoss.ts";
8
+ import type { PgBossLayerOptions, PgBossService } from "#server/service.ts";
9
+ import { logClientError } from "./clientErrors.ts";
10
+ import { JobEngine } from "./engine.ts";
11
+ import { makeService } from "./makeService.ts";
12
+ import { PgBossInitialization } from "./PgBossInitialization.ts";
13
+ import { PgBossOperations } from "./PgBossOperations.ts";
14
+ import { registrationName } from "./register.ts";
15
+ import { registerReleasedJobs } from "./registerReleasedJobs.ts";
16
+ import { validateQueueNames } from "./validateQueueNames.ts";
17
+
18
+ export function pgBossDefinitionLayer<TIdentifier extends string, const TRegistrations extends readonly JobRegistration[], E>(
19
+ Service: Context.Service<TIdentifier, PgBossService>,
20
+ options: PgBossLayerOptions<TRegistrations, E>,
21
+ queueNames?: readonly string[],
22
+ ): Layer.Layer<
23
+ TIdentifier,
24
+ PgBossError | PgBossQueueNamesError | PgBossQueueOptionsError,
25
+ PgBoss | Exclude<RegistrationRequirements<TRegistrations>, TIdentifier> | E
26
+ >;
27
+ export function pgBossDefinitionLayer<TIdentifier extends string, R, E>(
28
+ Service: Context.Service<TIdentifier, PgBossService>,
29
+ options: PgBossLayerOptions<readonly JobRegistration<R>[], E>,
30
+ queueNames?: readonly string[],
31
+ ) {
32
+ return Layer.unwrap(
33
+ Effect.map(Effect.context<Exclude<R, TIdentifier> | E>(), (dependencies) =>
34
+ Layer.effect(Service, PgBossOperations).pipe(
35
+ Layer.provide(Layer.fresh(PgBossOperations.layer)),
36
+ Layer.provide(Layer.succeed(PgBossInitialization, initializePgBoss(Service, options, dependencies, queueNames))),
37
+ ),
38
+ ),
39
+ );
40
+ }
41
+
42
+ const initializePgBoss = Effect.fnUntraced(function* <TIdentifier extends string, R, E>(
43
+ Service: Context.Service<TIdentifier, PgBossService>,
44
+ options: PgBossLayerOptions<readonly JobRegistration<R>[], E>,
45
+ dependencies: Context.Context<Exclude<R, TIdentifier> | E>,
46
+ queueNames?: readonly string[],
47
+ ) {
48
+ yield* validateQueueNames(options.jobs, queueNames);
49
+ const acquired = yield* PgBoss;
50
+ const workerScope = yield* Scope.make();
51
+ const service = yield* makeService(acquired.client, options.jobs.map(registrationName), acquired.schema).pipe(
52
+ Effect.provideService(JobEngine, jobEngine(acquired.client, acquired.schema)),
53
+ );
54
+ yield* Effect.gen(function* () {
55
+ const context = yield* Effect.context<R | E>();
56
+ const reportError = options.onError ?? logClientError;
57
+ const report = yield* clientErrorReporter(reportError).pipe(Effect.provide(context));
58
+ const unsubscribe = yield* clientErrorSubscription(acquired.client, report);
59
+ yield* Effect.addFinalizer(() => Scope.close(workerScope, Exit.void).pipe(Effect.ensuring(Effect.sync(unsubscribe))));
60
+ yield* registerReleasedJobs(acquired.client, options.jobs, context, acquired.reused, acquired.schema, acquired.stop, options.retired).pipe(
61
+ Effect.provideService(Scope.Scope, workerScope),
62
+ );
63
+ }).pipe(Effect.provideService(Service, service), Effect.provide(dependencies));
64
+ return service;
65
+ });
@@ -1,8 +1,4 @@
1
- import { Context, Effect, Exit, Layer, type Option, type Redacted, type Schema, Scope } from "effect";
2
- import { defineService } from "@shivaedev/service/defineService.ts";
3
- import { genericMethod } from "@shivaedev/service/genericMethod.ts";
4
- import { clientErrorReporter } from "#server/adapters/clientErrorReporter.ts";
5
- import { jobEngine } from "#server/adapters/jobEngine.ts";
1
+ import { Context, type Effect, Layer, type Option, type Redacted, type Schema } from "effect";
6
2
  import { clientEngine } from "#server/adapters/lifecycle.ts";
7
3
  import type { PgBossClientFactory } from "#server/client.ts";
8
4
  import type { ClientOptions, StopOptions } from "#server/clientOptions.ts";
@@ -19,13 +15,8 @@ import type {
19
15
  import type { DeadLetteredJob, JobPage, JobPageOptions, JobsHealth, ListedJob, QueueCounts } from "#server/health.ts";
20
16
  import type { PgBossInspectionService } from "#server/inspection.ts";
21
17
  import { acquireClient } from "#server/internal/acquireClient.ts";
22
- import { logClientError, subscribeClientErrors } from "#server/internal/clientErrors.ts";
23
- import { JobEngine } from "#server/internal/engine.ts";
24
18
  import { ClientEngine } from "#server/internal/lifecycle.ts";
25
- import { makeService } from "#server/internal/makeService.ts";
26
- import { registrationName } from "#server/internal/register.ts";
27
- import { registerReleasedJobs } from "#server/internal/registerReleasedJobs.ts";
28
- import { validateQueueNames } from "#server/internal/validateQueueNames.ts";
19
+ import { pgBossDefinitionLayer } from "#server/internal/pgBossDefinitionLayer.ts";
29
20
  import type { Job } from "#server/job.ts";
30
21
  import { PgBoss } from "#server/PgBoss.ts";
31
22
 
@@ -65,10 +56,6 @@ export type PgBossOptions = Omit<ClientOptions, "connectionString"> & {
65
56
  readonly stop?: StopOptions;
66
57
  };
67
58
 
68
- export function pgBossLayer(options: PgBossOptions): Layer.Layer<PgBoss, PgBossError | PgBossClientOptionsError> {
69
- return Layer.effect(PgBoss, acquireClient(options)).pipe(Layer.provide(Layer.succeed(ClientEngine, clientEngine)));
70
- }
71
-
72
59
  export interface PgBossLayerOptions<TRegistrations extends readonly JobRegistration[], TErrorRequirements> {
73
60
  readonly jobs: TRegistrations;
74
61
  readonly onError?: (error: Error) => Effect.Effect<unknown, never, TErrorRequirements>;
@@ -85,58 +72,14 @@ export interface PgBossDefinition<TIdentifier extends string = string> extends C
85
72
  >;
86
73
  }
87
74
 
75
+ export function pgBossLayer(options: PgBossOptions): Layer.Layer<PgBoss, PgBossError | PgBossClientOptionsError> {
76
+ return Layer.effect(PgBoss, acquireClient(options)).pipe(Layer.provide(Layer.succeed(ClientEngine, clientEngine)));
77
+ }
78
+
88
79
  export function makePgBoss<const TIdentifier extends string>(identifier: TIdentifier, queueNames?: readonly string[]): PgBossDefinition<TIdentifier> {
89
- function definition<R, E>(
90
- options: PgBossLayerOptions<readonly JobRegistration<R>[], E>,
91
- dependencies: Context.Context<Exclude<R, TIdentifier> | E>,
92
- ) {
93
- return defineService({
94
- id: identifier,
95
- initialize: Effect.gen(function* () {
96
- yield* validateQueueNames(options.jobs, queueNames);
97
- const acquired = yield* PgBoss;
98
- const workerScope = yield* Scope.make();
99
- const service = yield* makeService(acquired.client, options.jobs.map(registrationName), acquired.schema).pipe(
100
- Effect.provideService(JobEngine, jobEngine(acquired.client, acquired.schema)),
101
- );
102
- yield* Effect.gen(function* () {
103
- const context = yield* Effect.context<R | E>();
104
- const reportError = options.onError ?? logClientError;
105
- const report = yield* clientErrorReporter(reportError).pipe(Effect.provide(context));
106
- const unsubscribe = subscribeClientErrors(acquired.client, report);
107
- yield* Effect.addFinalizer(() => Scope.close(workerScope, Exit.void).pipe(Effect.ensuring(Effect.sync(unsubscribe))));
108
- yield* registerReleasedJobs(acquired.client, options.jobs, context, acquired.reused, acquired.schema, acquired.stop, options.retired).pipe(
109
- Effect.provideService(Scope.Scope, workerScope),
110
- );
111
- }).pipe(Effect.provideService(Service, service), Effect.provide(dependencies));
112
- return service;
113
- }),
114
- methods: (service) => ({
115
- counts: service.counts,
116
- deadLetteredJobs: genericMethod(service.deadLetteredJobs),
117
- deleteQueue: service.deleteQueue,
118
- enqueue: genericMethod(service.enqueue),
119
- failedJobs: genericMethod(service.failedJobs),
120
- getJob: genericMethod(service.getJob),
121
- health: service.health,
122
- inspection: service.inspection,
123
- refreshQueueStats: service.refreshQueueStats,
124
- retry: service.retry,
125
- unschedule: service.unschedule,
126
- }),
127
- requires: [PgBoss],
128
- });
129
- }
130
- const Service: Context.Service<TIdentifier, PgBossService> = definition<never, never>({ jobs: [] }, Context.empty());
131
- function layer<const TRegistrations extends readonly JobRegistration[], E = never>(
132
- options: PgBossLayerOptions<TRegistrations, E>,
133
- ): Layer.Layer<
134
- TIdentifier,
135
- PgBossError | PgBossQueueNamesError | PgBossQueueOptionsError,
136
- PgBoss | Exclude<RegistrationRequirements<TRegistrations>, TIdentifier> | E
137
- >;
138
- function layer<R = never, E = never>(options: PgBossLayerOptions<readonly JobRegistration<R>[], E>) {
139
- return Layer.unwrap(Effect.map(Effect.context<Exclude<R, TIdentifier> | E>(), (dependencies) => definition(options, dependencies).layer));
80
+ const Service = Context.Service<TIdentifier, PgBossService>(identifier);
81
+ function layer<const TRegistrations extends readonly JobRegistration[], E = never>(options: PgBossLayerOptions<TRegistrations, E>) {
82
+ return pgBossDefinitionLayer(Service, options, queueNames);
140
83
  }
141
84
  return Object.assign(Service, { layer });
142
85
  }