@beignet/core 0.0.32 → 0.0.33
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 +35 -0
- package/README.md +344 -19
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +63 -47
- package/dist/application/index.js.map +1 -1
- package/dist/events/index.d.ts +6 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +20 -10
- package/dist/events/index.js.map +1 -1
- package/dist/jobs/index.d.ts +415 -4
- package/dist/jobs/index.d.ts.map +1 -1
- package/dist/jobs/index.js +392 -3
- package/dist/jobs/index.js.map +1 -1
- package/dist/outbox/index.d.ts +150 -1
- package/dist/outbox/index.d.ts.map +1 -1
- package/dist/outbox/index.js +170 -1
- package/dist/outbox/index.js.map +1 -1
- package/dist/ports/index.d.ts +6 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +1 -0
- package/dist/ports/index.js.map +1 -1
- package/dist/providers/instrumentation.d.ts +4 -0
- package/dist/providers/instrumentation.d.ts.map +1 -1
- package/dist/providers/instrumentation.js.map +1 -1
- package/dist/schedules/index.d.ts +8 -7
- package/dist/schedules/index.d.ts.map +1 -1
- package/dist/schedules/index.js +47 -16
- package/dist/schedules/index.js.map +1 -1
- package/dist/server/hooks/index.d.ts +1 -0
- package/dist/server/hooks/index.d.ts.map +1 -1
- package/dist/server/hooks/index.js +1 -0
- package/dist/server/hooks/index.js.map +1 -1
- package/dist/server/hooks/rate-limit.d.ts +26 -13
- package/dist/server/hooks/rate-limit.d.ts.map +1 -1
- package/dist/server/hooks/rate-limit.js +28 -34
- package/dist/server/hooks/rate-limit.js.map +1 -1
- package/dist/server/hooks/security.d.ts +179 -0
- package/dist/server/hooks/security.d.ts.map +1 -0
- package/dist/server/hooks/security.js +225 -0
- package/dist/server/hooks/security.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +8 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts.map +1 -1
- package/dist/server/instrumentation.js +22 -6
- package/dist/server/instrumentation.js.map +1 -1
- package/dist/server/request-context.d.ts +4 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +3 -0
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/runtime-integrity.d.ts +84 -0
- package/dist/server/runtime-integrity.d.ts.map +1 -0
- package/dist/server/runtime-integrity.js +160 -0
- package/dist/server/runtime-integrity.js.map +1 -0
- package/dist/server/server.d.ts +10 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +55 -1
- package/dist/server/server.js.map +1 -1
- package/dist/server/trusted-proxy.d.ts +77 -0
- package/dist/server/trusted-proxy.d.ts.map +1 -0
- package/dist/server/trusted-proxy.js +129 -0
- package/dist/server/trusted-proxy.js.map +1 -0
- package/dist/tasks/index.d.ts +6 -7
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +22 -5
- package/dist/tasks/index.js.map +1 -1
- package/dist/tenancy/index.d.ts +41 -0
- package/dist/tenancy/index.d.ts.map +1 -0
- package/dist/tenancy/index.js +34 -0
- package/dist/tenancy/index.js.map +1 -0
- package/dist/tracing/execution.d.ts +14 -0
- package/dist/tracing/execution.d.ts.map +1 -0
- package/dist/tracing/execution.js +17 -0
- package/dist/tracing/execution.js.map +1 -0
- package/dist/tracing/index.d.ts +49 -0
- package/dist/tracing/index.d.ts.map +1 -1
- package/dist/tracing/index.js +59 -0
- package/dist/tracing/index.js.map +1 -1
- package/dist/uploads/client.d.ts.map +1 -1
- package/dist/uploads/client.js +44 -6
- package/dist/uploads/client.js.map +1 -1
- package/dist/uploads/index.d.ts +71 -0
- package/dist/uploads/index.d.ts.map +1 -1
- package/dist/uploads/index.js +344 -15
- package/dist/uploads/index.js.map +1 -1
- package/dist/webhooks/index.d.ts +55 -4
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/index.js +106 -2
- package/dist/webhooks/index.js.map +1 -1
- package/package.json +5 -1
- package/skills/app-architecture/SKILL.md +23 -2
- package/src/application/index.ts +88 -56
- package/src/events/index.ts +27 -14
- package/src/jobs/index.ts +895 -7
- package/src/outbox/index.ts +358 -2
- package/src/ports/index.ts +17 -0
- package/src/providers/instrumentation.ts +4 -0
- package/src/schedules/index.ts +60 -26
- package/src/server/hooks/index.ts +10 -0
- package/src/server/hooks/rate-limit.ts +52 -46
- package/src/server/hooks/security.ts +503 -0
- package/src/server/index.ts +8 -0
- package/src/server/instrumentation.ts +25 -5
- package/src/server/request-context.ts +7 -0
- package/src/server/runtime-integrity.ts +322 -0
- package/src/server/server.ts +86 -1
- package/src/server/trusted-proxy.ts +249 -0
- package/src/tasks/index.ts +29 -12
- package/src/tenancy/index.ts +55 -0
- package/src/tracing/execution.ts +37 -0
- package/src/tracing/index.ts +137 -0
- package/src/uploads/client.ts +65 -6
- package/src/uploads/index.ts +539 -14
- package/src/webhooks/index.ts +238 -9
package/dist/jobs/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
+
import type { LeaseMetadata, LocksPort } from "../locks/index.js";
|
|
3
|
+
import type { TracingPort } from "../tracing/index.js";
|
|
2
4
|
/**
|
|
3
5
|
* Any Standard Schema compatible validator.
|
|
4
6
|
*/
|
|
@@ -7,14 +9,27 @@ export type StandardSchema = StandardSchemaV1<unknown, unknown>;
|
|
|
7
9
|
* Value or promise of that value.
|
|
8
10
|
*/
|
|
9
11
|
export type MaybePromise<T> = T | Promise<T>;
|
|
12
|
+
type NoInferJob<T> = [T][T extends unknown ? 0 : never];
|
|
10
13
|
/**
|
|
11
14
|
* Infer the parsed output type from a Standard Schema.
|
|
12
15
|
*/
|
|
13
16
|
export type InferSchemaOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
|
|
17
|
+
/**
|
|
18
|
+
* Duration accepted by job helpers. Numbers are milliseconds.
|
|
19
|
+
*/
|
|
20
|
+
export type JobDuration = number | `${number}ms` | `${number}s` | `${number}m` | `${number}h`;
|
|
14
21
|
/**
|
|
15
22
|
* Duration accepted by retry helpers. Numbers are milliseconds.
|
|
16
23
|
*/
|
|
17
|
-
export type JobRetryDuration =
|
|
24
|
+
export type JobRetryDuration = JobDuration;
|
|
25
|
+
/**
|
|
26
|
+
* Duration accepted by job timeout helpers. Numbers are milliseconds.
|
|
27
|
+
*/
|
|
28
|
+
export type JobTimeoutDuration = JobDuration;
|
|
29
|
+
/**
|
|
30
|
+
* Duration accepted by job execution lease helpers. Numbers are milliseconds.
|
|
31
|
+
*/
|
|
32
|
+
export type JobExecutionLeaseDuration = JobDuration;
|
|
18
33
|
/**
|
|
19
34
|
* Retry strategy understood by Beignet job adapters.
|
|
20
35
|
*/
|
|
@@ -44,6 +59,62 @@ export interface JobRetryPredicateArgs {
|
|
|
44
59
|
* Return whether a failed attempt should be retried.
|
|
45
60
|
*/
|
|
46
61
|
export type JobRetryPredicate = (args: JobRetryPredicateArgs) => boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Dispatch-time uniqueness metadata for a job.
|
|
64
|
+
*
|
|
65
|
+
* Unique jobs are suppressed while the resolved key's lease is active.
|
|
66
|
+
* The lease is intentionally left to expire after a successful dispatch.
|
|
67
|
+
*/
|
|
68
|
+
export interface JobUniqueOptions {
|
|
69
|
+
/**
|
|
70
|
+
* Logical uniqueness key within this job name.
|
|
71
|
+
*/
|
|
72
|
+
key: string;
|
|
73
|
+
/**
|
|
74
|
+
* How long duplicate dispatches should be suppressed.
|
|
75
|
+
*/
|
|
76
|
+
ttl: JobDuration;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Arguments passed to a per-payload unique job resolver.
|
|
80
|
+
*/
|
|
81
|
+
export interface JobUniqueResolverArgs<Payload extends StandardSchema> {
|
|
82
|
+
/**
|
|
83
|
+
* Stable job name.
|
|
84
|
+
*/
|
|
85
|
+
jobName: string;
|
|
86
|
+
/**
|
|
87
|
+
* Parsed job payload.
|
|
88
|
+
*/
|
|
89
|
+
payload: StandardSchemaV1.InferOutput<Payload>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Per-payload resolver for dispatch-time uniqueness.
|
|
93
|
+
*/
|
|
94
|
+
export type JobUniqueResolver<Payload extends StandardSchema> = {
|
|
95
|
+
bivarianceHack(args: JobUniqueResolverArgs<Payload>): MaybePromise<JobUniqueOptions | null | undefined>;
|
|
96
|
+
}["bivarianceHack"];
|
|
97
|
+
/**
|
|
98
|
+
* Unique job declaration value.
|
|
99
|
+
*/
|
|
100
|
+
export type JobUniqueConfig<Payload extends StandardSchema = StandardSchema> = JobUniqueOptions | JobUniqueResolver<Payload>;
|
|
101
|
+
/**
|
|
102
|
+
* Resolved uniqueness metadata used by dispatchers.
|
|
103
|
+
*/
|
|
104
|
+
export interface ResolvedJobUniqueOptions {
|
|
105
|
+
/**
|
|
106
|
+
* Logical uniqueness key returned by the job declaration.
|
|
107
|
+
*/
|
|
108
|
+
key: string;
|
|
109
|
+
/**
|
|
110
|
+
* Concrete lock key used by `LocksPort`.
|
|
111
|
+
*/
|
|
112
|
+
lockKey: string;
|
|
113
|
+
/**
|
|
114
|
+
* Lease TTL in milliseconds.
|
|
115
|
+
*/
|
|
116
|
+
ttlMs: number;
|
|
117
|
+
}
|
|
47
118
|
/**
|
|
48
119
|
* Job definition created by `defineJob(...)`.
|
|
49
120
|
*/
|
|
@@ -68,6 +139,18 @@ export interface JobDef<Name extends string = string, Payload extends StandardSc
|
|
|
68
139
|
* Retry metadata for durable job providers.
|
|
69
140
|
*/
|
|
70
141
|
readonly retry?: JobRetryOptions;
|
|
142
|
+
/**
|
|
143
|
+
* Optional dispatch-time uniqueness guard.
|
|
144
|
+
*/
|
|
145
|
+
readonly unique?: JobUniqueConfig<Payload>;
|
|
146
|
+
/**
|
|
147
|
+
* Optional maximum execution time for each job handler attempt.
|
|
148
|
+
*/
|
|
149
|
+
readonly timeout?: JobTimeoutDuration;
|
|
150
|
+
/**
|
|
151
|
+
* Optional hooks that wrap each handler attempt for this job.
|
|
152
|
+
*/
|
|
153
|
+
readonly hooks?: readonly JobHook<JobDef<Name, Payload, Ctx>, Ctx>[];
|
|
71
154
|
/**
|
|
72
155
|
* Handle a parsed job payload.
|
|
73
156
|
*/
|
|
@@ -89,10 +172,139 @@ export interface JobHandleArgs<J extends JobDef, Ctx> {
|
|
|
89
172
|
* Parsed job payload.
|
|
90
173
|
*/
|
|
91
174
|
payload: InferJobPayload<J>;
|
|
175
|
+
/** Handler context. */
|
|
176
|
+
ctx: Ctx;
|
|
92
177
|
/**
|
|
93
|
-
*
|
|
178
|
+
* Abort signal that fires when the job's declared timeout expires.
|
|
179
|
+
*
|
|
180
|
+
* Beignet dispatchers and worker helpers provide this signal. It is optional
|
|
181
|
+
* in the type so direct handler tests can stay lightweight.
|
|
182
|
+
*
|
|
183
|
+
* JavaScript cannot forcibly stop arbitrary async work, so handlers that
|
|
184
|
+
* call cancellable APIs should pass this signal through.
|
|
94
185
|
*/
|
|
95
|
-
|
|
186
|
+
signal?: AbortSignal;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Arguments passed to job execution hooks.
|
|
190
|
+
*/
|
|
191
|
+
export interface JobHookArgs<J extends JobDef, Ctx> extends JobHandleArgs<J, Ctx> {
|
|
192
|
+
/**
|
|
193
|
+
* Abort signal provided by the Beignet execution runner.
|
|
194
|
+
*/
|
|
195
|
+
signal: AbortSignal;
|
|
196
|
+
/**
|
|
197
|
+
* One-based execution attempt when the runner can report it.
|
|
198
|
+
*/
|
|
199
|
+
attempt?: number;
|
|
200
|
+
/**
|
|
201
|
+
* Maximum execution attempts when the runner can report it.
|
|
202
|
+
*/
|
|
203
|
+
maxAttempts?: number;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Hook that wraps one job handler attempt.
|
|
207
|
+
*
|
|
208
|
+
* Hooks run only through Beignet dispatchers and worker helpers. Direct calls
|
|
209
|
+
* to `job.handle(...)` bypass hooks, which keeps lightweight unit tests
|
|
210
|
+
* possible.
|
|
211
|
+
*/
|
|
212
|
+
export type JobHook<J extends JobDef = JobDef, Ctx = unknown> = {
|
|
213
|
+
bivarianceHack(args: JobHookArgs<J, Ctx>, next: () => Promise<void>): MaybePromise<void>;
|
|
214
|
+
}["bivarianceHack"];
|
|
215
|
+
/**
|
|
216
|
+
* Arguments passed to an execution lease key resolver.
|
|
217
|
+
*/
|
|
218
|
+
export type JobExecutionLeaseResolverArgs<J extends JobDef, Ctx> = JobHookArgs<J, Ctx>;
|
|
219
|
+
/**
|
|
220
|
+
* Resolver for the logical execution lease key within a job name.
|
|
221
|
+
*/
|
|
222
|
+
export type JobExecutionLeaseKeyResolver<J extends JobDef, Ctx> = {
|
|
223
|
+
bivarianceHack(args: JobExecutionLeaseResolverArgs<J, Ctx>): MaybePromise<string>;
|
|
224
|
+
}["bivarianceHack"];
|
|
225
|
+
/**
|
|
226
|
+
* Resolver for the locks port used by an execution lease hook.
|
|
227
|
+
*/
|
|
228
|
+
export type JobExecutionLeaseLocksResolver<J extends JobDef, Ctx> = LocksPort | {
|
|
229
|
+
bivarianceHack(args: JobExecutionLeaseResolverArgs<J, Ctx>): MaybePromise<LocksPort>;
|
|
230
|
+
}["bivarianceHack"];
|
|
231
|
+
/**
|
|
232
|
+
* Resolver for optional diagnostics metadata attached to lease acquisition.
|
|
233
|
+
*/
|
|
234
|
+
export type JobExecutionLeaseMetadataResolver<J extends JobDef, Ctx> = LeaseMetadata | {
|
|
235
|
+
bivarianceHack(args: JobExecutionLeaseResolverArgs<J, Ctx>): MaybePromise<LeaseMetadata | undefined>;
|
|
236
|
+
}["bivarianceHack"];
|
|
237
|
+
/**
|
|
238
|
+
* Arguments passed when an execution lease cannot be acquired.
|
|
239
|
+
*/
|
|
240
|
+
export interface JobExecutionLeaseUnavailableArgs<J extends JobDef, Ctx> extends JobHookArgs<J, Ctx> {
|
|
241
|
+
/**
|
|
242
|
+
* Logical lease key returned by the hook configuration.
|
|
243
|
+
*/
|
|
244
|
+
key: string;
|
|
245
|
+
/**
|
|
246
|
+
* Concrete lock key passed to `LocksPort`.
|
|
247
|
+
*/
|
|
248
|
+
lockKey: string;
|
|
249
|
+
/**
|
|
250
|
+
* Acquisition failure reason returned by `LocksPort`.
|
|
251
|
+
*/
|
|
252
|
+
reason: "unavailable" | "timeout";
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Behavior when an execution lease cannot be acquired.
|
|
256
|
+
*
|
|
257
|
+
* `"skip"` treats the attempt as successful without running the handler.
|
|
258
|
+
* `"throw"` fails the attempt with `JobExecutionLeaseUnavailableError` so the
|
|
259
|
+
* job retry policy can classify it. A function can log or throw custom errors;
|
|
260
|
+
* returning from it skips the handler.
|
|
261
|
+
*/
|
|
262
|
+
export type JobExecutionLeaseUnavailableBehavior<J extends JobDef, Ctx> = "skip" | "throw" | {
|
|
263
|
+
bivarianceHack(args: JobExecutionLeaseUnavailableArgs<J, Ctx>): MaybePromise<void>;
|
|
264
|
+
}["bivarianceHack"];
|
|
265
|
+
/**
|
|
266
|
+
* Options for `createJobExecutionLeaseHook(...)`.
|
|
267
|
+
*/
|
|
268
|
+
export interface JobExecutionLeaseHookOptions<J extends JobDef = JobDef, Ctx = unknown> {
|
|
269
|
+
/**
|
|
270
|
+
* Locks port or resolver used to acquire the execution lease.
|
|
271
|
+
*/
|
|
272
|
+
locks: JobExecutionLeaseLocksResolver<J, Ctx>;
|
|
273
|
+
/**
|
|
274
|
+
* Logical lease key within this job name.
|
|
275
|
+
*/
|
|
276
|
+
key: string | JobExecutionLeaseKeyResolver<J, Ctx>;
|
|
277
|
+
/**
|
|
278
|
+
* Lease time-to-live. This is the real safety boundary in serverless runtimes
|
|
279
|
+
* where an invocation may terminate before `finally` runs.
|
|
280
|
+
*/
|
|
281
|
+
ttl: JobExecutionLeaseDuration;
|
|
282
|
+
/**
|
|
283
|
+
* How long to wait for an existing lease before applying `onUnavailable`.
|
|
284
|
+
*
|
|
285
|
+
* Defaults to no wait.
|
|
286
|
+
*/
|
|
287
|
+
wait?: JobExecutionLeaseDuration;
|
|
288
|
+
/**
|
|
289
|
+
* Delay between acquisition attempts while waiting.
|
|
290
|
+
*/
|
|
291
|
+
retryDelay?: JobExecutionLeaseDuration;
|
|
292
|
+
/**
|
|
293
|
+
* Prefix used to build the concrete lock key.
|
|
294
|
+
*
|
|
295
|
+
* Defaults to `"jobs:lease"`.
|
|
296
|
+
*/
|
|
297
|
+
keyPrefix?: string;
|
|
298
|
+
/**
|
|
299
|
+
* Optional diagnostics metadata attached to the lease acquire call.
|
|
300
|
+
*/
|
|
301
|
+
metadata?: JobExecutionLeaseMetadataResolver<J, Ctx>;
|
|
302
|
+
/**
|
|
303
|
+
* Behavior when the lease cannot be acquired.
|
|
304
|
+
*
|
|
305
|
+
* Defaults to `"skip"` so overlapping executions do not create retry storms.
|
|
306
|
+
*/
|
|
307
|
+
onUnavailable?: JobExecutionLeaseUnavailableBehavior<J, Ctx>;
|
|
96
308
|
}
|
|
97
309
|
/**
|
|
98
310
|
* Retry metadata that durable job providers can map to their own retry model.
|
|
@@ -148,6 +360,18 @@ export interface DefineJobOptions<Name extends string, Payload extends StandardS
|
|
|
148
360
|
* Retry metadata for durable job providers.
|
|
149
361
|
*/
|
|
150
362
|
retry?: JobRetryOptions;
|
|
363
|
+
/**
|
|
364
|
+
* Optional dispatch-time uniqueness guard.
|
|
365
|
+
*/
|
|
366
|
+
unique?: JobUniqueConfig<Payload>;
|
|
367
|
+
/**
|
|
368
|
+
* Optional maximum execution time for each job handler attempt.
|
|
369
|
+
*/
|
|
370
|
+
timeout?: JobTimeoutDuration;
|
|
371
|
+
/**
|
|
372
|
+
* Optional hooks that wrap each handler attempt for this job.
|
|
373
|
+
*/
|
|
374
|
+
hooks?: readonly JobHook<JobDef<NoInferJob<Name>, NoInferJob<Payload>, Ctx>, Ctx>[];
|
|
151
375
|
/**
|
|
152
376
|
* Handle a parsed job payload.
|
|
153
377
|
*/
|
|
@@ -240,6 +464,11 @@ export interface InlineJobDispatcherOptions<Ctx> {
|
|
|
240
464
|
* through this dispatcher.
|
|
241
465
|
*/
|
|
242
466
|
retry?: boolean;
|
|
467
|
+
/**
|
|
468
|
+
* Hooks that wrap every job attempt executed by this dispatcher. Runner hooks
|
|
469
|
+
* wrap job-local hooks.
|
|
470
|
+
*/
|
|
471
|
+
hooks?: readonly JobHook<JobDef<string, StandardSchema, Ctx>, Ctx>[];
|
|
243
472
|
}
|
|
244
473
|
/**
|
|
245
474
|
* Well-known symbol under which the inline dispatcher exposes a
|
|
@@ -249,11 +478,83 @@ export interface InlineJobDispatcherOptions<Ctx> {
|
|
|
249
478
|
* so multiple core copies in one process agree on the key.
|
|
250
479
|
*/
|
|
251
480
|
export declare const SINGLE_ATTEMPT_DISPATCH: unique symbol;
|
|
481
|
+
/**
|
|
482
|
+
* Metadata passed to a single-attempt dispatch when another delivery layer
|
|
483
|
+
* owns retry scheduling.
|
|
484
|
+
*/
|
|
485
|
+
export interface SingleAttemptJobDispatchOptions {
|
|
486
|
+
/**
|
|
487
|
+
* One-based delivery attempt.
|
|
488
|
+
*/
|
|
489
|
+
attempt?: number;
|
|
490
|
+
/**
|
|
491
|
+
* Maximum delivery attempts.
|
|
492
|
+
*/
|
|
493
|
+
maxAttempts?: number;
|
|
494
|
+
}
|
|
252
495
|
/**
|
|
253
496
|
* Shape of the single-attempt dispatch exposed under
|
|
254
497
|
* `SINGLE_ATTEMPT_DISPATCH`.
|
|
255
498
|
*/
|
|
256
|
-
export type SingleAttemptJobDispatch = <J extends JobDef>(job: J, payload: InferJobPayload<J
|
|
499
|
+
export type SingleAttemptJobDispatch = <J extends JobDef>(job: J, payload: InferJobPayload<J>, options?: SingleAttemptJobDispatchOptions) => Promise<void>;
|
|
500
|
+
/**
|
|
501
|
+
* Job dispatcher shape accepted by job wrappers.
|
|
502
|
+
*/
|
|
503
|
+
export interface JobDispatcher {
|
|
504
|
+
dispatch<J extends JobDef>(job: J, payload: InferJobPayload<J>): MaybePromise<void>;
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Arguments passed when a unique job dispatch is suppressed.
|
|
508
|
+
*/
|
|
509
|
+
export interface UniqueJobDuplicateArgs<J extends JobDef = JobDef> {
|
|
510
|
+
/**
|
|
511
|
+
* Job definition whose dispatch was suppressed.
|
|
512
|
+
*/
|
|
513
|
+
job: J;
|
|
514
|
+
/**
|
|
515
|
+
* Parsed job payload.
|
|
516
|
+
*/
|
|
517
|
+
payload: InferJobPayload<J>;
|
|
518
|
+
/**
|
|
519
|
+
* Logical uniqueness key returned by the job declaration.
|
|
520
|
+
*/
|
|
521
|
+
key: string;
|
|
522
|
+
/**
|
|
523
|
+
* Concrete lock key used by `LocksPort`.
|
|
524
|
+
*/
|
|
525
|
+
lockKey: string;
|
|
526
|
+
/**
|
|
527
|
+
* Lease TTL in milliseconds.
|
|
528
|
+
*/
|
|
529
|
+
ttlMs: number;
|
|
530
|
+
/**
|
|
531
|
+
* Lock acquisition reason returned by `LocksPort`.
|
|
532
|
+
*/
|
|
533
|
+
reason: "unavailable" | "timeout";
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Options for `createUniqueJobDispatcher(...)`.
|
|
537
|
+
*/
|
|
538
|
+
export interface UniqueJobDispatcherOptions {
|
|
539
|
+
/**
|
|
540
|
+
* Dispatcher to call when a job is not unique or the unique lease is acquired.
|
|
541
|
+
*/
|
|
542
|
+
jobs: JobDispatcher;
|
|
543
|
+
/**
|
|
544
|
+
* Lease-backed lock port used as the uniqueness guard.
|
|
545
|
+
*/
|
|
546
|
+
locks: LocksPort;
|
|
547
|
+
/**
|
|
548
|
+
* Prefix for concrete lock keys.
|
|
549
|
+
*
|
|
550
|
+
* Defaults to `"jobs:unique"`.
|
|
551
|
+
*/
|
|
552
|
+
keyPrefix?: string;
|
|
553
|
+
/**
|
|
554
|
+
* Called when a duplicate dispatch is suppressed.
|
|
555
|
+
*/
|
|
556
|
+
onDuplicate?: (args: UniqueJobDuplicateArgs) => MaybePromise<void>;
|
|
557
|
+
}
|
|
257
558
|
/**
|
|
258
559
|
* Local/test job dispatcher that executes job handlers inline.
|
|
259
560
|
*/
|
|
@@ -286,6 +587,51 @@ export declare class JobValidationError extends Error {
|
|
|
286
587
|
issues: readonly StandardSchemaV1.Issue[];
|
|
287
588
|
});
|
|
288
589
|
}
|
|
590
|
+
/**
|
|
591
|
+
* Error thrown when a job handler exceeds its declared timeout.
|
|
592
|
+
*/
|
|
593
|
+
export declare class JobTimeoutError extends Error {
|
|
594
|
+
/**
|
|
595
|
+
* Stable job name that timed out.
|
|
596
|
+
*/
|
|
597
|
+
readonly jobName: string;
|
|
598
|
+
/**
|
|
599
|
+
* Timeout in milliseconds.
|
|
600
|
+
*/
|
|
601
|
+
readonly timeoutMs: number;
|
|
602
|
+
constructor(args: {
|
|
603
|
+
jobName: string;
|
|
604
|
+
timeoutMs: number;
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* Error thrown when an execution lease hook is configured to fail on an
|
|
609
|
+
* unavailable lease.
|
|
610
|
+
*/
|
|
611
|
+
export declare class JobExecutionLeaseUnavailableError extends Error {
|
|
612
|
+
/**
|
|
613
|
+
* Stable job name whose execution lease was unavailable.
|
|
614
|
+
*/
|
|
615
|
+
readonly jobName: string;
|
|
616
|
+
/**
|
|
617
|
+
* Logical lease key returned by the hook configuration.
|
|
618
|
+
*/
|
|
619
|
+
readonly key: string;
|
|
620
|
+
/**
|
|
621
|
+
* Concrete lock key passed to `LocksPort`.
|
|
622
|
+
*/
|
|
623
|
+
readonly lockKey: string;
|
|
624
|
+
/**
|
|
625
|
+
* Acquisition failure reason returned by `LocksPort`.
|
|
626
|
+
*/
|
|
627
|
+
readonly reason: "unavailable" | "timeout";
|
|
628
|
+
constructor(args: {
|
|
629
|
+
jobName: string;
|
|
630
|
+
key: string;
|
|
631
|
+
lockKey: string;
|
|
632
|
+
reason: "unavailable" | "timeout";
|
|
633
|
+
});
|
|
634
|
+
}
|
|
289
635
|
/**
|
|
290
636
|
* Return the maximum total attempts configured by a retry policy.
|
|
291
637
|
*/
|
|
@@ -298,10 +644,64 @@ export declare function shouldRetryJob(options: JobRetryOptions | undefined, arg
|
|
|
298
644
|
* Compute the next retry delay in milliseconds for a failed job attempt.
|
|
299
645
|
*/
|
|
300
646
|
export declare function getJobRetryDelayMs(options: JobRetryOptions | undefined, args: Pick<JobRetryPredicateArgs, "attempt" | "error" | "jobName">): number;
|
|
647
|
+
/**
|
|
648
|
+
* Return the execution timeout in milliseconds configured by a job.
|
|
649
|
+
*/
|
|
650
|
+
export declare function getJobTimeoutMs(job: Pick<JobDef, "timeout">): number | undefined;
|
|
651
|
+
/**
|
|
652
|
+
* Create a job hook that prevents overlapping handler attempts for the same
|
|
653
|
+
* logical execution key.
|
|
654
|
+
*
|
|
655
|
+
* The hook uses one bounded `LocksPort.acquire(...)` call and never starts
|
|
656
|
+
* renewal loops, so it can run in serverless entrypoints as long as `locks`
|
|
657
|
+
* points at shared storage. `ttl` is the real safety boundary when a runtime
|
|
658
|
+
* terminates before best-effort release runs.
|
|
659
|
+
*/
|
|
660
|
+
export declare function createJobExecutionLeaseHook<J extends JobDef = JobDef, Ctx = unknown>(options: JobExecutionLeaseHookOptions<J, Ctx>): JobHook<J, Ctx>;
|
|
301
661
|
/**
|
|
302
662
|
* Validate and parse a job payload with the job's Standard Schema.
|
|
303
663
|
*/
|
|
304
664
|
export declare function parseJobPayload<J extends JobDef>(job: J, payload: unknown): Promise<InferJobPayload<J>>;
|
|
665
|
+
/**
|
|
666
|
+
* Options for running one parsed job handler attempt.
|
|
667
|
+
*/
|
|
668
|
+
export interface RunJobHandlerOptions<J extends JobDef<string, StandardSchema, Ctx>, Ctx> {
|
|
669
|
+
/**
|
|
670
|
+
* Job definition to execute.
|
|
671
|
+
*/
|
|
672
|
+
job: J;
|
|
673
|
+
/**
|
|
674
|
+
* Parsed job payload.
|
|
675
|
+
*/
|
|
676
|
+
payload: InferJobPayload<J>;
|
|
677
|
+
/** Handler context or factory resolved inside the job span. */
|
|
678
|
+
ctx: Ctx | (() => MaybePromise<Ctx>);
|
|
679
|
+
/** Runtime tracing port used before a lazy context factory runs. */
|
|
680
|
+
tracing?: TracingPort;
|
|
681
|
+
/**
|
|
682
|
+
* Runner-level hooks. These wrap job-local hooks.
|
|
683
|
+
*/
|
|
684
|
+
hooks?: readonly JobHook<JobDef<string, StandardSchema, Ctx>, Ctx>[];
|
|
685
|
+
/**
|
|
686
|
+
* One-based execution attempt when the runner can report it.
|
|
687
|
+
*/
|
|
688
|
+
attempt?: number;
|
|
689
|
+
/**
|
|
690
|
+
* Maximum execution attempts when the runner can report it.
|
|
691
|
+
*/
|
|
692
|
+
maxAttempts?: number;
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Run a parsed job handler once, enforcing hooks and the job's declared
|
|
696
|
+
* timeout.
|
|
697
|
+
*/
|
|
698
|
+
export declare function runJobHandler<J extends JobDef<string, StandardSchema, Ctx>, Ctx>(args: RunJobHandlerOptions<J, Ctx>): Promise<void>;
|
|
699
|
+
/**
|
|
700
|
+
* Resolve a job's dispatch-time uniqueness metadata for a parsed payload.
|
|
701
|
+
*/
|
|
702
|
+
export declare function resolveJobUnique<J extends JobDef>(job: J, payload: InferJobPayload<J>, options?: {
|
|
703
|
+
keyPrefix?: string;
|
|
704
|
+
}): Promise<ResolvedJobUniqueOptions | undefined>;
|
|
305
705
|
/**
|
|
306
706
|
* Create a local/test dispatcher that runs job handlers inline.
|
|
307
707
|
*
|
|
@@ -310,6 +710,16 @@ export declare function parseJobPayload<J extends JobDef>(job: J, payload: unkno
|
|
|
310
710
|
* failures never retry. Jobs without a retry policy run exactly once.
|
|
311
711
|
*/
|
|
312
712
|
export declare function createInlineJobDispatcher<Ctx>(options?: InlineJobDispatcherOptions<Ctx>): InlineJobDispatcher<Ctx>;
|
|
713
|
+
/**
|
|
714
|
+
* Wrap any job dispatcher with dispatch-time unique job suppression.
|
|
715
|
+
*
|
|
716
|
+
* When a job has no `unique` declaration, dispatch passes through unchanged.
|
|
717
|
+
* When it does, the wrapper validates the payload, resolves the unique key,
|
|
718
|
+
* acquires the matching lease, and calls the underlying dispatcher only when
|
|
719
|
+
* the lease is acquired. Successful dispatches intentionally keep the lease
|
|
720
|
+
* until its TTL expires; failed dispatches release it so callers can retry.
|
|
721
|
+
*/
|
|
722
|
+
export declare function createUniqueJobDispatcher(options: UniqueJobDispatcherOptions): JobDispatcher;
|
|
313
723
|
/**
|
|
314
724
|
* Create job helper methods bound to an application context type.
|
|
315
725
|
*
|
|
@@ -324,4 +734,5 @@ export declare function createInlineJobDispatcher<Ctx>(options?: InlineJobDispat
|
|
|
324
734
|
* their own runtime and reject options they cannot honor.
|
|
325
735
|
*/
|
|
326
736
|
export declare function createJobs<Ctx>(): Jobs<Ctx>;
|
|
737
|
+
export {};
|
|
327
738
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/jobs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
|