@shivaedev/jobs 0.31.0 → 0.34.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 +40 -0
- package/README.md +75 -30
- package/dist/server/adapters/inspection.d.ts +5 -0
- package/dist/server/adapters/inspection.d.ts.map +1 -0
- package/dist/server/adapters/inspection.js +25 -0
- package/dist/server/adapters/inspection.js.map +1 -0
- package/dist/server/adapters/inspectionChanges.d.ts +7 -0
- package/dist/server/adapters/inspectionChanges.d.ts.map +1 -0
- package/dist/server/adapters/inspectionChanges.js +23 -0
- package/dist/server/adapters/inspectionChanges.js.map +1 -0
- package/dist/server/adapters/inspectionDeferrals.d.ts +10 -0
- package/dist/server/adapters/inspectionDeferrals.d.ts.map +1 -0
- package/dist/server/adapters/inspectionDeferrals.js +13 -0
- package/dist/server/adapters/inspectionDeferrals.js.map +1 -0
- package/dist/server/adapters/inspectionJobs.d.ts +50 -0
- package/dist/server/adapters/inspectionJobs.d.ts.map +1 -0
- package/dist/server/adapters/inspectionJobs.js +21 -0
- package/dist/server/adapters/inspectionJobs.js.map +1 -0
- package/dist/server/adapters/inspectionOperation.d.ts +3 -0
- package/dist/server/adapters/inspectionOperation.d.ts.map +1 -0
- package/dist/server/adapters/inspectionOperation.js +6 -0
- package/dist/server/adapters/inspectionOperation.js.map +1 -0
- package/dist/server/adapters/inspectionPlan.d.ts +3 -0
- package/dist/server/adapters/inspectionPlan.d.ts.map +1 -0
- package/dist/server/adapters/inspectionPlan.js +20 -0
- package/dist/server/adapters/inspectionPlan.js.map +1 -0
- package/dist/server/adapters/inspectionReads.d.ts +59 -0
- package/dist/server/adapters/inspectionReads.d.ts.map +1 -0
- package/dist/server/adapters/inspectionReads.js +44 -0
- package/dist/server/adapters/inspectionReads.js.map +1 -0
- package/dist/server/adapters/inspectionSnapshot.d.ts +6 -0
- package/dist/server/adapters/inspectionSnapshot.d.ts.map +1 -0
- package/dist/server/{internal/testingSnapshot.js → adapters/inspectionSnapshot.js} +9 -7
- package/dist/server/adapters/inspectionSnapshot.js.map +1 -0
- package/dist/server/adapters/jobEngine.d.ts.map +1 -1
- package/dist/server/adapters/jobEngine.js +0 -4
- package/dist/server/adapters/jobEngine.js.map +1 -1
- package/dist/server/adapters/payloadIdentity.d.ts +3 -0
- package/dist/server/adapters/payloadIdentity.d.ts.map +1 -0
- package/dist/server/adapters/payloadIdentity.js +14 -0
- package/dist/server/adapters/payloadIdentity.js.map +1 -0
- package/dist/server/{internal/testingSignal.d.ts → adapters/queueSignal.d.ts} +2 -2
- package/dist/server/adapters/queueSignal.d.ts.map +1 -0
- package/dist/server/{internal/testingSignal.js → adapters/queueSignal.js} +2 -2
- package/dist/server/adapters/queueSignal.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 +1 -2
- package/dist/server/adapters/testingClient.d.ts.map +1 -1
- package/dist/server/adapters/testingClient.js +25 -45
- package/dist/server/adapters/testingClient.js.map +1 -1
- package/dist/server/adapters/testingController.d.ts +58 -12
- package/dist/server/adapters/testingController.d.ts.map +1 -1
- package/dist/server/adapters/testingController.js +40 -18
- package/dist/server/adapters/testingController.js.map +1 -1
- package/dist/server/adapters/testingDueNow.js +1 -1
- package/dist/server/adapters/testingDueNow.js.map +1 -1
- package/dist/server/adapters/testingEngine.d.ts.map +1 -1
- package/dist/server/adapters/testingEngine.js +0 -11
- package/dist/server/adapters/testingEngine.js.map +1 -1
- package/dist/server/adapters/testingInspectionClient.d.ts +5 -0
- package/dist/server/adapters/testingInspectionClient.d.ts.map +1 -0
- package/dist/server/adapters/testingInspectionClient.js +52 -0
- package/dist/server/adapters/testingInspectionClient.js.map +1 -0
- 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/client.d.ts +3 -0
- package/dist/server/client.d.ts.map +1 -1
- package/dist/server/clientOptions.d.ts +0 -1
- package/dist/server/clientOptions.d.ts.map +1 -1
- package/dist/server/definition.d.ts +12 -11
- package/dist/server/definition.d.ts.map +1 -1
- package/dist/server/definition.js +2 -1
- package/dist/server/definition.js.map +1 -1
- package/dist/server/engineClient.d.ts +0 -5
- package/dist/server/engineClient.d.ts.map +1 -1
- package/dist/server/enqueueOptions.d.ts +6 -0
- package/dist/server/enqueueOptions.d.ts.map +1 -1
- package/dist/server/error.d.ts +1 -1
- package/dist/server/error.d.ts.map +1 -1
- package/dist/server/error.js.map +1 -1
- package/dist/server/inspection.d.ts +102 -0
- package/dist/server/inspection.d.ts.map +1 -0
- package/dist/server/inspection.js +30 -0
- package/dist/server/inspection.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/adapters/testingFetches.d.ts +2 -2
- package/dist/server/internal/adapters/testingFetches.d.ts.map +1 -1
- package/dist/server/internal/adapters/testingFetches.js.map +1 -1
- package/dist/server/internal/deferral.d.ts +0 -2
- package/dist/server/internal/deferral.d.ts.map +1 -1
- package/dist/server/internal/deferral.js +0 -1
- package/dist/server/internal/deferral.js.map +1 -1
- package/dist/server/internal/engine.d.ts +0 -5
- package/dist/server/internal/engine.d.ts.map +1 -1
- package/dist/server/internal/engine.js.map +1 -1
- package/dist/server/internal/enqueueFor.d.ts.map +1 -1
- package/dist/server/internal/enqueueFor.js +11 -1
- package/dist/server/internal/enqueueFor.js.map +1 -1
- package/dist/server/internal/jobStorePlans.d.ts.map +1 -1
- package/dist/server/internal/jobStorePlans.js +2 -1
- package/dist/server/internal/jobStorePlans.js.map +1 -1
- package/dist/server/internal/makeService.d.ts.map +1 -1
- package/dist/server/internal/makeService.js +7 -6
- package/dist/server/internal/makeService.js.map +1 -1
- package/dist/server/internal/register.d.ts.map +1 -1
- package/dist/server/internal/register.js +0 -4
- package/dist/server/internal/register.js.map +1 -1
- package/dist/server/internal/testingIdle.d.ts +4 -3
- package/dist/server/internal/testingIdle.d.ts.map +1 -1
- package/dist/server/internal/testingIdle.js +7 -26
- package/dist/server/internal/testingIdle.js.map +1 -1
- package/dist/server/internal/testingOperation.d.ts +5 -0
- package/dist/server/internal/testingOperation.d.ts.map +1 -0
- package/dist/server/internal/testingOperation.js +12 -0
- package/dist/server/internal/testingOperation.js.map +1 -0
- package/dist/server/internal/testingSchedules.d.ts +8 -5
- package/dist/server/internal/testingSchedules.d.ts.map +1 -1
- package/dist/server/internal/testingSchedules.js +14 -9
- package/dist/server/internal/testingSchedules.js.map +1 -1
- package/dist/server/internal/testingWaits.d.ts +7 -4
- package/dist/server/internal/testingWaits.d.ts.map +1 -1
- package/dist/server/internal/testingWaits.js +7 -10
- package/dist/server/internal/testingWaits.js.map +1 -1
- package/dist/server/schema.d.ts.map +1 -1
- package/dist/server/schema.js +5 -0
- package/dist/server/schema.js.map +1 -1
- package/dist/server/service.d.ts +4 -4
- package/dist/server/service.d.ts.map +1 -1
- package/dist/server/service.js +1 -0
- package/dist/server/service.js.map +1 -1
- package/dist/server/testing.d.ts +63 -25
- package/dist/server/testing.d.ts.map +1 -1
- package/dist/server/testing.js.map +1 -1
- package/package.json +7 -7
- package/src/server/adapters/inspection.ts +31 -0
- package/src/server/adapters/inspectionChanges.ts +31 -0
- package/src/server/{internal/testingDeferrals.ts → adapters/inspectionDeferrals.ts} +10 -12
- package/src/server/adapters/inspectionJobs.ts +28 -0
- package/src/server/adapters/inspectionOperation.ts +6 -0
- package/src/server/adapters/inspectionPlan.ts +21 -0
- package/src/server/adapters/inspectionReads.ts +55 -0
- package/src/server/{internal/testingSnapshot.ts → adapters/inspectionSnapshot.ts} +15 -17
- package/src/server/adapters/jobEngine.ts +0 -4
- package/src/server/adapters/payloadIdentity.ts +15 -0
- package/src/server/{internal/testingSignal.ts → adapters/queueSignal.ts} +1 -1
- package/src/server/adapters/settleDeferral.ts +8 -2
- package/src/server/adapters/testingClient.ts +11 -30
- package/src/server/adapters/testingController.ts +49 -21
- package/src/server/adapters/testingDueNow.ts +1 -1
- package/src/server/adapters/testingEngine.ts +0 -13
- package/src/server/adapters/testingInspectionClient.ts +70 -0
- package/src/server/adapters/testingTime.ts +25 -0
- package/src/server/client.ts +3 -0
- package/src/server/clientOptions.ts +0 -1
- package/src/server/definition.ts +18 -12
- package/src/server/engineClient.ts +0 -2
- package/src/server/enqueueOptions.ts +5 -0
- package/src/server/error.ts +1 -0
- package/src/server/inspection.ts +50 -0
- package/src/server/internal/adapters/deferralChanges.ts +3 -0
- package/src/server/internal/adapters/testingFetches.ts +2 -2
- package/src/server/internal/deferral.ts +0 -2
- package/src/server/internal/engine.ts +0 -6
- package/src/server/internal/enqueueFor.ts +14 -1
- package/src/server/internal/jobStorePlans.ts +2 -1
- package/src/server/internal/makeService.ts +7 -6
- package/src/server/internal/register.ts +0 -4
- package/src/server/internal/testingIdle.ts +10 -31
- package/src/server/internal/testingOperation.ts +18 -0
- package/src/server/internal/testingSchedules.ts +28 -16
- package/src/server/internal/testingWaits.ts +11 -16
- package/src/server/schema.ts +5 -0
- package/src/server/service.ts +5 -2
- package/src/server/testing.ts +3 -12
- package/dist/server/adapters/observeTestingSettlements.d.ts +0 -6
- package/dist/server/adapters/observeTestingSettlements.d.ts.map +0 -1
- package/dist/server/adapters/observeTestingSettlements.js +0 -35
- package/dist/server/adapters/observeTestingSettlements.js.map +0 -1
- package/dist/server/internal/testingDeferrals.d.ts +0 -10
- package/dist/server/internal/testingDeferrals.d.ts.map +0 -1
- package/dist/server/internal/testingDeferrals.js +0 -15
- package/dist/server/internal/testingDeferrals.js.map +0 -1
- package/dist/server/internal/testingReadout.d.ts +0 -10
- package/dist/server/internal/testingReadout.d.ts.map +0 -1
- package/dist/server/internal/testingReadout.js +0 -13
- package/dist/server/internal/testingReadout.js.map +0 -1
- package/dist/server/internal/testingRegistrations.d.ts +0 -4
- package/dist/server/internal/testingRegistrations.d.ts.map +0 -1
- package/dist/server/internal/testingRegistrations.js +0 -8
- package/dist/server/internal/testingRegistrations.js.map +0 -1
- package/dist/server/internal/testingSignal.d.ts.map +0 -1
- package/dist/server/internal/testingSignal.js.map +0 -1
- package/dist/server/internal/testingSnapshot.d.ts +0 -6
- package/dist/server/internal/testingSnapshot.d.ts.map +0 -1
- package/dist/server/internal/testingSnapshot.js.map +0 -1
- package/src/server/adapters/observeTestingSettlements.ts +0 -36
- package/src/server/internal/testingReadout.ts +0 -25
- package/src/server/internal/testingRegistrations.ts +0 -10
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { type DateTime, Effect } from "effect";
|
|
2
|
+
import type { inspectionChanges } from "#server/adapters/inspectionChanges.ts";
|
|
3
|
+
import type { inspectionReads } from "#server/adapters/inspectionReads.ts";
|
|
4
|
+
import type { JobPayloadSchema, QueueDefinition } from "#server/definition.ts";
|
|
5
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
6
|
+
import type { PgBossService } from "#server/service.ts";
|
|
7
|
+
export type SnapshotQueue = Pick<QueueDefinition<string, JobPayloadSchema>, "name" | "schema">;
|
|
8
|
+
export interface UnfinishedJob<TQueue extends SnapshotQueue> {
|
|
9
|
+
readonly data: TQueue["schema"]["Type"];
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly queue: TQueue["name"];
|
|
12
|
+
readonly startAfter: DateTime.Utc;
|
|
13
|
+
readonly state: "active" | "created" | "deferred" | "failed" | "retry";
|
|
14
|
+
}
|
|
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>;
|
|
17
|
+
readonly changes: (queue?: {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
} | undefined) => Effect.Effect<{
|
|
20
|
+
revision: Effect.Effect<number, never, never>;
|
|
21
|
+
waitForChange: (after: number) => Effect.Effect<number>;
|
|
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>;
|
|
24
|
+
readonly deadLetteredJobs: <const TName extends string, const TPayload extends JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
25
|
+
readonly name: TName;
|
|
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<{
|
|
29
|
+
at: DateTime.Utc;
|
|
30
|
+
reason: string;
|
|
31
|
+
}[], import("./error.ts").PgBossError, never>;
|
|
32
|
+
readonly failedJobs: <const TName extends string, const TPayload extends JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
33
|
+
readonly name: TName;
|
|
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"]>;
|
|
36
|
+
readonly getJob: <const TName extends string, const TPayload extends JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
37
|
+
readonly name: TName;
|
|
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"]>;
|
|
40
|
+
readonly health: (queues: readonly {
|
|
41
|
+
readonly name: string;
|
|
42
|
+
}[]) => Effect.Effect<import("./health.ts").JobsHealth, import("./error.ts").PgBossError, never>;
|
|
43
|
+
readonly jobs: <TName extends string, TPayload extends JobPayloadSchema | typeof import("effect/Schema").Null>(queue: {
|
|
44
|
+
readonly name: TName;
|
|
45
|
+
readonly schema: TPayload;
|
|
46
|
+
}, options?: import("./client.ts").JobReadOptions) => Effect.Effect<{
|
|
47
|
+
expireInSeconds: number;
|
|
48
|
+
groupId?: string | null;
|
|
49
|
+
groupTier?: string | null;
|
|
50
|
+
heartbeatSeconds: number | null;
|
|
51
|
+
id: string;
|
|
52
|
+
name: string;
|
|
53
|
+
retryCount: number;
|
|
54
|
+
signal: AbortSignal;
|
|
55
|
+
blocked: boolean;
|
|
56
|
+
blocking: boolean;
|
|
57
|
+
completedOn: Date | null;
|
|
58
|
+
createdOn: Date;
|
|
59
|
+
deadLetter: string;
|
|
60
|
+
deleteAfterSeconds: number;
|
|
61
|
+
heartbeatOn: Date | null;
|
|
62
|
+
keepUntil: Date;
|
|
63
|
+
output: object | null;
|
|
64
|
+
pendingDependencies: number;
|
|
65
|
+
policy: string;
|
|
66
|
+
priority: number;
|
|
67
|
+
retryBackoff: boolean;
|
|
68
|
+
retryDelay: number;
|
|
69
|
+
retryDelayMax?: number;
|
|
70
|
+
retryLimit: number;
|
|
71
|
+
singletonKey: string | null;
|
|
72
|
+
singletonOn: Date | null;
|
|
73
|
+
sourceCreatedOn: Date | null;
|
|
74
|
+
sourceId: string | null;
|
|
75
|
+
sourceName: string | null;
|
|
76
|
+
sourceOutput: object | null;
|
|
77
|
+
sourceRetryCount: number | null;
|
|
78
|
+
sourceRootId: string | null;
|
|
79
|
+
startAfter: Date;
|
|
80
|
+
startedOn: Date | null;
|
|
81
|
+
state: import("./job.ts").JobState;
|
|
82
|
+
data: TPayload["Type"];
|
|
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"]>;
|
|
88
|
+
readonly storedJobs: (queue: {
|
|
89
|
+
readonly name: string;
|
|
90
|
+
}, options?: import("./client.ts").JobReadOptions | undefined) => Effect.Effect<readonly import("./job.ts").Job<unknown>[], import("./error.ts").PgBossError, never>;
|
|
91
|
+
}>> & {
|
|
92
|
+
readonly layer: import("effect/Layer").Layer<"@shivaedev/jobs/PgBossInspection", never, PgBoss>;
|
|
93
|
+
};
|
|
94
|
+
export type PgBossInspectionService = ReturnType<typeof inspectionReads> & Pick<PgBossService, "counts" | "deadLetteredJobs" | "failedJobs" | "getJob"> & {
|
|
95
|
+
readonly health: (queues: readonly {
|
|
96
|
+
readonly name: string;
|
|
97
|
+
}[]) => ReturnType<PgBossService["health"]>;
|
|
98
|
+
readonly changes: (queue?: {
|
|
99
|
+
readonly name: string;
|
|
100
|
+
}) => ReturnType<typeof inspectionChanges>;
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=inspection.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { defineService } from "@shivaedev/service/defineService.ts";
|
|
3
|
+
import { genericMethod } from "@shivaedev/service/genericMethod.ts";
|
|
4
|
+
import { inspection } from "#server/adapters/inspection.ts";
|
|
5
|
+
import { PgBoss } from "#server/PgBoss.ts";
|
|
6
|
+
export const PgBossInspection = defineService({
|
|
7
|
+
id: "@shivaedev/jobs/PgBossInspection",
|
|
8
|
+
initialize: Effect.gen(function* () {
|
|
9
|
+
const acquired = yield* PgBoss;
|
|
10
|
+
return yield* inspection(acquired.client, acquired.schema);
|
|
11
|
+
}),
|
|
12
|
+
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,
|
|
27
|
+
}),
|
|
28
|
+
requires: [PgBoss],
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=inspection.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferralChanges.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/adapters/deferralChanges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,eAAO,MAAM,eAAe,gCAAqC,IAAI,CAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferralChanges.js","sourceRoot":"","sources":["../../../../src/server/internal/adapters/deferralChanges.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,EAA8B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ClientDatabase } from "#server/ClientDatabase.ts";
|
|
2
2
|
export interface TestingFetches {
|
|
3
3
|
readonly begun: (queue: string) => number;
|
|
4
4
|
readonly passedSince: (queue: string, begun: number) => number;
|
|
5
5
|
}
|
|
6
|
-
export declare function testingFetches(db:
|
|
6
|
+
export declare function testingFetches(db: ClientDatabase, changed: () => void): TestingFetches;
|
|
7
7
|
//# sourceMappingURL=testingFetches.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingFetches.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/adapters/testingFetches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"testingFetches.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/adapters/testingFetches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAMhE,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,cAAc,CAwBtF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingFetches.js","sourceRoot":"","sources":["../../../../src/server/internal/adapters/testingFetches.ts"],"names":[],"mappings":"AAEA,2IAA2I;AAC3I,MAAM,KAAK,GAAG,gDAAgD,CAAC;AAC/D,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAO1D,MAAM,UAAU,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"testingFetches.js","sourceRoot":"","sources":["../../../../src/server/internal/adapters/testingFetches.ts"],"names":[],"mappings":"AAEA,2IAA2I;AAC3I,MAAM,KAAK,GAAG,gDAAgD,CAAC;AAC/D,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAO1D,MAAM,UAAU,cAAc,CAAC,EAAkB,EAAE,OAAmB;IACrE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,MAAkB,EAAE,EAAE;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5C,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC;YACJ,OAAO,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC,CAAC;IACF,OAAO;QACN,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACvC,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM;KAClG,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
-
import type { PgBossClient } from "#server/client.ts";
|
|
3
2
|
import type { WorkerJob } from "#server/job.ts";
|
|
4
3
|
export declare const deferredAttempt: unique symbol;
|
|
5
|
-
export declare const deferralObservers: WeakMap<PgBossClient, () => void>;
|
|
6
4
|
export declare const STATELY_DEFERRAL_POLICY = "effect-stately-deferred";
|
|
7
5
|
export declare const Deferral: Schema.Struct<{
|
|
8
6
|
readonly at: Schema.String;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferral.d.ts","sourceRoot":"","sources":["../../../src/server/internal/deferral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"deferral.d.ts","sourceRoot":"","sources":["../../../src/server/internal/deferral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,eAAO,MAAM,eAAe,eAA4B,CAAC;AACzD,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE,eAAO,MAAM,QAAQ;;;EAGnB,CAAC;AAIH,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC;;;cAGjD"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
2
|
export const deferredAttempt = Symbol("deferredAttempt");
|
|
3
|
-
export const deferralObservers = new WeakMap();
|
|
4
3
|
export const STATELY_DEFERRAL_POLICY = "effect-stately-deferred";
|
|
5
4
|
export const Deferral = Schema.Struct({
|
|
6
5
|
at: Schema.String,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferral.js","sourceRoot":"","sources":["../../../src/server/internal/deferral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"deferral.js","sourceRoot":"","sources":["../../../src/server/internal/deferral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEjE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AAExD,MAAM,UAAU,UAAU,CAAC,GAAuB;IACjD,MAAM,MAAM,GAAY,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC"}
|
|
@@ -16,13 +16,8 @@ declare const JobEngine_base: Context.ServiceClass<JobEngine, "@shivaedev/jobs/J
|
|
|
16
16
|
}>;
|
|
17
17
|
export declare class JobEngine extends JobEngine_base {
|
|
18
18
|
}
|
|
19
|
-
export interface TestingSettlements {
|
|
20
|
-
readonly close: Effect.Effect<void>;
|
|
21
|
-
readonly watch: (name: string) => Effect.Effect<void, PgBossTestingError>;
|
|
22
|
-
}
|
|
23
19
|
declare const TestingEngine_base: Context.ServiceClass<TestingEngine, "@shivaedev/jobs/TestingEngine", {
|
|
24
20
|
readonly expireAttempt: (job: JobAttempt, cause?: "expiry" | "heartbeat") => Effect.Effect<void, PgBossTestingError>;
|
|
25
|
-
readonly observeSettlements: (settled: (name: string) => void) => Effect.Effect<TestingSettlements>;
|
|
26
21
|
}>;
|
|
27
22
|
export declare class TestingEngine extends TestingEngine_base {
|
|
28
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/server/internal/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3F,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;AACvE,MAAM,MAAM,OAAO,GAAG,kBAAkB,GAAG,YAAY,CAAC;;qBAKrC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,WAAW,CAAC;oBACjF,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;uBAC5D,CAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,KAAK,EAAE,MAAM,KACT,MAAM,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,EAAE,WAAW,CAAC;6BAC1B,CACxB,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE,WAAW,CAAC;;AAhB5F,qBAAa,SAAU,SAAQ,cAkBC;CAAG
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/server/internal/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3F,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;AACvE,MAAM,MAAM,OAAO,GAAG,kBAAkB,GAAG,YAAY,CAAC;;qBAKrC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,WAAW,CAAC;oBACjF,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;uBAC5D,CAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,KAAK,EAAE,MAAM,KACT,MAAM,CAAC,MAAM,CAAC,SAAS,OAAO,EAAE,EAAE,WAAW,CAAC;6BAC1B,CACxB,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE,WAAW,CAAC;;AAhB5F,qBAAa,SAAU,SAAQ,cAkBC;CAAG;;4BAKT,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC;;AAHtH,qBAAa,aAAc,SAAQ,kBAKC;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/server/internal/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAS9C,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,OAAO,EAkB3C,CAAC,2BAA2B,CAAC;CAAG;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/server/internal/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAS9C,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,OAAO,EAkB3C,CAAC,2BAA2B,CAAC;CAAG;AAEnC,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAK/C,CAAC,+BAA+B,CAAC;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enqueueFor.d.ts","sourceRoot":"","sources":["../../../src/server/internal/enqueueFor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"enqueueFor.d.ts","sourceRoot":"","sources":["../../../src/server/internal/enqueueFor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYxD,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAuBzE"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { Effect, Option, Redacted, Schema } from "effect";
|
|
2
|
+
import { payloadJobId, payloadKey } from "#server/adapters/payloadIdentity.ts";
|
|
2
3
|
import { transactionDb } from "#server/adapters/transactionDb.ts";
|
|
3
4
|
import { PgBossPayloadError, toPgBossError } from "#server/error.ts";
|
|
4
5
|
import { capturePayload } from "#server/internal/tracing.ts";
|
|
6
|
+
function identityOptions(queue, payload, options) {
|
|
7
|
+
return queue.id === undefined && queue.key === undefined
|
|
8
|
+
? options
|
|
9
|
+
: {
|
|
10
|
+
...options,
|
|
11
|
+
...(queue.id === undefined ? {} : { id: payloadJobId(queue.name, queue.id, payload) }),
|
|
12
|
+
...(queue.key === undefined ? {} : { singletonKey: payloadKey(queue.key, payload) }),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
5
15
|
export function enqueueFor(client) {
|
|
6
16
|
return (queue, payload, options) => Effect.gen(function* () {
|
|
7
17
|
const encoded = yield* Schema.encodeUnknownEffect(Schema.toCodecJson(queue.schema))(payload).pipe(Effect.mapError((error) => new PgBossPayloadError({ direction: "encode", original: Redacted.make(error), queue: queue.name })));
|
|
@@ -14,7 +24,7 @@ export function enqueueFor(client) {
|
|
|
14
24
|
}
|
|
15
25
|
const data = yield* capturePayload(encoded);
|
|
16
26
|
const db = yield* transactionDb;
|
|
17
|
-
const sendOptions = queue
|
|
27
|
+
const sendOptions = identityOptions(queue, payload, options);
|
|
18
28
|
const send = Effect.tryPromise({
|
|
19
29
|
catch: (error) => toPgBossError("enqueue", error, queue.name),
|
|
20
30
|
try: () => client.send(queue.name, data, db === undefined ? sendOptions : { ...sendOptions, db }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enqueueFor.js","sourceRoot":"","sources":["../../../src/server/internal/enqueueFor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"enqueueFor.js","sourceRoot":"","sources":["../../../src/server/internal/enqueueFor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobStorePlans.d.ts","sourceRoot":"","sources":["../../../src/server/internal/jobStorePlans.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jobStorePlans.d.ts","sourceRoot":"","sources":["../../../src/server/internal/jobStorePlans.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE/D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { inspectionPlan } from "#server/adapters/inspectionPlan.ts";
|
|
1
2
|
import { deadLetterResolutionPlan } from "#server/internal/deadLetterResolutionPlan.ts";
|
|
2
3
|
import { deferralStorePlan } from "#server/internal/deferralStorePlan.ts";
|
|
3
4
|
export function jobStorePlans(schema) {
|
|
4
|
-
return [deferralStorePlan(schema), deadLetterResolutionPlan(schema)];
|
|
5
|
+
return [deferralStorePlan(schema), deadLetterResolutionPlan(schema), inspectionPlan(schema)];
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=jobStorePlans.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobStorePlans.js","sourceRoot":"","sources":["../../../src/server/internal/jobStorePlans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,MAAM,UAAU,aAAa,CAAC,MAAc;IAC3C,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"jobStorePlans.js","sourceRoot":"","sources":["../../../src/server/internal/jobStorePlans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,MAAM,UAAU,aAAa,CAAC,MAAc;IAC3C,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeService.d.ts","sourceRoot":"","sources":["../../../src/server/internal/makeService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"makeService.d.ts","sourceRoot":"","sources":["../../../src/server/internal/makeService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,eAAO,MAAM,WAAW,kHAmBtB,CAAC"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import {
|
|
2
|
+
import { inspection } from "#server/adapters/inspection.ts";
|
|
3
3
|
import { JobEngine } from "#server/internal/engine.ts";
|
|
4
4
|
import { enqueueFor } from "#server/internal/enqueueFor.ts";
|
|
5
|
-
import { healthFor } from "#server/internal/healthFor.ts";
|
|
6
5
|
import { jobControl } from "#server/internal/jobControl.ts";
|
|
7
|
-
import { jobListings } from "#server/internal/jobListings.ts";
|
|
8
6
|
export const makeService = Effect.fnUntraced(function* (client, names, schema = "pgboss") {
|
|
9
7
|
const engine = yield* JobEngine;
|
|
8
|
+
const reads = yield* inspection(client, schema);
|
|
10
9
|
return {
|
|
11
|
-
counts: (queue) =>
|
|
10
|
+
counts: (queue) => reads.counts(queue),
|
|
11
|
+
deadLetteredJobs: reads.deadLetteredJobs,
|
|
12
12
|
deleteQueue: engine.deleteQueue,
|
|
13
|
-
...(yield* jobListings),
|
|
14
13
|
enqueue: enqueueFor(client),
|
|
14
|
+
failedJobs: reads.failedJobs,
|
|
15
|
+
inspection: () => Effect.succeed(reads),
|
|
15
16
|
...(yield* jobControl),
|
|
16
|
-
health: (queues) =>
|
|
17
|
+
health: (queues) => reads.health(queues ?? names.map((name) => ({ name }))),
|
|
17
18
|
refreshQueueStats: engine.refreshQueueStats,
|
|
18
19
|
unschedule: engine.unschedule,
|
|
19
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeService.js","sourceRoot":"","sources":["../../../src/server/internal/makeService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"makeService.js","sourceRoot":"","sources":["../../../src/server/internal/makeService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EACrD,MAAoB,EACpB,KAAwB,EACxB,MAAM,GAAG,QAAQ;IAEjB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO;QACN,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC;QAC3B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;QACtB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,UAAU,EAAE,MAAM,CAAC,UAAU;KAC7B,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/server/internal/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAoB,eAAe,EAAqE,MAAM,uBAAuB,CAAC;AAClJ,OAAO,EAAE,uBAAuB,EAAiB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/server/internal/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAoB,eAAe,EAAqE,MAAM,uBAAuB,CAAC;AAClJ,OAAO,EAAE,uBAAuB,EAAiB,MAAM,kBAAkB,CAAC;AAc1E,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,eAAe,GAAG,MAAM,CAEtE;AAkED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,MAAM,EAAE,CAM9F;AAED,eAAO,MAAM,YAAY,GAAgC,CAAC,kUAsBxD,CAAC"}
|
|
@@ -4,7 +4,6 @@ import { workerDiagnostics } from "#server/adapters/workerDiagnostics.ts";
|
|
|
4
4
|
import { PgBossQueueOptionsError, toPgBossError } from "#server/error.ts";
|
|
5
5
|
import { ensureQueue } from "#server/internal/ensureQueue.ts";
|
|
6
6
|
import { runQueueWorker } from "#server/internal/runQueueWorker.ts";
|
|
7
|
-
import { registerTestingQueue } from "#server/internal/testingRegistrations.ts";
|
|
8
7
|
function registrationDefinition(registration) {
|
|
9
8
|
if (registration._tag === "QueueDefinition") {
|
|
10
9
|
return registration;
|
|
@@ -55,9 +54,6 @@ export const registerJobs = Effect.fnUntraced(function* (client, registrations,
|
|
|
55
54
|
const scope = yield* Scope.fork(yield* Effect.scope, "parallel");
|
|
56
55
|
yield* Effect.try({ catch: (error) => toPgBossError("register", error), try: () => registrationNames(registrations) });
|
|
57
56
|
yield* prepareQueues(client, registrations, replaceWorkers);
|
|
58
|
-
for (const registration of registrations) {
|
|
59
|
-
registerTestingQueue(client, registrationName(registration));
|
|
60
|
-
}
|
|
61
57
|
if (!startWorkers) {
|
|
62
58
|
return;
|
|
63
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/server/internal/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAI1E,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/server/internal/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import type { EngineClient } from "#server/engineClient.ts";
|
|
3
2
|
import type { PgBossTestingError } from "#server/error.ts";
|
|
3
|
+
import type { PgBossInspectionService } from "#server/inspection.ts";
|
|
4
4
|
export interface TestingBatch {
|
|
5
|
+
readonly jobs: ReadonlyMap<string, number>;
|
|
5
6
|
readonly name: string;
|
|
6
7
|
settled: boolean;
|
|
7
8
|
}
|
|
@@ -9,8 +10,8 @@ export interface TestingWork {
|
|
|
9
10
|
readonly batches: Set<TestingBatch>;
|
|
10
11
|
readonly queues: Set<string>;
|
|
11
12
|
}
|
|
12
|
-
export declare function testingIdle(
|
|
13
|
+
export declare function testingIdle(inspection: () => PgBossInspectionService, work: TestingWork, signal: {
|
|
13
14
|
readonly revision: Effect.Effect<number>;
|
|
14
15
|
readonly waitForChange: (after: number) => Effect.Effect<number>;
|
|
15
|
-
}): Effect.Effect<void, PgBossTestingError>;
|
|
16
|
+
}, wake?: Effect.Effect<void>): Effect.Effect<void, PgBossTestingError>;
|
|
16
17
|
//# sourceMappingURL=testingIdle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingIdle.d.ts","sourceRoot":"","sources":["../../../src/server/internal/testingIdle.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"testingIdle.d.ts","sourceRoot":"","sources":["../../../src/server/internal/testingIdle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGrE,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,wBAAgB,WAAW,CAC1B,UAAU,EAAE,MAAM,uBAAuB,EACzC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;CAAE,EACtH,IAAI,GAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAe,GACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAczC"}
|
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
export function testingIdle(client, schema, work, signal) {
|
|
6
|
-
const busy = testingOperation("waitForIdle", async () => {
|
|
7
|
-
const quoted = quotedSchema(schema());
|
|
8
|
-
const { rows } = await client()
|
|
9
|
-
.getDb()
|
|
10
|
-
.executeSql(`/* jobs testing idle */ SELECT EXISTS (
|
|
11
|
-
SELECT 1 FROM ${quoted}.job
|
|
12
|
-
WHERE name = ANY($1::text[]) AND (
|
|
13
|
-
(state < 'active' AND NOT blocked AND start_after <= ${quoted}.job_now())
|
|
14
|
-
OR state = 'active'
|
|
15
|
-
)
|
|
16
|
-
) AS busy`, [[...work.queues]]);
|
|
17
|
-
return (await Schema.decodeUnknownPromise(Busy)(rows[0])).busy;
|
|
18
|
-
});
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { testingInspection } from "#server/internal/testingOperation.ts";
|
|
3
|
+
export function testingIdle(inspection, work, signal, wake = Effect.void) {
|
|
4
|
+
const busy = Effect.suspend(() => testingInspection("waitForIdle", inspection().busy([...work.queues].map((name) => ({ name })))));
|
|
19
5
|
return Effect.gen(function* () {
|
|
20
6
|
while (true) {
|
|
21
7
|
const revision = yield* signal.revision;
|
|
@@ -24,14 +10,9 @@ export function testingIdle(client, schema, work, signal) {
|
|
|
24
10
|
if (work.queues.size === 0 || !(unsettled || (yield* busy))) {
|
|
25
11
|
return;
|
|
26
12
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
// Other clients have no local callback; PostgreSQL remains the source of idle state.
|
|
32
|
-
yield* Effect.raceFirst(signal.waitForChange(revision), Effect.sleep("50 millis"));
|
|
33
|
-
}
|
|
13
|
+
yield* wake;
|
|
14
|
+
yield* signal.waitForChange(revision);
|
|
34
15
|
}
|
|
35
|
-
})
|
|
16
|
+
});
|
|
36
17
|
}
|
|
37
18
|
//# sourceMappingURL=testingIdle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingIdle.js","sourceRoot":"","sources":["../../../src/server/internal/testingIdle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"testingIdle.js","sourceRoot":"","sources":["../../../src/server/internal/testingIdle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAazE,MAAM,UAAU,WAAW,CAC1B,UAAyC,EACzC,IAAiB,EACjB,MAAsH,EACtH,IAAI,GAAwB,MAAM,CAAC,IAAI;IAEvC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnI,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1B,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YACxC,oGAAoG;YACpG,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC7D,OAAO;YACR,CAAC;YACD,KAAK,CAAC,CAAC,IAAI,CAAC;YACZ,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { PgBossError, PgBossTestingError } from "#server/error.ts";
|
|
3
|
+
export declare function testingOperation<A>(operation: string, run: () => Promise<A>, queue?: string): Effect.Effect<A, PgBossTestingError, never>;
|
|
4
|
+
export declare function testingInspection<A, E, R>(operation: string, effect: Effect.Effect<A, E | PgBossError, R>, queue?: string): Effect.Effect<A, PgBossTestingError | Exclude<E, PgBossError>, R>;
|
|
5
|
+
//# sourceMappingURL=testingOperation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingOperation.d.ts","sourceRoot":"","sources":["../../../src/server/internal/testingOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,+CAK3F;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,qEAOzH"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Effect, Redacted } from "effect";
|
|
2
|
+
import { PgBossError, PgBossTestingError } from "#server/error.ts";
|
|
3
|
+
export function testingOperation(operation, run, queue) {
|
|
4
|
+
return Effect.tryPromise({
|
|
5
|
+
catch: (original) => new PgBossTestingError({ operation, original: Redacted.make(original), queue }),
|
|
6
|
+
try: run,
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export function testingInspection(operation, effect, queue) {
|
|
10
|
+
return effect.pipe(Effect.catchIf((error) => error instanceof PgBossError, (error) => Effect.fail(new PgBossTestingError({ operation, original: error.original, queue: queue ?? error.queue }))));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=testingOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingOperation.js","sourceRoot":"","sources":["../../../src/server/internal/testingOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,MAAM,UAAU,gBAAgB,CAAI,SAAiB,EAAE,GAAqB,EAAE,KAAc;IAC3F,OAAO,MAAM,CAAC,UAAU,CAAC;QACxB,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QACpG,GAAG,EAAE,GAAG;KACR,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAU,SAAiB,EAAE,MAA4C,EAAE,KAAc;IACzH,OAAO,MAAM,CAAC,IAAI,CACjB,MAAM,CAAC,OAAO,CACb,CAAC,KAAK,EAAwB,EAAE,CAAC,KAAK,YAAY,WAAW,EAC7D,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CACpH,CACD,CAAC;AACH,CAAC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { PgBossClient } from "#server/client.ts";
|
|
1
3
|
import type { ScheduleDefinition } from "#server/definition.ts";
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
import { PgBossTestingError } from "#server/error.ts";
|
|
5
|
+
import type { PgBossInspectionService } from "#server/inspection.ts";
|
|
6
|
+
export declare function testingSchedules(client: () => PgBossClient, inspection: () => PgBossInspectionService): {
|
|
7
|
+
schedules: () => Effect.Effect<{
|
|
5
8
|
cron: string;
|
|
6
9
|
name: string;
|
|
7
10
|
timezone: string;
|
|
8
|
-
}[],
|
|
9
|
-
trigger: (schedule: Pick<ScheduleDefinition, "name" | "scheduleOptions">) =>
|
|
11
|
+
}[], PgBossTestingError, never>;
|
|
12
|
+
trigger: (schedule: Pick<ScheduleDefinition, "name" | "scheduleOptions">) => Effect.Effect<string | null, PgBossTestingError, never>;
|
|
10
13
|
};
|
|
11
14
|
//# sourceMappingURL=testingSchedules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingSchedules.d.ts","sourceRoot":"","sources":["../../../src/server/internal/testingSchedules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"testingSchedules.d.ts","sourceRoot":"","sources":["../../../src/server/internal/testingSchedules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGrE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB;IAEpG,SAAS;;;;;IAIT,OAAO,aAAa,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,iBAAiB,CAAC;EAqBzE"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Effect, Redacted } from "effect";
|
|
2
|
+
import { PgBossTestingError } from "#server/error.ts";
|
|
3
|
+
import { testingInspection, testingOperation } from "#server/internal/testingOperation.ts";
|
|
4
|
+
export function testingSchedules(client, inspection) {
|
|
3
5
|
return {
|
|
4
|
-
schedules: () =>
|
|
5
|
-
trigger: (schedule) =>
|
|
6
|
-
const [registered] =
|
|
6
|
+
schedules: () => Effect.suspend(() => testingInspection("schedules", inspection().schedules())).pipe(Effect.map((schedules) => schedules.map(({ name, cron, timezone }) => ({ cron, name, timezone })))),
|
|
7
|
+
trigger: (schedule) => Effect.gen(function* () {
|
|
8
|
+
const [registered] = yield* testingInspection("trigger", inspection().schedules(schedule.name, schedule.scheduleOptions.key ?? ""), schedule.name);
|
|
7
9
|
if (registered === undefined) {
|
|
8
|
-
|
|
10
|
+
return yield* new PgBossTestingError({
|
|
11
|
+
operation: "trigger",
|
|
12
|
+
original: Redacted.make(new Error("Schedule is not registered")),
|
|
13
|
+
queue: schedule.name,
|
|
14
|
+
});
|
|
9
15
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}, schedule.name),
|
|
16
|
+
return yield* testingOperation("trigger", () => client().send(registered.name, registered.data, { ...registered.options, startAfter: 0 }), schedule.name);
|
|
17
|
+
}),
|
|
13
18
|
};
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=testingSchedules.js.map
|