effect-jobs 0.1.0-alpha.1 → 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/README.md +76 -46
- package/dist/FailureCode.d.ts +2 -2
- package/dist/FailureCode.d.ts.map +1 -1
- package/dist/FailureCode.js.map +1 -1
- package/dist/Job.d.ts +45 -16
- package/dist/Job.d.ts.map +1 -1
- package/dist/Job.js +20 -11
- package/dist/Job.js.map +1 -1
- package/dist/JobConsumer.d.ts +1 -1
- package/dist/JobConsumer.d.ts.map +1 -1
- package/dist/JobConsumer.js.map +1 -1
- package/dist/JobContract.d.ts +12 -4
- package/dist/JobContract.d.ts.map +1 -1
- package/dist/JobContract.js.map +1 -1
- package/dist/JobFailure.d.ts +6 -6
- package/dist/JobFailure.d.ts.map +1 -1
- package/dist/JobFailure.js +1 -1
- package/dist/JobFailure.js.map +1 -1
- package/dist/JobId.d.ts +6 -6
- package/dist/JobId.d.ts.map +1 -1
- package/dist/JobId.js.map +1 -1
- package/dist/JobIdentity.d.ts +12 -8
- package/dist/JobIdentity.d.ts.map +1 -1
- package/dist/JobIdentity.js +6 -8
- package/dist/JobIdentity.js.map +1 -1
- package/dist/JobLifecycle.d.ts +96 -14
- package/dist/JobLifecycle.d.ts.map +1 -1
- package/dist/JobLifecycle.js +50 -8
- package/dist/JobLifecycle.js.map +1 -1
- package/dist/JobOperators.d.ts +123 -0
- package/dist/JobOperators.d.ts.map +1 -0
- package/dist/JobOperators.js +48 -0
- package/dist/JobOperators.js.map +1 -0
- package/dist/JobPolicy.d.ts +12 -12
- package/dist/JobPolicy.d.ts.map +1 -1
- package/dist/JobPolicy.js.map +1 -1
- package/dist/JobProducer.d.ts +39 -16
- package/dist/JobProducer.d.ts.map +1 -1
- package/dist/JobProducer.js +55 -27
- package/dist/JobProducer.js.map +1 -1
- package/dist/JobRegistry.d.ts +5 -5
- package/dist/JobRegistry.js +8 -8
- package/dist/JobWorker.js +2 -2
- package/dist/JobWorkerRuntime.d.ts +1 -1
- package/dist/JobWorkerRuntime.js +1 -1
- package/dist/PostgreSqlDrizzleSchema.d.ts +50 -2
- package/dist/PostgreSqlDrizzleSchema.d.ts.map +1 -1
- package/dist/PostgreSqlDrizzleSchema.js +22 -6
- package/dist/PostgreSqlDrizzleSchema.js.map +1 -1
- package/dist/PostgreSqlJobs.d.ts +7 -2
- package/dist/PostgreSqlJobs.d.ts.map +1 -1
- package/dist/PostgreSqlJobs.js +45 -14
- package/dist/PostgreSqlJobs.js.map +1 -1
- package/dist/PostgreSqlNative.d.ts +1 -1
- package/dist/PostgreSqlNative.js +1 -1
- package/dist/PostgreSqlSchema.d.ts +11 -0
- package/dist/PostgreSqlSchema.d.ts.map +1 -1
- package/dist/PostgreSqlSchema.js +65 -3
- package/dist/PostgreSqlSchema.js.map +1 -1
- package/dist/internal/JobTransaction.js +2 -2
- package/dist/internal/JobTransaction.js.map +1 -1
- package/dist/internal/lifecycle/Artifacts.d.ts +34 -1
- package/dist/internal/lifecycle/Artifacts.d.ts.map +1 -1
- package/dist/internal/lifecycle/Artifacts.js +2 -2
- package/dist/internal/lifecycle/Artifacts.js.map +1 -1
- package/dist/internal/postgresql/Operators.d.ts +5 -0
- package/dist/internal/postgresql/Operators.d.ts.map +1 -0
- package/dist/internal/postgresql/Operators.js +150 -0
- package/dist/internal/postgresql/Operators.js.map +1 -0
- package/dist/internal/postgresql/Producer.d.ts +9 -0
- package/dist/internal/postgresql/Producer.d.ts.map +1 -1
- package/dist/internal/postgresql/Producer.js +29 -8
- package/dist/internal/postgresql/Producer.js.map +1 -1
- package/dist/internal/postgresql/Readiness.d.ts.map +1 -1
- package/dist/internal/postgresql/Readiness.js +30 -4
- package/dist/internal/postgresql/Readiness.js.map +1 -1
- package/dist/internal/postgresql/Rows.d.ts +9 -1
- package/dist/internal/postgresql/Rows.d.ts.map +1 -1
- package/dist/internal/postgresql/Rows.js +23 -3
- package/dist/internal/postgresql/Rows.js.map +1 -1
- package/dist/internal/postgresql/Store.js +5 -3
- package/dist/internal/postgresql/Store.js.map +1 -1
- package/dist/internal/worker/Execution.js +2 -2
- package/dist/internal/worker/Execution.js.map +1 -1
- package/package.json +48 -10
- package/specs/api-refinements.md +65 -4
- package/specs/architecture-decisions.md +50 -16
- package/specs/core-contract.md +11 -6
- package/specs/drizzle-compatibility.md +63 -20
- package/specs/operator-contract.md +104 -0
- package/specs/postgresql-backend.md +7 -0
- package/specs/release-qualification.md +118 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.2 (unpublished candidate)
|
|
4
|
+
|
|
5
|
+
Breaking prerelease changes since alpha.1:
|
|
6
|
+
|
|
7
|
+
- Rename public `Job.make({ kind })` to `{ name }`, definition/catalog and handler
|
|
8
|
+
context access from `.kind` to `.name`, and `JobIdentity.JobKind` to
|
|
9
|
+
`JobIdentity.JobName`. The public Drizzle jobs-column property also becomes
|
|
10
|
+
`.name`, including `extraIndexes` callbacks. Keep existing name values and
|
|
11
|
+
catalog versions: the physical PostgreSQL column is still `kind`, so this
|
|
12
|
+
rename alone needs no column rename, data rewrite/reset or migration. See
|
|
13
|
+
[the API migration contract](./specs/api-refinements.md).
|
|
14
|
+
- Require exact Effect `4.0.5`; the qualified native PostgreSQL companion is
|
|
15
|
+
`@effect/sql-pg@4.0.5`. Optional Drizzle peers are the exact snapshots
|
|
16
|
+
`1.0.0-rc.5-ab785fc` and `1.0.0-rc.5-169397b`.
|
|
17
|
+
- Bind producer slots to definitions with inferred enqueue inputs and explicit
|
|
18
|
+
application-owned transaction/service composition.
|
|
19
|
+
- Extend the PostgreSQL schema/readiness contract for Cancelled jobs, guarded
|
|
20
|
+
operators, corrected redrive and durable repair lineage. Applications own
|
|
21
|
+
migration review and execution; runtime does not migrate old installations.
|
|
22
|
+
|
|
23
|
+
Also included:
|
|
24
|
+
|
|
25
|
+
- Focused `JobOperators` support for guarded retry acceleration, cancellation and
|
|
26
|
+
redrive; corrected redrive creates a new job and preserves source evidence.
|
|
27
|
+
- Current Astro documentation, runnable application examples and the local
|
|
28
|
+
playground. The npm package excludes the website/playground implementation.
|
|
29
|
+
- PostgreSQL Node/Bun CI, real-process crash/recovery tests, and a bounded manual
|
|
30
|
+
soak harness. These are scoped synthetic qualification, not production or
|
|
31
|
+
exactly-once guarantees.
|
|
32
|
+
|
|
33
|
+
Completed retention remains 90 days by default. Upstream Drizzle full-declaration
|
|
34
|
+
checks retain their documented known-failure exceptions; successful own-code
|
|
35
|
+
checks do not mean upstream full strict PASS. Publication, registry installation
|
|
36
|
+
and deployment remain separate owner actions.
|
|
37
|
+
|
|
38
|
+
## 0.1.0-alpha.1-effect.4.0.5.local.2 (local only)
|
|
39
|
+
|
|
40
|
+
- Qualify exact Drizzle snapshots `1.0.0-rc.5-ab785fc` and `1.0.0-rc.5-169397b`
|
|
41
|
+
with Effect/sql-pg 4.0.5; use `ab785fc` for the Alchemy beta.83 peer graph.
|
|
42
|
+
- Preserve native PgClient transaction ownership and production runtime bytes.
|
|
43
|
+
- Keep the narrowly approved seven upstream declaration diagnostics as separate
|
|
44
|
+
C FAIL; require independent A+B source and negative controls for both snapshots.
|
|
45
|
+
|
|
3
46
|
## 0.1.0-alpha.1
|
|
4
47
|
|
|
5
48
|
Breaking prerelease API changes since alpha.0:
|
package/README.md
CHANGED
|
@@ -11,13 +11,14 @@ then handle delivery in a separate worker.
|
|
|
11
11
|
```ts
|
|
12
12
|
const SendReceipt = Job.make({
|
|
13
13
|
queue: JobQueue.make("billing"),
|
|
14
|
-
|
|
15
|
-
payload: Schema.Struct({ invoiceId: Schema.String })
|
|
14
|
+
name: "invoice.receipt",
|
|
15
|
+
payload: Schema.Struct({ invoiceId: Schema.String }),
|
|
16
|
+
defaultPolicy: JobPolicy.defaultPolicy
|
|
16
17
|
})
|
|
17
18
|
|
|
18
19
|
const IssueInvoice = JobProducer.make({
|
|
19
20
|
operation: "billing.issue-invoice",
|
|
20
|
-
slots:
|
|
21
|
+
slots: { receipt: SendReceipt }
|
|
21
22
|
})
|
|
22
23
|
|
|
23
24
|
// App setup: its Layer supplies a qualified PostgreSqlApplication adapter.
|
|
@@ -29,11 +30,7 @@ const jobsStorage = yield* PostgreSqlJobs.make({
|
|
|
29
30
|
yield* jobsStorage.withTransaction(() =>
|
|
30
31
|
Effect.gen(function* () {
|
|
31
32
|
yield* invoices.create({ id: invoiceId }) // Uses this same application transaction.
|
|
32
|
-
yield*
|
|
33
|
-
producer: IssueInvoice.identity({ operationId, slot: "receipt" }),
|
|
34
|
-
payload: { invoiceId },
|
|
35
|
-
policy: JobPolicy.defaultPolicy
|
|
36
|
-
})
|
|
33
|
+
yield* IssueInvoice.enqueue("receipt", { operationId, payload: { invoiceId } })
|
|
37
34
|
})
|
|
38
35
|
)
|
|
39
36
|
|
|
@@ -56,11 +53,15 @@ const ReceiptHandler = SendReceipt.handlerLayer(
|
|
|
56
53
|
|
|
57
54
|
## Install
|
|
58
55
|
|
|
59
|
-
Examples target `0.1.0-alpha.
|
|
60
|
-
|
|
56
|
+
Examples target the `0.1.0-alpha.2` release candidate. It is not yet published;
|
|
57
|
+
install the supplied qualified tarball rather than the older registry alpha.
|
|
58
|
+
Compared with alpha.1, this candidate requires Effect `4.0.5` and the current
|
|
59
|
+
application-owned PostgreSQL schema, including operator/repair lineage support.
|
|
60
|
+
Review the [changelog](./CHANGELOG.md) before upgrading. Alpha.0 callers must also
|
|
61
|
+
adapt the enqueue, policy, failure-code and encrypted-payload APIs.
|
|
61
62
|
|
|
62
63
|
```sh
|
|
63
|
-
npm install effect-jobs
|
|
64
|
+
npm install ./effect-jobs-0.1.0-alpha.2.tgz effect@4.0.5
|
|
64
65
|
```
|
|
65
66
|
|
|
66
67
|
Imports are omitted below. Use package subpaths (`effect-jobs/Job`, `effect-jobs/JobPolicy`, …); the root export is empty. `Codec` refers to `JobPayloadCodec`; `Consumer`, `Worker`, `Runtime`, `Polling` and `Registry` refer to the corresponding `JobConsumer`, `JobWorker`, `JobWorkerRuntime`, `PollingJobWorker` and `JobRegistry` modules.
|
|
@@ -86,28 +87,24 @@ export const BillingQueue = JobQueue.make("billing")
|
|
|
86
87
|
|
|
87
88
|
export const SendReceipt = Job.make({
|
|
88
89
|
queue: BillingQueue,
|
|
89
|
-
|
|
90
|
-
payload: Schema.Struct({ invoiceId: Schema.String })
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
export const IssueInvoice = JobProducer.make({
|
|
94
|
-
operation: "billing.issue-invoice",
|
|
95
|
-
slots: ["receipt"]
|
|
90
|
+
name: "invoice.receipt",
|
|
91
|
+
payload: Schema.Struct({ invoiceId: Schema.String }),
|
|
92
|
+
defaultPolicy: JobPolicy.defaultPolicy
|
|
96
93
|
})
|
|
97
94
|
```
|
|
98
95
|
|
|
99
96
|
```ts
|
|
100
|
-
// apps/api — owns invoice writes; does not import the email provider
|
|
97
|
+
// apps/api — owns invoice writes and its producer; does not import the email provider
|
|
98
|
+
const IssueInvoice = JobProducer.make({
|
|
99
|
+
operation: "billing.issue-invoice",
|
|
100
|
+
slots: { receipt: SendReceipt }
|
|
101
|
+
})
|
|
101
102
|
const issueInvoice = (operationId: string, invoiceId: string) =>
|
|
102
103
|
jobsStorage.withTransaction(() =>
|
|
103
104
|
Effect.gen(function* () {
|
|
104
105
|
yield* invoices.createOnce({ operationId, invoiceId })
|
|
105
106
|
|
|
106
|
-
return yield*
|
|
107
|
-
producer: IssueInvoice.identity({ operationId, slot: "receipt" }),
|
|
108
|
-
payload: { invoiceId },
|
|
109
|
-
policy: receiptPolicy
|
|
110
|
-
})
|
|
107
|
+
return yield* IssueInvoice.enqueue("receipt", { operationId, payload: { invoiceId } })
|
|
111
108
|
})
|
|
112
109
|
)
|
|
113
110
|
```
|
|
@@ -139,28 +136,44 @@ colliding:
|
|
|
139
136
|
```ts
|
|
140
137
|
const IssueInvoiceWithPdf = JobProducer.make({
|
|
141
138
|
operation: "billing.issue-invoice-with-pdf",
|
|
142
|
-
slots:
|
|
139
|
+
slots: { "send-receipt": SendReceipt, "generate-pdf": GeneratePdf }
|
|
143
140
|
})
|
|
144
141
|
|
|
145
142
|
// Inside the application's transaction; GeneratePdf is another job definition.
|
|
146
|
-
yield*
|
|
147
|
-
producer: IssueInvoiceWithPdf.identity({ operationId, slot: "send-receipt" }),
|
|
148
|
-
payload: { invoiceId },
|
|
149
|
-
policy: JobPolicy.defaultPolicy
|
|
150
|
-
})
|
|
143
|
+
yield* IssueInvoiceWithPdf.enqueue("send-receipt", { operationId, payload: { invoiceId } })
|
|
151
144
|
|
|
152
|
-
yield*
|
|
153
|
-
|
|
145
|
+
yield* IssueInvoiceWithPdf.enqueue("generate-pdf", {
|
|
146
|
+
operationId,
|
|
154
147
|
payload: { invoiceId },
|
|
155
148
|
policy: JobPolicy.defaultPolicy
|
|
156
149
|
})
|
|
157
150
|
```
|
|
158
151
|
|
|
159
152
|
Retrying with the same operation ID and slots returns the existing matching jobs.
|
|
160
|
-
|
|
161
|
-
job
|
|
153
|
+
Slot bindings check the selected payload, policy and Schema services in TypeScript. Low-level `identity` remains structural, without that binding proof. A slot names the consequence, not the
|
|
154
|
+
job name: two slots can enqueue the same job name. Slots do not impose execution
|
|
162
155
|
order or dependencies between jobs.
|
|
163
156
|
|
|
157
|
+
A contract name answers which handler runs; an operation answers why the work
|
|
158
|
+
exists. Initial invoice delivery and a deliberate resend can use the same job
|
|
159
|
+
name with different operations/operation IDs. Two recipient slots can also bind
|
|
160
|
+
the same job with different payloads. See the [checked invoice recipes](apps/website/examples/docs/orders/apps/api/src/orders/application/InvoiceDelivery.ts).
|
|
161
|
+
|
|
162
|
+
| Field | Meaning |
|
|
163
|
+
| ------------- | ----------------------------------------------------------------- |
|
|
164
|
+
| `name` | Stable job contract and handler. |
|
|
165
|
+
| `queue` | Logical processing/routing group. |
|
|
166
|
+
| `operation` | Business action that caused work. |
|
|
167
|
+
| `operationId` | Stable instance across business retries, not an automatic job ID. |
|
|
168
|
+
| `slot` | Named consequence, not chronological stage. |
|
|
169
|
+
|
|
170
|
+
A complete definition `defaultPolicy` makes ordinary enqueue policy optional.
|
|
171
|
+
A complete override replaces it; without a definite default, policy is required.
|
|
172
|
+
Matching duplicates retain the first stored policy/availability across deployment
|
|
173
|
+
changes; workers read stored policy only. No version bump is needed for a default
|
|
174
|
+
change alone. Public `name` maps to physical PostgreSQL `jobs.kind`; this field
|
|
175
|
+
rename requires no migration or data rewrite. Identifier value changes are separate.
|
|
176
|
+
|
|
164
177
|
## Long-running Node.js worker
|
|
165
178
|
|
|
166
179
|
Producer and consumer connect to the same PostgreSQL jobs tables.
|
|
@@ -215,19 +228,21 @@ yield* Runtime.drain(billing).pipe(Effect.provide(WorkerLayer))
|
|
|
215
228
|
The backend exposes its producer service as `jobsStorage.producer`.
|
|
216
229
|
Provide it as `JobEnqueue` to effects that call `enqueue` or `enqueueStandalone`.
|
|
217
230
|
`PostgreSqlNative.layer({ client, operationTimeoutMillis })` bridges the exact
|
|
218
|
-
application-owned `PgClient@4.0.
|
|
219
|
-
|
|
220
|
-
|
|
231
|
+
application-owned `PgClient@4.0.5`, including its active `transactionService`.
|
|
232
|
+
Use public `PgClient.withTransaction` on that same client with Drizzle queries
|
|
233
|
+
inside its Effect body. Missing or foreign-client transactions fail before preparation.
|
|
221
234
|
Pools, keys, timeouts and transaction ownership remain application-owned.
|
|
222
235
|
|
|
223
236
|
```ts
|
|
224
|
-
// nativeDrizzle is drizzle-orm/effect-postgres
|
|
237
|
+
// PgClient is @effect/sql-pg/PgClient; nativeDrizzle is drizzle-orm/effect-postgres.
|
|
238
|
+
// invoiceTable is app-owned. This must be the client passed to PostgreSqlNative.
|
|
239
|
+
const client = yield* PgClient.PgClient
|
|
225
240
|
const db = yield* nativeDrizzle.makeWithDefaults()
|
|
226
241
|
|
|
227
|
-
yield*
|
|
228
|
-
.
|
|
242
|
+
yield* client
|
|
243
|
+
.withTransaction(
|
|
229
244
|
Effect.gen(function* () {
|
|
230
|
-
yield*
|
|
245
|
+
yield* db.insert(invoiceTable).values({ id: invoiceId })
|
|
231
246
|
|
|
232
247
|
return yield* SendReceipt.enqueue({
|
|
233
248
|
producer: IssueInvoice.identity({ operationId, slot: "receipt" }),
|
|
@@ -243,6 +258,20 @@ Alternatively, `jobsStorage.withTransaction` delegates to the same client manage
|
|
|
243
258
|
and supplies `JobEnqueue`, as used by `issueInvoice`. Provide the scoped native
|
|
244
259
|
PgClient Layer around the whole application; defining a Layer alone starts no work.
|
|
245
260
|
|
|
261
|
+
Joined results remain provisional until the outer owner acknowledges COMMIT.
|
|
262
|
+
Keep business, receipt and enqueue writes in one Effect/Context; do not run an
|
|
263
|
+
independent `runPromise` inside the transaction. The qualified route supports
|
|
264
|
+
ordinary outer transactions and jobs joining them without a savepoint. Nested
|
|
265
|
+
transactions, Drizzle transaction options and isolation settings are not qualified
|
|
266
|
+
as equivalent. `db.transaction` retains an upstream error-type limitation and is
|
|
267
|
+
excluded from this route; no local type correction is used. Strict/exactOptional
|
|
268
|
+
checks of our sources (A+B) remain required with dependency `skipLibCheck:true`.
|
|
269
|
+
The full foreign declaration audit (C) remains known upstream FAIL, separately
|
|
270
|
+
reported and nonblocking. Outer provider errors can also occur as defects: the
|
|
271
|
+
application must sanitize them without losing caller errors/interruption, preserve
|
|
272
|
+
Unknown COMMIT knowledge and reconcile its exact receipt read-only. Missing
|
|
273
|
+
receipts or lost responses never authorize automatic replay or prove NotCommitted.
|
|
274
|
+
|
|
246
275
|
`enqueue` requires an active transaction. For a job with no accompanying domain
|
|
247
276
|
write, `enqueueStandalone` opens its own transaction and rejects active ones:
|
|
248
277
|
|
|
@@ -365,7 +394,7 @@ const ReceiptDocument = Schema.Struct({
|
|
|
365
394
|
|
|
366
395
|
const SendPrivateReceipt = Job.make({
|
|
367
396
|
queue: BillingQueue,
|
|
368
|
-
|
|
397
|
+
name: "invoice.private-receipt",
|
|
369
398
|
|
|
370
399
|
payload: Schema.Struct({
|
|
371
400
|
invoiceId: Schema.String,
|
|
@@ -379,7 +408,7 @@ const SendPrivateReceipt = Job.make({
|
|
|
379
408
|
|
|
380
409
|
const PrivateReceiptProducer = JobProducer.make({
|
|
381
410
|
operation: "billing.private-receipt",
|
|
382
|
-
slots:
|
|
411
|
+
slots: { receipt: SendPrivateReceipt }
|
|
383
412
|
})
|
|
384
413
|
|
|
385
414
|
const receipt = yield* Schema.decodeUnknownEffect(ReceiptDocument)({
|
|
@@ -442,13 +471,13 @@ invoice PDF. Each consequence has its own producer slot.
|
|
|
442
471
|
// Shared definitions: reuse SendReceipt and BillingQueue from above.
|
|
443
472
|
const GeneratePdf = Job.make({
|
|
444
473
|
queue: BillingQueue,
|
|
445
|
-
|
|
474
|
+
name: "invoice.generate-pdf",
|
|
446
475
|
payload: Schema.Struct({ invoiceId: Schema.String })
|
|
447
476
|
})
|
|
448
477
|
|
|
449
478
|
const CloudInvoiceProducer = JobProducer.make({
|
|
450
479
|
operation: "billing.cloudflare.issue-invoice",
|
|
451
|
-
slots:
|
|
480
|
+
slots: { "send-receipt": SendReceipt, "generate-pdf": GeneratePdf }
|
|
452
481
|
})
|
|
453
482
|
|
|
454
483
|
// Consumer composition: application mailer/PDF services own external effects.
|
|
@@ -580,7 +609,8 @@ Start with one DO and concurrency `2`; add named consumers only after measuring
|
|
|
580
609
|
## Alpha boundaries
|
|
581
610
|
|
|
582
611
|
PostgreSQL only. Application-owned adapters, pools, migrations and cleanup. No recurring scheduler or admin API. Every TypeScript fence is extracted and declaration-checked against source and
|
|
583
|
-
the packed alpha.1 artifact.
|
|
612
|
+
the historical packed alpha.1 artifact. The current local Effect 4.0.5 candidate
|
|
613
|
+
requires its own receipts; see `specs/release-qualification.md`. Node/Bun composition, handler, codec and encryption
|
|
584
614
|
checks use explicit application fixtures. Real native PostgreSQL transaction
|
|
585
615
|
gates are separate. Cloudflare external PostgreSQL, deployment, server crashes
|
|
586
616
|
and arbitrary network faults are NotTested; upstream full strict Drizzle
|
package/dist/FailureCode.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/** Validated application-owned diagnostic identifiers. */
|
|
2
2
|
import { Result, Schema } from "effect";
|
|
3
|
+
/** @category models */
|
|
4
|
+
export type FailureCode = typeof FailureCode.Type;
|
|
3
5
|
/** 1–128 ASCII identifier characters. Catalog membership is not a storage requirement.
|
|
4
6
|
* Codes must never contain provider messages, secrets or private identifiers.
|
|
5
7
|
* Validation checks syntax, not whether a valid identifier contains sensitive data.
|
|
6
8
|
* @category schemas
|
|
7
9
|
*/
|
|
8
10
|
export declare const FailureCode: Schema.brand<Schema.String, "effect-jobs/FailureCode">;
|
|
9
|
-
/** @category models */
|
|
10
|
-
export type FailureCode = typeof FailureCode.Type;
|
|
11
11
|
declare const InvalidFailureCode_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 & {
|
|
12
12
|
readonly _tag: "InvalidFailureCode";
|
|
13
13
|
} & Readonly<A>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FailureCode.d.ts","sourceRoot":"","sources":["../src/FailureCode.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,EAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C
|
|
1
|
+
{"version":3,"file":"FailureCode.d.ts","sourceRoot":"","sources":["../src/FailureCode.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,EAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,uBAAuB;AACvB,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AACjD;;;;GAIG;AACH,eAAO,MAAM,WAAW,wDAOvB,CAAA;;;;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;GAEG;AACH,eAAO,MAAM,KAAK,UAAW,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAShF,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAClE,KAAK,KACX,EAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,GAcvD,CAAA"}
|
package/dist/FailureCode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FailureCode.js","sourceRoot":"","sources":["../src/FailureCode.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"FailureCode.js","sourceRoot":"","sources":["../src/FailureCode.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAI7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAC3C,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EACrB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EACvB,MAAM,CAAC,SAAS,CAAC,kCAAkC,CAAC,CACrD,EACD,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CACxC,CAAA;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAG3E;IACA,IAAa,OAAO;QAClB,OAAO,8BAA8B,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC9E,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAkD,EAAE,CACrF,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,QAAQ,CACb,GAAG,EAAE,CACH,IAAI,kBAAkB,CAAC;IACrB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,iDAAiD;CAC5D,CAAC,CACL,CACF,CAAA;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,KAAY,EAC6C,EAAE;IAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5E,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC,CAAC,CACH,CAAA;IACD,qFAAqF;IACrF,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAE7B,CAAA;AACH,CAAC,CAAA"}
|
package/dist/Job.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { EnqueueInput, EnqueueResult, HandlerInput, JobPayloadDecoder, JobP
|
|
|
6
6
|
import type { JobFailure } from "./JobFailure.js";
|
|
7
7
|
import { CatalogIdentity } from "./JobIdentity.js";
|
|
8
8
|
import type { JobQueue } from "./JobQueue.js";
|
|
9
|
+
import { type JobPolicy } from "./JobPolicy.js";
|
|
9
10
|
import { JobRegistry, type DuplicateJobHandler } from "./JobRegistry.js";
|
|
10
11
|
import type { JobEnqueueError, JobsTransaction } from "./JobTransaction.js";
|
|
11
12
|
import { JobEnqueue, type JobBackendError } from "./JobEnqueue.js";
|
|
@@ -26,22 +27,23 @@ export declare class InvalidJobDefinition extends InvalidJobDefinition_base<{
|
|
|
26
27
|
*
|
|
27
28
|
* @category models
|
|
28
29
|
*/
|
|
29
|
-
export interface JobDefinition<Payload extends Schema.Top = Schema.Top,
|
|
30
|
-
readonly
|
|
30
|
+
export interface JobDefinition<Payload extends Schema.Top = Schema.Top, Name extends string = string, Version extends number = number, Queue extends string = string, Default extends JobPolicy | undefined = JobPolicy | undefined> {
|
|
31
|
+
readonly name: Name;
|
|
31
32
|
readonly version: Version;
|
|
32
33
|
readonly queue: JobQueue<Queue>;
|
|
33
34
|
readonly payload: Payload;
|
|
34
|
-
readonly
|
|
35
|
+
readonly defaultPolicy: Default;
|
|
36
|
+
readonly catalog: CatalogIdentity<Queue, Name, Version>;
|
|
35
37
|
/** Enqueues in the active configured backend transaction; runs no commit or replay.
|
|
36
38
|
* Same producer tuple compares catalog and semantic payload, returning the first ID
|
|
37
39
|
* for a match or JobIntegrityConflict for changed content. Results are provisional
|
|
38
40
|
* until outer commit; encoding services and backend E/R remain explicit. */
|
|
39
|
-
readonly enqueue: (input: EnqueueInput<Payload["Type"]>) => Effect.Effect<EnqueueResult, JobEnqueueError | JobBackendError, JobEnqueue | Payload["EncodingServices"]>;
|
|
41
|
+
readonly enqueue: (input: EnqueueInput<Payload["Type"], Default>) => Effect.Effect<EnqueueResult, JobEnqueueError | JobBackendError, JobEnqueue | Payload["EncodingServices"]>;
|
|
40
42
|
/** Owns an atomic transaction; rejects an active configured-client transaction.
|
|
41
43
|
* Success follows acknowledged commit; uncertain outcomes stay unknown. */
|
|
42
|
-
readonly enqueueStandalone: (input: EnqueueInput<Payload["Type"]>) => Effect.Effect<EnqueueResult, JobEnqueueError | JobBackendError, JobEnqueue | Payload["EncodingServices"]>;
|
|
44
|
+
readonly enqueueStandalone: (input: EnqueueInput<Payload["Type"], Default>) => Effect.Effect<EnqueueResult, JobEnqueueError | JobBackendError, JobEnqueue | Payload["EncodingServices"]>;
|
|
43
45
|
/** Explicit invocation-scoped primitive for qualified custom adapters. */
|
|
44
|
-
readonly enqueueInTransaction: <E, R>(tx: JobsTransaction<E, R>, input: EnqueueInput<Payload["Type"]>) => Effect.Effect<EnqueueResult, E | JobEnqueueError, R | Payload["EncodingServices"]>;
|
|
46
|
+
readonly enqueueInTransaction: <E, R>(tx: JobsTransaction<E, R>, input: EnqueueInput<Payload["Type"], Default>) => Effect.Effect<EnqueueResult, E | JobEnqueueError, R | Payload["EncodingServices"]>;
|
|
45
47
|
/** Installs one decoder/handler in JobRegistry and captures its Effect services.
|
|
46
48
|
* Requires JobRegistry plus decoding and execute requirements; duplicate installation
|
|
47
49
|
* fails with DuplicateJobHandler. Receives payload/context, with no SQL authority. */
|
|
@@ -62,7 +64,7 @@ export interface JobDefinition<Payload extends Schema.Top = Schema.Top, Kind ext
|
|
|
62
64
|
*
|
|
63
65
|
* const definition = Job.make({
|
|
64
66
|
* queue: Queue.make("billing"),
|
|
65
|
-
*
|
|
67
|
+
* name: "invoice.generate",
|
|
66
68
|
* payload: Schema.Struct({ invoiceId: Schema.String })
|
|
67
69
|
* })
|
|
68
70
|
* // Provide JobRegistry when building this Layer. Add application services as needed.
|
|
@@ -75,26 +77,53 @@ export interface JobDefinition<Payload extends Schema.Top = Schema.Top, Kind ext
|
|
|
75
77
|
*
|
|
76
78
|
* @category constructors
|
|
77
79
|
*/
|
|
78
|
-
export declare function make<Payload extends Schema.Top, const
|
|
79
|
-
readonly
|
|
80
|
+
export declare function make<Payload extends Schema.Top, const Name extends string, const Queue extends string, const Version extends number>(options: {
|
|
81
|
+
readonly name: Name;
|
|
80
82
|
readonly version: Version;
|
|
81
83
|
readonly queue: JobQueue<Queue>;
|
|
82
84
|
readonly payload: Payload;
|
|
85
|
+
readonly defaultPolicy: JobPolicy;
|
|
83
86
|
readonly encodePayload?: JobPayloadEncoder;
|
|
84
|
-
}): JobDefinition<Payload,
|
|
85
|
-
export declare function make<Payload extends Schema.Top, const
|
|
86
|
-
readonly
|
|
87
|
+
}): JobDefinition<Payload, Name, Version, Queue, JobPolicy>;
|
|
88
|
+
export declare function make<Payload extends Schema.Top, const Name extends string, const Queue extends string>(options: {
|
|
89
|
+
readonly name: Name;
|
|
87
90
|
readonly version?: undefined;
|
|
88
91
|
readonly queue: JobQueue<Queue>;
|
|
89
92
|
readonly payload: Payload;
|
|
93
|
+
readonly defaultPolicy: JobPolicy;
|
|
90
94
|
readonly encodePayload?: JobPayloadEncoder;
|
|
91
|
-
}): JobDefinition<Payload,
|
|
92
|
-
export declare function make<Payload extends Schema.Top, const
|
|
93
|
-
readonly
|
|
95
|
+
}): JobDefinition<Payload, Name, 1, Queue, JobPolicy>;
|
|
96
|
+
export declare function make<Payload extends Schema.Top, const Name extends string, const Queue extends string, const Version extends number = 1>(options: {
|
|
97
|
+
readonly name: Name;
|
|
94
98
|
readonly version?: Version | undefined;
|
|
95
99
|
readonly queue: JobQueue<Queue>;
|
|
96
100
|
readonly payload: Payload;
|
|
101
|
+
readonly defaultPolicy: JobPolicy;
|
|
97
102
|
readonly encodePayload?: JobPayloadEncoder;
|
|
98
|
-
}): JobDefinition<Payload,
|
|
103
|
+
}): JobDefinition<Payload, Name, Version | 1, Queue, JobPolicy>;
|
|
104
|
+
export declare function make<Payload extends Schema.Top, const Name extends string, const Queue extends string, const Version extends number>(options: {
|
|
105
|
+
readonly name: Name;
|
|
106
|
+
readonly version: Version;
|
|
107
|
+
readonly queue: JobQueue<Queue>;
|
|
108
|
+
readonly payload: Payload;
|
|
109
|
+
readonly defaultPolicy?: JobPolicy | undefined;
|
|
110
|
+
readonly encodePayload?: JobPayloadEncoder;
|
|
111
|
+
}): JobDefinition<Payload, Name, Version, Queue, JobPolicy | undefined>;
|
|
112
|
+
export declare function make<Payload extends Schema.Top, const Name extends string, const Queue extends string>(options: {
|
|
113
|
+
readonly name: Name;
|
|
114
|
+
readonly version?: undefined;
|
|
115
|
+
readonly queue: JobQueue<Queue>;
|
|
116
|
+
readonly payload: Payload;
|
|
117
|
+
readonly defaultPolicy?: JobPolicy | undefined;
|
|
118
|
+
readonly encodePayload?: JobPayloadEncoder;
|
|
119
|
+
}): JobDefinition<Payload, Name, 1, Queue, JobPolicy | undefined>;
|
|
120
|
+
export declare function make<Payload extends Schema.Top, const Name extends string, const Queue extends string, const Version extends number = 1>(options: {
|
|
121
|
+
readonly name: Name;
|
|
122
|
+
readonly version?: Version | undefined;
|
|
123
|
+
readonly queue: JobQueue<Queue>;
|
|
124
|
+
readonly payload: Payload;
|
|
125
|
+
readonly defaultPolicy?: JobPolicy | undefined;
|
|
126
|
+
readonly encodePayload?: JobPayloadEncoder;
|
|
127
|
+
}): JobDefinition<Payload, Name, Version | 1, Queue, JobPolicy | undefined>;
|
|
99
128
|
export {};
|
|
100
129
|
//# 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;;GAEG;AACH,OAAO,EAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEpD,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAoB,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Job.d.ts","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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"}
|
package/dist/Job.js
CHANGED
|
@@ -17,20 +17,33 @@ import { insertPrepared } from "./internal/JobTransaction.js";
|
|
|
17
17
|
export class InvalidJobDefinition extends Data.TaggedError("InvalidJobDefinition") {
|
|
18
18
|
}
|
|
19
19
|
export function make(options) {
|
|
20
|
-
const {
|
|
20
|
+
const { name, queue, payload } = options;
|
|
21
21
|
const version = options.version === undefined ? 1 : options.version;
|
|
22
22
|
const encodePayload = options.encodePayload ?? encodeJobPayload;
|
|
23
|
-
const catalog = Object.freeze({ queue: queue.name,
|
|
23
|
+
const catalog = Object.freeze({ queue: queue.name, name, version });
|
|
24
24
|
if (!Schema.is(CatalogIdentity)(catalog) || !Schema.isSchema(payload)) {
|
|
25
25
|
throw new InvalidJobDefinition({
|
|
26
|
-
expected: "valid queue/
|
|
26
|
+
expected: "valid queue/name/version and payload Schema"
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
+
const configuredPolicy = options.defaultPolicy;
|
|
30
|
+
if (configuredPolicy !== undefined &&
|
|
31
|
+
!Schema.is(PersistedJobPolicy)(configuredPolicy)) {
|
|
32
|
+
throw new InvalidJobDefinition({ expected: "complete valid defaultPolicy" });
|
|
33
|
+
}
|
|
34
|
+
const snapshotPolicy = (policy) => Object.freeze({
|
|
35
|
+
...policy,
|
|
36
|
+
retrySchedule: Object.freeze({ ...policy.retrySchedule }),
|
|
37
|
+
completedRetention: Object.freeze({ ...policy.completedRetention }),
|
|
38
|
+
deadRetention: Object.freeze({ ...policy.deadRetention })
|
|
39
|
+
});
|
|
40
|
+
const defaultPolicy = configuredPolicy === undefined ? undefined : snapshotPolicy(configuredPolicy);
|
|
29
41
|
const prepare = Effect.fnUntraced(function* (input) {
|
|
30
42
|
if (!Schema.is(ProducerIdentity)(input.producer)) {
|
|
31
43
|
return yield* new InvalidJobInput({ field: "producer" });
|
|
32
44
|
}
|
|
33
|
-
|
|
45
|
+
const selectedPolicy = input.policy === undefined ? defaultPolicy : input.policy;
|
|
46
|
+
if (!Schema.is(PersistedJobPolicy)(selectedPolicy)) {
|
|
34
47
|
return yield* new InvalidJobInput({ field: "policy" });
|
|
35
48
|
}
|
|
36
49
|
if (input.availableAt !== undefined && !Schema.is(EpochMillis)(input.availableAt)) {
|
|
@@ -41,12 +54,7 @@ export function make(options) {
|
|
|
41
54
|
operationId: input.producer.operationId,
|
|
42
55
|
slot: input.producer.slot
|
|
43
56
|
});
|
|
44
|
-
const policy =
|
|
45
|
-
...input.policy,
|
|
46
|
-
retrySchedule: Object.freeze({ ...input.policy.retrySchedule }),
|
|
47
|
-
completedRetention: Object.freeze({ ...input.policy.completedRetention }),
|
|
48
|
-
deadRetention: Object.freeze({ ...input.policy.deadRetention })
|
|
49
|
-
});
|
|
57
|
+
const policy = snapshotPolicy(selectedPolicy);
|
|
50
58
|
const availableAt = input.availableAt;
|
|
51
59
|
const encoded = yield* encodePayload(payload, input.payload);
|
|
52
60
|
return Object.freeze({
|
|
@@ -58,10 +66,11 @@ export function make(options) {
|
|
|
58
66
|
});
|
|
59
67
|
});
|
|
60
68
|
return Object.freeze({
|
|
61
|
-
|
|
69
|
+
name,
|
|
62
70
|
version,
|
|
63
71
|
queue,
|
|
64
72
|
payload,
|
|
73
|
+
defaultPolicy,
|
|
65
74
|
catalog,
|
|
66
75
|
enqueue: Effect.fnUntraced(function* (input) {
|
|
67
76
|
const backend = yield* JobEnqueue;
|
package/dist/Job.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AASlD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEpE,OAAO,EAAE,WAAW,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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"}
|
package/dist/JobConsumer.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Effect, Schema } from "effect";
|
|
5
5
|
import type { JobQueue } from "./JobQueue.js";
|
|
6
|
+
type ConsumerOptions = typeof ConsumerOptions.Type;
|
|
6
7
|
declare const ConsumerOptions: Schema.Struct<{
|
|
7
8
|
/** Shared per-worker queue permits, acquired before claim; integer 1–64. */
|
|
8
9
|
readonly localConcurrency: Schema.Int;
|
|
@@ -19,7 +20,6 @@ declare const ConsumerOptions: Schema.Struct<{
|
|
|
19
20
|
export interface JobConsumer<Q extends JobQueue = JobQueue> extends ConsumerOptions {
|
|
20
21
|
readonly queue: Q;
|
|
21
22
|
}
|
|
22
|
-
type ConsumerOptions = typeof ConsumerOptions.Type;
|
|
23
23
|
declare const InvalidJobConsumer_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 & {
|
|
24
24
|
readonly _tag: "InvalidJobConsumer";
|
|
25
25
|
} & Readonly<A>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobConsumer.d.ts","sourceRoot":"","sources":["../src/JobConsumer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,QAAA,MAAM,eAAe;IACnB,4EAA4E;;IAI5E,oEAAoE;;IAIpE,+EAA+E;;EAI/E,CAAA;AAEF;;;;GAIG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,eAAe;IACjF,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB
|
|
1
|
+
{"version":3,"file":"JobConsumer.d.ts","sourceRoot":"","sources":["../src/JobConsumer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,KAAK,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAClD,QAAA,MAAM,eAAe;IACnB,4EAA4E;;IAI5E,oEAAoE;;IAIpE,+EAA+E;;EAI/E,CAAA;AAEF;;;;GAIG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,eAAe;IACjF,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB;;;;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;CACnC,CAAC;CAAG;;;;AACL;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,0BAAyC;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,QAAQ,SAC9B,CAAC,WACC,eAAe,KACvB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAIhD,CAAA;AAEH;;;;GAIG;AACH,MAAM,WAAW,OAAO,CACtB,SAAS,SAAS,aAAa,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC;IAEzE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CACxC;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,SAAS,SAAS,aAAa,CAAC,WAAW,CAAC,gBACvD,SAAS,KACtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAcrD,CAAA"}
|
package/dist/JobConsumer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobConsumer.js","sourceRoot":"","sources":["../src/JobConsumer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"JobConsumer.js","sourceRoot":"","sources":["../src/JobConsumer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAI7C,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAC5D;IACD,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAChE;IACD,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAClC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAChE;CACF,CAAC,CAAA;AAWF;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAE3E;CAAG;AACL;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAE/E;IACA,IAAa,OAAO;QAClB,OAAO,0BAA0B,IAAI,CAAC,KAAK,4CAA4C,CAAA;IACzF,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,KAAQ,EACR,OAAwB,EAC2B,EAAE,CACrD,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAC/E,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,EAC7D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAC7E,CAAA;AAaH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,GAAG,SAAoB,EACkC,EAAE,CAC3D,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;IAChC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CACnB,MAAM,CAAC,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAmC;KAC3E,CAAC,CACH,CAAA;AACH,CAAC,CAAC,CAAA"}
|
package/dist/JobContract.d.ts
CHANGED
|
@@ -34,13 +34,21 @@ export interface HandlerInput<Payload> {
|
|
|
34
34
|
*
|
|
35
35
|
* @category models
|
|
36
36
|
*/
|
|
37
|
-
export
|
|
38
|
-
readonly producer: ProducerIdentity;
|
|
37
|
+
export type EnqueueOptions<Payload, Default extends JobPolicy | undefined = undefined> = {
|
|
39
38
|
readonly payload: Payload;
|
|
40
|
-
readonly policy: JobPolicy;
|
|
41
39
|
/** Omitted means database time on first insertion, never on matching duplicate. */
|
|
42
40
|
readonly availableAt?: number;
|
|
43
|
-
}
|
|
41
|
+
} & ([Default] extends [JobPolicy] ? {
|
|
42
|
+
readonly policy?: JobPolicy;
|
|
43
|
+
} : {
|
|
44
|
+
readonly policy: JobPolicy;
|
|
45
|
+
});
|
|
46
|
+
/** Decoded enqueue options plus the explicit producer identity.
|
|
47
|
+
* @category models
|
|
48
|
+
*/
|
|
49
|
+
export type EnqueueInput<Payload, Default extends JobPolicy | undefined = undefined> = EnqueueOptions<Payload, Default> & {
|
|
50
|
+
readonly producer: ProducerIdentity;
|
|
51
|
+
};
|
|
44
52
|
/**
|
|
45
53
|
* Inserted or AlreadyPresent with the durable job ID. Success inside a joined
|
|
46
54
|
* transaction is provisional until the application owner commits.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobContract.d.ts","sourceRoot":"","sources":["../src/JobContract.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,gFAAgF;IAChF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AACD;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,OAAO;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;CACjC;AACD;;;;;GAKG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"JobContract.d.ts","sourceRoot":"","sources":["../src/JobContract.ts"],"names":[],"mappings":"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"}
|