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/README.md
CHANGED
|
@@ -14,7 +14,8 @@ One package, tree-shakeable modules:
|
|
|
14
14
|
| Import | Contents | Extra peers |
|
|
15
15
|
| --- | --- | --- |
|
|
16
16
|
| `effect-mq` | `Job`, `JobStore`, `MemoryJobStore`, `Worker` | — |
|
|
17
|
-
| `effect-mq/drizzle` | drizzle schema factories + the Postgres `JobStore` | `drizzle-orm` (v1), `@effect/sql-pg` |
|
|
17
|
+
| `effect-mq/drizzle-postgres` | drizzle-postgres schema factories + the Postgres `JobStore` | `drizzle-orm` (v1), `@effect/sql-pg` |
|
|
18
|
+
| `effect-mq/redis` | the Redis `JobStore` (Lua-script atomicity) | a `Redis` service (`@effect/platform-node`/`-bun`) |
|
|
18
19
|
| `effect-mq/testing` | the `JobStore` conformance suite for driver authors | `@effect/vitest` |
|
|
19
20
|
|
|
20
21
|
## Five-minute tour
|
|
@@ -73,6 +74,108 @@ What you get out of the box:
|
|
|
73
74
|
and per-job retention via `keep: { count, age }`.
|
|
74
75
|
- **Graceful shutdown** — interrupting a worker releases in-flight jobs back
|
|
75
76
|
to `waiting` without consuming an attempt.
|
|
77
|
+
- **Repeatable jobs** — durable cron/interval schedules
|
|
78
|
+
(`MyJob.schedule(key, { cron })`) that fire exactly once per occurrence
|
|
79
|
+
across any number of workers.
|
|
80
|
+
- **Admin verbs** — `cancel` (including *running* jobs, whose handler fiber is
|
|
81
|
+
interrupted cross-process), `promote` (delayed → now), and queue-level
|
|
82
|
+
`pause`/`resume`.
|
|
83
|
+
- **Handler timeouts** — `defaults: { timeout: "30 seconds" }` interrupts the
|
|
84
|
+
handler cleanly and routes through normal retry accounting; something BullMQ
|
|
85
|
+
can't do to a running processor.
|
|
86
|
+
- **Unrecoverable errors** — `Job.unrecoverable(error)` or a `retryable`
|
|
87
|
+
predicate skips the remaining retry budget when retrying can't help.
|
|
88
|
+
|
|
89
|
+
## Repeatable jobs
|
|
90
|
+
|
|
91
|
+
Schedules are durable rows in the store — not process-local timers — so they
|
|
92
|
+
survive restarts and coordinate across workers. Ticks enqueue with a
|
|
93
|
+
slot-deterministic job id (`sched/<key>/<slot>`), which makes every occurrence
|
|
94
|
+
exactly-once no matter how many workers sweep:
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
// Create or replace (same key = replace; upsert is idempotent to deploy).
|
|
98
|
+
yield* SendDigest.schedule("daily", {
|
|
99
|
+
cron: "0 9 * * *", // or: every: "10 minutes"
|
|
100
|
+
tz: "America/New_York", // IANA zone, cron only
|
|
101
|
+
payload: { edition: "morning" }
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
yield* SendDigest.unschedule("daily")
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
`cron` fires at the next matching occurrence; `every` first fires one interval
|
|
108
|
+
from now and stays on its original grid. If workers are down over several
|
|
109
|
+
occurrences, missed slots collapse into one run (the next sweep enqueues the
|
|
110
|
+
overdue slot once, then advances past `now`). Options mirror `enqueue`:
|
|
111
|
+
`metadata`, `priority`, `attempts`, `backoff`, `keep`, `timeout`.
|
|
112
|
+
|
|
113
|
+
## Timeouts, cancellation, and unrecoverable errors
|
|
114
|
+
|
|
115
|
+
Because handlers are Effect fibers, the runtime can *actually stop them* —
|
|
116
|
+
these verbs interrupt cleanly (finalizers run) instead of abandoning work:
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
class GenerateInvoice extends Job.make("generate-invoice", {
|
|
120
|
+
payload: { invoiceId: Schema.String },
|
|
121
|
+
error: InvoiceError,
|
|
122
|
+
defaults: { attempts: 5, timeout: "2 minutes" }, // per-run limit
|
|
123
|
+
retryable: (e) => e.reason !== "invoice-voided" // skip retries when futile
|
|
124
|
+
}) {}
|
|
125
|
+
|
|
126
|
+
// Inside a handler, mark a specific failure as not worth retrying:
|
|
127
|
+
Effect.fail(Job.unrecoverable(new InvoiceError({ reason: "customer deleted" })))
|
|
128
|
+
|
|
129
|
+
// From anywhere (a dashboard, another process):
|
|
130
|
+
yield* GenerateInvoice.cancel(jobId) // waiting/delayed: terminal immediately;
|
|
131
|
+
// running: the worker's next heartbeat
|
|
132
|
+
// interrupts the handler fiber
|
|
133
|
+
yield* GenerateInvoice.promote(jobId) // delayed -> runnable now
|
|
134
|
+
|
|
135
|
+
// Store-level (definition-free) equivalents for generic dashboards:
|
|
136
|
+
const store = yield* JobStore.JobStore
|
|
137
|
+
yield* store.cancel(jobId)
|
|
138
|
+
yield* store.pause(QueueName("email")) // claims stop; producers unaffected
|
|
139
|
+
yield* store.resume(QueueName("email")) // wakes idle workers immediately
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
A timed-out run records a `TimeoutError` defect in the attempt ledger and
|
|
143
|
+
consumes an attempt like any other failure. A cancelled job lands in the
|
|
144
|
+
terminal `cancelled` state with a `cancelled` ledger entry; `awaitResult`
|
|
145
|
+
treats it as a defect (`JobCancelledError`), not a typed failure.
|
|
146
|
+
|
|
147
|
+
## History retention
|
|
148
|
+
|
|
149
|
+
Two layers of control:
|
|
150
|
+
|
|
151
|
+
- **Per job**: `keep: { count, age }` prunes terminal records per name+state
|
|
152
|
+
at ack time.
|
|
153
|
+
- **Per store**: a retention ceiling applied to *all* terminal records,
|
|
154
|
+
swept periodically in the background:
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
MemoryJobStore.layerWith({ historyTtl: "7 days" })
|
|
158
|
+
DrizzleJobStore.layer({ jobs, attempts, schedules, queues, historyTtl: "90 days" })
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Custom job ids
|
|
162
|
+
|
|
163
|
+
Store-assigned ids default to a compact sequence (`j-<n>`). Bring your own
|
|
164
|
+
generator when you want globally unique or prefixed ids:
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
import { ulid } from "ulid"
|
|
168
|
+
|
|
169
|
+
DrizzleJobStore.layer({
|
|
170
|
+
jobs, attempts, schedules, queues,
|
|
171
|
+
idGenerator: ({ name }) => `${name}_${ulid()}` // sync or Effect-returning
|
|
172
|
+
})
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The generator only runs for store-assigned ids — `idempotencyKey` ids and
|
|
176
|
+
repeatable-schedule tick ids stay deterministic (exactly-once depends on
|
|
177
|
+
them). Collisions are retried a bounded number of times, then the enqueue
|
|
178
|
+
fails; bring real entropy.
|
|
76
179
|
|
|
77
180
|
## Postgres through drizzle
|
|
78
181
|
|
|
@@ -93,13 +196,15 @@ migrations** — no library-run DDL, no parallel migration system:
|
|
|
93
196
|
|
|
94
197
|
```ts
|
|
95
198
|
// db/schema.ts
|
|
96
|
-
import { mqJobAttempts, mqJobs } from "effect-mq/drizzle"
|
|
199
|
+
import { mqJobAttempts, mqJobs, mqQueueControl, mqSchedules } from "effect-mq/drizzle-postgres"
|
|
97
200
|
|
|
98
201
|
// The `name` column is typed to your job tags (derived, not hand-written):
|
|
99
|
-
type JobNames = typeof
|
|
202
|
+
type JobNames = typeof GenerateInvoice._tag | typeof SendEmail._tag
|
|
100
203
|
|
|
101
204
|
export const jobs = mqJobs<JobNames>() // default table: effect_mq_jobs
|
|
102
205
|
export const jobAttempts = mqJobAttempts(jobs) // default: effect_mq_job_attempts
|
|
206
|
+
export const jobSchedules = mqSchedules() // default: effect_mq_schedules
|
|
207
|
+
export const jobQueues = mqQueueControl() // default: effect_mq_queue_control
|
|
103
208
|
```
|
|
104
209
|
|
|
105
210
|
```
|
|
@@ -113,12 +218,17 @@ When a future effect-mq version changes the layout, the factory changes and
|
|
|
113
218
|
### 2. Provide the store layer
|
|
114
219
|
|
|
115
220
|
```ts
|
|
116
|
-
import { DrizzleJobStore } from "effect-mq/drizzle"
|
|
221
|
+
import { DrizzleJobStore } from "effect-mq/drizzle-postgres"
|
|
117
222
|
import { PgClient } from "@effect/sql-pg"
|
|
118
223
|
import { Layer, Redacted } from "effect"
|
|
119
|
-
import { jobAttempts, jobs } from "./db/schema.ts"
|
|
120
|
-
|
|
121
|
-
const JobStoreLive = DrizzleJobStore.layer({
|
|
224
|
+
import { jobAttempts, jobQueues, jobs, jobSchedules } from "./db/schema.ts"
|
|
225
|
+
|
|
226
|
+
const JobStoreLive = DrizzleJobStore.layer({
|
|
227
|
+
jobs,
|
|
228
|
+
attempts: jobAttempts,
|
|
229
|
+
schedules: jobSchedules,
|
|
230
|
+
queues: jobQueues
|
|
231
|
+
}).pipe(
|
|
122
232
|
Layer.provide(PgClient.layer({ url: Redacted.make(process.env.DATABASE_URL!) }))
|
|
123
233
|
)
|
|
124
234
|
```
|
|
@@ -132,8 +242,8 @@ Product UIs read the tables directly with drizzle — fully typed:
|
|
|
132
242
|
|
|
133
243
|
```ts
|
|
134
244
|
db.select().from(jobs).where(and(
|
|
135
|
-
eq(jobs.name, "
|
|
136
|
-
sql`${jobs.metadata} @> ${{
|
|
245
|
+
eq(jobs.name, "generate-invoice"), // a typo is a compile error
|
|
246
|
+
sql`${jobs.metadata} @> ${{ customerId }}::jsonb` // GIN-indexed containment
|
|
137
247
|
))
|
|
138
248
|
|
|
139
249
|
db.select().from(jobAttempts)
|
|
@@ -149,6 +259,38 @@ Worker tip: `awaitWake` is LISTEN/NOTIFY-driven, and the worker's
|
|
|
149
259
|
`pollInterval` is the fallback — `Worker.layer({ pollInterval: "500 millis" })`
|
|
150
260
|
is a good Postgres setting.
|
|
151
261
|
|
|
262
|
+
## Redis store
|
|
263
|
+
|
|
264
|
+
The Redis store (`effect-mq/redis`) implements every `JobStore` operation as
|
|
265
|
+
one atomic Lua script, so it is safe across any number of producer and worker
|
|
266
|
+
processes. It builds on Effect's client-agnostic `Redis` service — provide it
|
|
267
|
+
from your platform package (no extra peers beyond what you already run):
|
|
268
|
+
|
|
269
|
+
```ts
|
|
270
|
+
import { RedisJobStore } from "effect-mq/redis"
|
|
271
|
+
import { NodeRedis } from "@effect/platform-node" // node-redis under the hood
|
|
272
|
+
// import { BunRedis } from "@effect/platform-bun" // Bun.redis under the hood
|
|
273
|
+
import { Layer } from "effect"
|
|
274
|
+
|
|
275
|
+
const JobStoreLive = RedisJobStore.layer({
|
|
276
|
+
prefix: "myapp-jobs", // key namespace (default "effect-mq")
|
|
277
|
+
historyTtl: "30 days" // optional retention ceiling
|
|
278
|
+
}).pipe(
|
|
279
|
+
Layer.provide(NodeRedis.layer({ url: process.env.REDIS_URL }))
|
|
280
|
+
)
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
Wake-ups ride pub/sub (`<prefix>:wake`), so idle workers in other processes
|
|
284
|
+
pick new jobs up promptly; the worker's `pollInterval` is the fallback. Notes:
|
|
285
|
+
|
|
286
|
+
- Keys are plain-prefixed (no hash tags) — point it at a single Redis /
|
|
287
|
+
Valkey node or a cluster-unaware proxy, not Redis Cluster.
|
|
288
|
+
- `list` filters scan server-side in Lua: fine for dashboards, not for
|
|
289
|
+
millions of terminal rows — set `historyTtl`/`keep` accordingly. `counts`
|
|
290
|
+
is O(1) (maintained counters).
|
|
291
|
+
- The same conformance suite that runs against Postgres runs against a real
|
|
292
|
+
Redis in this repo, TestClock included (scripts take time via ARGV).
|
|
293
|
+
|
|
152
294
|
## Multiple stores on different infrastructure
|
|
153
295
|
|
|
154
296
|
Bind jobs to *named stores* so business-critical runs live in Postgres while
|
|
@@ -158,17 +300,17 @@ disposable ones live elsewhere — enforced by the type system:
|
|
|
158
300
|
import { Job, JobStore, MemoryJobStore, Worker } from "effect-mq"
|
|
159
301
|
|
|
160
302
|
const Durable = JobStore.named("durable") // -> Postgres in prod
|
|
161
|
-
const Ephemeral = JobStore.named("ephemeral") // -> memory
|
|
303
|
+
const Ephemeral = JobStore.named("ephemeral") // -> Redis or memory
|
|
162
304
|
|
|
163
|
-
class
|
|
164
|
-
payload: {
|
|
165
|
-
idempotencyKey: ({
|
|
305
|
+
class GenerateInvoice extends Job.make("generate-invoice", {
|
|
306
|
+
payload: { invoiceId: Schema.String },
|
|
307
|
+
idempotencyKey: ({ invoiceId }) => invoiceId,
|
|
166
308
|
store: Durable
|
|
167
309
|
}) {}
|
|
168
310
|
|
|
169
311
|
// Forgetting the Durable layer is now a COMPILE error at every enqueue site.
|
|
170
312
|
// Workers bind to one store:
|
|
171
|
-
const durableWorkers =
|
|
313
|
+
const durableWorkers = GenerateInvoice.toLayer(handler).pipe(
|
|
172
314
|
Layer.provide(Worker.layer({ store: Durable })) // local provide: several
|
|
173
315
|
) // workers can coexist
|
|
174
316
|
```
|
|
@@ -181,11 +323,11 @@ a **store** is an infrastructure/durability domain hosting many queues.
|
|
|
181
323
|
|
|
182
324
|
Two kinds of "business context", two homes:
|
|
183
325
|
|
|
184
|
-
- **Ops UI** ("list
|
|
326
|
+
- **Ops UI** ("list invoice runs for customer X, retry that one"): use the
|
|
185
327
|
`metadata` projection — a flat `Record<string, string>` derived from the
|
|
186
328
|
payload, indexed by every driver, filterable via `store.list` or raw SQL.
|
|
187
|
-
- **Domain history** ("what did this
|
|
188
|
-
joined by the *deterministic* job id from `idempotencyKey`. The queue's
|
|
329
|
+
- **Domain history** ("what did this invoice run actually produce"): your own
|
|
330
|
+
table, joined by the *deterministic* job id from `idempotencyKey`. The queue's
|
|
189
331
|
retention (`keep`) can then prune freely while your business history lives
|
|
190
332
|
forever. Don't let queue infrastructure own business data lifecycles.
|
|
191
333
|
|
|
@@ -209,8 +351,10 @@ Both behaviors are pinned by tests.
|
|
|
209
351
|
|
|
210
352
|
Implement the `JobStore` service (one atomic seam: `enqueue`, `claim`, `ack`,
|
|
211
353
|
`release`, `extendLocks`, `recoverStalled`, `awaitWake`, `getJob`,
|
|
212
|
-
`getAttempts`, `list`, `retry`, `counts`, `remove`
|
|
213
|
-
|
|
354
|
+
`getAttempts`, `list`, `retry`, `counts`, `remove`, `cancel`, `promote`,
|
|
355
|
+
`pause`/`resume`/`pausedQueues`, and the schedule ops
|
|
356
|
+
`upsertSchedule`/`removeSchedule`/`listSchedules`/`dueSchedules`/`advanceSchedule`)
|
|
357
|
+
and run the conformance suite against it:
|
|
214
358
|
|
|
215
359
|
```ts
|
|
216
360
|
import { jobStoreConformance } from "effect-mq/testing"
|
|
@@ -226,9 +370,10 @@ suite in this repo runs the same conformance tests against a real database.
|
|
|
226
370
|
|
|
227
371
|
## Roadmap
|
|
228
372
|
|
|
229
|
-
|
|
230
|
-
-
|
|
231
|
-
-
|
|
373
|
+
Next up: richer deduplication (throttle/debounce), trace propagation, a
|
|
374
|
+
cross-process event stream, batch enqueue, drizzle schema customization, and
|
|
375
|
+
parent-child fan-out. Full prioritized list:
|
|
376
|
+
[ROADMAP.md](https://github.com/TeamWarp/effect-mq/blob/main/ROADMAP.md).
|
|
232
377
|
|
|
233
378
|
## License
|
|
234
379
|
|
package/dist/Job.d.ts
CHANGED
|
@@ -31,7 +31,15 @@
|
|
|
31
31
|
* @since 0.1.0
|
|
32
32
|
*/
|
|
33
33
|
import { type Context, Duration, Effect, type Exit, Layer, Option, Schedule, Schema } from "effect";
|
|
34
|
-
import { type BackoffPolicy, JobId, JobNotFoundError, type JobNotRetryableError, type JobState, JobStore, type KeepPolicy, QueueName, type Service as StoreService } from "./JobStore.ts";
|
|
34
|
+
import { type BackoffPolicy, JobId, type JobNotCancellableError, JobNotFoundError, type JobNotPromotableError, type JobNotRetryableError, type JobState, JobStore, type KeepPolicy, QueueName, ScheduleKey, type Service as StoreService, unrecoverable } from "./JobStore.ts";
|
|
35
|
+
export {
|
|
36
|
+
/**
|
|
37
|
+
* Mark an error value as unrecoverable: the worker skips the remaining
|
|
38
|
+
* retry budget and fails the job immediately. Returns the error unchanged.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.2.0
|
|
41
|
+
*/
|
|
42
|
+
unrecoverable };
|
|
35
43
|
import { type JobContext, type RegisterOptions, Worker } from "./Worker.ts";
|
|
36
44
|
declare const TypeId: "~effect-mq/Job";
|
|
37
45
|
/**
|
|
@@ -79,6 +87,11 @@ export interface JobOptions {
|
|
|
79
87
|
readonly backoff?: BackoffInput | undefined;
|
|
80
88
|
/** Retention for terminal records. Default: keep forever. */
|
|
81
89
|
readonly keep?: KeepInput | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* Per-run execution time limit; the worker interrupts the handler fiber
|
|
92
|
+
* past it and the run counts as a failed attempt (retried per backoff).
|
|
93
|
+
*/
|
|
94
|
+
readonly timeout?: Duration.Input | undefined;
|
|
82
95
|
}
|
|
83
96
|
/**
|
|
84
97
|
* @since 0.1.0
|
|
@@ -101,6 +114,27 @@ interface ResolvedDefaults {
|
|
|
101
114
|
readonly attempts: number;
|
|
102
115
|
readonly backoff: BackoffPolicy | undefined;
|
|
103
116
|
readonly keep: KeepPolicy | undefined;
|
|
117
|
+
readonly timeoutMs: number | undefined;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Options for `Job.schedule`. Exactly one of `cron` (with optional IANA `tz`)
|
|
121
|
+
* or `every` must be set. `cron` schedules first fire at the next matching
|
|
122
|
+
* occurrence; `every` schedules first fire one interval from now.
|
|
123
|
+
*
|
|
124
|
+
* @since 0.2.0
|
|
125
|
+
*/
|
|
126
|
+
export interface ScheduleOptions<PayloadInput> {
|
|
127
|
+
readonly cron?: string | undefined;
|
|
128
|
+
readonly tz?: string | undefined;
|
|
129
|
+
readonly every?: Duration.Input | undefined;
|
|
130
|
+
readonly payload: PayloadInput;
|
|
131
|
+
/** Queryable business context, merged over the definition's `metadata`. */
|
|
132
|
+
readonly metadata?: Readonly<Record<string, string>> | undefined;
|
|
133
|
+
readonly priority?: number | undefined;
|
|
134
|
+
readonly attempts?: number | undefined;
|
|
135
|
+
readonly backoff?: BackoffInput | undefined;
|
|
136
|
+
readonly keep?: KeepInput | undefined;
|
|
137
|
+
readonly timeout?: Duration.Input | undefined;
|
|
104
138
|
}
|
|
105
139
|
/**
|
|
106
140
|
* The status of a job as seen by `poll`. Fetch the full run ledger with
|
|
@@ -125,8 +159,8 @@ export interface JobAttempt<A, E> {
|
|
|
125
159
|
readonly attempt: number;
|
|
126
160
|
readonly startedAt: number | undefined;
|
|
127
161
|
readonly finishedAt: number;
|
|
128
|
-
readonly outcome: "completed" | "retried" | "failed" | "stalled";
|
|
129
|
-
/** Absent for `stalled` entries. */
|
|
162
|
+
readonly outcome: "completed" | "retried" | "failed" | "stalled" | "cancelled";
|
|
163
|
+
/** Absent for `stalled` and `cancelled` entries. */
|
|
130
164
|
readonly exit: Option.Option<Exit.Exit<A, E>>;
|
|
131
165
|
}
|
|
132
166
|
/**
|
|
@@ -152,6 +186,7 @@ export interface Job<Name extends string, Payload extends AnyStructSchema, Succe
|
|
|
152
186
|
readonly exitSchema: Schema.toCodecJson<Schema.Exit<Schema.toCodecJson<Success>, Schema.toCodecJson<Error>, Schema.Defect>>;
|
|
153
187
|
readonly idempotencyKey: ((payload: Payload["Type"]) => string) | undefined;
|
|
154
188
|
readonly metadata: ((payload: Payload["Type"]) => Readonly<Record<string, string>>) | undefined;
|
|
189
|
+
readonly retryable: ((error: Error["Type"]) => boolean) | undefined;
|
|
155
190
|
readonly defaults: ResolvedDefaults;
|
|
156
191
|
/**
|
|
157
192
|
* Queue this job. Returns the job id. Duplicate ids (via `jobId` or
|
|
@@ -176,6 +211,30 @@ export interface Job<Name extends string, Payload extends AnyStructSchema, Succe
|
|
|
176
211
|
* preserved. (The admin op behind a dashboard's "retry" button.)
|
|
177
212
|
*/
|
|
178
213
|
readonly retry: (jobId: JobId) => Effect.Effect<void, JobNotFoundError | JobNotRetryableError, StoreId>;
|
|
214
|
+
/**
|
|
215
|
+
* Cancel a job: waiting/delayed become terminal (`cancelled`) immediately;
|
|
216
|
+
* a running job's handler fiber is interrupted by its worker on the next
|
|
217
|
+
* heartbeat (latency ≤ `lockRenewInterval`).
|
|
218
|
+
*/
|
|
219
|
+
readonly cancel: (jobId: JobId) => Effect.Effect<void, JobNotFoundError | JobNotCancellableError, StoreId>;
|
|
220
|
+
/** Run a delayed job now. */
|
|
221
|
+
readonly promote: (jobId: JobId) => Effect.Effect<void, JobNotFoundError | JobNotPromotableError, StoreId>;
|
|
222
|
+
/**
|
|
223
|
+
* Create or replace a durable repeatable schedule for this job. Ticks
|
|
224
|
+
* enqueue with a slot-deterministic id, so schedules are exactly-once per
|
|
225
|
+
* occurrence across all workers (assuming history retention windows
|
|
226
|
+
* comfortably exceed the sweep interval — a pruned tick job cannot dedup a
|
|
227
|
+
* pathologically stale sweeper). Missed occurrences (downtime) collapse
|
|
228
|
+
* into a single catch-up run.
|
|
229
|
+
*
|
|
230
|
+
* Re-registering with an *unchanged* cadence (same `cron`/`tz`/`every`) is
|
|
231
|
+
* a no-op for the next occurrence — deploy-time re-registration neither
|
|
232
|
+
* re-anchors `every` grids nor drops a pending catch-up run. Changing the
|
|
233
|
+
* cadence resets the next occurrence.
|
|
234
|
+
*/
|
|
235
|
+
readonly schedule: (key: string, options: ScheduleOptions<Payload["~type.make.in"]>) => Effect.Effect<ScheduleKey, never, StoreId | Payload["EncodingServices"]>;
|
|
236
|
+
/** Remove a schedule created by `schedule`. False when it did not exist. */
|
|
237
|
+
readonly unschedule: (key: string) => Effect.Effect<boolean, never, StoreId>;
|
|
179
238
|
/**
|
|
180
239
|
* Attach the handler that processes this job, as a layer to provide on top
|
|
181
240
|
* of `Worker.layer` (bound to the same store).
|
|
@@ -209,6 +268,11 @@ export declare const make: <const Name extends string, Payload extends Schema.St
|
|
|
209
268
|
* every driver can index it). Merged with per-enqueue `metadata`.
|
|
210
269
|
*/
|
|
211
270
|
readonly metadata?: ((payload: Payload extends Schema.Struct.Fields ? Schema.Struct.Type<Payload> : Payload["Type"]) => Readonly<Record<string, string>>) | undefined;
|
|
271
|
+
/**
|
|
272
|
+
* When present, a typed handler failure for which this returns false
|
|
273
|
+
* skips the remaining retry budget (see also `Job.unrecoverable`).
|
|
274
|
+
*/
|
|
275
|
+
readonly retryable?: ((error: Error["Type"]) => boolean) | undefined;
|
|
212
276
|
/** The queue this job runs on. Default `"default"`. */
|
|
213
277
|
readonly queue?: string | undefined;
|
|
214
278
|
/**
|
|
@@ -218,5 +282,4 @@ export declare const make: <const Name extends string, Payload extends Schema.St
|
|
|
218
282
|
readonly store?: Context.Key<StoreId, StoreService> | undefined;
|
|
219
283
|
readonly defaults?: JobOptions | undefined;
|
|
220
284
|
}) => Job<Name, Payload extends Schema.Struct.Fields ? Schema.Struct<Payload> : Payload, Success, Error, StoreId>;
|
|
221
|
-
export {};
|
|
222
285
|
//# sourceMappingURL=Job.d.ts.map
|
package/dist/Job.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.d.ts","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"Job.d.ts","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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"}
|
package/dist/Job.js
CHANGED
|
@@ -30,8 +30,16 @@
|
|
|
30
30
|
*
|
|
31
31
|
* @since 0.1.0
|
|
32
32
|
*/
|
|
33
|
-
import { Duration, Effect, Layer, Option, Schedule, Schema } from "effect";
|
|
34
|
-
import { JobId, JobNotFoundError, JobStore, QueueName } from "./JobStore.js";
|
|
33
|
+
import { Clock, Duration, Effect, Layer, Option, Schedule, Schema } from "effect";
|
|
34
|
+
import { JobCancelledError, JobId, JobNotFoundError, JobStore, nextOccurrence, QueueName, ScheduleKey, unrecoverable } from "./JobStore.js";
|
|
35
|
+
export {
|
|
36
|
+
/**
|
|
37
|
+
* Mark an error value as unrecoverable: the worker skips the remaining
|
|
38
|
+
* retry budget and fails the job immediately. Returns the error unchanged.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.2.0
|
|
41
|
+
*/
|
|
42
|
+
unrecoverable };
|
|
35
43
|
import { Worker } from "./Worker.js";
|
|
36
44
|
const TypeId = "~effect-mq/Job";
|
|
37
45
|
const defaultPollSchedule = Schedule.min([
|
|
@@ -77,6 +85,9 @@ const Proto = {
|
|
|
77
85
|
keep: options?.keep !== undefined
|
|
78
86
|
? normalizeKeep(options.keep)
|
|
79
87
|
: this.defaults.keep,
|
|
88
|
+
timeoutMs: options?.timeout !== undefined
|
|
89
|
+
? Duration.toMillis(options.timeout)
|
|
90
|
+
: this.defaults.timeoutMs,
|
|
80
91
|
delayMs: options?.delay !== undefined
|
|
81
92
|
? Duration.toMillis(options.delay)
|
|
82
93
|
: this.defaults.delayMs
|
|
@@ -124,6 +135,9 @@ const Proto = {
|
|
|
124
135
|
return yield* Effect.die(new JobNotFoundError({ jobId }));
|
|
125
136
|
}
|
|
126
137
|
const { exit, failedReason, state } = status.value;
|
|
138
|
+
if (state === "cancelled") {
|
|
139
|
+
return yield* Effect.die(new JobCancelledError({ jobId }));
|
|
140
|
+
}
|
|
127
141
|
if (state === "completed" || state === "failed") {
|
|
128
142
|
if (Option.isSome(exit)) {
|
|
129
143
|
return yield* exit.value;
|
|
@@ -141,6 +155,57 @@ const Proto = {
|
|
|
141
155
|
retry(jobId) {
|
|
142
156
|
return Effect.flatMap(this.store, (store) => store.retry(jobId).pipe(Effect.catchTag("JobStoreError", (error) => Effect.die(error)))).pipe(Effect.withSpan(`${this._tag}.retry`, { attributes: { jobId } }, { captureStackTrace: false }));
|
|
143
157
|
},
|
|
158
|
+
cancel(jobId) {
|
|
159
|
+
return Effect.flatMap(this.store, (store) => store.cancel(jobId).pipe(Effect.catchTag("JobStoreError", (error) => Effect.die(error)))).pipe(Effect.withSpan(`${this._tag}.cancel`, { attributes: { jobId } }, { captureStackTrace: false }));
|
|
160
|
+
},
|
|
161
|
+
promote(jobId) {
|
|
162
|
+
return Effect.flatMap(this.store, (store) => store.promote(jobId).pipe(Effect.catchTag("JobStoreError", (error) => Effect.die(error)))).pipe(Effect.withSpan(`${this._tag}.promote`, { attributes: { jobId } }, { captureStackTrace: false }));
|
|
163
|
+
},
|
|
164
|
+
schedule(key, options) {
|
|
165
|
+
const self = this;
|
|
166
|
+
return Effect.gen(function* () {
|
|
167
|
+
const hasCron = options.cron !== undefined;
|
|
168
|
+
const hasEvery = options.every !== undefined;
|
|
169
|
+
if (hasCron === hasEvery) {
|
|
170
|
+
return yield* Effect.die(new Error(`effect-mq: schedule "${key}" must set exactly one of \`cron\` or \`every\``));
|
|
171
|
+
}
|
|
172
|
+
const everyMs = options.every !== undefined ? Duration.toMillis(options.every) : undefined;
|
|
173
|
+
const now = yield* Clock.currentTimeMillis;
|
|
174
|
+
const nextRunAt = nextOccurrence({ cron: options.cron, tz: options.tz, everyMs }, now, now);
|
|
175
|
+
if (nextRunAt === undefined) {
|
|
176
|
+
return yield* Effect.die(new Error(`effect-mq: schedule "${key}" has an invalid cron expression: "${options.cron}"`));
|
|
177
|
+
}
|
|
178
|
+
const payload = self.payloadSchema.make(options.payload);
|
|
179
|
+
const encoded = yield* Schema.encodeEffect(self.payloadJsonSchema)(payload).pipe(Effect.orDie);
|
|
180
|
+
const scheduleKey = ScheduleKey(`${self._tag}/${key}`);
|
|
181
|
+
const record = {
|
|
182
|
+
key: scheduleKey,
|
|
183
|
+
jobName: self._tag,
|
|
184
|
+
queue: self.queue,
|
|
185
|
+
cron: options.cron,
|
|
186
|
+
tz: options.tz,
|
|
187
|
+
everyMs,
|
|
188
|
+
payload: encoded,
|
|
189
|
+
metadata: { ...self.metadata?.(payload), ...options.metadata },
|
|
190
|
+
priority: options.priority ?? self.defaults.priority,
|
|
191
|
+
attemptsMax: Math.max(1, options.attempts ?? self.defaults.attempts),
|
|
192
|
+
backoff: options.backoff !== undefined
|
|
193
|
+
? normalizeBackoff(options.backoff)
|
|
194
|
+
: self.defaults.backoff,
|
|
195
|
+
keep: options.keep !== undefined ? normalizeKeep(options.keep) : self.defaults.keep,
|
|
196
|
+
timeoutMs: options.timeout !== undefined
|
|
197
|
+
? Duration.toMillis(options.timeout)
|
|
198
|
+
: self.defaults.timeoutMs,
|
|
199
|
+
nextRunAt
|
|
200
|
+
};
|
|
201
|
+
const store = yield* self.store;
|
|
202
|
+
yield* store.upsertSchedule(record).pipe(Effect.orDie);
|
|
203
|
+
return scheduleKey;
|
|
204
|
+
}).pipe(Effect.withSpan(`${this._tag}.schedule`, { attributes: { key } }, { captureStackTrace: false }));
|
|
205
|
+
},
|
|
206
|
+
unschedule(key) {
|
|
207
|
+
return Effect.flatMap(this.store, (store) => store.removeSchedule(ScheduleKey(`${this._tag}/${key}`)).pipe(Effect.orDie)).pipe(Effect.withSpan(`${this._tag}.unschedule`, { attributes: { key } }, { captureStackTrace: false }));
|
|
208
|
+
},
|
|
144
209
|
toLayer(handler, options) {
|
|
145
210
|
return Layer.effectDiscard(Effect.flatMap(Worker, (worker) => worker.register(this, handler, options)));
|
|
146
211
|
}
|
|
@@ -152,6 +217,10 @@ const boundMethods = [
|
|
|
152
217
|
"awaitResult",
|
|
153
218
|
"execute",
|
|
154
219
|
"retry",
|
|
220
|
+
"cancel",
|
|
221
|
+
"promote",
|
|
222
|
+
"schedule",
|
|
223
|
+
"unschedule",
|
|
155
224
|
"toLayer"
|
|
156
225
|
];
|
|
157
226
|
const makeProto = (options) => {
|
|
@@ -204,6 +273,7 @@ export const make = (name, options) => {
|
|
|
204
273
|
exitSchema,
|
|
205
274
|
idempotencyKey: options.idempotencyKey,
|
|
206
275
|
metadata: options.metadata,
|
|
276
|
+
retryable: options.retryable,
|
|
207
277
|
defaults: {
|
|
208
278
|
delayMs: options.defaults?.delay !== undefined
|
|
209
279
|
? Duration.toMillis(options.defaults.delay)
|
|
@@ -211,7 +281,10 @@ export const make = (name, options) => {
|
|
|
211
281
|
priority: options.defaults?.priority ?? 0,
|
|
212
282
|
attempts: Math.max(1, options.defaults?.attempts ?? 1),
|
|
213
283
|
backoff: normalizeBackoff(options.defaults?.backoff),
|
|
214
|
-
keep: normalizeKeep(options.defaults?.keep)
|
|
284
|
+
keep: normalizeKeep(options.defaults?.keep),
|
|
285
|
+
timeoutMs: options.defaults?.timeout !== undefined
|
|
286
|
+
? Duration.toMillis(options.defaults.timeout)
|
|
287
|
+
: undefined
|
|
215
288
|
}
|
|
216
289
|
});
|
|
217
290
|
};
|
package/dist/Job.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAgB,QAAQ,EAAE,MAAM,EAAa,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACnG,OAAO,EAEL,KAAK,EACL,gBAAgB,EAGhB,QAAQ,EAER,SAAS,EAEV,MAAM,eAAe,CAAA;AACtB,OAAO,EAAyC,MAAM,EAAE,MAAM,aAAa,CAAA;AAE3E,MAAM,MAAM,GAAG,gBAAyB,CAAA;AA4OxC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAC;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;CAC5B,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAA+B,EAA6B,EAAE,CACtF,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChC,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;IACvC,MAAM,EAAE,KAAK,CAAC,MAAM;CACrB,CAAA;AAEH,MAAM,aAAa,GAAG,CAAC,KAA4B,EAA0B,EAAE,CAC7E,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;CAC1E,CAAA;AAEH,MAAM,KAAK,GAAG;IACZ,CAAC,MAAM,CAAC,EAAE,MAAM;IAEhB,OAAO,CAAqB,MAAW,EAAE,OAAwB;QAC/D,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/C,MAAM,EAAE,GAAG,OAAO,EAAE,KAAK,KAAK,SAAS;gBACrC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACtB,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS;oBACnC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvD,CAAC,CAAC,SAAS,CAAA;YACb,MAAM,QAAQ,GAAG;gBACf,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;gBAC3B,GAAG,OAAO,EAAE,QAAQ;aACrB,CAAA;YACD,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACnC,KAAK,CAAC,OAAO,CAAC;gBACZ,EAAE;gBACF,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS;oBACjC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAC,KAAK;gBACd,OAAO,EAAE,OAAO;gBAChB,QAAQ;gBACR,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBACrD,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACrE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,SAAS;oBACrC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;oBACnC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,SAAS;oBAC/B,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC7B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;gBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS;oBACnC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAC,CACN,EACD,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAClC,CAAA;QACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,UAAU,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAC1E,CAAA;IACH,CAAC;IAED,IAAI,CAAqB,KAAY;QACnC,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAC1C,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CACtB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1B,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW;YAChC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS;oBACpC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;oBACf,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAClE,MAAM,CAAC,KAAK,CACb,CACF,CAAA;gBACH,OAAO,MAAM,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,IAAI;oBACJ,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC,CAAC,CAAA;YACJ,CAAC,CAAC;SACL,CAAC,CAAC,CACJ,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAC9F,CAAA;IACL,CAAC;IAED,QAAQ,CAAqB,KAAY;QACvC,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAC1C,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3B,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACxC,MAAM,CAAC,GAAG,CACR,OAAO,CAAC,IAAI,KAAK,SAAS;YACxB,CAAC,CAAC,MAAM,CAAC,WAAW;YACpB,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CACxB,EACH,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACT,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI;SACL,CAAC,CACH,CACF,CAAC,CACH,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,WAAW,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAClG,CAAA;IACL,CAAC;IAED,WAAW,CAET,KAAY,EACZ,OAA4E;QAE5E,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,QAAQ,GAAG,OAAO,EAAE,YAAY,IAAI,mBAAmB,CAAA;YAC7D,IAAI,KAAyC,CAAA;YAC7C,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACtC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;gBAC3D,CAAC;gBACD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;gBAClD,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAChD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;oBAC1B,CAAC;oBACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,IAAI,KAAK,CACP,mBAAmB,KAAK,4BACtB,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,YAAY,EACrD,EAAE,CACH,CACF,CAAA;gBACH,CAAC;gBACD,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAChE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAChB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,uCAAuC,CAAC,CAChE,CACF,CAAA;gBACD,KAAK,CAAC,CAAC,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,cAAc,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CACrG,CAAA;IACH,CAAC;IAED,OAAO,CAAqB,MAAW,EAAE,OAAwB;QAC/D,OAAO,MAAM,CAAC,OAAO,CACnB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CACnC,CAAA;IACH,CAAC;IAED,KAAK,CAAqB,KAAY;QACpC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAC1C,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CACrB,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAC/F,CAAA;IACL,CAAC;IAED,OAAO,CAEL,OAA4E,EAC5E,OAAyB;QAEzB,OAAO,KAAK,CAAC,aAAa,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAC5E,CAAA;IACH,CAAC;CACF,CAAA;AAED,MAAM,YAAY,GAAG;IACnB,SAAS;IACT,MAAM;IACN,UAAU;IACV,aAAa;IACb,SAAS;IACT,OAAO;IACP,SAAS;CACD,CAAA;AAEV,MAAM,SAAS,GAAG,CAAC,OAYlB,EAAO,EAAE;IACR,SAAS,aAAa,KAAI,CAAC;IAC3B,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IACrC,2EAA2E;IAC3E,+BAA+B;IAC/B,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;IACzF,kEAAkE;IAClE,uDAAuD;IACvD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,0EAA0E;QAC1E,uEAAuE;QACvE,6CAA6C;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAA8C,CAAA;QACtE,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE;YACxC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YACjC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAOlB,IAAU,EACV,OAgCC,EAOD,EAAE;IACF,0EAA0E;IAC1E,yEAAyE;IACzE,kCAAkC;IAClC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;QACpD,CAAC,CAAC,OAAO,CAAC,OAA0B;QACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAA+B,CAAC,CAAA;IAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAA;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAA;IACjD,4EAA4E;IAC5E,uEAAuE;IACvE,gCAAgC;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAC/C,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,EACjC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EAC/B,MAAM,CAAC,MAAM,EAAE,CAChB,CAAC,CAAA;IACF,OAAO,SAAS,CAAC;QACf,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;QAC5C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,QAAQ;QAChC,aAAa;QACb,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;QACpD,aAAa;QACb,WAAW;QACX,UAAU;QACV,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,KAAK,SAAS;gBAC5C,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC3C,CAAC,CAAC,CAAC;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC;YACzC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC;YACtD,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;YACpD,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;SAC5C;KACF,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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"}
|