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.
Files changed (62) hide show
  1. package/README.md +167 -22
  2. package/dist/Job.d.ts +67 -4
  3. package/dist/Job.d.ts.map +1 -1
  4. package/dist/Job.js +76 -3
  5. package/dist/Job.js.map +1 -1
  6. package/dist/JobStore.d.ts +174 -3
  7. package/dist/JobStore.d.ts.map +1 -1
  8. package/dist/JobStore.js +89 -1
  9. package/dist/JobStore.js.map +1 -1
  10. package/dist/MemoryJobStore.d.ts +37 -6
  11. package/dist/MemoryJobStore.d.ts.map +1 -1
  12. package/dist/MemoryJobStore.js +201 -25
  13. package/dist/MemoryJobStore.js.map +1 -1
  14. package/dist/Worker.d.ts +5 -1
  15. package/dist/Worker.d.ts.map +1 -1
  16. package/dist/Worker.js +116 -10
  17. package/dist/Worker.js.map +1 -1
  18. package/dist/{drizzle → drizzle-postgres}/DrizzleJobStore.d.ts +18 -2
  19. package/dist/drizzle-postgres/DrizzleJobStore.d.ts.map +1 -0
  20. package/dist/{drizzle → drizzle-postgres}/DrizzleJobStore.js +287 -40
  21. package/dist/drizzle-postgres/DrizzleJobStore.js.map +1 -0
  22. package/dist/drizzle-postgres/index.d.ts.map +1 -0
  23. package/dist/drizzle-postgres/index.js.map +1 -0
  24. package/dist/{drizzle → drizzle-postgres}/schema.d.ts +306 -4
  25. package/dist/drizzle-postgres/schema.d.ts.map +1 -0
  26. package/dist/{drizzle → drizzle-postgres}/schema.js +36 -2
  27. package/dist/drizzle-postgres/schema.js.map +1 -0
  28. package/dist/redis/RedisJobStore.d.ts +56 -0
  29. package/dist/redis/RedisJobStore.d.ts.map +1 -0
  30. package/dist/redis/RedisJobStore.js +385 -0
  31. package/dist/redis/RedisJobStore.js.map +1 -0
  32. package/dist/redis/index.d.ts +9 -0
  33. package/dist/redis/index.d.ts.map +1 -0
  34. package/dist/redis/index.js +9 -0
  35. package/dist/redis/index.js.map +1 -0
  36. package/dist/redis/scripts.d.ts +168 -0
  37. package/dist/redis/scripts.d.ts.map +1 -0
  38. package/dist/redis/scripts.js +755 -0
  39. package/dist/redis/scripts.js.map +1 -0
  40. package/dist/testing/conformance.d.ts.map +1 -1
  41. package/dist/testing/conformance.js +332 -3
  42. package/dist/testing/conformance.js.map +1 -1
  43. package/package.json +8 -4
  44. package/src/Job.ts +189 -5
  45. package/src/JobStore.ts +252 -4
  46. package/src/MemoryJobStore.ts +273 -26
  47. package/src/Worker.ts +152 -10
  48. package/src/{drizzle → drizzle-postgres}/DrizzleJobStore.ts +412 -40
  49. package/src/{drizzle → drizzle-postgres}/schema.ts +52 -3
  50. package/src/redis/RedisJobStore.ts +597 -0
  51. package/src/redis/index.ts +8 -0
  52. package/src/redis/scripts.ts +862 -0
  53. package/src/testing/conformance.ts +421 -3
  54. package/dist/drizzle/DrizzleJobStore.d.ts.map +0 -1
  55. package/dist/drizzle/DrizzleJobStore.js.map +0 -1
  56. package/dist/drizzle/index.d.ts.map +0 -1
  57. package/dist/drizzle/index.js.map +0 -1
  58. package/dist/drizzle/schema.d.ts.map +0 -1
  59. package/dist/drizzle/schema.js.map +0 -1
  60. /package/dist/{drizzle → drizzle-postgres}/index.d.ts +0 -0
  61. /package/dist/{drizzle → drizzle-postgres}/index.js +0 -0
  62. /package/src/{drizzle → drizzle-postgres}/index.ts +0 -0
@@ -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<ReadonlyArray<JobId>, JobStoreError>;
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>;
@@ -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
  *
@@ -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;AAUlF;;;;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;AAoMjF;;;;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;AAGhE;;;;;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;AAiHL;;;;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"}
1
+ {"version":3,"file":"JobStore.js","sourceRoot":"","sources":["../src/JobStore.ts"],"names":[],"mappings":"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"}
@@ -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
- * Build a fresh in-memory `JobStore` implementation.
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
- * A fresh in-memory `JobStore` layer. Pass a named store key to provide a
23
- * `JobStore.named(...)` slot instead of the default.
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>) => Layer.Layer<Id>;
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;AACnF,OAAO,EASL,QAAQ,EAIR,KAAK,OAAO,EACb,MAAM,eAAe,CAAA;AA0DtB;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAuWtC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAgC,CAAA;AAExE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAClB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,KAC9B,KAAK,CAAC,KAAK,CAAC,EAAE,CAA8B,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"}