effect-mq 0.1.0 → 0.2.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/README.md +167 -22
- package/dist/Job.d.ts +67 -4
- package/dist/Job.d.ts.map +1 -1
- package/dist/Job.js +76 -3
- package/dist/Job.js.map +1 -1
- package/dist/JobStore.d.ts +174 -3
- package/dist/JobStore.d.ts.map +1 -1
- package/dist/JobStore.js +89 -1
- package/dist/JobStore.js.map +1 -1
- package/dist/MemoryJobStore.d.ts +37 -6
- package/dist/MemoryJobStore.d.ts.map +1 -1
- package/dist/MemoryJobStore.js +201 -25
- package/dist/MemoryJobStore.js.map +1 -1
- package/dist/Worker.d.ts +5 -1
- package/dist/Worker.d.ts.map +1 -1
- package/dist/Worker.js +116 -10
- package/dist/Worker.js.map +1 -1
- package/dist/{drizzle → drizzle-postgres}/DrizzleJobStore.d.ts +18 -2
- package/dist/drizzle-postgres/DrizzleJobStore.d.ts.map +1 -0
- package/dist/{drizzle → drizzle-postgres}/DrizzleJobStore.js +287 -40
- package/dist/drizzle-postgres/DrizzleJobStore.js.map +1 -0
- package/dist/drizzle-postgres/index.d.ts.map +1 -0
- package/dist/drizzle-postgres/index.js.map +1 -0
- package/dist/{drizzle → drizzle-postgres}/schema.d.ts +306 -4
- package/dist/drizzle-postgres/schema.d.ts.map +1 -0
- package/dist/{drizzle → drizzle-postgres}/schema.js +36 -2
- package/dist/drizzle-postgres/schema.js.map +1 -0
- package/dist/redis/RedisJobStore.d.ts +56 -0
- package/dist/redis/RedisJobStore.d.ts.map +1 -0
- package/dist/redis/RedisJobStore.js +385 -0
- package/dist/redis/RedisJobStore.js.map +1 -0
- package/dist/redis/index.d.ts +9 -0
- package/dist/redis/index.d.ts.map +1 -0
- package/dist/redis/index.js +9 -0
- package/dist/redis/index.js.map +1 -0
- package/dist/redis/scripts.d.ts +168 -0
- package/dist/redis/scripts.d.ts.map +1 -0
- package/dist/redis/scripts.js +755 -0
- package/dist/redis/scripts.js.map +1 -0
- package/dist/testing/conformance.d.ts.map +1 -1
- package/dist/testing/conformance.js +332 -3
- package/dist/testing/conformance.js.map +1 -1
- package/package.json +8 -4
- package/src/Job.ts +189 -5
- package/src/JobStore.ts +252 -4
- package/src/MemoryJobStore.ts +273 -26
- package/src/Worker.ts +152 -10
- package/src/{drizzle → drizzle-postgres}/DrizzleJobStore.ts +412 -40
- package/src/{drizzle → drizzle-postgres}/schema.ts +52 -3
- package/src/redis/RedisJobStore.ts +597 -0
- package/src/redis/index.ts +8 -0
- package/src/redis/scripts.ts +862 -0
- package/src/testing/conformance.ts +421 -3
- package/dist/drizzle/DrizzleJobStore.d.ts.map +0 -1
- package/dist/drizzle/DrizzleJobStore.js.map +0 -1
- package/dist/drizzle/index.d.ts.map +0 -1
- package/dist/drizzle/index.js.map +0 -1
- package/dist/drizzle/schema.d.ts.map +0 -1
- package/dist/drizzle/schema.js.map +0 -1
- /package/dist/{drizzle → drizzle-postgres}/index.d.ts +0 -0
- /package/dist/{drizzle → drizzle-postgres}/index.js +0 -0
- /package/src/{drizzle → drizzle-postgres}/index.ts +0 -0
package/dist/JobStore.d.ts
CHANGED
|
@@ -42,6 +42,18 @@ export type QueueName = Brand.Branded<string, "effect-mq/QueueName">;
|
|
|
42
42
|
* @since 0.1.0
|
|
43
43
|
*/
|
|
44
44
|
export declare const QueueName: Brand.Constructor<QueueName>;
|
|
45
|
+
/**
|
|
46
|
+
* The identifier of a repeatable-job schedule.
|
|
47
|
+
*
|
|
48
|
+
* @since 0.2.0
|
|
49
|
+
*/
|
|
50
|
+
export type ScheduleKey = Brand.Branded<string, "effect-mq/ScheduleKey">;
|
|
51
|
+
/**
|
|
52
|
+
* Brand a raw string as a `ScheduleKey`.
|
|
53
|
+
*
|
|
54
|
+
* @since 0.2.0
|
|
55
|
+
*/
|
|
56
|
+
export declare const ScheduleKey: Brand.Constructor<ScheduleKey>;
|
|
45
57
|
/**
|
|
46
58
|
* The lifecycle states of a job.
|
|
47
59
|
*
|
|
@@ -52,7 +64,7 @@ export declare const QueueName: Brand.Constructor<QueueName>;
|
|
|
52
64
|
*
|
|
53
65
|
* @since 0.1.0
|
|
54
66
|
*/
|
|
55
|
-
export type JobState = "waiting" | "delayed" | "active" | "completed" | "failed";
|
|
67
|
+
export type JobState = "waiting" | "delayed" | "active" | "completed" | "failed" | "cancelled";
|
|
56
68
|
/**
|
|
57
69
|
* Retry backoff policy, persisted on the job record so any worker can route
|
|
58
70
|
* retries consistently. Delay for attempt `n` (1-based):
|
|
@@ -95,7 +107,7 @@ export interface AttemptRecord {
|
|
|
95
107
|
readonly startedAt: number | undefined;
|
|
96
108
|
/** Ack/recovery time of this run (epoch millis). */
|
|
97
109
|
readonly finishedAt: number;
|
|
98
|
-
readonly outcome: "completed" | "retried" | "failed" | "stalled";
|
|
110
|
+
readonly outcome: "completed" | "retried" | "failed" | "stalled" | "cancelled";
|
|
99
111
|
/** Schema-encoded `Exit`; undefined for `stalled`. */
|
|
100
112
|
readonly exit: unknown;
|
|
101
113
|
}
|
|
@@ -122,6 +134,13 @@ export interface JobRecord {
|
|
|
122
134
|
readonly stalledCount: number;
|
|
123
135
|
readonly backoff: BackoffPolicy | undefined;
|
|
124
136
|
readonly keep: KeepPolicy | undefined;
|
|
137
|
+
/** Per-run execution time limit; the worker interrupts the handler past it. */
|
|
138
|
+
readonly timeoutMs: number | undefined;
|
|
139
|
+
/**
|
|
140
|
+
* Set by `cancel` on an active job; the owning worker interrupts the
|
|
141
|
+
* handler on its next heartbeat and acks `Cancelled`.
|
|
142
|
+
*/
|
|
143
|
+
readonly cancelRequested: boolean;
|
|
125
144
|
/** Epoch millis before which the job must not be claimed. */
|
|
126
145
|
readonly runAt: number;
|
|
127
146
|
readonly enqueuedAt: number;
|
|
@@ -150,8 +169,23 @@ export interface EnqueueRequest {
|
|
|
150
169
|
readonly attemptsMax: number;
|
|
151
170
|
readonly backoff: BackoffPolicy | undefined;
|
|
152
171
|
readonly keep: KeepPolicy | undefined;
|
|
172
|
+
readonly timeoutMs: number | undefined;
|
|
153
173
|
readonly delayMs: number;
|
|
154
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Generator for store-assigned job ids, used when `EnqueueRequest.id` is
|
|
177
|
+
* undefined (custom ids and idempotency keys always win, and schedule tick
|
|
178
|
+
* ids stay slot-deterministic). May be effectful (e.g. draw from Effect's
|
|
179
|
+
* `Random`). The store retries a bounded number of times when a generated id
|
|
180
|
+
* collides with an existing job, then fails the enqueue with
|
|
181
|
+
* `JobStoreError` — generators must have enough entropy that collisions are
|
|
182
|
+
* pathological, not routine.
|
|
183
|
+
*
|
|
184
|
+
* @example `({ name }) => \`${name}_${ulid()}\``
|
|
185
|
+
*
|
|
186
|
+
* @since 0.2.0
|
|
187
|
+
*/
|
|
188
|
+
export type IdGenerator = (request: EnqueueRequest) => string | Effect.Effect<string>;
|
|
155
189
|
/**
|
|
156
190
|
* @since 0.1.0
|
|
157
191
|
*/
|
|
@@ -206,6 +240,8 @@ export type AckOutcome = {
|
|
|
206
240
|
} | {
|
|
207
241
|
readonly _tag: "Fail";
|
|
208
242
|
readonly exit: unknown;
|
|
243
|
+
} | {
|
|
244
|
+
readonly _tag: "Cancelled";
|
|
209
245
|
};
|
|
210
246
|
/**
|
|
211
247
|
* Filters and pagination for `list`. Results are ordered newest-first
|
|
@@ -232,6 +268,43 @@ export interface ListResult {
|
|
|
232
268
|
/** Present when more items may exist; pass back via `ListOptions.cursor`. */
|
|
233
269
|
readonly cursor: string | undefined;
|
|
234
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* A repeatable-job schedule as persisted by the store. Exactly one of `cron`
|
|
273
|
+
* (with optional IANA `tz`) or `everyMs` is set. The payload is stored
|
|
274
|
+
* schema-encoded, like job payloads. `nextRunAt` is maintained by the worker
|
|
275
|
+
* sweep via `advanceSchedule`; ticks enqueue with the deterministic id
|
|
276
|
+
* `sched/<key>/<slot>`, so concurrent sweepers dedup naturally.
|
|
277
|
+
*
|
|
278
|
+
* @since 0.2.0
|
|
279
|
+
*/
|
|
280
|
+
export interface ScheduleRecord {
|
|
281
|
+
readonly key: ScheduleKey;
|
|
282
|
+
readonly jobName: string;
|
|
283
|
+
readonly queue: QueueName;
|
|
284
|
+
readonly cron: string | undefined;
|
|
285
|
+
readonly tz: string | undefined;
|
|
286
|
+
readonly everyMs: number | undefined;
|
|
287
|
+
readonly payload: unknown;
|
|
288
|
+
readonly metadata: Readonly<Record<string, string>>;
|
|
289
|
+
readonly priority: number;
|
|
290
|
+
readonly attemptsMax: number;
|
|
291
|
+
readonly backoff: BackoffPolicy | undefined;
|
|
292
|
+
readonly keep: KeepPolicy | undefined;
|
|
293
|
+
readonly timeoutMs: number | undefined;
|
|
294
|
+
/** Epoch millis of the next occurrence to enqueue. */
|
|
295
|
+
readonly nextRunAt: number;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Result of a heartbeat: locks that could not be extended (lost to stall
|
|
299
|
+
* recovery or another worker) and active jobs with a pending cancel request
|
|
300
|
+
* (the worker must interrupt them and ack `Cancelled`).
|
|
301
|
+
*
|
|
302
|
+
* @since 0.2.0
|
|
303
|
+
*/
|
|
304
|
+
export interface ExtendLocksResult {
|
|
305
|
+
readonly lost: ReadonlyArray<JobId>;
|
|
306
|
+
readonly cancelRequested: ReadonlyArray<JobId>;
|
|
307
|
+
}
|
|
235
308
|
declare const JobStoreError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
236
309
|
readonly _tag: "JobStoreError";
|
|
237
310
|
} & Readonly<A>;
|
|
@@ -251,6 +324,33 @@ export declare class JobStoreError extends JobStoreError_base<{
|
|
|
251
324
|
* @since 0.1.0
|
|
252
325
|
*/
|
|
253
326
|
export declare const isJobStoreError: (u: unknown) => u is JobStoreError;
|
|
327
|
+
/**
|
|
328
|
+
* Mark an error value as unrecoverable: when a handler fails with it, the
|
|
329
|
+
* worker skips the remaining retry budget and fails the job immediately. The
|
|
330
|
+
* error itself is returned unchanged, so typed error channels and schemas
|
|
331
|
+
* are unaffected. Also exported as `Job.unrecoverable`.
|
|
332
|
+
*
|
|
333
|
+
* Marking is identity-based, so it only works for object errors — a
|
|
334
|
+
* primitive (string/number) failure is returned unmarked and retries
|
|
335
|
+
* normally; use the definition-level `retryable` predicate for those.
|
|
336
|
+
*
|
|
337
|
+
* @since 0.2.0
|
|
338
|
+
*/
|
|
339
|
+
export declare const unrecoverable: <E>(error: E) => E;
|
|
340
|
+
/**
|
|
341
|
+
* Whether `unrecoverable` marked this value.
|
|
342
|
+
*
|
|
343
|
+
* @internal
|
|
344
|
+
*/
|
|
345
|
+
export declare const isMarkedUnrecoverable: (u: unknown) => boolean;
|
|
346
|
+
/**
|
|
347
|
+
* The next occurrence of a schedule strictly after `now`. `fromSlot` anchors
|
|
348
|
+
* `everyMs` schedules (occurrences stay on the `slot + k * every` grid).
|
|
349
|
+
* Returns undefined for an invalid cron expression.
|
|
350
|
+
*
|
|
351
|
+
* @internal
|
|
352
|
+
*/
|
|
353
|
+
export declare const nextOccurrence: (schedule: Pick<ScheduleRecord, "cron" | "tz" | "everyMs">, fromSlot: number, now: number) => number | undefined;
|
|
254
354
|
declare const LockLostError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
255
355
|
readonly _tag: "LockLostError";
|
|
256
356
|
} & Readonly<A>;
|
|
@@ -287,6 +387,44 @@ export declare class JobNotRetryableError extends JobNotRetryableError_base<{
|
|
|
287
387
|
readonly state: JobState;
|
|
288
388
|
}> {
|
|
289
389
|
}
|
|
390
|
+
declare const JobNotCancellableError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
391
|
+
readonly _tag: "JobNotCancellableError";
|
|
392
|
+
} & Readonly<A>;
|
|
393
|
+
/**
|
|
394
|
+
* `cancel` was called on a job that is already terminal.
|
|
395
|
+
*
|
|
396
|
+
* @since 0.2.0
|
|
397
|
+
*/
|
|
398
|
+
export declare class JobNotCancellableError extends JobNotCancellableError_base<{
|
|
399
|
+
readonly jobId: JobId;
|
|
400
|
+
readonly state: JobState;
|
|
401
|
+
}> {
|
|
402
|
+
}
|
|
403
|
+
declare const JobNotPromotableError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
404
|
+
readonly _tag: "JobNotPromotableError";
|
|
405
|
+
} & Readonly<A>;
|
|
406
|
+
/**
|
|
407
|
+
* `promote` was called on a job that is not in the `delayed` state.
|
|
408
|
+
*
|
|
409
|
+
* @since 0.2.0
|
|
410
|
+
*/
|
|
411
|
+
export declare class JobNotPromotableError extends JobNotPromotableError_base<{
|
|
412
|
+
readonly jobId: JobId;
|
|
413
|
+
readonly state: JobState;
|
|
414
|
+
}> {
|
|
415
|
+
}
|
|
416
|
+
declare const JobCancelledError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
417
|
+
readonly _tag: "JobCancelledError";
|
|
418
|
+
} & Readonly<A>;
|
|
419
|
+
/**
|
|
420
|
+
* Raised (as a defect) by `awaitResult` when the awaited job was cancelled.
|
|
421
|
+
*
|
|
422
|
+
* @since 0.2.0
|
|
423
|
+
*/
|
|
424
|
+
export declare class JobCancelledError extends JobCancelledError_base<{
|
|
425
|
+
readonly jobId: JobId;
|
|
426
|
+
}> {
|
|
427
|
+
}
|
|
290
428
|
/**
|
|
291
429
|
* The service shape every store implements.
|
|
292
430
|
*
|
|
@@ -323,7 +461,7 @@ export interface Service {
|
|
|
323
461
|
readonly extendLocks: (locks: ReadonlyArray<{
|
|
324
462
|
readonly id: JobId;
|
|
325
463
|
readonly token: string;
|
|
326
|
-
}>, durationMs: number) => Effect.Effect<
|
|
464
|
+
}>, durationMs: number) => Effect.Effect<ExtendLocksResult, JobStoreError>;
|
|
327
465
|
/**
|
|
328
466
|
* Sweep active jobs whose lock has expired. Each recovered job gets
|
|
329
467
|
* `stalledCount + 1` and a `stalled` ledger entry; jobs exceeding
|
|
@@ -354,6 +492,39 @@ export interface Service {
|
|
|
354
492
|
* attempts ledger is preserved and keeps numbering monotonically.
|
|
355
493
|
*/
|
|
356
494
|
readonly retry: (id: JobId) => Effect.Effect<void, JobStoreError | JobNotFoundError | JobNotRetryableError>;
|
|
495
|
+
/**
|
|
496
|
+
* Cancel a job. Waiting/delayed jobs become terminal (`cancelled`)
|
|
497
|
+
* immediately; active jobs get `cancelRequested` set, and the owning
|
|
498
|
+
* worker interrupts the handler on its next heartbeat. Terminal jobs fail
|
|
499
|
+
* with `JobNotCancellableError`.
|
|
500
|
+
*/
|
|
501
|
+
readonly cancel: (id: JobId) => Effect.Effect<void, JobStoreError | JobNotFoundError | JobNotCancellableError>;
|
|
502
|
+
/** Move a delayed job to `waiting` now. */
|
|
503
|
+
readonly promote: (id: JobId) => Effect.Effect<void, JobStoreError | JobNotFoundError | JobNotPromotableError>;
|
|
504
|
+
/**
|
|
505
|
+
* Durably pause a queue: claims return `Empty` until `resume` (delayed
|
|
506
|
+
* jobs still promote to `waiting`, they just aren't handed out). Affects
|
|
507
|
+
* every worker on the store.
|
|
508
|
+
*/
|
|
509
|
+
readonly pause: (queue: QueueName) => Effect.Effect<void, JobStoreError>;
|
|
510
|
+
/** Undo `pause` and wake idle workers. */
|
|
511
|
+
readonly resume: (queue: QueueName) => Effect.Effect<void, JobStoreError>;
|
|
512
|
+
readonly pausedQueues: () => Effect.Effect<ReadonlyArray<QueueName>, JobStoreError>;
|
|
513
|
+
/** Create or replace a repeatable-job schedule (keyed by `schedule.key`). */
|
|
514
|
+
readonly upsertSchedule: (schedule: ScheduleRecord) => Effect.Effect<void, JobStoreError>;
|
|
515
|
+
/** Remove a schedule. Returns false when the key does not exist. */
|
|
516
|
+
readonly removeSchedule: (key: ScheduleKey) => Effect.Effect<boolean, JobStoreError>;
|
|
517
|
+
readonly listSchedules: (options?: {
|
|
518
|
+
readonly jobName?: string | undefined;
|
|
519
|
+
readonly queue?: QueueName | undefined;
|
|
520
|
+
}) => Effect.Effect<ReadonlyArray<ScheduleRecord>, JobStoreError>;
|
|
521
|
+
/** Schedules whose `nextRunAt` is due (per the Effect `Clock`). */
|
|
522
|
+
readonly dueSchedules: () => Effect.Effect<ReadonlyArray<ScheduleRecord>, JobStoreError>;
|
|
523
|
+
/**
|
|
524
|
+
* Advance a schedule's `nextRunAt` from `expectedRunAt` to `nextRunAt`
|
|
525
|
+
* (conditional, so concurrent sweepers cannot regress it).
|
|
526
|
+
*/
|
|
527
|
+
readonly advanceSchedule: (key: ScheduleKey, expectedRunAt: number, nextRunAt: number) => Effect.Effect<void, JobStoreError>;
|
|
357
528
|
readonly counts: (queue?: QueueName) => Effect.Effect<Record<JobState, number>, JobStoreError>;
|
|
358
529
|
/** Remove a job (and its ledger). Refuses (returns false) when active. */
|
|
359
530
|
readonly remove: (id: JobId) => Effect.Effect<boolean, JobStoreError>;
|
package/dist/JobStore.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobStore.d.ts","sourceRoot":"","sources":["../src/JobStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JobStore.d.ts","sourceRoot":"","sources":["../src/JobStore.ts"],"names":[],"mappings":"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"}
|
package/dist/JobStore.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* @since 0.1.0
|
|
18
18
|
*/
|
|
19
|
-
import { Brand, Context, Data, Predicate } from "effect";
|
|
19
|
+
import { Brand, Context, Cron, Data, Predicate, Result } from "effect";
|
|
20
20
|
/**
|
|
21
21
|
* Brand a raw string as a `JobId`.
|
|
22
22
|
*
|
|
@@ -29,6 +29,12 @@ export const JobId = Brand.nominal();
|
|
|
29
29
|
* @since 0.1.0
|
|
30
30
|
*/
|
|
31
31
|
export const QueueName = Brand.nominal();
|
|
32
|
+
/**
|
|
33
|
+
* Brand a raw string as a `ScheduleKey`.
|
|
34
|
+
*
|
|
35
|
+
* @since 0.2.0
|
|
36
|
+
*/
|
|
37
|
+
export const ScheduleKey = Brand.nominal();
|
|
32
38
|
/**
|
|
33
39
|
* A transient or fatal driver error (connection loss, serialization, etc.).
|
|
34
40
|
*
|
|
@@ -43,6 +49,67 @@ export class JobStoreError extends Data.TaggedError("JobStoreError") {
|
|
|
43
49
|
*/
|
|
44
50
|
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- a type guard IS the boundary parser; `unknown` input is its purpose
|
|
45
51
|
export const isJobStoreError = (u) => Predicate.hasProperty(u, "_tag") && u._tag === "JobStoreError";
|
|
52
|
+
// Identity-based marking (WeakSet, works on frozen error instances) so the
|
|
53
|
+
// error keeps its declared type and schema round-trip untouched.
|
|
54
|
+
const unrecoverableRegistry = new WeakSet();
|
|
55
|
+
/**
|
|
56
|
+
* Mark an error value as unrecoverable: when a handler fails with it, the
|
|
57
|
+
* worker skips the remaining retry budget and fails the job immediately. The
|
|
58
|
+
* error itself is returned unchanged, so typed error channels and schemas
|
|
59
|
+
* are unaffected. Also exported as `Job.unrecoverable`.
|
|
60
|
+
*
|
|
61
|
+
* Marking is identity-based, so it only works for object errors — a
|
|
62
|
+
* primitive (string/number) failure is returned unmarked and retries
|
|
63
|
+
* normally; use the definition-level `retryable` predicate for those.
|
|
64
|
+
*
|
|
65
|
+
* @since 0.2.0
|
|
66
|
+
*/
|
|
67
|
+
export const unrecoverable = (error) => {
|
|
68
|
+
if (Object(error) === error) {
|
|
69
|
+
// SAFETY: `Object(x) === x` is true exactly for object values, which is
|
|
70
|
+
// what WeakSet membership requires.
|
|
71
|
+
unrecoverableRegistry.add(error);
|
|
72
|
+
}
|
|
73
|
+
return error;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Whether `unrecoverable` marked this value.
|
|
77
|
+
*
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- boundary classifier over arbitrary error values
|
|
81
|
+
export const isMarkedUnrecoverable = (u) =>
|
|
82
|
+
// SAFETY: `Object(u) === u` short-circuits to false for primitives, so the
|
|
83
|
+
// assertion only ever passes object values to the WeakSet.
|
|
84
|
+
Object(u) === u && unrecoverableRegistry.has(u);
|
|
85
|
+
/**
|
|
86
|
+
* The next occurrence of a schedule strictly after `now`. `fromSlot` anchors
|
|
87
|
+
* `everyMs` schedules (occurrences stay on the `slot + k * every` grid).
|
|
88
|
+
* Returns undefined for an invalid cron expression.
|
|
89
|
+
*
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
export const nextOccurrence = (schedule, fromSlot, now) => {
|
|
93
|
+
if (schedule.cron !== undefined) {
|
|
94
|
+
const parsed = Cron.parse(schedule.cron, schedule.tz);
|
|
95
|
+
if (Result.isFailure(parsed))
|
|
96
|
+
return undefined;
|
|
97
|
+
// Cron.next throws for parseable-but-unsatisfiable expressions (e.g.
|
|
98
|
+
// "0 0 30 2 *"); treat those as invalid rather than defecting the sweep.
|
|
99
|
+
try {
|
|
100
|
+
return Cron.next(parsed.success, new Date(Math.max(fromSlot, now))).getTime();
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (schedule.everyMs !== undefined && schedule.everyMs > 0) {
|
|
107
|
+
const behind = Math.max(0, now - fromSlot);
|
|
108
|
+
const steps = Math.floor(behind / schedule.everyMs) + 1;
|
|
109
|
+
return fromSlot + steps * schedule.everyMs;
|
|
110
|
+
}
|
|
111
|
+
return undefined;
|
|
112
|
+
};
|
|
46
113
|
/**
|
|
47
114
|
* The presented lock token no longer owns the job (it stalled and was
|
|
48
115
|
* recovered, or another worker claimed it).
|
|
@@ -63,6 +130,27 @@ export class JobNotFoundError extends Data.TaggedError("JobNotFoundError") {
|
|
|
63
130
|
*/
|
|
64
131
|
export class JobNotRetryableError extends Data.TaggedError("JobNotRetryableError") {
|
|
65
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* `cancel` was called on a job that is already terminal.
|
|
135
|
+
*
|
|
136
|
+
* @since 0.2.0
|
|
137
|
+
*/
|
|
138
|
+
export class JobNotCancellableError extends Data.TaggedError("JobNotCancellableError") {
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* `promote` was called on a job that is not in the `delayed` state.
|
|
142
|
+
*
|
|
143
|
+
* @since 0.2.0
|
|
144
|
+
*/
|
|
145
|
+
export class JobNotPromotableError extends Data.TaggedError("JobNotPromotableError") {
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Raised (as a defect) by `awaitResult` when the awaited job was cancelled.
|
|
149
|
+
*
|
|
150
|
+
* @since 0.2.0
|
|
151
|
+
*/
|
|
152
|
+
export class JobCancelledError extends Data.TaggedError("JobCancelledError") {
|
|
153
|
+
}
|
|
66
154
|
/**
|
|
67
155
|
* The default store key. Jobs without an explicit `store` binding use this.
|
|
68
156
|
*
|
package/dist/JobStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobStore.js","sourceRoot":"","sources":["../src/JobStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAA4B,SAAS,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"JobStore.js","sourceRoot":"","sources":["../src/JobStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAA4B,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAUhG;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAA6B,KAAK,CAAC,OAAO,EAAS,CAAA;AASrE;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAiC,KAAK,CAAC,OAAO,EAAa,CAAA;AASjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmC,KAAK,CAAC,OAAO,EAAe,CAAA;AA2QvF;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAGjE;CAAG;AAEL;;;;GAIG;AACH,kIAAkI;AAClI,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAU,EAAsB,EAAE,CAChE,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,CAAA;AAEhE,2EAA2E;AAC3E,iEAAiE;AACjE,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAU,CAAA;AAEnD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,KAAQ,EAAK,EAAE;IAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QAC5B,wEAAwE;QACxE,oCAAoC;QACpC,qBAAqB,CAAC,GAAG,CAAC,KAAe,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;;GAIG;AACH,8GAA8G;AAC9G,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAU,EAAW,EAAE;AAC3D,2EAA2E;AAC3E,2DAA2D;AAC3D,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAW,CAAC,CAAA;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,QAAyD,EACzD,QAAgB,EAChB,GAAW,EACS,EAAE;IACtB,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;QACrD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAA;QAC9C,qEAAqE;QACrE,yEAAyE;QACzE,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QAC/E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACvD,OAAO,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAA;IAC5C,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAGD;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAEjE;CAAG;AAEL;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAEvE;CAAG;AAEL;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAG/E;CAAG;AAEL;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAGnF;CAAG;AAEL;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAGjF;CAAG;AAEL;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAEzE;CAAG;AAoLL;;;;GAIG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO,CAAC,OAAO,EAAqB,CAChE,oBAAoB,CACrB;CAAG;AAYJ;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,IAAU,EACyB,EAAE,CACrC,OAAO,CAAC,OAAO,CAAuB,sBAAsB,IAAI,EAAE,CAAC,CAAA"}
|
package/dist/MemoryJobStore.d.ts
CHANGED
|
@@ -10,25 +10,56 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @since 0.1.0
|
|
12
12
|
*/
|
|
13
|
-
import { type Context, Effect, Layer } from "effect";
|
|
14
|
-
import { JobStore, type Service } from "./JobStore.ts";
|
|
13
|
+
import { type Context, Duration, Effect, Layer, type Scope } from "effect";
|
|
14
|
+
import { type IdGenerator, JobStore, type Service } from "./JobStore.ts";
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* @since 0.2.0
|
|
17
|
+
*/
|
|
18
|
+
export interface MemoryJobStoreOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Store-level retention ceiling: terminal records (completed, failed,
|
|
21
|
+
* cancelled) older than this are removed by a periodic sweep. Per-job
|
|
22
|
+
* `keep` policies may only be stricter.
|
|
23
|
+
*/
|
|
24
|
+
readonly historyTtl?: Duration.Input | undefined;
|
|
25
|
+
/** Sweep cadence (default 1 minute). */
|
|
26
|
+
readonly historySweepInterval?: Duration.Input | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Generator for store-assigned job ids (e.g. `() => \`job_${ulid()}\``).
|
|
29
|
+
* Default: a `j-<n>` counter. See `JobStore.IdGenerator`.
|
|
30
|
+
*/
|
|
31
|
+
readonly idGenerator?: IdGenerator | undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Build a fresh in-memory `JobStore` implementation (no history sweeper —
|
|
35
|
+
* use `makeWith` for `historyTtl` support).
|
|
17
36
|
*
|
|
18
37
|
* @since 0.1.0
|
|
19
38
|
*/
|
|
20
39
|
export declare const make: Effect.Effect<Service>;
|
|
21
40
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
41
|
+
* Build a fresh in-memory `JobStore` with options; the history sweeper (when
|
|
42
|
+
* configured) lives in the surrounding `Scope`.
|
|
43
|
+
*
|
|
44
|
+
* @since 0.2.0
|
|
45
|
+
*/
|
|
46
|
+
export declare const makeWith: (options?: MemoryJobStoreOptions | undefined) => Effect.Effect<Service, never, Scope.Scope>;
|
|
47
|
+
/**
|
|
48
|
+
* A fresh in-memory `JobStore` layer.
|
|
24
49
|
*
|
|
25
50
|
* @since 0.1.0
|
|
26
51
|
*/
|
|
27
52
|
export declare const layer: Layer.Layer<JobStore>;
|
|
53
|
+
/**
|
|
54
|
+
* An in-memory layer with options (e.g. `historyTtl`).
|
|
55
|
+
*
|
|
56
|
+
* @since 0.2.0
|
|
57
|
+
*/
|
|
58
|
+
export declare const layerWith: (options?: MemoryJobStoreOptions | undefined) => Layer.Layer<JobStore>;
|
|
28
59
|
/**
|
|
29
60
|
* An in-memory layer for a specific store key.
|
|
30
61
|
*
|
|
31
62
|
* @since 0.1.0
|
|
32
63
|
*/
|
|
33
|
-
export declare const layerFor: <Id>(store: Context.Key<Id, Service
|
|
64
|
+
export declare const layerFor: <Id>(store: Context.Key<Id, Service>, options?: MemoryJobStoreOptions | undefined) => Layer.Layer<Id>;
|
|
34
65
|
//# sourceMappingURL=MemoryJobStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryJobStore.d.ts","sourceRoot":"","sources":["../src/MemoryJobStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAS,KAAK,OAAO,EAAY,MAAM,EAAQ,KAAK,EAAU,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"MemoryJobStore.d.ts","sourceRoot":"","sources":["../src/MemoryJobStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAS,KAAK,OAAO,EAAY,QAAQ,EAAE,MAAM,EAAQ,KAAK,EAAU,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAA;AACzG,OAAO,EAKL,KAAK,WAAW,EAQhB,QAAQ,EAOR,KAAK,OAAO,EACb,MAAM,eAAe,CAAA;AA6lBtB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IAChD,wCAAwC;IACxC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IAC1D;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAC/C;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAgD,CAAA;AAExF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,aACT,qBAAqB,GAAG,SAAS,KAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAaxC,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAsC,CAAA;AAE9E;;;;GAIG;AACH,eAAO,MAAM,SAAS,aACV,qBAAqB,GAAG,SAAS,KAC1C,KAAK,CAAC,KAAK,CAAC,QAAQ,CAA8C,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAClB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,YACrB,qBAAqB,GAAG,SAAS,KAC1C,KAAK,CAAC,KAAK,CAAC,EAAE,CAA2C,CAAA"}
|