@workglow/indexeddb 0.3.0 → 0.3.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/job-queue/IndexedDbJobStore.d.ts +2 -6
- package/dist/job-queue/IndexedDbJobStore.d.ts.map +1 -1
- package/dist/job-queue/IndexedDbMessageQueue.d.ts +1 -14
- package/dist/job-queue/IndexedDbMessageQueue.d.ts.map +1 -1
- package/dist/job-queue/IndexedDbQueueStorage.d.ts +8 -0
- package/dist/job-queue/IndexedDbQueueStorage.d.ts.map +1 -1
- package/dist/job-queue/browser.js +29 -99
- package/dist/job-queue/browser.js.map +7 -7
- package/dist/job-queue/createIndexedDbQueue.d.ts +1 -3
- package/dist/job-queue/createIndexedDbQueue.d.ts.map +1 -1
- package/dist/job-queue/node.js +29 -99
- package/dist/job-queue/node.js.map +7 -7
- package/dist/migrations/indexedDbQueueMigrations.d.ts +4 -10
- package/dist/migrations/indexedDbQueueMigrations.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -4,22 +4,17 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { IJobStore, JobRecord, JobStatus, JobStorageFormat, MessageId, SendOptions } from "@workglow/job-queue";
|
|
7
|
-
import type { PendingIndexedDbWrite } from "./IndexedDbMessageQueue";
|
|
8
7
|
import type { IndexedDbQueueStorage } from "./IndexedDbQueueStorage";
|
|
9
8
|
export declare class IndexedDbJobStore<Input, Output> implements IJobStore<Input, Output> {
|
|
10
9
|
/** @internal — shared with the paired message queue */
|
|
11
10
|
readonly core: IndexedDbQueueStorage<Input, Output>;
|
|
12
|
-
|
|
13
|
-
private readonly pending;
|
|
14
|
-
constructor(core: IndexedDbQueueStorage<Input, Output>, pending: Map<unknown, PendingIndexedDbWrite<Output>>);
|
|
11
|
+
constructor(core: IndexedDbQueueStorage<Input, Output>);
|
|
15
12
|
get(id: MessageId): Promise<JobRecord<Input, Output> | undefined>;
|
|
16
13
|
peek(status?: JobStatus, num?: number): Promise<readonly JobRecord<Input, Output>[]>;
|
|
17
14
|
size(status?: JobStatus): Promise<number>;
|
|
18
15
|
getByRunId(runId: string): Promise<readonly JobRecord<Input, Output>[]>;
|
|
19
16
|
outputForInput(input: Input): Promise<Output | null>;
|
|
20
17
|
saveProgress(id: MessageId, progress: number, message: string, details: Record<string, any> | null): Promise<void>;
|
|
21
|
-
saveResult(id: MessageId, output: Output): Promise<void>;
|
|
22
|
-
saveError(id: MessageId, error: string, errorCode: string | null, abortRequested: boolean): Promise<void>;
|
|
23
18
|
deleteByStatusAndAge(status: JobStatus, olderThanMs: number): Promise<void>;
|
|
24
19
|
delete(id: MessageId): Promise<void>;
|
|
25
20
|
deleteAll(): Promise<void>;
|
|
@@ -34,6 +29,7 @@ export declare class IndexedDbJobStore<Input, Output> implements IJobStore<Input
|
|
|
34
29
|
readonly errorCode?: string | null;
|
|
35
30
|
readonly abortRequested?: boolean;
|
|
36
31
|
}): Promise<void>;
|
|
32
|
+
markDisabled(id: MessageId): Promise<void>;
|
|
37
33
|
markEnqueueDeferred(id: MessageId, opts: {
|
|
38
34
|
readonly visible_at: Date;
|
|
39
35
|
readonly errorCode: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDbJobStore.d.ts","sourceRoot":"","sources":["../../src/job-queue/IndexedDbJobStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"IndexedDbJobStore.d.ts","sourceRoot":"","sources":["../../src/job-queue/IndexedDbJobStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,24 +5,11 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { IClaim, IMessageQueue, JobStorageFormat, MessageId, QueueChangePayload, QueueStorageScope, QueueSubscribeOptions, SendOptions } from "@workglow/job-queue";
|
|
7
7
|
import { IndexedDbQueueStorage } from "./IndexedDbQueueStorage";
|
|
8
|
-
/**
|
|
9
|
-
* Per-id buffer that lets {@link IJobStore.saveResult}/{@link IJobStore.saveError}
|
|
10
|
-
* stage output/error until the terminal claim.ack()/fail() persists them in
|
|
11
|
-
* a single complete() call (avoids double-bumping `attempts`).
|
|
12
|
-
*/
|
|
13
|
-
export type PendingIndexedDbWrite<Output> = {
|
|
14
|
-
output?: Output | null;
|
|
15
|
-
error?: string | null;
|
|
16
|
-
errorCode?: string | null;
|
|
17
|
-
abortRequested?: boolean;
|
|
18
|
-
};
|
|
19
8
|
export declare class IndexedDbMessageQueue<Input, Output> implements IMessageQueue<JobStorageFormat<Input, Output>> {
|
|
20
9
|
readonly scope: QueueStorageScope;
|
|
21
10
|
/** @internal — shared with the paired job store */
|
|
22
11
|
readonly core: IndexedDbQueueStorage<Input, Output>;
|
|
23
|
-
|
|
24
|
-
private readonly pending;
|
|
25
|
-
constructor(core: IndexedDbQueueStorage<Input, Output>, pending: Map<unknown, PendingIndexedDbWrite<Output>>);
|
|
12
|
+
constructor(core: IndexedDbQueueStorage<Input, Output>);
|
|
26
13
|
send(body: JobStorageFormat<Input, Output>, opts?: SendOptions): Promise<MessageId>;
|
|
27
14
|
sendBatch(bodies: readonly JobStorageFormat<Input, Output>[], opts?: SendOptions): Promise<readonly MessageId[]>;
|
|
28
15
|
receive(opts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDbMessageQueue.d.ts","sourceRoot":"","sources":["../../src/job-queue/IndexedDbMessageQueue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"IndexedDbMessageQueue.d.ts","sourceRoot":"","sources":["../../src/job-queue/IndexedDbMessageQueue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AA8EhE,qBAAa,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAE,YAAW,aAAa,CACxE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAChC;IACC,SAAgB,KAAK,EAAE,iBAAiB,CAAa;IAErD,mDAAmD;IACnD,SAAgB,IAAI,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE3D,YAAY,IAAI,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,EAErD;IAEK,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAExF;IAEK,SAAS,CACb,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAClD,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAM/B;IAEK,OAAO,CAAC,IAAI,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,SAAS,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAW9D;IAEK,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7B;IAED,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,CAEtC;IAED,kBAAkB,CAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,EACxD,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,IAAI,CAEZ;CACF"}
|
|
@@ -145,6 +145,14 @@ export declare class IndexedDbQueueStorage<Input, Output> implements IQueueStora
|
|
|
145
145
|
progress_details?: Record<string, any> | null;
|
|
146
146
|
visible_at?: string | null;
|
|
147
147
|
}): Promise<void>;
|
|
148
|
+
/**
|
|
149
|
+
* Atomically writes status=DISABLED, releases the lease, clears progress
|
|
150
|
+
* fields, and stamps completed_at (preserving an existing value). IDB
|
|
151
|
+
* is single-threaded per-origin within a JS context, so the get + finalize
|
|
152
|
+
* pair is observably atomic — no other transaction can interleave between
|
|
153
|
+
* them inside this microtask chain.
|
|
154
|
+
*/
|
|
155
|
+
markDisabled(id: unknown): Promise<void>;
|
|
148
156
|
/**
|
|
149
157
|
* Deletes all jobs from the queue.
|
|
150
158
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDbQueueStorage.d.ts","sourceRoot":"","sources":["../../src/job-queue/IndexedDbQueueStorage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IndexedDbQueueStorage.d.ts","sourceRoot":"","sources":["../../src/job-queue/IndexedDbQueueStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AAOjE,eAAO,MAAM,wBAAwB,gEAEpC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,4DAA4D;IAC5D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,kEAAkE;IAClE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED;;;GAGG;AACH,qBAAa,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAE,YAAW,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;aAqBrE,SAAS,EAAE,MAAM;IApBnC,SAAgB,KAAK,EAAG,SAAS,CAAU;IAC3C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,oCAAoC;IACpC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,sCAAsC;IACtC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3E,yCAAyC;IACzC,OAAO,CAAC,aAAa,CAIL;IAChB,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG5B;IAEF,YACkB,SAAS,EAAE,MAAM,EACjC,OAAO,GAAE,4BAAiC,EAe3C;IAED;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;YAIZ,KAAK;IAMnB;;;;;OAKG;IACI,aAAa,4CAEnB;IAED;;;;;;;OAOG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAYpC;IAED;;;;OAIG;IACU,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmCvE;IAED;;;;OAIG;IACG,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAoB3E;IAED;;;;;OAKG;IACU,IAAI,CACf,MAAM,GAAE,SAA6B,EACrC,GAAG,GAAE,MAAY,GAChB,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAkC5C;IAED;;;;;;;;;;;;;;OAcG;IACU,IAAI,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAoJtD;IAED;;;;;OAKG;IACU,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjF;IAED;;;OAGG;IACU,IAAI,CAAC,MAAM,YAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAc7D;IAED;;OAEG;IACU,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDzE;IAED;;OAEG;IACU,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAcpD;IAED;;;;;OAKG;IACU,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB7C;IAED,uGAAuG;IAC1F,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlE;IAED;;OAEG;IACU,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAqBtF;IAED;;;OAGG;IACU,QAAQ,CACnB,EAAE,EAAE,OAAO,EACX,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,MAAM,CAAC,EAAE,SAAS,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QAC9C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,GACA,OAAO,CAAC,IAAI,CAAC,CAkBf;IAED;;;;;;OAMG;IACU,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpD;IAED;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA2CtC;IAED;;OAEG;IACU,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4BhE;IAED;;OAEG;IACU,YAAY,CACvB,EAAE,EAAE,OAAO,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAClC,OAAO,CAAC,IAAI,CAAC,CASf;IAED;;OAEG;YACW,GAAG;IA0BjB;;OAEG;IACU,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB9C;IAED;;;;OAIG;IACU,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3F;IAED;;;;;OAKG;YACW,UAAU;IAiCxB;;;;;;OAMG;YACW,oBAAoB;IA8ClC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoCxB;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IA8CvC;;;;;;;;;;OAUG;IACI,kBAAkB,CACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAC7D,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,IAAI,CAYZ;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAKd;CACF"}
|
|
@@ -287,7 +287,7 @@ function indexedDbQueueMigrations(tableName, prefixes) {
|
|
|
287
287
|
if (!db.objectStoreNames.contains(tableName)) {
|
|
288
288
|
const store = db.createObjectStore(tableName, { keyPath: "id" });
|
|
289
289
|
store.createIndex("queue_status", k(["queue", "status"]), { unique: false });
|
|
290
|
-
store.createIndex("
|
|
290
|
+
store.createIndex("queue_status_visible_at", k(["queue", "status", "visible_at"]), {
|
|
291
291
|
unique: false
|
|
292
292
|
});
|
|
293
293
|
store.createIndex("queue_job_run_id", k(["queue", "job_run_id"]), { unique: false });
|
|
@@ -296,62 +296,6 @@ function indexedDbQueueMigrations(tableName, prefixes) {
|
|
|
296
296
|
});
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
component,
|
|
302
|
-
version: 2,
|
|
303
|
-
description: "Rename queue_status_run_after → queue_status_visible_at; backfill five legacy field renames (run_after → visible_at, run_attempts → attempts, last_ran_at → last_attempted_at, max_retries → max_attempts, worker_id → lease_owner)",
|
|
304
|
-
up({ tx }) {
|
|
305
|
-
const store = tx.objectStore(tableName);
|
|
306
|
-
const indexNames = Array.from(store.indexNames);
|
|
307
|
-
if (indexNames.includes("queue_status_run_after")) {
|
|
308
|
-
store.deleteIndex("queue_status_run_after");
|
|
309
|
-
}
|
|
310
|
-
const cursorReq = store.openCursor();
|
|
311
|
-
cursorReq.onsuccess = () => {
|
|
312
|
-
const cursor = cursorReq.result;
|
|
313
|
-
if (!cursor) {
|
|
314
|
-
if (!Array.from(store.indexNames).includes("queue_status_visible_at")) {
|
|
315
|
-
store.createIndex("queue_status_visible_at", k(["queue", "status", "visible_at"]), {
|
|
316
|
-
unique: false
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
const row = cursor.value;
|
|
322
|
-
if (row) {
|
|
323
|
-
let dirty = false;
|
|
324
|
-
if (row.run_after !== undefined && row.visible_at === undefined) {
|
|
325
|
-
row.visible_at = row.run_after;
|
|
326
|
-
delete row.run_after;
|
|
327
|
-
dirty = true;
|
|
328
|
-
}
|
|
329
|
-
if (row.run_attempts !== undefined && row.attempts === undefined) {
|
|
330
|
-
row.attempts = row.run_attempts;
|
|
331
|
-
delete row.run_attempts;
|
|
332
|
-
dirty = true;
|
|
333
|
-
}
|
|
334
|
-
if (row.last_ran_at !== undefined && row.last_attempted_at === undefined) {
|
|
335
|
-
row.last_attempted_at = row.last_ran_at;
|
|
336
|
-
delete row.last_ran_at;
|
|
337
|
-
dirty = true;
|
|
338
|
-
}
|
|
339
|
-
if (row.max_retries !== undefined && row.max_attempts === undefined) {
|
|
340
|
-
row.max_attempts = row.max_retries;
|
|
341
|
-
delete row.max_retries;
|
|
342
|
-
dirty = true;
|
|
343
|
-
}
|
|
344
|
-
if (row.worker_id !== undefined && row.lease_owner === undefined) {
|
|
345
|
-
row.lease_owner = row.worker_id;
|
|
346
|
-
delete row.worker_id;
|
|
347
|
-
dirty = true;
|
|
348
|
-
}
|
|
349
|
-
if (dirty)
|
|
350
|
-
cursor.update(row);
|
|
351
|
-
}
|
|
352
|
-
cursor.continue();
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
299
|
}
|
|
356
300
|
];
|
|
357
301
|
}
|
|
@@ -756,6 +700,20 @@ class IndexedDbQueueStorage {
|
|
|
756
700
|
updated.visible_at = fields.visible_at ?? null;
|
|
757
701
|
await this.put(updated);
|
|
758
702
|
}
|
|
703
|
+
async markDisabled(id) {
|
|
704
|
+
const existing = await this.get(id);
|
|
705
|
+
if (!existing)
|
|
706
|
+
return;
|
|
707
|
+
const completedAt = existing.completed_at ?? new Date().toISOString();
|
|
708
|
+
await this.finalize(id, {
|
|
709
|
+
status: JobStatus.DISABLED,
|
|
710
|
+
completed_at: completedAt,
|
|
711
|
+
lease_owner: null,
|
|
712
|
+
progress: 0,
|
|
713
|
+
progress_message: "",
|
|
714
|
+
progress_details: null
|
|
715
|
+
});
|
|
716
|
+
}
|
|
759
717
|
async deleteAll() {
|
|
760
718
|
const db = await this.getDb();
|
|
761
719
|
const tx = db.transaction(this.tableName, "readwrite");
|
|
@@ -1040,24 +998,20 @@ class IndexedDbQueueStorage {
|
|
|
1040
998
|
// src/job-queue/IndexedDbMessageQueue.ts
|
|
1041
999
|
class IndexedDbClaim {
|
|
1042
1000
|
core;
|
|
1043
|
-
pending;
|
|
1044
1001
|
id;
|
|
1045
1002
|
body;
|
|
1046
1003
|
attempts;
|
|
1047
1004
|
workerId;
|
|
1048
|
-
constructor(core,
|
|
1005
|
+
constructor(core, id, body, attempts, workerId) {
|
|
1049
1006
|
this.core = core;
|
|
1050
|
-
this.pending = pending;
|
|
1051
1007
|
this.id = id;
|
|
1052
1008
|
this.body = body;
|
|
1053
1009
|
this.attempts = attempts;
|
|
1054
1010
|
this.workerId = workerId;
|
|
1055
1011
|
}
|
|
1056
1012
|
async ack(result) {
|
|
1057
|
-
const buf = this.pending.get(this.id);
|
|
1058
|
-
this.pending.delete(this.id);
|
|
1059
1013
|
const current = await this.core.get(this.id) ?? this.body;
|
|
1060
|
-
const output = result !== undefined ? result :
|
|
1014
|
+
const output = result !== undefined ? result : current.output ?? null;
|
|
1061
1015
|
await this.core.finalize(this.id, {
|
|
1062
1016
|
output,
|
|
1063
1017
|
error: null,
|
|
@@ -1067,7 +1021,6 @@ class IndexedDbClaim {
|
|
|
1067
1021
|
});
|
|
1068
1022
|
}
|
|
1069
1023
|
async retry(opts) {
|
|
1070
|
-
this.pending.delete(this.id);
|
|
1071
1024
|
const delay = opts?.delaySeconds ?? 0;
|
|
1072
1025
|
const current = await this.core.get(this.id) ?? this.body;
|
|
1073
1026
|
await this.core.complete({
|
|
@@ -1083,12 +1036,10 @@ class IndexedDbClaim {
|
|
|
1083
1036
|
}
|
|
1084
1037
|
async fail(opts) {
|
|
1085
1038
|
opts?.permanent;
|
|
1086
|
-
const buf = this.pending.get(this.id);
|
|
1087
|
-
this.pending.delete(this.id);
|
|
1088
1039
|
const current = await this.core.get(this.id) ?? this.body;
|
|
1089
|
-
const error = opts?.error !== undefined ? opts.error :
|
|
1090
|
-
const errorCode = opts?.errorCode !== undefined ? opts.errorCode :
|
|
1091
|
-
const abortRequested = opts?.abortRequested
|
|
1040
|
+
const error = opts?.error !== undefined ? opts.error : current.error ?? null;
|
|
1041
|
+
const errorCode = opts?.errorCode !== undefined ? opts.errorCode : current.error_code ?? null;
|
|
1042
|
+
const abortRequested = opts?.abortRequested === true;
|
|
1092
1043
|
await this.core.finalize(this.id, {
|
|
1093
1044
|
error,
|
|
1094
1045
|
error_code: errorCode,
|
|
@@ -1101,7 +1052,6 @@ class IndexedDbClaim {
|
|
|
1101
1052
|
await this.core.extendLease(this.id, this.workerId, ms);
|
|
1102
1053
|
}
|
|
1103
1054
|
async disable() {
|
|
1104
|
-
this.pending.delete(this.id);
|
|
1105
1055
|
const current = await this.core.get(this.id);
|
|
1106
1056
|
const completedAt = current?.completed_at ?? new Date().toISOString();
|
|
1107
1057
|
await this.core.finalize(this.id, {
|
|
@@ -1118,10 +1068,8 @@ class IndexedDbClaim {
|
|
|
1118
1068
|
class IndexedDbMessageQueue {
|
|
1119
1069
|
scope = "process";
|
|
1120
1070
|
core;
|
|
1121
|
-
|
|
1122
|
-
constructor(core, pending) {
|
|
1071
|
+
constructor(core) {
|
|
1123
1072
|
this.core = core;
|
|
1124
|
-
this.pending = pending;
|
|
1125
1073
|
}
|
|
1126
1074
|
async send(body, opts) {
|
|
1127
1075
|
return this.core.add(applySendOptions(body, opts));
|
|
@@ -1140,12 +1088,11 @@ class IndexedDbMessageQueue {
|
|
|
1140
1088
|
const job = await this.core.next(opts.workerId, { leaseMs: opts.leaseMs });
|
|
1141
1089
|
if (!job)
|
|
1142
1090
|
break;
|
|
1143
|
-
claims.push(new IndexedDbClaim(this.core,
|
|
1091
|
+
claims.push(new IndexedDbClaim(this.core, job.id, job, job.attempts ?? 0, opts.workerId));
|
|
1144
1092
|
}
|
|
1145
1093
|
return claims;
|
|
1146
1094
|
}
|
|
1147
1095
|
async releaseClaim(id) {
|
|
1148
|
-
this.pending.delete(id);
|
|
1149
1096
|
await this.core.releaseClaim(id);
|
|
1150
1097
|
}
|
|
1151
1098
|
async migrate() {
|
|
@@ -1179,10 +1126,8 @@ function applySendOptions(body, opts) {
|
|
|
1179
1126
|
// src/job-queue/IndexedDbJobStore.ts
|
|
1180
1127
|
class IndexedDbJobStore {
|
|
1181
1128
|
core;
|
|
1182
|
-
|
|
1183
|
-
constructor(core, pending) {
|
|
1129
|
+
constructor(core) {
|
|
1184
1130
|
this.core = core;
|
|
1185
|
-
this.pending = pending;
|
|
1186
1131
|
}
|
|
1187
1132
|
get(id) {
|
|
1188
1133
|
return this.core.get(id);
|
|
@@ -1202,27 +1147,13 @@ class IndexedDbJobStore {
|
|
|
1202
1147
|
async saveProgress(id, progress, message, details) {
|
|
1203
1148
|
await this.core.saveProgress(id, progress, message, details);
|
|
1204
1149
|
}
|
|
1205
|
-
async saveResult(id, output) {
|
|
1206
|
-
const buf = this.pending.get(id) ?? {};
|
|
1207
|
-
buf.output = output ?? null;
|
|
1208
|
-
this.pending.set(id, buf);
|
|
1209
|
-
}
|
|
1210
|
-
async saveError(id, error, errorCode, abortRequested) {
|
|
1211
|
-
const buf = this.pending.get(id) ?? {};
|
|
1212
|
-
buf.error = error;
|
|
1213
|
-
buf.errorCode = errorCode;
|
|
1214
|
-
buf.abortRequested = abortRequested;
|
|
1215
|
-
this.pending.set(id, buf);
|
|
1216
|
-
}
|
|
1217
1150
|
async deleteByStatusAndAge(status, olderThanMs) {
|
|
1218
1151
|
await this.core.deleteJobsByStatusAndAge(status, olderThanMs);
|
|
1219
1152
|
}
|
|
1220
1153
|
async delete(id) {
|
|
1221
|
-
this.pending.delete(id);
|
|
1222
1154
|
await this.core.delete(id);
|
|
1223
1155
|
}
|
|
1224
1156
|
async deleteAll() {
|
|
1225
|
-
this.pending.clear();
|
|
1226
1157
|
await this.core.deleteAll();
|
|
1227
1158
|
}
|
|
1228
1159
|
async abort(id) {
|
|
@@ -1252,7 +1183,6 @@ class IndexedDbJobStore {
|
|
|
1252
1183
|
return Promise.all(ids.map((id) => this.core.get(id)));
|
|
1253
1184
|
}
|
|
1254
1185
|
async completeWithResult(id, result) {
|
|
1255
|
-
this.pending.delete(id);
|
|
1256
1186
|
await this.core.finalize(id, {
|
|
1257
1187
|
output: result,
|
|
1258
1188
|
error: null,
|
|
@@ -1262,7 +1192,6 @@ class IndexedDbJobStore {
|
|
|
1262
1192
|
});
|
|
1263
1193
|
}
|
|
1264
1194
|
async failWithError(id, opts) {
|
|
1265
|
-
this.pending.delete(id);
|
|
1266
1195
|
const current = await this.core.get(id);
|
|
1267
1196
|
const now = new Date().toISOString();
|
|
1268
1197
|
const abortRequestedAt = opts.abortRequested === true ? current?.abort_requested_at ?? now : current?.abort_requested_at ?? null;
|
|
@@ -1274,6 +1203,9 @@ class IndexedDbJobStore {
|
|
|
1274
1203
|
completed_at: current?.completed_at ?? now
|
|
1275
1204
|
});
|
|
1276
1205
|
}
|
|
1206
|
+
async markDisabled(id) {
|
|
1207
|
+
await this.core.markDisabled(id);
|
|
1208
|
+
}
|
|
1277
1209
|
async markEnqueueDeferred(id, opts) {
|
|
1278
1210
|
await this.core.finalize(id, {
|
|
1279
1211
|
visible_at: opts.visible_at.toISOString(),
|
|
@@ -1284,11 +1216,9 @@ class IndexedDbJobStore {
|
|
|
1284
1216
|
// src/job-queue/createIndexedDbQueue.ts
|
|
1285
1217
|
function createIndexedDbQueue(queueName, opts) {
|
|
1286
1218
|
const core = new IndexedDbQueueStorage(queueName, opts);
|
|
1287
|
-
const pending = new Map;
|
|
1288
1219
|
return {
|
|
1289
|
-
messageQueue: new IndexedDbMessageQueue(core
|
|
1290
|
-
jobStore: new IndexedDbJobStore(core
|
|
1291
|
-
core
|
|
1220
|
+
messageQueue: new IndexedDbMessageQueue(core),
|
|
1221
|
+
jobStore: new IndexedDbJobStore(core)
|
|
1292
1222
|
};
|
|
1293
1223
|
}
|
|
1294
1224
|
// src/job-queue/IndexedDbRateLimiterStorage.ts
|
|
@@ -1646,4 +1576,4 @@ export {
|
|
|
1646
1576
|
INDEXED_DB_QUEUE_STORAGE
|
|
1647
1577
|
};
|
|
1648
1578
|
|
|
1649
|
-
//# debugId=
|
|
1579
|
+
//# debugId=80E77CCF46AD569C64756E2164756E21
|