absurd-sdk 0.0.3 → 0.0.5
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/README.md +16 -18
- package/dist/cjs/index.js +277 -85
- package/dist/index.d.ts +131 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +275 -84
- package/dist/index.js.map +1 -1
- package/package.json +14 -7
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Absurd SDK for TypeScript and JavaScript
|
|
3
3
|
*/
|
|
4
4
|
import * as pg from "pg";
|
|
5
|
+
export type Queryable = Pick<pg.Client, "query"> | Pick<pg.PoolClient, "query">;
|
|
5
6
|
export type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
6
7
|
[key: string]: JsonValue;
|
|
7
8
|
};
|
|
@@ -44,8 +45,9 @@ export interface WorkerOptions {
|
|
|
44
45
|
concurrency?: number;
|
|
45
46
|
pollInterval?: number;
|
|
46
47
|
onError?: (error: Error) => void;
|
|
48
|
+
fatalOnLeaseTimeout?: boolean;
|
|
47
49
|
}
|
|
48
|
-
|
|
50
|
+
interface Worker {
|
|
49
51
|
close(): Promise<void>;
|
|
50
52
|
}
|
|
51
53
|
interface SpawnResult {
|
|
@@ -61,6 +63,13 @@ export type TaskHandler<P = any, R = any> = (params: P, ctx: TaskContext) => Pro
|
|
|
61
63
|
export declare class SuspendTask extends Error {
|
|
62
64
|
constructor();
|
|
63
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Internal exception that is thrown to cancel a run. As a user
|
|
68
|
+
* you should never see this exception.
|
|
69
|
+
*/
|
|
70
|
+
export declare class CancelledTask extends Error {
|
|
71
|
+
constructor();
|
|
72
|
+
}
|
|
64
73
|
/**
|
|
65
74
|
* This error is thrown when awaiting an event ran into a timeout.
|
|
66
75
|
*/
|
|
@@ -73,9 +82,22 @@ export interface TaskRegistrationOptions {
|
|
|
73
82
|
defaultMaxAttempts?: number;
|
|
74
83
|
defaultCancellation?: CancellationPolicy;
|
|
75
84
|
}
|
|
85
|
+
interface Log {
|
|
86
|
+
log(...args: any[]): void;
|
|
87
|
+
info(...args: any[]): void;
|
|
88
|
+
warn(...args: any[]): void;
|
|
89
|
+
error(...args: any[]): void;
|
|
90
|
+
}
|
|
91
|
+
export interface AbsurdOptions {
|
|
92
|
+
db?: pg.Pool | string;
|
|
93
|
+
queueName?: string;
|
|
94
|
+
defaultMaxAttempts?: number;
|
|
95
|
+
log?: Log;
|
|
96
|
+
}
|
|
76
97
|
export declare class TaskContext {
|
|
98
|
+
private readonly log;
|
|
77
99
|
readonly taskID: string;
|
|
78
|
-
private readonly
|
|
100
|
+
private readonly con;
|
|
79
101
|
private readonly queueName;
|
|
80
102
|
private readonly task;
|
|
81
103
|
private readonly checkpointCache;
|
|
@@ -83,28 +105,30 @@ export declare class TaskContext {
|
|
|
83
105
|
private stepNameCounter;
|
|
84
106
|
private constructor();
|
|
85
107
|
static create(args: {
|
|
108
|
+
log: Log;
|
|
86
109
|
taskID: string;
|
|
87
|
-
|
|
110
|
+
con: Queryable;
|
|
88
111
|
queueName: string;
|
|
89
112
|
task: ClaimedTask;
|
|
90
113
|
claimTimeout: number;
|
|
91
114
|
}): Promise<TaskContext>;
|
|
115
|
+
private queryWithCancelCheck;
|
|
92
116
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* must support `JSON.stringify`.
|
|
117
|
+
* Runs an idempotent step identified by name; caches and reuses its result across retries.
|
|
118
|
+
* @param name Unique checkpoint name for this step.
|
|
119
|
+
* @param fn Async function computing the step result (must be JSON-serializable).
|
|
97
120
|
*/
|
|
98
121
|
step<T>(name: string, fn: () => Promise<T>): Promise<T>;
|
|
99
122
|
/**
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
123
|
+
* Suspends the task until the given duration (seconds) elapses.
|
|
124
|
+
* @param stepName Checkpoint name for this wait.
|
|
125
|
+
* @param duration Duration to wait in seconds.
|
|
103
126
|
*/
|
|
104
127
|
sleepFor(stepName: string, duration: number): Promise<void>;
|
|
105
128
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
129
|
+
* Suspends the task until the specified time.
|
|
130
|
+
* @param stepName Checkpoint name for this wait.
|
|
131
|
+
* @param wakeAt Absolute time when the task should resume.
|
|
108
132
|
*/
|
|
109
133
|
sleepUntil(stepName: string, wakeAt: Date): Promise<void>;
|
|
110
134
|
private getCheckpointName;
|
|
@@ -112,60 +136,138 @@ export declare class TaskContext {
|
|
|
112
136
|
private persistCheckpoint;
|
|
113
137
|
private scheduleRun;
|
|
114
138
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
139
|
+
* Waits for an event by name and returns its payload; optionally sets a custom step name and timeout (seconds).
|
|
140
|
+
* @param eventName Event identifier to wait for.
|
|
141
|
+
* @param options.stepName Optional checkpoint name (defaults to $awaitEvent:<eventName>).
|
|
142
|
+
* @param options.timeout Optional timeout in seconds.
|
|
143
|
+
* @throws TimeoutError If the event is not received before the timeout.
|
|
117
144
|
*/
|
|
118
145
|
awaitEvent(eventName: string, options?: {
|
|
119
146
|
stepName?: string;
|
|
120
147
|
timeout?: number;
|
|
121
148
|
}): Promise<JsonValue>;
|
|
122
149
|
/**
|
|
123
|
-
*
|
|
150
|
+
* Extends the current run's lease by the given seconds (defaults to the original claim timeout).
|
|
151
|
+
* @param seconds Lease extension in seconds.
|
|
152
|
+
*/
|
|
153
|
+
heartbeat(seconds?: number): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Emits an event to this task's queue with an optional payload.
|
|
156
|
+
* @param eventName Non-empty event name.
|
|
157
|
+
* @param payload Optional JSON-serializable payload.
|
|
124
158
|
*/
|
|
125
159
|
emitEvent(eventName: string, payload?: JsonValue): Promise<void>;
|
|
126
|
-
complete(result?: any): Promise<void>;
|
|
127
|
-
fail(err: unknown): Promise<void>;
|
|
128
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* The Absurd SDK Client.
|
|
163
|
+
*
|
|
164
|
+
* Instanciate this class and keep it around to interact with Absurd.
|
|
165
|
+
*/
|
|
129
166
|
export declare class Absurd {
|
|
130
|
-
private readonly
|
|
131
|
-
private
|
|
167
|
+
private readonly con;
|
|
168
|
+
private ownedPool;
|
|
132
169
|
private readonly queueName;
|
|
133
170
|
private readonly defaultMaxAttempts;
|
|
134
|
-
private
|
|
171
|
+
private registry;
|
|
172
|
+
private readonly log;
|
|
135
173
|
private worker;
|
|
136
|
-
constructor(
|
|
174
|
+
constructor(options?: AbsurdOptions | string | pg.Pool);
|
|
137
175
|
/**
|
|
138
|
-
*
|
|
176
|
+
* Returns a new client that uses the provided connection for queries; set owned=true to close it with close().
|
|
177
|
+
* @param con Connection to bind to.
|
|
178
|
+
* @param owned If true, the bound client will close this connection on close().
|
|
179
|
+
*/
|
|
180
|
+
bindToConnection(con: Queryable, owned?: boolean): Absurd;
|
|
181
|
+
/**
|
|
182
|
+
* Registers a task handler by name (optionally specifying queue, defaultMaxAttempts, and defaultCancellation).
|
|
183
|
+
* @param options.name Task name.
|
|
184
|
+
* @param options.queue Optional queue name (defaults to client queue).
|
|
185
|
+
* @param options.defaultMaxAttempts Optional default max attempts.
|
|
186
|
+
* @param options.defaultCancellation Optional default cancellation policy.
|
|
187
|
+
* @param handler Async task handler.
|
|
139
188
|
*/
|
|
140
189
|
registerTask<P = any, R = any>(options: TaskRegistrationOptions, handler: TaskHandler<P, R>): void;
|
|
190
|
+
/**
|
|
191
|
+
* Creates a queue (defaults to this client's queue).
|
|
192
|
+
* @param queueName Queue name to create.
|
|
193
|
+
*/
|
|
141
194
|
createQueue(queueName?: string): Promise<void>;
|
|
195
|
+
/**
|
|
196
|
+
* Drops a queue (defaults to this client's queue).
|
|
197
|
+
* @param queueName Queue name to drop.
|
|
198
|
+
*/
|
|
142
199
|
dropQueue(queueName?: string): Promise<void>;
|
|
200
|
+
/**
|
|
201
|
+
* Lists all queue names.
|
|
202
|
+
* @returns Array of queue names.
|
|
203
|
+
*/
|
|
143
204
|
listQueues(): Promise<Array<string>>;
|
|
144
205
|
/**
|
|
145
|
-
* Spawns a
|
|
206
|
+
* Spawns a task execution by enqueueing it for processing. The task will be picked up by a worker
|
|
207
|
+
* and executed with the provided parameters. Returns identifiers that can be used to track or cancel the task.
|
|
208
|
+
*
|
|
209
|
+
* For registered tasks, the queue and defaults are inferred from registration. For unregistered tasks,
|
|
210
|
+
* you must provide options.queue.
|
|
211
|
+
*
|
|
212
|
+
* @param taskName Name of the task to spawn (must be registered or provide options.queue).
|
|
213
|
+
* @param params JSON-serializable parameters passed to the task handler.
|
|
214
|
+
* @param options Configure queue, maxAttempts, retryStrategy, headers, and cancellation policies.
|
|
215
|
+
* @returns Object containing taskID (unique task identifier), runID (current attempt identifier), and attempt number.
|
|
216
|
+
* @throws Error If the task is unregistered without a queue, or if the queue mismatches registration.
|
|
146
217
|
*/
|
|
147
218
|
spawn<P = any>(taskName: string, params: P, options?: SpawnOptions): Promise<SpawnResult>;
|
|
148
219
|
/**
|
|
149
|
-
* Emits an event
|
|
220
|
+
* Emits an event with an optional payload on the specified or default queue.
|
|
221
|
+
* @param eventName Non-empty event name.
|
|
222
|
+
* @param payload Optional JSON-serializable payload.
|
|
223
|
+
* @param queueName Queue to emit to (defaults to this client's queue).
|
|
150
224
|
*/
|
|
151
225
|
emitEvent(eventName: string, payload?: JsonValue, queueName?: string): Promise<void>;
|
|
226
|
+
/**
|
|
227
|
+
* Cancels a task by ID on the specified or default queue; running tasks stop at the next checkpoint/heartbeat.
|
|
228
|
+
* @param taskID Task identifier to cancel.
|
|
229
|
+
* @param queueName Queue name (defaults to this client's queue).
|
|
230
|
+
*/
|
|
231
|
+
cancelTask(taskID: string, queueName?: string): Promise<void>;
|
|
152
232
|
claimTasks(options?: {
|
|
153
233
|
batchSize?: number;
|
|
154
234
|
claimTimeout?: number;
|
|
155
235
|
workerId?: string;
|
|
156
236
|
}): Promise<ClaimedTask[]>;
|
|
157
237
|
/**
|
|
158
|
-
*
|
|
159
|
-
*
|
|
238
|
+
* Claims up to batchSize tasks and processes them sequentially using the given workerId and claimTimeout.
|
|
239
|
+
* @param workerId Worker identifier.
|
|
240
|
+
* @param claimTimeout Lease duration in seconds.
|
|
241
|
+
* @param batchSize Maximum number of tasks to process.
|
|
242
|
+
* Note: For parallel processing, use startWorker().
|
|
160
243
|
*/
|
|
161
244
|
workBatch(workerId?: string, claimTimeout?: number, batchSize?: number): Promise<void>;
|
|
162
245
|
/**
|
|
163
|
-
* Starts a worker that continuously polls for
|
|
164
|
-
*
|
|
246
|
+
* Starts a background worker that continuously polls for and processes tasks from the queue.
|
|
247
|
+
* The worker will claim tasks up to the configured concurrency limit and process them in parallel.
|
|
248
|
+
*
|
|
249
|
+
* Tasks are claimed with a lease (claimTimeout) that prevents other workers from processing them.
|
|
250
|
+
* The lease is automatically extended when tasks write checkpoints or call heartbeat(). If a worker
|
|
251
|
+
* crashes or stops making progress, the lease expires and another worker can claim the task.
|
|
252
|
+
*
|
|
253
|
+
* @param options Configure worker behavior:
|
|
254
|
+
* - concurrency: Max parallel tasks (default: 1)
|
|
255
|
+
* - claimTimeout: Task lease duration in seconds (default: 120)
|
|
256
|
+
* - batchSize: Tasks to claim per poll (default: concurrency)
|
|
257
|
+
* - pollInterval: Seconds between polls when idle (default: 0.25)
|
|
258
|
+
* - workerId: Worker identifier for tracking (default: hostname:pid)
|
|
259
|
+
* - onError: Error handler called for execution failures
|
|
260
|
+
* - fatalOnLeaseTimeout: Terminate process if task exceeds 2x claimTimeout (default: true)
|
|
261
|
+
* @returns Worker instance with close() method for graceful shutdown.
|
|
165
262
|
*/
|
|
166
263
|
startWorker(options?: WorkerOptions): Promise<Worker>;
|
|
264
|
+
/**
|
|
265
|
+
* Stops any running worker and closes the underlying pool if owned.
|
|
266
|
+
*/
|
|
167
267
|
close(): Promise<void>;
|
|
168
|
-
|
|
268
|
+
executeTask(task: ClaimedTask, claimTimeout: number, options?: {
|
|
269
|
+
fatalOnLeaseTimeout?: boolean;
|
|
270
|
+
}): Promise<void>;
|
|
169
271
|
}
|
|
170
272
|
export {};
|
|
171
273
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AACjC,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,cAAc,EAAE,SAAS,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|