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/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
- export interface Worker {
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 pool;
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
- pool: pg.Pool;
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
- * Defines a step in the task execution. Steps are idempotent in
94
- * that they are executed exactly once (unless they fail) and their
95
- * results are cached. As a result the return value of this function
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
- * Sleeps for a given number of seconds. Note that this
101
- * *always* suspends the task, even if you only wait for a very
102
- * short period of time.
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
- * Like `sleepFor` but with an absolute time when the task should be
107
- * awoken again.
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
- * Awaits the arrival of an event. Events need to be uniquely
116
- * named so fold in the necessary parameters into the name (eg: customer id).
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
- * Emits an event that can be awaited.
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 pool;
131
- private readonly ownedPool;
167
+ private readonly con;
168
+ private ownedPool;
132
169
  private readonly queueName;
133
170
  private readonly defaultMaxAttempts;
134
- private readonly registry;
171
+ private registry;
172
+ private readonly log;
135
173
  private worker;
136
- constructor(poolOrUrl?: pg.Pool | string | null, queueName?: string, defaultMaxAttempts?: number);
174
+ constructor(options?: AbsurdOptions | string | pg.Pool);
137
175
  /**
138
- * This registers a given function as task.
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 specific task.
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 from outside of a task.
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
- * Polls and processes a batch of messages sequentially.
159
- * For parallel processing, use startWorker with concurrency option.
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 tasks and processes them.
164
- * Returns a Worker instance with a close() method for graceful shutdown.
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
- private executeTask;
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
@@ -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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"}