absurd-sdk 0.0.4 → 0.0.6

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