duron 0.2.0 → 0.2.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/dist/adapters/adapter.d.ts +3 -3
- package/dist/adapters/adapter.d.ts.map +1 -1
- package/dist/adapters/adapter.js +7 -7
- package/dist/adapters/postgres/base.d.ts.map +1 -1
- package/dist/adapters/postgres/base.js +21 -19
- package/dist/adapters/postgres/schema.d.ts +1 -1
- package/dist/adapters/postgres/schema.default.d.ts +1 -1
- package/dist/adapters/postgres/schema.js +2 -2
- package/dist/adapters/schemas.d.ts +6 -3
- package/dist/adapters/schemas.d.ts.map +1 -1
- package/dist/adapters/schemas.js +2 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -1
- package/dist/server.d.ts +5 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -3
- package/dist/utils/p-retry.d.ts.map +1 -1
- package/dist/utils/p-retry.js +3 -4
- package/migrations/postgres/20251203223656_conscious_johnny_blaze/migration.sql +2 -2
- package/migrations/postgres/20251203223656_conscious_johnny_blaze/snapshot.json +10 -23
- package/package.json +1 -1
- package/src/adapters/adapter.ts +10 -10
- package/src/adapters/postgres/base.ts +22 -20
- package/src/adapters/postgres/schema.ts +2 -2
- package/src/adapters/schemas.ts +2 -1
- package/src/client.ts +3 -3
- package/src/server.ts +2 -2
- package/src/utils/p-retry.ts +8 -11
|
@@ -8,7 +8,7 @@ export interface AdapterEvents {
|
|
|
8
8
|
{
|
|
9
9
|
jobId: string;
|
|
10
10
|
status: JobStatus | 'retried';
|
|
11
|
-
|
|
11
|
+
clientId: string;
|
|
12
12
|
}
|
|
13
13
|
];
|
|
14
14
|
'job-available': [
|
|
@@ -22,7 +22,7 @@ export interface AdapterEvents {
|
|
|
22
22
|
stepId: string;
|
|
23
23
|
status: StepStatus;
|
|
24
24
|
error: any | null;
|
|
25
|
-
|
|
25
|
+
clientId: string;
|
|
26
26
|
}
|
|
27
27
|
];
|
|
28
28
|
'step-delayed': [
|
|
@@ -31,7 +31,7 @@ export interface AdapterEvents {
|
|
|
31
31
|
stepId: string;
|
|
32
32
|
delayedMs: number;
|
|
33
33
|
error: any;
|
|
34
|
-
|
|
34
|
+
clientId: string;
|
|
35
35
|
}
|
|
36
36
|
];
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAGlC,OAAO,EAIL,KAAK,SAAS,EAId,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,GAAG,EACH,eAAe,EACf,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAA;AAiCrB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,GAAG,EACH,UAAU,EACV,OAAO,EACP,YAAY,EACZ,eAAe,EACf,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,SAAS,GACV,MAAM,cAAc,CAAA;AAMrB,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE;QACpB;YACE,KAAK,EAAE,MAAM,CAAA;YACb,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;YAC7B,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/adapter.js
CHANGED
|
@@ -107,7 +107,7 @@ export class Adapter extends EventEmitter {
|
|
|
107
107
|
await this._notify('job-status-changed', {
|
|
108
108
|
jobId: parsedOptions.jobId,
|
|
109
109
|
status: JOB_STATUS_COMPLETED,
|
|
110
|
-
|
|
110
|
+
clientId: this.id,
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
113
|
return success;
|
|
@@ -127,7 +127,7 @@ export class Adapter extends EventEmitter {
|
|
|
127
127
|
await this._notify('job-status-changed', {
|
|
128
128
|
jobId: parsedOptions.jobId,
|
|
129
129
|
status: JOB_STATUS_FAILED,
|
|
130
|
-
|
|
130
|
+
clientId: this.id,
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
return success;
|
|
@@ -147,7 +147,7 @@ export class Adapter extends EventEmitter {
|
|
|
147
147
|
await this._notify('job-status-changed', {
|
|
148
148
|
jobId: parsedOptions.jobId,
|
|
149
149
|
status: JOB_STATUS_CANCELLED,
|
|
150
|
-
|
|
150
|
+
clientId: this.id,
|
|
151
151
|
});
|
|
152
152
|
}
|
|
153
153
|
return success;
|
|
@@ -247,7 +247,7 @@ export class Adapter extends EventEmitter {
|
|
|
247
247
|
stepId: parsedOptions.stepId,
|
|
248
248
|
status: STEP_STATUS_COMPLETED,
|
|
249
249
|
error: null,
|
|
250
|
-
|
|
250
|
+
clientId: this.id,
|
|
251
251
|
});
|
|
252
252
|
}
|
|
253
253
|
}
|
|
@@ -272,7 +272,7 @@ export class Adapter extends EventEmitter {
|
|
|
272
272
|
stepId: parsedOptions.stepId,
|
|
273
273
|
status: STEP_STATUS_FAILED,
|
|
274
274
|
error: parsedOptions.error,
|
|
275
|
-
|
|
275
|
+
clientId: this.id,
|
|
276
276
|
});
|
|
277
277
|
}
|
|
278
278
|
}
|
|
@@ -297,7 +297,7 @@ export class Adapter extends EventEmitter {
|
|
|
297
297
|
stepId: parsedOptions.stepId,
|
|
298
298
|
delayedMs: parsedOptions.delayMs,
|
|
299
299
|
error: parsedOptions.error,
|
|
300
|
-
|
|
300
|
+
clientId: this.id,
|
|
301
301
|
});
|
|
302
302
|
}
|
|
303
303
|
}
|
|
@@ -322,7 +322,7 @@ export class Adapter extends EventEmitter {
|
|
|
322
322
|
stepId: parsedOptions.stepId,
|
|
323
323
|
status: STEP_STATUS_CANCELLED,
|
|
324
324
|
error: null,
|
|
325
|
-
|
|
325
|
+
clientId: this.id,
|
|
326
326
|
});
|
|
327
327
|
}
|
|
328
328
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,13 +21,13 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
21
21
|
}
|
|
22
22
|
async _start() {
|
|
23
23
|
await this._listen(`ping-${this.id}`, async (payload) => {
|
|
24
|
-
const
|
|
25
|
-
await this._notify(`pong-${
|
|
24
|
+
const fromClientId = JSON.parse(payload).fromClientId;
|
|
25
|
+
await this._notify(`pong-${fromClientId}`, { toClientId: this.id });
|
|
26
26
|
});
|
|
27
27
|
await this._listen(`job-status-changed`, (payload) => {
|
|
28
28
|
if (this.listenerCount('job-status-changed') > 0) {
|
|
29
|
-
const { jobId, status,
|
|
30
|
-
this.emit('job-status-changed', { jobId, status,
|
|
29
|
+
const { jobId, status, clientId } = JSON.parse(payload);
|
|
30
|
+
this.emit('job-status-changed', { jobId, status, clientId });
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
33
|
await this._listen(`job-available`, (payload) => {
|
|
@@ -65,7 +65,7 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
65
65
|
output,
|
|
66
66
|
finished_at: sql `now()`,
|
|
67
67
|
})
|
|
68
|
-
.where(and(eq(this.tables.jobsTable.id, jobId), eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE), eq(this.tables.jobsTable.
|
|
68
|
+
.where(and(eq(this.tables.jobsTable.id, jobId), eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE), eq(this.tables.jobsTable.client_id, this.id), gt(this.tables.jobsTable.expires_at, sql `now()`)))
|
|
69
69
|
.returning({ id: this.tables.jobsTable.id });
|
|
70
70
|
return result.length > 0;
|
|
71
71
|
}
|
|
@@ -77,7 +77,7 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
77
77
|
error,
|
|
78
78
|
finished_at: sql `now()`,
|
|
79
79
|
})
|
|
80
|
-
.where(and(eq(this.tables.jobsTable.id, jobId), eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE), eq(this.tables.jobsTable.
|
|
80
|
+
.where(and(eq(this.tables.jobsTable.id, jobId), eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE), eq(this.tables.jobsTable.client_id, this.id)))
|
|
81
81
|
.returning({ id: this.tables.jobsTable.id });
|
|
82
82
|
return result.length > 0;
|
|
83
83
|
}
|
|
@@ -271,7 +271,7 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
271
271
|
SET status = ${JOB_STATUS_ACTIVE},
|
|
272
272
|
started_at = now(),
|
|
273
273
|
expires_at = now() + (timeout_ms || ' milliseconds')::interval,
|
|
274
|
-
|
|
274
|
+
client_id = ${this.id}
|
|
275
275
|
FROM verify_concurrency vc
|
|
276
276
|
WHERE j.id = vc.id
|
|
277
277
|
AND vc.current_active < vc.concurrency_limit -- Final concurrency check using job's concurrency limit
|
|
@@ -295,39 +295,39 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
295
295
|
}
|
|
296
296
|
async _recoverJobs(options) {
|
|
297
297
|
const { checksums, multiProcessMode = false, processTimeout = 5_000 } = options;
|
|
298
|
-
const
|
|
298
|
+
const unresponsiveClientIds = [this.id];
|
|
299
299
|
if (multiProcessMode) {
|
|
300
300
|
const result = (await this.db
|
|
301
301
|
.selectDistinct({
|
|
302
|
-
|
|
302
|
+
clientId: this.tables.jobsTable.client_id,
|
|
303
303
|
})
|
|
304
304
|
.from(this.tables.jobsTable)
|
|
305
|
-
.where(and(eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE), ne(this.tables.jobsTable.
|
|
305
|
+
.where(and(eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE), ne(this.tables.jobsTable.client_id, this.id))));
|
|
306
306
|
if (result.length > 0) {
|
|
307
307
|
const pongCount = new Set();
|
|
308
308
|
const { unlisten } = await this._listen(`pong-${this.id}`, (payload) => {
|
|
309
|
-
const
|
|
310
|
-
pongCount.add(
|
|
309
|
+
const toClientId = JSON.parse(payload).toClientId;
|
|
310
|
+
pongCount.add(toClientId);
|
|
311
311
|
if (pongCount.size >= result.length) {
|
|
312
312
|
unlisten();
|
|
313
313
|
}
|
|
314
314
|
});
|
|
315
|
-
await Promise.all(result.map((row) => this._notify(`ping-${row.
|
|
315
|
+
await Promise.all(result.map((row) => this._notify(`ping-${row.clientId}`, { fromClientId: this.id })));
|
|
316
316
|
let waitForSeconds = processTimeout / 1_000;
|
|
317
317
|
while (pongCount.size < result.length && waitForSeconds > 0) {
|
|
318
318
|
await new Promise((resolve) => setTimeout(resolve, 1000).unref?.());
|
|
319
319
|
waitForSeconds--;
|
|
320
320
|
}
|
|
321
|
-
|
|
321
|
+
unresponsiveClientIds.push(...result.filter((row) => !pongCount.has(row.clientId)).map((row) => row.clientId));
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
|
-
if (
|
|
324
|
+
if (unresponsiveClientIds.length > 0) {
|
|
325
325
|
const result = this._map(await this.db.execute(sql `
|
|
326
326
|
WITH locked_jobs AS (
|
|
327
327
|
SELECT j.id
|
|
328
328
|
FROM ${this.tables.jobsTable} j
|
|
329
329
|
WHERE j.status = ${JOB_STATUS_ACTIVE}
|
|
330
|
-
AND j.
|
|
330
|
+
AND j.client_id IN ${unresponsiveClientIds}
|
|
331
331
|
FOR UPDATE OF j SKIP LOCKED
|
|
332
332
|
),
|
|
333
333
|
updated_jobs AS (
|
|
@@ -523,6 +523,7 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
523
523
|
createdAt: this.tables.jobsTable.created_at,
|
|
524
524
|
updatedAt: this.tables.jobsTable.updated_at,
|
|
525
525
|
concurrencyLimit: this.tables.jobsTable.concurrency_limit,
|
|
526
|
+
clientId: this.tables.jobsTable.client_id,
|
|
526
527
|
})
|
|
527
528
|
.from(this.tables.jobsTable)
|
|
528
529
|
.where(eq(this.tables.jobsTable.id, jobId))
|
|
@@ -591,8 +592,8 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
591
592
|
? sql `j.group_key LIKE ANY(ARRAY[${sql.raw(filters.groupKey.map((key) => `'${key}'`).join(','))}]::text[])`
|
|
592
593
|
: undefined, filters.groupKey && !Array.isArray(filters.groupKey)
|
|
593
594
|
? ilike(jobsTable.group_key, `%${filters.groupKey}%`)
|
|
594
|
-
: undefined, filters.
|
|
595
|
-
? inArray(jobsTable.
|
|
595
|
+
: undefined, filters.clientId
|
|
596
|
+
? inArray(jobsTable.client_id, Array.isArray(filters.clientId) ? filters.clientId : [filters.clientId])
|
|
596
597
|
: undefined, filters.createdAt && Array.isArray(filters.createdAt)
|
|
597
598
|
? between(sql `date_trunc('second', ${jobsTable.created_at})`, filters.createdAt[0].toISOString(), filters.createdAt[1].toISOString())
|
|
598
599
|
: undefined, filters.createdAt && !Array.isArray(filters.createdAt)
|
|
@@ -608,7 +609,7 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
608
609
|
: undefined, filters.updatedAfter
|
|
609
610
|
? sql `date_trunc('milliseconds', ${jobsTable.updated_at}) > ${filters.updatedAfter.toISOString()}::timestamptz`
|
|
610
611
|
: undefined, fuzzySearch && fuzzySearch.length > 0
|
|
611
|
-
? or(ilike(jobsTable.action_name, `%${fuzzySearch}%`), ilike(jobsTable.group_key, `%${fuzzySearch}%`), ilike(jobsTable.
|
|
612
|
+
? or(ilike(jobsTable.action_name, `%${fuzzySearch}%`), ilike(jobsTable.group_key, `%${fuzzySearch}%`), ilike(jobsTable.client_id, `%${fuzzySearch}%`), sql `${jobsTable.id}::text ilike ${`%${fuzzySearch}%`}`, sql `to_tsvector('english', ${jobsTable.input}::text) @@ plainto_tsquery('english', ${fuzzySearch})`, sql `to_tsvector('english', ${jobsTable.output}::text) @@ plainto_tsquery('english', ${fuzzySearch})`)
|
|
612
613
|
: undefined, ...(filters.inputFilter && Object.keys(filters.inputFilter).length > 0
|
|
613
614
|
? this.#buildJsonbWhereConditions(filters.inputFilter, jobsTable.input)
|
|
614
615
|
: []), ...(filters.outputFilter && Object.keys(filters.outputFilter).length > 0
|
|
@@ -656,6 +657,7 @@ export class PostgresBaseAdapter extends Adapter {
|
|
|
656
657
|
createdAt: jobsTable.created_at,
|
|
657
658
|
updatedAt: jobsTable.updated_at,
|
|
658
659
|
concurrencyLimit: jobsTable.concurrency_limit,
|
|
660
|
+
clientId: jobsTable.client_id,
|
|
659
661
|
})
|
|
660
662
|
.from(jobsTable)
|
|
661
663
|
.where(where)
|
|
@@ -197,7 +197,7 @@ export default function createSchema(schemaName: string): {
|
|
|
197
197
|
identity: undefined;
|
|
198
198
|
generated: undefined;
|
|
199
199
|
}, {}>;
|
|
200
|
-
|
|
200
|
+
client_id: import("drizzle-orm/pg-core").PgColumn<{
|
|
201
201
|
name: string;
|
|
202
202
|
tableName: "jobs";
|
|
203
203
|
dataType: "string";
|
|
@@ -194,7 +194,7 @@ declare const schema: import("drizzle-orm/pg-core").PgSchema<string>, jobsTable:
|
|
|
194
194
|
identity: undefined;
|
|
195
195
|
generated: undefined;
|
|
196
196
|
}, {}>;
|
|
197
|
-
|
|
197
|
+
client_id: import("drizzle-orm/pg-core").PgColumn<{
|
|
198
198
|
name: string;
|
|
199
199
|
tableName: "jobs";
|
|
200
200
|
dataType: "string";
|
|
@@ -16,7 +16,7 @@ export default function createSchema(schemaName) {
|
|
|
16
16
|
expires_at: timestamp('expires_at', { withTimezone: true }),
|
|
17
17
|
started_at: timestamp('started_at', { withTimezone: true }),
|
|
18
18
|
finished_at: timestamp('finished_at', { withTimezone: true }),
|
|
19
|
-
|
|
19
|
+
client_id: text('client_id'),
|
|
20
20
|
concurrency_limit: integer('concurrency_limit').notNull().default(10),
|
|
21
21
|
created_at: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
|
|
22
22
|
updated_at: timestamp('updated_at', { withTimezone: true })
|
|
@@ -32,7 +32,7 @@ export default function createSchema(schemaName) {
|
|
|
32
32
|
index('idx_jobs_started_at').on(table.started_at),
|
|
33
33
|
index('idx_jobs_finished_at').on(table.finished_at),
|
|
34
34
|
index('idx_jobs_expires_at').on(table.expires_at),
|
|
35
|
-
index('
|
|
35
|
+
index('idx_jobs_client_id').on(table.client_id),
|
|
36
36
|
index('idx_jobs_checksum').on(table.checksum),
|
|
37
37
|
index('idx_jobs_concurrency_limit').on(table.concurrency_limit),
|
|
38
38
|
index('idx_jobs_action_status').on(table.action_name, table.status),
|
|
@@ -39,6 +39,7 @@ export declare const JobSchema: z.ZodObject<{
|
|
|
39
39
|
createdAt: z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>;
|
|
40
40
|
updatedAt: z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>;
|
|
41
41
|
concurrencyLimit: z.ZodCoercedNumber<unknown>;
|
|
42
|
+
clientId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
42
43
|
}, z.core.$strip>;
|
|
43
44
|
export declare const JobStepSchema: z.ZodObject<{
|
|
44
45
|
id: z.ZodString;
|
|
@@ -145,7 +146,7 @@ export declare const JobFiltersSchema: z.ZodObject<{
|
|
|
145
146
|
}>>]>>;
|
|
146
147
|
actionName: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
147
148
|
groupKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
148
|
-
|
|
149
|
+
clientId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
149
150
|
createdAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
150
151
|
startedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
151
152
|
finishedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
@@ -173,7 +174,7 @@ export declare const GetJobsOptionsSchema: z.ZodObject<{
|
|
|
173
174
|
}>>]>>;
|
|
174
175
|
actionName: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
175
176
|
groupKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
176
|
-
|
|
177
|
+
clientId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
177
178
|
createdAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
178
179
|
startedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
179
180
|
finishedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
@@ -269,7 +270,7 @@ export declare const DeleteJobsOptionsSchema: z.ZodOptional<z.ZodObject<{
|
|
|
269
270
|
}>>]>>;
|
|
270
271
|
actionName: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
271
272
|
groupKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
272
|
-
|
|
273
|
+
clientId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
273
274
|
createdAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
274
275
|
startedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
275
276
|
finishedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>>]>>;
|
|
@@ -367,6 +368,7 @@ export declare const JobsArrayResultSchema: z.ZodArray<z.ZodObject<{
|
|
|
367
368
|
createdAt: z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>;
|
|
368
369
|
updatedAt: z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>;
|
|
369
370
|
concurrencyLimit: z.ZodCoercedNumber<unknown>;
|
|
371
|
+
clientId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
370
372
|
}, z.core.$strip>>;
|
|
371
373
|
export declare const CreateOrRecoverJobStepResultNullableSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
372
374
|
id: z.ZodString;
|
|
@@ -405,6 +407,7 @@ export declare const GetJobsResultSchema: z.ZodObject<{
|
|
|
405
407
|
createdAt: z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>;
|
|
406
408
|
updatedAt: z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>;
|
|
407
409
|
concurrencyLimit: z.ZodCoercedNumber<unknown>;
|
|
410
|
+
clientId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
408
411
|
}, z.core.$strip>>;
|
|
409
412
|
total: z.ZodNumber;
|
|
410
413
|
page: z.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/adapters/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,eAAO,MAAM,eAAe;;;;;;EAAuB,CAAA;AACnD,eAAO,MAAM,gBAAgB;;;;;EAAwB,CAAA;AAYrD,eAAO,MAAM,uBAAuB;;;;;iBAKlC,CAAA;AAMF,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/adapters/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/schemas.js
CHANGED
|
@@ -28,6 +28,7 @@ export const JobSchema = z.object({
|
|
|
28
28
|
createdAt: DateSchema,
|
|
29
29
|
updatedAt: DateSchema,
|
|
30
30
|
concurrencyLimit: z.coerce.number(),
|
|
31
|
+
clientId: z.string().nullable().optional(),
|
|
31
32
|
});
|
|
32
33
|
export const JobStepSchema = z.object({
|
|
33
34
|
id: z.string(),
|
|
@@ -58,7 +59,7 @@ export const JobFiltersSchema = z.object({
|
|
|
58
59
|
status: z.union([JobStatusSchema, z.array(JobStatusSchema)]).optional(),
|
|
59
60
|
actionName: z.union([z.string(), z.array(z.string())]).optional(),
|
|
60
61
|
groupKey: z.union([z.string(), z.array(z.string())]).optional(),
|
|
61
|
-
|
|
62
|
+
clientId: z.union([z.string(), z.array(z.string())]).optional(),
|
|
62
63
|
createdAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
|
|
63
64
|
startedAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
|
|
64
65
|
finishedAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
|
package/dist/client.d.ts
CHANGED
|
@@ -58,6 +58,7 @@ export declare class Client<TActions extends Record<string, Action<any, any, TVa
|
|
|
58
58
|
createdAt: Date;
|
|
59
59
|
updatedAt: Date;
|
|
60
60
|
concurrencyLimit: number;
|
|
61
|
+
clientId?: string | null | undefined;
|
|
61
62
|
}[]>;
|
|
62
63
|
cancelJob(jobId: string): Promise<boolean>;
|
|
63
64
|
retryJob(jobId: string): Promise<string | null>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAA;AAExC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,MAAM,EAA6B,MAAM,aAAa,CAAA;AAEpE,OAAO,KAAK,EACV,OAAO,EACP,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,GAAG,EACH,OAAO,EACR,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAGjF,QAAA,MAAM,iBAAiB;;;;;;;;;;;iBAmFrB,CAAA;AAQF,MAAM,WAAW,aAAa,CAC5B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAC7D,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACpC,SAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;IAKzC,QAAQ,EAAE,OAAO,CAAA;IAMjB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAOlB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;IAMpF,SAAS,CAAC,EAAE,UAAU,CAAA;CACvB;AAED,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AASD,qBAAa,MAAM,CACjB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAC7D,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;gBAmCxB,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC;IA2BxD,IAAI,MAAM,gBAET;IAOD,SAAS;;;;;;;;;;;;;;IAgBH,SAAS,CAAC,WAAW,SAAS,MAAM,QAAQ,EAChD,UAAU,EAAE,WAAW,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,GACnE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GACpD,KAAK,GACR,OAAO,CAAC,MAAM,CAAC;IA2DZ,KAAK,CAAC,OAAO,EAAE,YAAY
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -13,7 +13,7 @@ const BaseOptionsSchema = z.object({
|
|
|
13
13
|
migrateOnStart: z.boolean().default(true),
|
|
14
14
|
recoverJobsOnStart: z.boolean().default(true),
|
|
15
15
|
multiProcessMode: z.boolean().default(false),
|
|
16
|
-
processTimeout: z.number().default(5 *
|
|
16
|
+
processTimeout: z.number().default(5 * 1000),
|
|
17
17
|
});
|
|
18
18
|
export class Client {
|
|
19
19
|
#options;
|
package/dist/server.d.ts
CHANGED
|
@@ -78,7 +78,7 @@ export declare const GetJobsQuerySchema: z.ZodPipe<z.ZodObject<{
|
|
|
78
78
|
}>>]>>;
|
|
79
79
|
fActionName: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
80
80
|
fGroupKey: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
81
|
-
|
|
81
|
+
fClientId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
82
82
|
fCreatedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodCoercedDate<unknown>, z.ZodArray<z.ZodCoercedDate<unknown>>]>>;
|
|
83
83
|
fStartedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodCoercedDate<unknown>, z.ZodArray<z.ZodCoercedDate<unknown>>]>>;
|
|
84
84
|
fFinishedAt: z.ZodOptional<z.ZodUnion<readonly [z.ZodCoercedDate<unknown>, z.ZodArray<z.ZodCoercedDate<unknown>>]>>;
|
|
@@ -101,7 +101,7 @@ export declare const GetJobsQuerySchema: z.ZodPipe<z.ZodObject<{
|
|
|
101
101
|
fStatus?: "created" | "active" | "completed" | "failed" | "cancelled" | ("created" | "active" | "completed" | "failed" | "cancelled")[] | undefined;
|
|
102
102
|
fActionName?: string | string[] | undefined;
|
|
103
103
|
fGroupKey?: string | string[] | undefined;
|
|
104
|
-
|
|
104
|
+
fClientId?: string | string[] | undefined;
|
|
105
105
|
fCreatedAt?: Date | Date[] | undefined;
|
|
106
106
|
fStartedAt?: Date | Date[] | undefined;
|
|
107
107
|
fFinishedAt?: Date | Date[] | undefined;
|
|
@@ -133,6 +133,7 @@ export declare const GetJobsResponseSchema: z.ZodObject<{
|
|
|
133
133
|
createdAt: z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>;
|
|
134
134
|
updatedAt: z.ZodUnion<readonly [z.ZodDate, z.ZodPipe<z.ZodString, z.ZodTransform<Date, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<Date, number>>]>;
|
|
135
135
|
concurrencyLimit: z.ZodCoercedNumber<unknown>;
|
|
136
|
+
clientId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
136
137
|
}, z.core.$strip>>;
|
|
137
138
|
total: z.ZodNumber;
|
|
138
139
|
page: z.ZodNumber;
|
|
@@ -530,6 +531,7 @@ export declare function createServer<P extends string>({ client, prefix, login }
|
|
|
530
531
|
createdAt: Date;
|
|
531
532
|
updatedAt: Date;
|
|
532
533
|
concurrencyLimit: number;
|
|
534
|
+
clientId?: string | null | undefined;
|
|
533
535
|
};
|
|
534
536
|
401: {
|
|
535
537
|
error: string;
|
|
@@ -657,6 +659,7 @@ export declare function createServer<P extends string>({ client, prefix, login }
|
|
|
657
659
|
createdAt: Date;
|
|
658
660
|
updatedAt: Date;
|
|
659
661
|
concurrencyLimit: number;
|
|
662
|
+
clientId?: string | null | undefined;
|
|
660
663
|
}[];
|
|
661
664
|
total: number;
|
|
662
665
|
page: number;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAKL,kBAAkB,EAKlB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASzC,qBAAa,aAAc,SAAQ,KAAK;gBAM1B,OAAO,EAAE,MAAM;CAI5B;AAKD,qBAAa,iBAAkB,SAAQ,KAAK;gBAM9B,OAAO,EAAE,MAAM;CAI5B;AAUD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;GAY9B,CAAA;AAGL,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA0B,CAAA;AAEhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAyCF,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC;eAAS,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;;;;;;;;;;;;;GAyCnG,CAAA;AAGJ,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -35,7 +35,7 @@ export const GetJobsQuerySchema = z
|
|
|
35
35
|
fStatus: z.union([JobStatusSchema, z.array(JobStatusSchema)]).optional(),
|
|
36
36
|
fActionName: z.union([z.string(), z.array(z.string())]).optional(),
|
|
37
37
|
fGroupKey: z.union([z.string(), z.array(z.string())]).optional(),
|
|
38
|
-
|
|
38
|
+
fClientId: z.union([z.string(), z.array(z.string())]).optional(),
|
|
39
39
|
fCreatedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
|
|
40
40
|
fStartedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
|
|
41
41
|
fFinishedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
|
|
@@ -53,8 +53,8 @@ export const GetJobsQuerySchema = z
|
|
|
53
53
|
filters.actionName = data.fActionName;
|
|
54
54
|
if (data.fGroupKey)
|
|
55
55
|
filters.groupKey = data.fGroupKey;
|
|
56
|
-
if (data.
|
|
57
|
-
filters.
|
|
56
|
+
if (data.fClientId)
|
|
57
|
+
filters.clientId = data.fClientId;
|
|
58
58
|
if (data.fCreatedAt)
|
|
59
59
|
filters.createdAt = data.fCreatedAt;
|
|
60
60
|
if (data.fStartedAt)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p-retry.d.ts","sourceRoot":"","sources":["../../src/utils/p-retry.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,WAAW,CAAA;IACnB,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,KAAK,EAAE,KAAK,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,EAAE,MAAM,CAAA;QACnB,eAAe,EAAE,MAAM,CAAA;QACvB,UAAU,EAAE,MAAM,CAAA;KACnB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpB;AA6HD,wBAA8B,MAAM,CAAC,OAAO,EAC1C,KAAK,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAClD,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"p-retry.d.ts","sourceRoot":"","sources":["../../src/utils/p-retry.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,WAAW,CAAA;IACnB,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,KAAK,EAAE,KAAK,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,EAAE,MAAM,CAAA;QACnB,eAAe,EAAE,MAAM,CAAA;QACvB,UAAU,EAAE,MAAM,CAAA;KACnB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpB;AA6HD,wBAA8B,MAAM,CAAC,OAAO,EAC1C,KAAK,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAClD,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,OAAO,CAAC,CA4DlB"}
|
package/dist/utils/p-retry.js
CHANGED
|
@@ -115,15 +115,14 @@ export default async function pRetry(input, options) {
|
|
|
115
115
|
return result;
|
|
116
116
|
}
|
|
117
117
|
catch (error) {
|
|
118
|
-
|
|
118
|
+
await onAttemptFailure({
|
|
119
119
|
error: error,
|
|
120
120
|
attemptNumber,
|
|
121
121
|
retriesConsumed,
|
|
122
122
|
startTime,
|
|
123
123
|
options,
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
}
|
|
124
|
+
});
|
|
125
|
+
retriesConsumed++;
|
|
127
126
|
}
|
|
128
127
|
}
|
|
129
128
|
throw new Error('Retry attempts exhausted without throwing an error.');
|
|
@@ -34,7 +34,7 @@ CREATE TABLE "duron"."jobs" (
|
|
|
34
34
|
"expires_at" timestamp with time zone,
|
|
35
35
|
"started_at" timestamp with time zone,
|
|
36
36
|
"finished_at" timestamp with time zone,
|
|
37
|
-
"
|
|
37
|
+
"client_id" text,
|
|
38
38
|
"concurrency_limit" integer DEFAULT 10 NOT NULL,
|
|
39
39
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
40
40
|
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
@@ -54,7 +54,7 @@ CREATE INDEX "idx_jobs_group_key" ON "duron"."jobs" ("group_key");--> statement-
|
|
|
54
54
|
CREATE INDEX "idx_jobs_started_at" ON "duron"."jobs" ("started_at");--> statement-breakpoint
|
|
55
55
|
CREATE INDEX "idx_jobs_finished_at" ON "duron"."jobs" ("finished_at");--> statement-breakpoint
|
|
56
56
|
CREATE INDEX "idx_jobs_expires_at" ON "duron"."jobs" ("expires_at");--> statement-breakpoint
|
|
57
|
-
CREATE INDEX "
|
|
57
|
+
CREATE INDEX "idx_jobs_client_id" ON "duron"."jobs" ("client_id");--> statement-breakpoint
|
|
58
58
|
CREATE INDEX "idx_jobs_checksum" ON "duron"."jobs" ("checksum");--> statement-breakpoint
|
|
59
59
|
CREATE INDEX "idx_jobs_concurrency_limit" ON "duron"."jobs" ("concurrency_limit");--> statement-breakpoint
|
|
60
60
|
CREATE INDEX "idx_jobs_action_status" ON "duron"."jobs" ("action_name","status");--> statement-breakpoint
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
"version": "8",
|
|
3
3
|
"dialect": "postgres",
|
|
4
4
|
"id": "e32fddc5-6d55-4c79-87b4-13d3a01b7d09",
|
|
5
|
-
"prevIds": [
|
|
6
|
-
"00000000-0000-0000-0000-000000000000"
|
|
7
|
-
],
|
|
5
|
+
"prevIds": ["00000000-0000-0000-0000-000000000000"],
|
|
8
6
|
"ddl": [
|
|
9
7
|
{
|
|
10
8
|
"name": "duron",
|
|
@@ -394,7 +392,7 @@
|
|
|
394
392
|
"default": null,
|
|
395
393
|
"generated": null,
|
|
396
394
|
"identity": null,
|
|
397
|
-
"name": "
|
|
395
|
+
"name": "client_id",
|
|
398
396
|
"entityType": "columns",
|
|
399
397
|
"schema": "duron",
|
|
400
398
|
"table": "jobs"
|
|
@@ -729,7 +727,7 @@
|
|
|
729
727
|
"nameExplicit": true,
|
|
730
728
|
"columns": [
|
|
731
729
|
{
|
|
732
|
-
"value": "
|
|
730
|
+
"value": "client_id",
|
|
733
731
|
"isExpression": false,
|
|
734
732
|
"asc": true,
|
|
735
733
|
"nullsFirst": false,
|
|
@@ -741,7 +739,7 @@
|
|
|
741
739
|
"with": "",
|
|
742
740
|
"method": "btree",
|
|
743
741
|
"concurrently": false,
|
|
744
|
-
"name": "
|
|
742
|
+
"name": "idx_jobs_client_id",
|
|
745
743
|
"entityType": "indexes",
|
|
746
744
|
"schema": "duron",
|
|
747
745
|
"table": "jobs"
|
|
@@ -888,14 +886,10 @@
|
|
|
888
886
|
},
|
|
889
887
|
{
|
|
890
888
|
"nameExplicit": false,
|
|
891
|
-
"columns": [
|
|
892
|
-
"job_id"
|
|
893
|
-
],
|
|
889
|
+
"columns": ["job_id"],
|
|
894
890
|
"schemaTo": "duron",
|
|
895
891
|
"tableTo": "jobs",
|
|
896
|
-
"columnsTo": [
|
|
897
|
-
"id"
|
|
898
|
-
],
|
|
892
|
+
"columnsTo": ["id"],
|
|
899
893
|
"onUpdate": "NO ACTION",
|
|
900
894
|
"onDelete": "CASCADE",
|
|
901
895
|
"name": "job_steps_job_id_jobs_id_fkey",
|
|
@@ -904,9 +898,7 @@
|
|
|
904
898
|
"table": "job_steps"
|
|
905
899
|
},
|
|
906
900
|
{
|
|
907
|
-
"columns": [
|
|
908
|
-
"id"
|
|
909
|
-
],
|
|
901
|
+
"columns": ["id"],
|
|
910
902
|
"nameExplicit": false,
|
|
911
903
|
"name": "job_steps_pkey",
|
|
912
904
|
"schema": "duron",
|
|
@@ -914,9 +906,7 @@
|
|
|
914
906
|
"entityType": "pks"
|
|
915
907
|
},
|
|
916
908
|
{
|
|
917
|
-
"columns": [
|
|
918
|
-
"id"
|
|
919
|
-
],
|
|
909
|
+
"columns": ["id"],
|
|
920
910
|
"nameExplicit": false,
|
|
921
911
|
"name": "jobs_pkey",
|
|
922
912
|
"schema": "duron",
|
|
@@ -925,10 +915,7 @@
|
|
|
925
915
|
},
|
|
926
916
|
{
|
|
927
917
|
"nameExplicit": true,
|
|
928
|
-
"columns": [
|
|
929
|
-
"job_id",
|
|
930
|
-
"name"
|
|
931
|
-
],
|
|
918
|
+
"columns": ["job_id", "name"],
|
|
932
919
|
"nullsNotDistinct": false,
|
|
933
920
|
"name": "unique_job_step_name",
|
|
934
921
|
"entityType": "uniques",
|
|
@@ -951,4 +938,4 @@
|
|
|
951
938
|
}
|
|
952
939
|
],
|
|
953
940
|
"renames": []
|
|
954
|
-
}
|
|
941
|
+
}
|
package/package.json
CHANGED
package/src/adapters/adapter.ts
CHANGED
|
@@ -112,7 +112,7 @@ export interface AdapterEvents {
|
|
|
112
112
|
{
|
|
113
113
|
jobId: string
|
|
114
114
|
status: JobStatus | 'retried'
|
|
115
|
-
|
|
115
|
+
clientId: string
|
|
116
116
|
},
|
|
117
117
|
]
|
|
118
118
|
'job-available': [
|
|
@@ -126,7 +126,7 @@ export interface AdapterEvents {
|
|
|
126
126
|
stepId: string
|
|
127
127
|
status: StepStatus
|
|
128
128
|
error: any | null
|
|
129
|
-
|
|
129
|
+
clientId: string
|
|
130
130
|
},
|
|
131
131
|
]
|
|
132
132
|
'step-delayed': [
|
|
@@ -135,7 +135,7 @@ export interface AdapterEvents {
|
|
|
135
135
|
stepId: string
|
|
136
136
|
delayedMs: number
|
|
137
137
|
error: any
|
|
138
|
-
|
|
138
|
+
clientId: string
|
|
139
139
|
},
|
|
140
140
|
]
|
|
141
141
|
}
|
|
@@ -319,7 +319,7 @@ export abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
319
319
|
await this._notify('job-status-changed', {
|
|
320
320
|
jobId: parsedOptions.jobId,
|
|
321
321
|
status: JOB_STATUS_COMPLETED,
|
|
322
|
-
|
|
322
|
+
clientId: this.id,
|
|
323
323
|
})
|
|
324
324
|
}
|
|
325
325
|
return success
|
|
@@ -344,7 +344,7 @@ export abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
344
344
|
await this._notify('job-status-changed', {
|
|
345
345
|
jobId: parsedOptions.jobId,
|
|
346
346
|
status: JOB_STATUS_FAILED,
|
|
347
|
-
|
|
347
|
+
clientId: this.id,
|
|
348
348
|
})
|
|
349
349
|
}
|
|
350
350
|
return success
|
|
@@ -369,7 +369,7 @@ export abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
369
369
|
await this._notify('job-status-changed', {
|
|
370
370
|
jobId: parsedOptions.jobId,
|
|
371
371
|
status: JOB_STATUS_CANCELLED,
|
|
372
|
-
|
|
372
|
+
clientId: this.id,
|
|
373
373
|
})
|
|
374
374
|
}
|
|
375
375
|
return success
|
|
@@ -511,7 +511,7 @@ export abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
511
511
|
stepId: parsedOptions.stepId,
|
|
512
512
|
status: STEP_STATUS_COMPLETED,
|
|
513
513
|
error: null,
|
|
514
|
-
|
|
514
|
+
clientId: this.id,
|
|
515
515
|
})
|
|
516
516
|
}
|
|
517
517
|
}
|
|
@@ -542,7 +542,7 @@ export abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
542
542
|
stepId: parsedOptions.stepId,
|
|
543
543
|
status: STEP_STATUS_FAILED,
|
|
544
544
|
error: parsedOptions.error,
|
|
545
|
-
|
|
545
|
+
clientId: this.id,
|
|
546
546
|
})
|
|
547
547
|
}
|
|
548
548
|
}
|
|
@@ -573,7 +573,7 @@ export abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
573
573
|
stepId: parsedOptions.stepId,
|
|
574
574
|
delayedMs: parsedOptions.delayMs,
|
|
575
575
|
error: parsedOptions.error,
|
|
576
|
-
|
|
576
|
+
clientId: this.id,
|
|
577
577
|
})
|
|
578
578
|
}
|
|
579
579
|
}
|
|
@@ -604,7 +604,7 @@ export abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
604
604
|
stepId: parsedOptions.stepId,
|
|
605
605
|
status: STEP_STATUS_CANCELLED,
|
|
606
606
|
error: null,
|
|
607
|
-
|
|
607
|
+
clientId: this.id,
|
|
608
608
|
})
|
|
609
609
|
}
|
|
610
610
|
}
|
|
@@ -103,14 +103,14 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
103
103
|
*/
|
|
104
104
|
protected async _start() {
|
|
105
105
|
await this._listen(`ping-${this.id}`, async (payload: string) => {
|
|
106
|
-
const
|
|
107
|
-
await this._notify(`pong-${
|
|
106
|
+
const fromClientId = JSON.parse(payload).fromClientId
|
|
107
|
+
await this._notify(`pong-${fromClientId}`, { toClientId: this.id })
|
|
108
108
|
})
|
|
109
109
|
|
|
110
110
|
await this._listen(`job-status-changed`, (payload: string) => {
|
|
111
111
|
if (this.listenerCount('job-status-changed') > 0) {
|
|
112
|
-
const { jobId, status,
|
|
113
|
-
this.emit('job-status-changed', { jobId, status,
|
|
112
|
+
const { jobId, status, clientId } = JSON.parse(payload)
|
|
113
|
+
this.emit('job-status-changed', { jobId, status, clientId })
|
|
114
114
|
}
|
|
115
115
|
})
|
|
116
116
|
|
|
@@ -173,7 +173,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
173
173
|
and(
|
|
174
174
|
eq(this.tables.jobsTable.id, jobId),
|
|
175
175
|
eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE),
|
|
176
|
-
eq(this.tables.jobsTable.
|
|
176
|
+
eq(this.tables.jobsTable.client_id, this.id),
|
|
177
177
|
gt(this.tables.jobsTable.expires_at, sql`now()`),
|
|
178
178
|
),
|
|
179
179
|
)
|
|
@@ -199,7 +199,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
199
199
|
and(
|
|
200
200
|
eq(this.tables.jobsTable.id, jobId),
|
|
201
201
|
eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE),
|
|
202
|
-
eq(this.tables.jobsTable.
|
|
202
|
+
eq(this.tables.jobsTable.client_id, this.id),
|
|
203
203
|
),
|
|
204
204
|
)
|
|
205
205
|
.returning({ id: this.tables.jobsTable.id })
|
|
@@ -449,7 +449,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
449
449
|
SET status = ${JOB_STATUS_ACTIVE},
|
|
450
450
|
started_at = now(),
|
|
451
451
|
expires_at = now() + (timeout_ms || ' milliseconds')::interval,
|
|
452
|
-
|
|
452
|
+
client_id = ${this.id}
|
|
453
453
|
FROM verify_concurrency vc
|
|
454
454
|
WHERE j.id = vc.id
|
|
455
455
|
AND vc.current_active < vc.concurrency_limit -- Final concurrency check using job's concurrency limit
|
|
@@ -483,29 +483,29 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
483
483
|
protected async _recoverJobs(options: RecoverJobsOptions): Promise<number> {
|
|
484
484
|
const { checksums, multiProcessMode = false, processTimeout = 5_000 } = options
|
|
485
485
|
|
|
486
|
-
const
|
|
486
|
+
const unresponsiveClientIds: string[] = [this.id]
|
|
487
487
|
|
|
488
488
|
if (multiProcessMode) {
|
|
489
489
|
const result = (await this.db
|
|
490
490
|
.selectDistinct({
|
|
491
|
-
|
|
491
|
+
clientId: this.tables.jobsTable.client_id,
|
|
492
492
|
})
|
|
493
493
|
.from(this.tables.jobsTable)
|
|
494
494
|
.where(
|
|
495
|
-
and(eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE), ne(this.tables.jobsTable.
|
|
496
|
-
)) as unknown as {
|
|
495
|
+
and(eq(this.tables.jobsTable.status, JOB_STATUS_ACTIVE), ne(this.tables.jobsTable.client_id, this.id)),
|
|
496
|
+
)) as unknown as { clientId: string }[]
|
|
497
497
|
|
|
498
498
|
if (result.length > 0) {
|
|
499
499
|
const pongCount = new Set<string>()
|
|
500
500
|
const { unlisten } = await this._listen(`pong-${this.id}`, (payload: string) => {
|
|
501
|
-
const
|
|
502
|
-
pongCount.add(
|
|
501
|
+
const toClientId = JSON.parse(payload).toClientId
|
|
502
|
+
pongCount.add(toClientId)
|
|
503
503
|
if (pongCount.size >= result.length) {
|
|
504
504
|
unlisten()
|
|
505
505
|
}
|
|
506
506
|
})
|
|
507
507
|
|
|
508
|
-
await Promise.all(result.map((row) => this._notify(`ping-${row.
|
|
508
|
+
await Promise.all(result.map((row) => this._notify(`ping-${row.clientId}`, { fromClientId: this.id })))
|
|
509
509
|
|
|
510
510
|
let waitForSeconds = processTimeout / 1_000
|
|
511
511
|
while (pongCount.size < result.length && waitForSeconds > 0) {
|
|
@@ -513,18 +513,18 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
513
513
|
waitForSeconds--
|
|
514
514
|
}
|
|
515
515
|
|
|
516
|
-
|
|
516
|
+
unresponsiveClientIds.push(...result.filter((row) => !pongCount.has(row.clientId)).map((row) => row.clientId))
|
|
517
517
|
}
|
|
518
518
|
}
|
|
519
519
|
|
|
520
|
-
if (
|
|
520
|
+
if (unresponsiveClientIds.length > 0) {
|
|
521
521
|
const result = this._map(
|
|
522
522
|
await this.db.execute<{ id: string }>(sql`
|
|
523
523
|
WITH locked_jobs AS (
|
|
524
524
|
SELECT j.id
|
|
525
525
|
FROM ${this.tables.jobsTable} j
|
|
526
526
|
WHERE j.status = ${JOB_STATUS_ACTIVE}
|
|
527
|
-
AND j.
|
|
527
|
+
AND j.client_id IN ${unresponsiveClientIds}
|
|
528
528
|
FOR UPDATE OF j SKIP LOCKED
|
|
529
529
|
),
|
|
530
530
|
updated_jobs AS (
|
|
@@ -813,6 +813,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
813
813
|
createdAt: this.tables.jobsTable.created_at,
|
|
814
814
|
updatedAt: this.tables.jobsTable.updated_at,
|
|
815
815
|
concurrencyLimit: this.tables.jobsTable.concurrency_limit,
|
|
816
|
+
clientId: this.tables.jobsTable.client_id,
|
|
816
817
|
})
|
|
817
818
|
.from(this.tables.jobsTable)
|
|
818
819
|
.where(eq(this.tables.jobsTable.id, jobId))
|
|
@@ -913,8 +914,8 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
913
914
|
filters.groupKey && !Array.isArray(filters.groupKey)
|
|
914
915
|
? ilike(jobsTable.group_key, `%${filters.groupKey}%`)
|
|
915
916
|
: undefined,
|
|
916
|
-
filters.
|
|
917
|
-
? inArray(jobsTable.
|
|
917
|
+
filters.clientId
|
|
918
|
+
? inArray(jobsTable.client_id, Array.isArray(filters.clientId) ? filters.clientId : [filters.clientId])
|
|
918
919
|
: undefined,
|
|
919
920
|
filters.createdAt && Array.isArray(filters.createdAt)
|
|
920
921
|
? between(
|
|
@@ -953,7 +954,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
953
954
|
? or(
|
|
954
955
|
ilike(jobsTable.action_name, `%${fuzzySearch}%`),
|
|
955
956
|
ilike(jobsTable.group_key, `%${fuzzySearch}%`),
|
|
956
|
-
ilike(jobsTable.
|
|
957
|
+
ilike(jobsTable.client_id, `%${fuzzySearch}%`),
|
|
957
958
|
sql`${jobsTable.id}::text ilike ${`%${fuzzySearch}%`}`,
|
|
958
959
|
sql`to_tsvector('english', ${jobsTable.input}::text) @@ plainto_tsquery('english', ${fuzzySearch})`,
|
|
959
960
|
sql`to_tsvector('english', ${jobsTable.output}::text) @@ plainto_tsquery('english', ${fuzzySearch})`,
|
|
@@ -1018,6 +1019,7 @@ export class PostgresBaseAdapter<Database extends DrizzleDatabase, Connection> e
|
|
|
1018
1019
|
createdAt: jobsTable.created_at,
|
|
1019
1020
|
updatedAt: jobsTable.updated_at,
|
|
1020
1021
|
concurrencyLimit: jobsTable.concurrency_limit,
|
|
1022
|
+
clientId: jobsTable.client_id,
|
|
1021
1023
|
})
|
|
1022
1024
|
.from(jobsTable)
|
|
1023
1025
|
.where(where)
|
|
@@ -22,7 +22,7 @@ export default function createSchema(schemaName: string) {
|
|
|
22
22
|
expires_at: timestamp('expires_at', { withTimezone: true }),
|
|
23
23
|
started_at: timestamp('started_at', { withTimezone: true }),
|
|
24
24
|
finished_at: timestamp('finished_at', { withTimezone: true }),
|
|
25
|
-
|
|
25
|
+
client_id: text('client_id'),
|
|
26
26
|
concurrency_limit: integer('concurrency_limit').notNull().default(10),
|
|
27
27
|
created_at: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
|
|
28
28
|
updated_at: timestamp('updated_at', { withTimezone: true })
|
|
@@ -43,7 +43,7 @@ export default function createSchema(schemaName: string) {
|
|
|
43
43
|
index('idx_jobs_started_at').on(table.started_at),
|
|
44
44
|
index('idx_jobs_finished_at').on(table.finished_at),
|
|
45
45
|
index('idx_jobs_expires_at').on(table.expires_at),
|
|
46
|
-
index('
|
|
46
|
+
index('idx_jobs_client_id').on(table.client_id),
|
|
47
47
|
index('idx_jobs_checksum').on(table.checksum),
|
|
48
48
|
index('idx_jobs_concurrency_limit').on(table.concurrency_limit),
|
|
49
49
|
// Composite indexes
|
package/src/adapters/schemas.ts
CHANGED
|
@@ -45,6 +45,7 @@ export const JobSchema = z.object({
|
|
|
45
45
|
createdAt: DateSchema,
|
|
46
46
|
updatedAt: DateSchema,
|
|
47
47
|
concurrencyLimit: z.coerce.number(),
|
|
48
|
+
clientId: z.string().nullable().optional(),
|
|
48
49
|
})
|
|
49
50
|
|
|
50
51
|
// ============================================================================
|
|
@@ -93,7 +94,7 @@ export const JobFiltersSchema = z.object({
|
|
|
93
94
|
status: z.union([JobStatusSchema, z.array(JobStatusSchema)]).optional(),
|
|
94
95
|
actionName: z.union([z.string(), z.array(z.string())]).optional(),
|
|
95
96
|
groupKey: z.union([z.string(), z.array(z.string())]).optional(),
|
|
96
|
-
|
|
97
|
+
clientId: z.union([z.string(), z.array(z.string())]).optional(),
|
|
97
98
|
createdAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
|
|
98
99
|
startedAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
|
|
99
100
|
finishedAt: z.union([DateSchema, z.array(DateSchema).length(2)]).optional(),
|
package/src/client.ts
CHANGED
|
@@ -97,9 +97,9 @@ const BaseOptionsSchema = z.object({
|
|
|
97
97
|
* Timeout in milliseconds to wait for process ping responses in multi-process mode.
|
|
98
98
|
* Processes that don't respond within this timeout will have their jobs recovered.
|
|
99
99
|
*
|
|
100
|
-
* @default
|
|
100
|
+
* @default 5000 (5 seconds)
|
|
101
101
|
*/
|
|
102
|
-
processTimeout: z.number().default(5 *
|
|
102
|
+
processTimeout: z.number().default(5 * 1000), // 5 seconds
|
|
103
103
|
})
|
|
104
104
|
|
|
105
105
|
/**
|
|
@@ -710,7 +710,7 @@ export class Client<
|
|
|
710
710
|
|
|
711
711
|
this.#database.on(
|
|
712
712
|
'job-status-changed',
|
|
713
|
-
async (event: { jobId: string; status: JobStatus | 'retried';
|
|
713
|
+
async (event: { jobId: string; status: JobStatus | 'retried'; clientId: string }) => {
|
|
714
714
|
const pendingWaits = this.#pendingJobWaits.get(event.jobId)
|
|
715
715
|
if (!pendingWaits || pendingWaits.size === 0) {
|
|
716
716
|
return
|
package/src/server.ts
CHANGED
|
@@ -86,7 +86,7 @@ export const GetJobsQuerySchema = z
|
|
|
86
86
|
fStatus: z.union([JobStatusSchema, z.array(JobStatusSchema)]).optional(),
|
|
87
87
|
fActionName: z.union([z.string(), z.array(z.string())]).optional(),
|
|
88
88
|
fGroupKey: z.union([z.string(), z.array(z.string())]).optional(),
|
|
89
|
-
|
|
89
|
+
fClientId: z.union([z.string(), z.array(z.string())]).optional(),
|
|
90
90
|
// Date filters: can be a single ISO string or JSON array [start, end] - both coerced to Date objects
|
|
91
91
|
fCreatedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
|
|
92
92
|
fStartedAt: z.union([z.coerce.date(), z.array(z.coerce.date())]).optional(),
|
|
@@ -107,7 +107,7 @@ export const GetJobsQuerySchema = z
|
|
|
107
107
|
if (data.fStatus) filters.status = data.fStatus
|
|
108
108
|
if (data.fActionName) filters.actionName = data.fActionName
|
|
109
109
|
if (data.fGroupKey) filters.groupKey = data.fGroupKey
|
|
110
|
-
if (data.
|
|
110
|
+
if (data.fClientId) filters.clientId = data.fClientId
|
|
111
111
|
if (data.fCreatedAt) filters.createdAt = data.fCreatedAt
|
|
112
112
|
if (data.fStartedAt) filters.startedAt = data.fStartedAt
|
|
113
113
|
if (data.fFinishedAt) filters.finishedAt = data.fFinishedAt
|
package/src/utils/p-retry.ts
CHANGED
|
@@ -194,17 +194,14 @@ export default async function pRetry<TResult>(
|
|
|
194
194
|
|
|
195
195
|
return result
|
|
196
196
|
} catch (error) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
) {
|
|
206
|
-
retriesConsumed++
|
|
207
|
-
}
|
|
197
|
+
await onAttemptFailure({
|
|
198
|
+
error: error as Error,
|
|
199
|
+
attemptNumber,
|
|
200
|
+
retriesConsumed,
|
|
201
|
+
startTime,
|
|
202
|
+
options,
|
|
203
|
+
})
|
|
204
|
+
retriesConsumed++
|
|
208
205
|
}
|
|
209
206
|
}
|
|
210
207
|
|