@workglow/supabase 0.2.36 → 0.3.0
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/SupabaseJobStore.d.ts +42 -0
- package/dist/job-queue/SupabaseJobStore.d.ts.map +1 -0
- package/dist/job-queue/SupabaseMessageQueue.d.ts +38 -0
- package/dist/job-queue/SupabaseMessageQueue.d.ts.map +1 -0
- package/dist/job-queue/SupabaseQueueStorage.d.ts +76 -9
- package/dist/job-queue/SupabaseQueueStorage.d.ts.map +1 -1
- package/dist/job-queue/SupabaseRateLimiterStorage.d.ts +1 -2
- package/dist/job-queue/SupabaseRateLimiterStorage.d.ts.map +1 -1
- package/dist/job-queue/browser.js +477 -43
- package/dist/job-queue/browser.js.map +8 -5
- package/dist/job-queue/common.d.ts +3 -0
- package/dist/job-queue/common.d.ts.map +1 -1
- package/dist/job-queue/createSupabaseQueue.d.ts +22 -0
- package/dist/job-queue/createSupabaseQueue.d.ts.map +1 -0
- package/dist/job-queue/node.js +477 -43
- package/dist/job-queue/node.js.map +8 -5
- package/dist/storage/SupabaseKvStorage.d.ts +1 -1
- package/dist/storage/SupabaseKvStorage.d.ts.map +1 -1
- package/dist/storage/SupabaseTabularStorage.d.ts +1 -1
- package/dist/storage/SupabaseTabularStorage.d.ts.map +1 -1
- package/dist/storage/browser.js +10 -10
- package/dist/storage/browser.js.map +4 -4
- package/dist/storage/node.js +10 -10
- package/dist/storage/node.js.map +4 -4
- package/package.json +8 -8
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { IJobStore, JobRecord, JobStatus, JobStorageFormat, MessageId, SendOptions } from "@workglow/job-queue";
|
|
7
|
+
import type { SupabasePendingWrite } from "./SupabaseMessageQueue";
|
|
8
|
+
import type { SupabaseQueueStorage } from "./SupabaseQueueStorage";
|
|
9
|
+
export declare class SupabaseJobStore<Input, Output> implements IJobStore<Input, Output> {
|
|
10
|
+
/** @internal — shared with the paired message queue */
|
|
11
|
+
readonly core: SupabaseQueueStorage<Input, Output>;
|
|
12
|
+
/** @internal — shared transient buffer for saveResult/saveError. */
|
|
13
|
+
private readonly pending;
|
|
14
|
+
constructor(core: SupabaseQueueStorage<Input, Output>, pending: Map<unknown, SupabasePendingWrite<Output>>);
|
|
15
|
+
get(id: MessageId): Promise<JobRecord<Input, Output> | undefined>;
|
|
16
|
+
peek(status?: JobStatus, num?: number): Promise<readonly JobRecord<Input, Output>[]>;
|
|
17
|
+
size(status?: JobStatus): Promise<number>;
|
|
18
|
+
getByRunId(runId: string): Promise<readonly JobRecord<Input, Output>[]>;
|
|
19
|
+
outputForInput(input: Input): Promise<Output | null>;
|
|
20
|
+
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
|
+
deleteByStatusAndAge(status: JobStatus, olderThanMs: number): Promise<void>;
|
|
24
|
+
delete(id: MessageId): Promise<void>;
|
|
25
|
+
deleteAll(): Promise<void>;
|
|
26
|
+
abort(id: MessageId): Promise<void>;
|
|
27
|
+
saveStatus(id: MessageId, status: JobStatus): Promise<void>;
|
|
28
|
+
create(body: JobStorageFormat<Input, Output>, opts: SendOptions): Promise<MessageId>;
|
|
29
|
+
findActiveByFingerprint(fingerprint: string, queueName: string): Promise<JobRecord<Input, Output> | undefined>;
|
|
30
|
+
getMany(ids: readonly MessageId[]): Promise<readonly (JobRecord<Input, Output> | undefined)[]>;
|
|
31
|
+
completeWithResult(id: MessageId, result: Output): Promise<void>;
|
|
32
|
+
failWithError(id: MessageId, opts: {
|
|
33
|
+
readonly error?: string | null;
|
|
34
|
+
readonly errorCode?: string | null;
|
|
35
|
+
readonly abortRequested?: boolean;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
markEnqueueDeferred(id: MessageId, opts: {
|
|
38
|
+
readonly visible_at: Date;
|
|
39
|
+
readonly errorCode: string;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=SupabaseJobStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SupabaseJobStore.d.ts","sourceRoot":"","sources":["../../src/job-queue/SupabaseJobStore.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,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,qBAAa,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAE,YAAW,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAC9E,uDAAuD;IACvD,SAAgB,IAAI,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE1D,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IAErE,YACE,IAAI,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EACzC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAIpD;IAED,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAEhE;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAEzF;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAExC;IAEK,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAE5E;IAED,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEnD;IAEK,YAAY,CAChB,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAClC,OAAO,CAAC,IAAI,CAAC,CAEf;IAEK,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D;IAEK,SAAS,CACb,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf;IAEK,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;IAEK,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzC;IAEK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAG/B;IAEK,KAAK,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAExC;IAEK,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;IAEK,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAYzF;IAEK,uBAAuB,CAC3B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAE/C;IAEK,OAAO,CACX,GAAG,EAAE,SAAS,SAAS,EAAE,GACxB,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAE5D;IAEK,kBAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;IAEK,aAAa,CACjB,EAAE,EAAE,SAAS,EACb,IAAI,EAAE;QACJ,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;KACnC,GACA,OAAO,CAAC,IAAI,CAAC,CAGf;IAEK,mBAAmB,CACvB,EAAE,EAAE,SAAS,EACb,IAAI,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAKf;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { IClaim, IMessageQueue, JobStorageFormat, MessageId, QueueChangePayload, QueueStorageScope, QueueSubscribeOptions, SendOptions } from "@workglow/job-queue";
|
|
7
|
+
import type { SupabaseQueueStorage } from "./SupabaseQueueStorage";
|
|
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 SupabasePendingWrite<Output> = {
|
|
14
|
+
output?: Output | null;
|
|
15
|
+
error?: string | null;
|
|
16
|
+
errorCode?: string | null;
|
|
17
|
+
abortRequested?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export declare class SupabaseMessageQueue<Input, Output> implements IMessageQueue<JobStorageFormat<Input, Output>> {
|
|
20
|
+
readonly scope: QueueStorageScope;
|
|
21
|
+
/** @internal — shared with the paired job store */
|
|
22
|
+
readonly core: SupabaseQueueStorage<Input, Output>;
|
|
23
|
+
/** @internal — shared transient buffer for saveResult/saveError. */
|
|
24
|
+
private readonly pending;
|
|
25
|
+
constructor(core: SupabaseQueueStorage<Input, Output>, pending: Map<unknown, SupabasePendingWrite<Output>>);
|
|
26
|
+
send(body: JobStorageFormat<Input, Output>, opts?: SendOptions): Promise<MessageId>;
|
|
27
|
+
sendBatch(bodies: readonly JobStorageFormat<Input, Output>[], opts?: SendOptions): Promise<readonly MessageId[]>;
|
|
28
|
+
receive(opts: {
|
|
29
|
+
workerId: string;
|
|
30
|
+
leaseMs: number;
|
|
31
|
+
max?: number;
|
|
32
|
+
}): Promise<readonly IClaim<JobStorageFormat<Input, Output>>[]>;
|
|
33
|
+
releaseClaim(id: MessageId): Promise<void>;
|
|
34
|
+
migrate(): Promise<void>;
|
|
35
|
+
getMigrations(): ReadonlyArray<unknown>;
|
|
36
|
+
subscribeToChanges(callback: (change: QueueChangePayload<any, any>) => void, options?: QueueSubscribeOptions): () => void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=SupabaseMessageQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SupabaseMessageQueue.d.ts","sourceRoot":"","sources":["../../src/job-queue/SupabaseMessageQueue.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,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,MAAM,IAAI;IACzC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAqGF,qBAAa,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAE,YAAW,aAAa,CACvE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAChC;IACC,SAAgB,KAAK,EAAE,iBAAiB,CAAC;IAEzC,mDAAmD;IACnD,SAAgB,IAAI,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE1D,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IAErE,YACE,IAAI,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EACzC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAKpD;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,CAkB9D;IAEK,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/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"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
7
|
-
import { JobStatus } from "@workglow/job-queue";
|
|
8
7
|
import type { IQueueStorage, JobStorageFormat, PrefixColumn, QueueChangePayload, QueueStorageOptions, QueueSubscribeOptions } from "@workglow/job-queue";
|
|
8
|
+
import { JobStatus } from "@workglow/job-queue";
|
|
9
9
|
export declare const SUPABASE_QUEUE_STORAGE: import("@workglow/util").ServiceToken<IQueueStorage<any, any>>;
|
|
10
10
|
/**
|
|
11
11
|
* Supabase implementation of a job queue.
|
|
@@ -95,29 +95,64 @@ export declare class SupabaseQueueStorage<Input, Output> implements IQueueStorag
|
|
|
95
95
|
peek(status?: JobStatus, num?: number): Promise<JobStorageFormat<Input, Output>[]>;
|
|
96
96
|
/**
|
|
97
97
|
* Retrieves the next available job that is ready to be processed.
|
|
98
|
-
*
|
|
98
|
+
* Claims PENDING jobs ready to run, and also reclaims PROCESSING jobs whose
|
|
99
|
+
* lease has expired (crash recovery). Sets lease_expires_at on the claimed row.
|
|
99
100
|
* @param workerId - Worker ID to associate with the job (required)
|
|
101
|
+
* @param opts - Optional options including leaseMs (default 30000)
|
|
100
102
|
* @returns The next job or undefined if no job is available
|
|
101
103
|
*/
|
|
102
|
-
next(workerId: string
|
|
104
|
+
next(workerId: string, opts?: {
|
|
105
|
+
leaseMs?: number;
|
|
106
|
+
}): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
107
|
+
/**
|
|
108
|
+
* Extend the lease on a currently PROCESSING job.
|
|
109
|
+
* @param id - The ID of the job to extend the lease for
|
|
110
|
+
* @param workerId - Worker ID that must match the current lease owner (lease_owner)
|
|
111
|
+
* @param ms - Number of milliseconds to extend the lease by
|
|
112
|
+
*/
|
|
113
|
+
extendLease(id: unknown, workerId: string, ms: number): Promise<void>;
|
|
103
114
|
/**
|
|
104
115
|
* Retrieves the number of jobs in the queue with a specific status.
|
|
105
116
|
* @param status - The status of the jobs to count
|
|
106
117
|
* @returns The count of jobs with the specified status
|
|
107
118
|
*/
|
|
108
119
|
size(status?: "PENDING"): Promise<number>;
|
|
120
|
+
/**
|
|
121
|
+
* Gets all jobs from the queue that match the current prefix values.
|
|
122
|
+
* Used internally for polling-based subscriptions.
|
|
123
|
+
*
|
|
124
|
+
* @returns An array of jobs
|
|
125
|
+
*/
|
|
109
126
|
private getAllJobs;
|
|
110
127
|
/**
|
|
111
128
|
* Marks a job as complete with its output or error.
|
|
112
129
|
* Enhanced error handling:
|
|
113
|
-
* - For a retryable error, increments
|
|
130
|
+
* - For a retryable error, increments attempts and updates visible_at.
|
|
114
131
|
* - Marks a job as FAILED immediately for permanent or generic errors.
|
|
115
132
|
*/
|
|
116
133
|
complete(jobDetails: JobStorageFormat<Input, Output>): Promise<void>;
|
|
117
134
|
/**
|
|
118
135
|
* Releases a claimed job without consuming a retry attempt.
|
|
119
136
|
*/
|
|
120
|
-
|
|
137
|
+
releaseClaim(jobId: unknown): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Terminal write that does NOT bump `attempts`. See IQueueStorage.finalize
|
|
140
|
+
* for the rationale (avoids double-counting on ack/fail because the lease
|
|
141
|
+
* reclaim path already charged the attempt at next() time).
|
|
142
|
+
*/
|
|
143
|
+
finalize(id: unknown, fields: {
|
|
144
|
+
output?: Output | null;
|
|
145
|
+
error?: string | null;
|
|
146
|
+
error_code?: string | null;
|
|
147
|
+
status?: JobStatus;
|
|
148
|
+
completed_at?: string | null;
|
|
149
|
+
abort_requested_at?: string | null;
|
|
150
|
+
lease_owner?: string | null;
|
|
151
|
+
progress?: number;
|
|
152
|
+
progress_message?: string;
|
|
153
|
+
progress_details?: Record<string, any> | null;
|
|
154
|
+
visible_at?: string | null;
|
|
155
|
+
}): Promise<void>;
|
|
121
156
|
/**
|
|
122
157
|
* Clears all jobs from the queue.
|
|
123
158
|
*/
|
|
@@ -129,12 +164,14 @@ export declare class SupabaseQueueStorage<Input, Output> implements IQueueStorag
|
|
|
129
164
|
*/
|
|
130
165
|
outputForInput(input: Input): Promise<Output | null>;
|
|
131
166
|
/**
|
|
132
|
-
* Aborts a job
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
167
|
+
* Aborts a job.
|
|
168
|
+
* - If PENDING: immediately mark as FAILED with abort_requested_at set.
|
|
169
|
+
* - If PROCESSING: set abort_requested_at only (leave status as PROCESSING).
|
|
170
|
+
* - Otherwise: no-op.
|
|
136
171
|
*/
|
|
137
172
|
abort(jobId: unknown): Promise<void>;
|
|
173
|
+
/** Force-overwrite status without touching attempts (used to persist DISABLED after lease release). */
|
|
174
|
+
saveStatus(jobId: unknown, status: string): Promise<void>;
|
|
138
175
|
/**
|
|
139
176
|
* Retrieves all jobs for a given job run ID.
|
|
140
177
|
* @param job_run_id - The ID of the job run to retrieve
|
|
@@ -149,6 +186,29 @@ export declare class SupabaseQueueStorage<Input, Output> implements IQueueStorag
|
|
|
149
186
|
* Deletes a job by its ID
|
|
150
187
|
*/
|
|
151
188
|
delete(jobId: unknown): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* Finds the most recent active (PENDING or PROCESSING) job with the given fingerprint in this queue.
|
|
191
|
+
* Uses the partial index idx_<table>_fingerprint_active for O(1) lookup.
|
|
192
|
+
*/
|
|
193
|
+
findActiveByFingerprint(fingerprint: string, queueName: string): Promise<JobStorageFormat<Input, Output> | undefined>;
|
|
194
|
+
/**
|
|
195
|
+
* Retrieves multiple jobs by their IDs in a single query.
|
|
196
|
+
* Returns results in the same order as the input ids array, with undefined for missing ids.
|
|
197
|
+
*/
|
|
198
|
+
getMany(ids: readonly unknown[]): Promise<Array<JobStorageFormat<Input, Output> | undefined>>;
|
|
199
|
+
/**
|
|
200
|
+
* Atomically writes output and sets status=COMPLETED.
|
|
201
|
+
*/
|
|
202
|
+
completeWithResult(id: unknown, result: Output): Promise<void>;
|
|
203
|
+
/**
|
|
204
|
+
* Atomically writes error fields and sets status=FAILED.
|
|
205
|
+
* Preserves existing error/error_code when opts fields are absent.
|
|
206
|
+
*/
|
|
207
|
+
failWithError(id: unknown, opts: {
|
|
208
|
+
readonly error?: string | null;
|
|
209
|
+
readonly errorCode?: string | null;
|
|
210
|
+
readonly abortRequested?: boolean;
|
|
211
|
+
}): Promise<void>;
|
|
152
212
|
/**
|
|
153
213
|
* Delete jobs with a specific status older than a cutoff date
|
|
154
214
|
* @param status - Status of jobs to delete
|
|
@@ -165,6 +225,13 @@ export declare class SupabaseQueueStorage<Input, Output> implements IQueueStorag
|
|
|
165
225
|
* Checks if a prefix filter is custom (different from instance's prefixes).
|
|
166
226
|
*/
|
|
167
227
|
private isCustomPrefixFilter;
|
|
228
|
+
/**
|
|
229
|
+
* Gets all jobs from the queue with a custom prefix filter.
|
|
230
|
+
* Used for subscriptions with custom prefix filters (filters at DB level).
|
|
231
|
+
*
|
|
232
|
+
* @param prefixFilter - The prefix values to filter by (empty object = all jobs)
|
|
233
|
+
* @returns A promise that resolves to an array of jobs
|
|
234
|
+
*/
|
|
168
235
|
private getAllJobsWithFilter;
|
|
169
236
|
/**
|
|
170
237
|
* Subscribes to changes in the queue.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseQueueStorage.d.ts","sourceRoot":"","sources":["../../src/job-queue/SupabaseQueueStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseQueueStorage.d.ts","sourceRoot":"","sources":["../../src/job-queue/SupabaseQueueStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { SupabaseClient } from "@supabase/supabase-js";
|
|
7
|
-
import type { PrefixColumn } from "@workglow/job-queue";
|
|
8
|
-
import type { IRateLimiterStorage, RateLimiterStorageOptions, RateLimiterStorageScope } from "@workglow/job-queue";
|
|
7
|
+
import type { IRateLimiterStorage, PrefixColumn, RateLimiterStorageOptions, RateLimiterStorageScope } from "@workglow/job-queue";
|
|
9
8
|
export declare const SUPABASE_RATE_LIMITER_STORAGE: import("@workglow/util").ServiceToken<IRateLimiterStorage>;
|
|
10
9
|
/**
|
|
11
10
|
* Supabase implementation of rate limiter storage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupabaseRateLimiterStorage.d.ts","sourceRoot":"","sources":["../../src/job-queue/SupabaseRateLimiterStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SupabaseRateLimiterStorage.d.ts","sourceRoot":"","sources":["../../src/job-queue/SupabaseRateLimiterStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,6BAA6B,4DAEzC,CAAC;AAEF;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,SAAgB,KAAK,EAAE,uBAAuB,CAAa;IAC3D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IACrD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3E,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAElD,YAAY,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,yBAAyB,EAc/D;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAqGpC;IAED,mFAAmF;IAC5E,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,CAE7C;IAED,qFAAqF;IACrF,OAAO,CAAC,yBAAyB;IAIpB,mBAAmB,CAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA0BzB;IAEY,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9E;IAEY,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7D;IAEY,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAa1F;IAEY,0BAA0B,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B;IAEY,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiBhF;IAEY,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB3F;IAEY,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAanD;CACF"}
|