@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.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runWithResolvedTracingContext } from "../tracing/execution.js";
|
|
1
2
|
/**
|
|
2
3
|
* Retry helper namespace for job definitions.
|
|
3
4
|
*/
|
|
@@ -59,6 +60,55 @@ export class JobValidationError extends Error {
|
|
|
59
60
|
this.issues = args.issues;
|
|
60
61
|
}
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Error thrown when a job handler exceeds its declared timeout.
|
|
65
|
+
*/
|
|
66
|
+
export class JobTimeoutError extends Error {
|
|
67
|
+
/**
|
|
68
|
+
* Stable job name that timed out.
|
|
69
|
+
*/
|
|
70
|
+
jobName;
|
|
71
|
+
/**
|
|
72
|
+
* Timeout in milliseconds.
|
|
73
|
+
*/
|
|
74
|
+
timeoutMs;
|
|
75
|
+
constructor(args) {
|
|
76
|
+
super(`Job "${args.jobName}" timed out after ${args.timeoutMs}ms.`);
|
|
77
|
+
this.name = "JobTimeoutError";
|
|
78
|
+
this.jobName = args.jobName;
|
|
79
|
+
this.timeoutMs = args.timeoutMs;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Error thrown when an execution lease hook is configured to fail on an
|
|
84
|
+
* unavailable lease.
|
|
85
|
+
*/
|
|
86
|
+
export class JobExecutionLeaseUnavailableError extends Error {
|
|
87
|
+
/**
|
|
88
|
+
* Stable job name whose execution lease was unavailable.
|
|
89
|
+
*/
|
|
90
|
+
jobName;
|
|
91
|
+
/**
|
|
92
|
+
* Logical lease key returned by the hook configuration.
|
|
93
|
+
*/
|
|
94
|
+
key;
|
|
95
|
+
/**
|
|
96
|
+
* Concrete lock key passed to `LocksPort`.
|
|
97
|
+
*/
|
|
98
|
+
lockKey;
|
|
99
|
+
/**
|
|
100
|
+
* Acquisition failure reason returned by `LocksPort`.
|
|
101
|
+
*/
|
|
102
|
+
reason;
|
|
103
|
+
constructor(args) {
|
|
104
|
+
super(`Job "${args.jobName}" execution lease "${args.key}" is unavailable (${args.reason}).`);
|
|
105
|
+
this.name = "JobExecutionLeaseUnavailableError";
|
|
106
|
+
this.jobName = args.jobName;
|
|
107
|
+
this.key = args.key;
|
|
108
|
+
this.lockKey = args.lockKey;
|
|
109
|
+
this.reason = args.reason;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
62
112
|
function formatPath(path) {
|
|
63
113
|
if (!path?.length)
|
|
64
114
|
return "";
|
|
@@ -86,11 +136,19 @@ function assertPositiveNumber(name, value) {
|
|
|
86
136
|
throw new Error(`${name} must be a positive number`);
|
|
87
137
|
}
|
|
88
138
|
}
|
|
139
|
+
function assertNonEmptyString(name, value) {
|
|
140
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
141
|
+
throw new Error(`${name} must be a non-empty string`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
89
144
|
function durationToMs(name, value) {
|
|
90
145
|
if (typeof value === "number") {
|
|
91
146
|
assertPositiveInteger(name, value);
|
|
92
147
|
return value;
|
|
93
148
|
}
|
|
149
|
+
if (typeof value !== "string") {
|
|
150
|
+
throw new Error(`${name} must be a positive millisecond value or duration string like "500ms", "30s", "5m", or "1h".`);
|
|
151
|
+
}
|
|
94
152
|
const match = /^(\d+)(ms|s|m|h)$/.exec(value);
|
|
95
153
|
if (!match) {
|
|
96
154
|
throw new Error(`${name} must be a positive millisecond value or duration string like "500ms", "30s", "5m", or "1h".`);
|
|
@@ -110,6 +168,30 @@ function durationToMs(name, value) {
|
|
|
110
168
|
throw new Error(`${name} has an unsupported duration unit.`);
|
|
111
169
|
}
|
|
112
170
|
}
|
|
171
|
+
function isRecord(value) {
|
|
172
|
+
return typeof value === "object" && value !== null;
|
|
173
|
+
}
|
|
174
|
+
function validateJobUniqueOptions(options) {
|
|
175
|
+
if (!isRecord(options)) {
|
|
176
|
+
throw new Error("unique must be an object or resolver function");
|
|
177
|
+
}
|
|
178
|
+
assertNonEmptyString("unique.key", options.key);
|
|
179
|
+
durationToMs("unique.ttl", options.ttl);
|
|
180
|
+
return options;
|
|
181
|
+
}
|
|
182
|
+
function validateJobUniqueConfig(config) {
|
|
183
|
+
if (config === undefined)
|
|
184
|
+
return undefined;
|
|
185
|
+
if (typeof config === "function")
|
|
186
|
+
return config;
|
|
187
|
+
return validateJobUniqueOptions(config);
|
|
188
|
+
}
|
|
189
|
+
function validateJobTimeout(timeout) {
|
|
190
|
+
if (timeout === undefined)
|
|
191
|
+
return undefined;
|
|
192
|
+
durationToMs("timeout", timeout);
|
|
193
|
+
return timeout;
|
|
194
|
+
}
|
|
113
195
|
const VALIDATED_RETRY_OPTIONS = Symbol("beignet.jobs.validatedRetryOptions");
|
|
114
196
|
function validateJobRetryOptions(options) {
|
|
115
197
|
// Options returned by this function are branded so repeated validation —
|
|
@@ -206,6 +288,124 @@ export function getJobRetryDelayMs(options, args) {
|
|
|
206
288
|
}
|
|
207
289
|
return delayMs;
|
|
208
290
|
}
|
|
291
|
+
/**
|
|
292
|
+
* Return the execution timeout in milliseconds configured by a job.
|
|
293
|
+
*/
|
|
294
|
+
export function getJobTimeoutMs(job) {
|
|
295
|
+
return job.timeout === undefined
|
|
296
|
+
? undefined
|
|
297
|
+
: durationToMs("timeout", job.timeout);
|
|
298
|
+
}
|
|
299
|
+
function jobExecutionLeaseLockKey(jobName, key, keyPrefix = "jobs:lease") {
|
|
300
|
+
return `${keyPrefix}:${jobName}:${key}`;
|
|
301
|
+
}
|
|
302
|
+
function validateExecutionLeaseKey(key) {
|
|
303
|
+
assertNonEmptyString("executionLease.key", key);
|
|
304
|
+
return key;
|
|
305
|
+
}
|
|
306
|
+
function abortReason(signal) {
|
|
307
|
+
return signal.reason ?? new Error("Job execution aborted.");
|
|
308
|
+
}
|
|
309
|
+
async function resolveExecutionLeaseLocks(locks, args) {
|
|
310
|
+
return typeof locks === "function" ? await locks(args) : locks;
|
|
311
|
+
}
|
|
312
|
+
async function resolveExecutionLeaseMetadata(metadata, args) {
|
|
313
|
+
return typeof metadata === "function" ? await metadata(args) : metadata;
|
|
314
|
+
}
|
|
315
|
+
async function releaseExecutionLease(lease) {
|
|
316
|
+
try {
|
|
317
|
+
await lease.release();
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
// The lease TTL is the correctness boundary. Release is best effort so a
|
|
321
|
+
// provider outage after handler side effects does not turn success into a
|
|
322
|
+
// retry.
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
async function handleUnavailableExecutionLease(behavior, args) {
|
|
326
|
+
if (behavior === undefined || behavior === "skip")
|
|
327
|
+
return;
|
|
328
|
+
if (behavior === "throw") {
|
|
329
|
+
throw new JobExecutionLeaseUnavailableError({
|
|
330
|
+
jobName: args.job.name,
|
|
331
|
+
key: args.key,
|
|
332
|
+
lockKey: args.lockKey,
|
|
333
|
+
reason: args.reason,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
await behavior(args);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Create a job hook that prevents overlapping handler attempts for the same
|
|
340
|
+
* logical execution key.
|
|
341
|
+
*
|
|
342
|
+
* The hook uses one bounded `LocksPort.acquire(...)` call and never starts
|
|
343
|
+
* renewal loops, so it can run in serverless entrypoints as long as `locks`
|
|
344
|
+
* points at shared storage. `ttl` is the real safety boundary when a runtime
|
|
345
|
+
* terminates before best-effort release runs.
|
|
346
|
+
*/
|
|
347
|
+
export function createJobExecutionLeaseHook(options) {
|
|
348
|
+
const ttlMs = durationToMs("executionLease.ttl", options.ttl);
|
|
349
|
+
const waitMs = options.wait === undefined
|
|
350
|
+
? undefined
|
|
351
|
+
: durationToMs("executionLease.wait", options.wait);
|
|
352
|
+
const retryDelayMs = options.retryDelay === undefined
|
|
353
|
+
? undefined
|
|
354
|
+
: durationToMs("executionLease.retryDelay", options.retryDelay);
|
|
355
|
+
const keyPrefix = options.keyPrefix ?? "jobs:lease";
|
|
356
|
+
assertNonEmptyString("executionLease.keyPrefix", keyPrefix);
|
|
357
|
+
if (typeof options.key === "string") {
|
|
358
|
+
validateExecutionLeaseKey(options.key);
|
|
359
|
+
}
|
|
360
|
+
return async (args, next) => {
|
|
361
|
+
if (args.signal.aborted)
|
|
362
|
+
throw abortReason(args.signal);
|
|
363
|
+
const key = validateExecutionLeaseKey(typeof options.key === "function" ? await options.key(args) : options.key);
|
|
364
|
+
if (args.signal.aborted)
|
|
365
|
+
throw abortReason(args.signal);
|
|
366
|
+
const lockKey = jobExecutionLeaseLockKey(args.job.name, key, keyPrefix);
|
|
367
|
+
const locks = await resolveExecutionLeaseLocks(options.locks, args);
|
|
368
|
+
if (args.signal.aborted)
|
|
369
|
+
throw abortReason(args.signal);
|
|
370
|
+
const metadata = await resolveExecutionLeaseMetadata(options.metadata, args);
|
|
371
|
+
if (args.signal.aborted)
|
|
372
|
+
throw abortReason(args.signal);
|
|
373
|
+
const result = await locks.acquire(lockKey, {
|
|
374
|
+
ttlMs,
|
|
375
|
+
...(waitMs === undefined ? {} : { waitMs }),
|
|
376
|
+
...(retryDelayMs === undefined ? {} : { retryDelayMs }),
|
|
377
|
+
metadata: {
|
|
378
|
+
...(metadata ?? {}),
|
|
379
|
+
capability: "jobs",
|
|
380
|
+
jobName: args.job.name,
|
|
381
|
+
leaseKey: key,
|
|
382
|
+
attempt: args.attempt ?? null,
|
|
383
|
+
maxAttempts: args.maxAttempts ?? null,
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
if (!result.acquired) {
|
|
387
|
+
if (args.signal.aborted)
|
|
388
|
+
throw abortReason(args.signal);
|
|
389
|
+
await handleUnavailableExecutionLease(options.onUnavailable, {
|
|
390
|
+
...args,
|
|
391
|
+
key,
|
|
392
|
+
lockKey,
|
|
393
|
+
reason: result.reason,
|
|
394
|
+
});
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
if (args.signal.aborted) {
|
|
398
|
+
await releaseExecutionLease(result.lease);
|
|
399
|
+
throw abortReason(args.signal);
|
|
400
|
+
}
|
|
401
|
+
try {
|
|
402
|
+
await next();
|
|
403
|
+
}
|
|
404
|
+
finally {
|
|
405
|
+
await releaseExecutionLease(result.lease);
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
}
|
|
209
409
|
async function parsePayload(schema, input, args) {
|
|
210
410
|
const result = await schema["~standard"].validate(input);
|
|
211
411
|
if (result.issues?.length) {
|
|
@@ -229,12 +429,17 @@ function defineJobImpl(name, options) {
|
|
|
229
429
|
const retryOptions = options.retry
|
|
230
430
|
? validateJobRetryOptions(options.retry)
|
|
231
431
|
: undefined;
|
|
432
|
+
const uniqueOptions = validateJobUniqueConfig(options.unique);
|
|
433
|
+
const timeout = validateJobTimeout(options.timeout);
|
|
232
434
|
return {
|
|
233
435
|
kind: "job",
|
|
234
436
|
name,
|
|
235
437
|
payload: options.payload,
|
|
236
438
|
description: options.description,
|
|
237
439
|
retry: retryOptions,
|
|
440
|
+
unique: uniqueOptions,
|
|
441
|
+
timeout,
|
|
442
|
+
hooks: options.hooks,
|
|
238
443
|
handle: options.handle,
|
|
239
444
|
};
|
|
240
445
|
}
|
|
@@ -246,6 +451,119 @@ export async function parseJobPayload(job, payload) {
|
|
|
246
451
|
name: job.name,
|
|
247
452
|
}));
|
|
248
453
|
}
|
|
454
|
+
function normalizeJobHooks(job, hooks = []) {
|
|
455
|
+
return [
|
|
456
|
+
...hooks,
|
|
457
|
+
...(job.hooks ?? []),
|
|
458
|
+
];
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Run a parsed job handler once, enforcing hooks and the job's declared
|
|
462
|
+
* timeout.
|
|
463
|
+
*/
|
|
464
|
+
export async function runJobHandler(args) {
|
|
465
|
+
const traceAttributes = {
|
|
466
|
+
"beignet.job.name": args.job.name,
|
|
467
|
+
...(args.attempt === undefined
|
|
468
|
+
? {}
|
|
469
|
+
: { "beignet.job.attempt": args.attempt }),
|
|
470
|
+
...(args.maxAttempts === undefined
|
|
471
|
+
? {}
|
|
472
|
+
: { "beignet.job.max_attempts": args.maxAttempts }),
|
|
473
|
+
};
|
|
474
|
+
await runWithResolvedTracingContext({
|
|
475
|
+
tracing: args.tracing,
|
|
476
|
+
ctx: args.ctx,
|
|
477
|
+
operation: {
|
|
478
|
+
name: `beignet.job ${args.job.name}`,
|
|
479
|
+
type: "job",
|
|
480
|
+
kind: "consumer",
|
|
481
|
+
attributes: traceAttributes,
|
|
482
|
+
metricAttributes: traceAttributes,
|
|
483
|
+
},
|
|
484
|
+
run: async (ctx) => {
|
|
485
|
+
const timeoutMs = getJobTimeoutMs(args.job);
|
|
486
|
+
const controller = new AbortController();
|
|
487
|
+
const hooks = normalizeJobHooks(args.job, args.hooks);
|
|
488
|
+
const hookArgs = {
|
|
489
|
+
job: args.job,
|
|
490
|
+
payload: args.payload,
|
|
491
|
+
ctx,
|
|
492
|
+
signal: controller.signal,
|
|
493
|
+
attempt: args.attempt,
|
|
494
|
+
maxAttempts: args.maxAttempts,
|
|
495
|
+
};
|
|
496
|
+
const run = Promise.resolve().then(async () => {
|
|
497
|
+
let index = -1;
|
|
498
|
+
const dispatch = async (nextIndex) => {
|
|
499
|
+
if (nextIndex <= index) {
|
|
500
|
+
throw new Error(`Job "${args.job.name}" hook called next() multiple times.`);
|
|
501
|
+
}
|
|
502
|
+
index = nextIndex;
|
|
503
|
+
const hook = hooks[nextIndex];
|
|
504
|
+
if (!hook) {
|
|
505
|
+
await args.job.handle({
|
|
506
|
+
job: args.job,
|
|
507
|
+
payload: args.payload,
|
|
508
|
+
ctx,
|
|
509
|
+
signal: controller.signal,
|
|
510
|
+
});
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
await hook(hookArgs, () => dispatch(nextIndex + 1));
|
|
514
|
+
};
|
|
515
|
+
await dispatch(0);
|
|
516
|
+
});
|
|
517
|
+
if (timeoutMs === undefined) {
|
|
518
|
+
await run;
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
const timeoutError = new JobTimeoutError({
|
|
522
|
+
jobName: args.job.name,
|
|
523
|
+
timeoutMs,
|
|
524
|
+
});
|
|
525
|
+
let timeout;
|
|
526
|
+
try {
|
|
527
|
+
await Promise.race([
|
|
528
|
+
run,
|
|
529
|
+
new Promise((_, reject) => {
|
|
530
|
+
timeout = setTimeout(() => {
|
|
531
|
+
controller.abort(timeoutError);
|
|
532
|
+
reject(timeoutError);
|
|
533
|
+
}, timeoutMs);
|
|
534
|
+
}),
|
|
535
|
+
]);
|
|
536
|
+
}
|
|
537
|
+
finally {
|
|
538
|
+
if (timeout !== undefined) {
|
|
539
|
+
clearTimeout(timeout);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
function jobUniqueLockKey(jobName, key, keyPrefix = "jobs:unique") {
|
|
546
|
+
return `${keyPrefix}:${jobName}:${key}`;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Resolve a job's dispatch-time uniqueness metadata for a parsed payload.
|
|
550
|
+
*/
|
|
551
|
+
export async function resolveJobUnique(job, payload, options = {}) {
|
|
552
|
+
const config = job.unique;
|
|
553
|
+
if (!config)
|
|
554
|
+
return undefined;
|
|
555
|
+
const unique = typeof config === "function"
|
|
556
|
+
? await config({ jobName: job.name, payload })
|
|
557
|
+
: config;
|
|
558
|
+
if (unique == null)
|
|
559
|
+
return undefined;
|
|
560
|
+
const validated = validateJobUniqueOptions(unique);
|
|
561
|
+
return {
|
|
562
|
+
key: validated.key,
|
|
563
|
+
lockKey: jobUniqueLockKey(job.name, validated.key, options.keyPrefix),
|
|
564
|
+
ttlMs: durationToMs("unique.ttl", validated.ttl),
|
|
565
|
+
};
|
|
566
|
+
}
|
|
249
567
|
/**
|
|
250
568
|
* Create a local/test dispatcher that runs job handlers inline.
|
|
251
569
|
*
|
|
@@ -256,7 +574,7 @@ export async function parseJobPayload(job, payload) {
|
|
|
256
574
|
export function createInlineJobDispatcher(options = {}) {
|
|
257
575
|
const sleep = options.sleep ??
|
|
258
576
|
((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
259
|
-
async function run(job, payload, retryEnabled) {
|
|
577
|
+
async function run(job, payload, retryEnabled, dispatchOptions = {}) {
|
|
260
578
|
const fail = (error) => {
|
|
261
579
|
options.onError?.(error, job);
|
|
262
580
|
if (!options.onError)
|
|
@@ -278,10 +596,13 @@ export function createInlineJobDispatcher(options = {}) {
|
|
|
278
596
|
const maxAttempts = policy ? (getJobRetryMaxAttempts(policy) ?? 1) : 1;
|
|
279
597
|
for (let attempt = 1;; attempt += 1) {
|
|
280
598
|
try {
|
|
281
|
-
await
|
|
599
|
+
await runJobHandler({
|
|
282
600
|
job,
|
|
283
601
|
payload: parsed,
|
|
284
602
|
ctx,
|
|
603
|
+
hooks: options.hooks,
|
|
604
|
+
attempt: dispatchOptions.attempt ?? attempt,
|
|
605
|
+
maxAttempts: dispatchOptions.maxAttempts ?? maxAttempts,
|
|
285
606
|
});
|
|
286
607
|
return;
|
|
287
608
|
}
|
|
@@ -314,11 +635,79 @@ export function createInlineJobDispatcher(options = {}) {
|
|
|
314
635
|
// Non-enumerable so spreads and serialization keep treating the dispatcher
|
|
315
636
|
// as a plain port; the outbox drain discovers it by symbol.
|
|
316
637
|
Object.defineProperty(dispatcher, SINGLE_ATTEMPT_DISPATCH, {
|
|
317
|
-
value: (job, payload) => run(job, payload, false),
|
|
638
|
+
value: (job, payload, dispatchOptions) => run(job, payload, false, dispatchOptions),
|
|
318
639
|
enumerable: false,
|
|
319
640
|
});
|
|
320
641
|
return dispatcher;
|
|
321
642
|
}
|
|
643
|
+
/**
|
|
644
|
+
* Wrap any job dispatcher with dispatch-time unique job suppression.
|
|
645
|
+
*
|
|
646
|
+
* When a job has no `unique` declaration, dispatch passes through unchanged.
|
|
647
|
+
* When it does, the wrapper validates the payload, resolves the unique key,
|
|
648
|
+
* acquires the matching lease, and calls the underlying dispatcher only when
|
|
649
|
+
* the lease is acquired. Successful dispatches intentionally keep the lease
|
|
650
|
+
* until its TTL expires; failed dispatches release it so callers can retry.
|
|
651
|
+
*/
|
|
652
|
+
export function createUniqueJobDispatcher(options) {
|
|
653
|
+
const dispatcher = {
|
|
654
|
+
async dispatch(job, payload) {
|
|
655
|
+
if (!job.unique) {
|
|
656
|
+
await options.jobs.dispatch(job, payload);
|
|
657
|
+
return;
|
|
658
|
+
}
|
|
659
|
+
const parsed = await parseJobPayload(job, payload);
|
|
660
|
+
const unique = await resolveJobUnique(job, parsed, {
|
|
661
|
+
keyPrefix: options.keyPrefix,
|
|
662
|
+
});
|
|
663
|
+
if (!unique) {
|
|
664
|
+
await options.jobs.dispatch(job, parsed);
|
|
665
|
+
return;
|
|
666
|
+
}
|
|
667
|
+
const result = await options.locks.acquire(unique.lockKey, {
|
|
668
|
+
ttlMs: unique.ttlMs,
|
|
669
|
+
waitMs: 0,
|
|
670
|
+
metadata: {
|
|
671
|
+
capability: "jobs",
|
|
672
|
+
jobName: job.name,
|
|
673
|
+
uniqueKey: unique.key,
|
|
674
|
+
},
|
|
675
|
+
});
|
|
676
|
+
if (!result.acquired) {
|
|
677
|
+
await options.onDuplicate?.({
|
|
678
|
+
job,
|
|
679
|
+
payload: parsed,
|
|
680
|
+
key: unique.key,
|
|
681
|
+
lockKey: unique.lockKey,
|
|
682
|
+
ttlMs: unique.ttlMs,
|
|
683
|
+
reason: result.reason,
|
|
684
|
+
});
|
|
685
|
+
return;
|
|
686
|
+
}
|
|
687
|
+
try {
|
|
688
|
+
await options.jobs.dispatch(job, parsed);
|
|
689
|
+
}
|
|
690
|
+
catch (error) {
|
|
691
|
+
try {
|
|
692
|
+
await result.lease.release();
|
|
693
|
+
}
|
|
694
|
+
catch {
|
|
695
|
+
// Preserve the dispatch failure; lease release is best effort and
|
|
696
|
+
// the TTL still bounds duplicate suppression if release fails.
|
|
697
|
+
}
|
|
698
|
+
throw error;
|
|
699
|
+
}
|
|
700
|
+
},
|
|
701
|
+
};
|
|
702
|
+
const singleAttempt = options.jobs[SINGLE_ATTEMPT_DISPATCH];
|
|
703
|
+
if (singleAttempt) {
|
|
704
|
+
Object.defineProperty(dispatcher, SINGLE_ATTEMPT_DISPATCH, {
|
|
705
|
+
value: singleAttempt,
|
|
706
|
+
enumerable: false,
|
|
707
|
+
});
|
|
708
|
+
}
|
|
709
|
+
return dispatcher;
|
|
710
|
+
}
|
|
322
711
|
/**
|
|
323
712
|
* Create job helper methods bound to an application context type.
|
|
324
713
|
*
|
package/dist/jobs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
|