@absurd-sqlite/sdk 0.2.1-alpha.2 → 0.3.0-alpha.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/absurd.d.ts +304 -0
- package/dist/absurd.d.ts.map +1 -0
- package/dist/absurd.js +710 -0
- package/dist/absurd.js.map +1 -0
- package/dist/cjs/absurd.js +750 -0
- package/dist/cjs/index.js +19 -13
- package/dist/cjs/{sqlite.js → sqlite-connection.js} +55 -20
- package/dist/index.d.ts +99 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/dist/sqlite-connection.d.ts +46 -0
- package/dist/sqlite-connection.d.ts.map +1 -0
- package/dist/{sqlite.js → sqlite-connection.js} +54 -19
- package/dist/sqlite-connection.js.map +1 -0
- package/dist/sqlite-types.d.ts +1 -1
- package/dist/sqlite-types.d.ts.map +1 -1
- package/package.json +4 -6
- package/src/absurd.ts +1031 -0
- package/src/index.ts +161 -31
- package/src/{sqlite.ts → sqlite-connection.ts} +103 -34
- package/src/sqlite-types.ts +1 -1
- package/test/events.test.ts +1 -1
- package/test/index.test.ts +7 -5
- package/test/setup.ts +28 -35
- package/test/sqlite.test.ts +45 -15
- package/dist/absurd-types.d.ts +0 -109
- package/dist/absurd-types.d.ts.map +0 -1
- package/dist/absurd-types.js +0 -2
- package/dist/absurd-types.js.map +0 -1
- package/dist/cjs/absurd-types.js +0 -2
- package/dist/sqlite.d.ts +0 -14
- package/dist/sqlite.d.ts.map +0 -1
- package/dist/sqlite.js.map +0 -1
- package/src/absurd-types.ts +0 -149
package/dist/absurd.d.ts
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal query interface compatible with Absurd's database operations.
|
|
3
|
+
*/
|
|
4
|
+
export interface Queryable {
|
|
5
|
+
query<R extends object = Record<string, any>>(sql: string, params?: unknown[] | Record<string, unknown>): Promise<{
|
|
6
|
+
rows: R[];
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
export type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
10
|
+
[key: string]: JsonValue;
|
|
11
|
+
};
|
|
12
|
+
export type JsonObject = {
|
|
13
|
+
[key: string]: JsonValue;
|
|
14
|
+
};
|
|
15
|
+
export interface RetryStrategy {
|
|
16
|
+
kind: "fixed" | "exponential" | "none";
|
|
17
|
+
baseSeconds?: number;
|
|
18
|
+
factor?: number;
|
|
19
|
+
maxSeconds?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface CancellationPolicy {
|
|
22
|
+
maxDuration?: number;
|
|
23
|
+
maxDelay?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface SpawnOptions {
|
|
26
|
+
maxAttempts?: number;
|
|
27
|
+
retryStrategy?: RetryStrategy;
|
|
28
|
+
headers?: JsonObject;
|
|
29
|
+
queue?: string;
|
|
30
|
+
cancellation?: CancellationPolicy;
|
|
31
|
+
idempotencyKey?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ClaimedTask {
|
|
34
|
+
run_id: string;
|
|
35
|
+
task_id: string;
|
|
36
|
+
task_name: string;
|
|
37
|
+
attempt: number;
|
|
38
|
+
params: JsonValue;
|
|
39
|
+
retry_strategy: JsonValue;
|
|
40
|
+
max_attempts: number | null;
|
|
41
|
+
headers: JsonObject | null;
|
|
42
|
+
wake_event: string | null;
|
|
43
|
+
event_payload: JsonValue | null;
|
|
44
|
+
}
|
|
45
|
+
export interface WorkerOptions {
|
|
46
|
+
workerId?: string;
|
|
47
|
+
claimTimeout?: number;
|
|
48
|
+
batchSize?: number;
|
|
49
|
+
concurrency?: number;
|
|
50
|
+
pollInterval?: number;
|
|
51
|
+
onError?: (error: Error) => void;
|
|
52
|
+
fatalOnLeaseTimeout?: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface Worker {
|
|
55
|
+
close(): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
export interface SpawnResult {
|
|
58
|
+
taskID: string;
|
|
59
|
+
runID: string;
|
|
60
|
+
attempt: number;
|
|
61
|
+
created: boolean;
|
|
62
|
+
}
|
|
63
|
+
export type TaskHandler<P = any, R = any> = (params: P, ctx: TaskContext) => Promise<R>;
|
|
64
|
+
/**
|
|
65
|
+
* Internal exception that is thrown to suspend a run.
|
|
66
|
+
*/
|
|
67
|
+
export declare class SuspendTask extends Error {
|
|
68
|
+
constructor();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Internal exception that is thrown to cancel a run.
|
|
72
|
+
*/
|
|
73
|
+
export declare class CancelledTask extends Error {
|
|
74
|
+
constructor();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* This error is thrown when awaiting an event ran into a timeout.
|
|
78
|
+
*/
|
|
79
|
+
export declare class TimeoutError extends Error {
|
|
80
|
+
constructor(message: string);
|
|
81
|
+
}
|
|
82
|
+
export interface TaskRegistrationOptions {
|
|
83
|
+
name: string;
|
|
84
|
+
queue?: string;
|
|
85
|
+
defaultMaxAttempts?: number;
|
|
86
|
+
defaultCancellation?: CancellationPolicy;
|
|
87
|
+
}
|
|
88
|
+
interface Log {
|
|
89
|
+
log(...args: any[]): void;
|
|
90
|
+
info(...args: any[]): void;
|
|
91
|
+
warn(...args: any[]): void;
|
|
92
|
+
error(...args: any[]): void;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Hooks for customizing Absurd behavior.
|
|
96
|
+
*/
|
|
97
|
+
export interface AbsurdHooks {
|
|
98
|
+
/**
|
|
99
|
+
* Called before spawning a task. Can modify spawn options (including headers).
|
|
100
|
+
* Use this to inject trace IDs or correlation IDs into headers.
|
|
101
|
+
*/
|
|
102
|
+
beforeSpawn?: (taskName: string, params: JsonValue, options: SpawnOptions) => SpawnOptions | Promise<SpawnOptions>;
|
|
103
|
+
/**
|
|
104
|
+
* Wraps task execution. Must call and return the result of execute().
|
|
105
|
+
* Use this to restore context before the task handler runs.
|
|
106
|
+
*/
|
|
107
|
+
wrapTaskExecution?: <T>(ctx: TaskContext, execute: () => Promise<T>) => Promise<T>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Configuration for the Absurd client.
|
|
111
|
+
*/
|
|
112
|
+
export interface AbsurdOptions {
|
|
113
|
+
db: Queryable;
|
|
114
|
+
queueName?: string;
|
|
115
|
+
defaultMaxAttempts?: number;
|
|
116
|
+
log?: Log;
|
|
117
|
+
hooks?: AbsurdHooks;
|
|
118
|
+
ownedConnection?: boolean;
|
|
119
|
+
}
|
|
120
|
+
declare class LeaseTimerManager {
|
|
121
|
+
private readonly log;
|
|
122
|
+
private readonly taskLabel;
|
|
123
|
+
private readonly fatalOnLeaseTimeout;
|
|
124
|
+
private warnTimer;
|
|
125
|
+
private fatalTimer;
|
|
126
|
+
constructor(log: Log, taskLabel: string, fatalOnLeaseTimeout: boolean);
|
|
127
|
+
update(leaseSeconds: number): void;
|
|
128
|
+
stop(): void;
|
|
129
|
+
private clear;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Execution context passed to task handlers.
|
|
133
|
+
*/
|
|
134
|
+
export declare class TaskContext {
|
|
135
|
+
private readonly log;
|
|
136
|
+
readonly taskID: string;
|
|
137
|
+
private readonly con;
|
|
138
|
+
private readonly queueName;
|
|
139
|
+
private readonly task;
|
|
140
|
+
private readonly checkpointCache;
|
|
141
|
+
private readonly claimTimeout;
|
|
142
|
+
private readonly leaseTimer;
|
|
143
|
+
private stepNameCounter;
|
|
144
|
+
private constructor();
|
|
145
|
+
/**
|
|
146
|
+
* Returns all headers attached to this task.
|
|
147
|
+
*/
|
|
148
|
+
get headers(): Readonly<JsonObject>;
|
|
149
|
+
static create(args: {
|
|
150
|
+
log: Log;
|
|
151
|
+
taskID: string;
|
|
152
|
+
con: Queryable;
|
|
153
|
+
queueName: string;
|
|
154
|
+
task: ClaimedTask;
|
|
155
|
+
claimTimeout: number;
|
|
156
|
+
leaseTimer: LeaseTimerManager;
|
|
157
|
+
}): Promise<TaskContext>;
|
|
158
|
+
/**
|
|
159
|
+
* Runs an idempotent step identified by name; caches and reuses its result across retries.
|
|
160
|
+
* @param name Unique checkpoint name for this step.
|
|
161
|
+
* @param fn Async function computing the step result (must be JSON-serializable).
|
|
162
|
+
*/
|
|
163
|
+
step<T extends JsonValue>(name: string, fn: () => Promise<T>): Promise<T>;
|
|
164
|
+
/**
|
|
165
|
+
* Suspends the task until the given duration (seconds) elapses.
|
|
166
|
+
* @param stepName Checkpoint name for this wait.
|
|
167
|
+
* @param duration Duration to wait in seconds.
|
|
168
|
+
*/
|
|
169
|
+
sleepFor(stepName: string, duration: number): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Suspends the task until the specified time.
|
|
172
|
+
* @param stepName Checkpoint name for this wait.
|
|
173
|
+
* @param wakeAt Absolute time when the task should resume.
|
|
174
|
+
*/
|
|
175
|
+
sleepUntil(stepName: string, wakeAt: Date): Promise<void>;
|
|
176
|
+
private getCheckpointName;
|
|
177
|
+
private lookupCheckpoint;
|
|
178
|
+
private persistCheckpoint;
|
|
179
|
+
private scheduleRun;
|
|
180
|
+
/**
|
|
181
|
+
* Waits for an event by name and returns its payload; optionally sets a custom step name and timeout (seconds).
|
|
182
|
+
* @param eventName Event identifier to wait for.
|
|
183
|
+
* @param options.stepName Optional checkpoint name (defaults to $awaitEvent:<eventName>).
|
|
184
|
+
* @param options.timeout Optional timeout in seconds.
|
|
185
|
+
* @throws TimeoutError If the event is not received before the timeout.
|
|
186
|
+
*/
|
|
187
|
+
awaitEvent(eventName: string, options?: {
|
|
188
|
+
stepName?: string;
|
|
189
|
+
timeout?: number;
|
|
190
|
+
}): Promise<JsonValue>;
|
|
191
|
+
/**
|
|
192
|
+
* Extends the current run's lease by the given seconds (defaults to the original claim timeout).
|
|
193
|
+
* @param seconds Lease extension in seconds.
|
|
194
|
+
*/
|
|
195
|
+
heartbeat(seconds?: number): Promise<void>;
|
|
196
|
+
private recordLeaseExtension;
|
|
197
|
+
/**
|
|
198
|
+
* Emits an event to this task's queue with an optional payload.
|
|
199
|
+
* @param eventName Non-empty event name.
|
|
200
|
+
* @param payload Optional JSON-serializable payload.
|
|
201
|
+
*/
|
|
202
|
+
emitEvent(eventName: string, payload?: JsonValue): Promise<void>;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* The Absurd SDK client.
|
|
206
|
+
*/
|
|
207
|
+
export declare class AbsurdImpl {
|
|
208
|
+
private readonly con;
|
|
209
|
+
private readonly ownedConnection;
|
|
210
|
+
private readonly queueName;
|
|
211
|
+
private readonly defaultMaxAttempts;
|
|
212
|
+
private registry;
|
|
213
|
+
private readonly log;
|
|
214
|
+
private worker;
|
|
215
|
+
private readonly hooks;
|
|
216
|
+
constructor(options: AbsurdOptions | Queryable);
|
|
217
|
+
/**
|
|
218
|
+
* Returns a new client that uses the provided connection for queries; set owned=true to close it with close().
|
|
219
|
+
* @param con Connection to bind to.
|
|
220
|
+
* @param owned If true, the bound client will close this connection on close().
|
|
221
|
+
*/
|
|
222
|
+
bindToConnection(con: Queryable, owned?: boolean): AbsurdImpl;
|
|
223
|
+
/**
|
|
224
|
+
* Registers a task handler by name (optionally specifying queue, defaultMaxAttempts, and defaultCancellation).
|
|
225
|
+
* @param options.name Task name.
|
|
226
|
+
* @param options.queue Optional queue name (defaults to client queue).
|
|
227
|
+
* @param options.defaultMaxAttempts Optional default max attempts.
|
|
228
|
+
* @param options.defaultCancellation Optional default cancellation policy.
|
|
229
|
+
* @param handler Async task handler.
|
|
230
|
+
*/
|
|
231
|
+
registerTask<P = any, R = any>(options: TaskRegistrationOptions, handler: TaskHandler<P, R>): void;
|
|
232
|
+
/**
|
|
233
|
+
* Creates a queue (defaults to this client's queue).
|
|
234
|
+
* @param queueName Queue name to create.
|
|
235
|
+
*/
|
|
236
|
+
createQueue(queueName?: string): Promise<void>;
|
|
237
|
+
/**
|
|
238
|
+
* Drops a queue (defaults to this client's queue).
|
|
239
|
+
* @param queueName Queue name to drop.
|
|
240
|
+
*/
|
|
241
|
+
dropQueue(queueName?: string): Promise<void>;
|
|
242
|
+
/**
|
|
243
|
+
* Lists all queue names.
|
|
244
|
+
* @returns Array of queue names.
|
|
245
|
+
*/
|
|
246
|
+
listQueues(): Promise<Array<string>>;
|
|
247
|
+
/**
|
|
248
|
+
* Spawns a task execution by enqueueing it for processing. The task will be picked up by a worker
|
|
249
|
+
* and executed with the provided parameters. Returns identifiers that can be used to track or cancel the task.
|
|
250
|
+
*
|
|
251
|
+
* For registered tasks, the queue and defaults are inferred from registration. For unregistered tasks,
|
|
252
|
+
* you must provide options.queue.
|
|
253
|
+
*
|
|
254
|
+
* @param taskName Name of the task to spawn (must be registered or provide options.queue).
|
|
255
|
+
* @param params JSON-serializable parameters passed to the task handler.
|
|
256
|
+
* @param options Configure queue, maxAttempts, retryStrategy, headers, and cancellation policies.
|
|
257
|
+
* @returns Object containing taskID (unique task identifier), runID (current attempt identifier), and attempt number.
|
|
258
|
+
* @throws Error If the task is unregistered without a queue, or if the queue mismatches registration.
|
|
259
|
+
*/
|
|
260
|
+
spawn<P = any>(taskName: string, params: P, options?: SpawnOptions): Promise<SpawnResult>;
|
|
261
|
+
/**
|
|
262
|
+
* Emits an event with an optional payload on the specified or default queue.
|
|
263
|
+
* @param eventName Non-empty event name.
|
|
264
|
+
* @param payload Optional JSON-serializable payload.
|
|
265
|
+
* @param queueName Queue to emit to (defaults to this client's queue).
|
|
266
|
+
*/
|
|
267
|
+
emitEvent(eventName: string, payload?: JsonValue, queueName?: string): Promise<void>;
|
|
268
|
+
/**
|
|
269
|
+
* Cancels a task by ID on the specified or default queue; running tasks stop at the next checkpoint/heartbeat.
|
|
270
|
+
* @param taskID Task identifier to cancel.
|
|
271
|
+
* @param queueName Queue name (defaults to this client's queue).
|
|
272
|
+
*/
|
|
273
|
+
cancelTask(taskID: string, queueName?: string): Promise<void>;
|
|
274
|
+
claimTasks(options?: {
|
|
275
|
+
batchSize?: number;
|
|
276
|
+
claimTimeout?: number;
|
|
277
|
+
workerId?: string;
|
|
278
|
+
}): Promise<ClaimedTask[]>;
|
|
279
|
+
/**
|
|
280
|
+
* Claims up to batchSize tasks and processes them sequentially using the given workerId and claimTimeout.
|
|
281
|
+
* @param workerId Worker identifier.
|
|
282
|
+
* @param claimTimeout Lease duration in seconds.
|
|
283
|
+
* @param batchSize Maximum number of tasks to process.
|
|
284
|
+
* Note: For parallel processing, use startWorker().
|
|
285
|
+
*/
|
|
286
|
+
workBatch(workerId?: string, claimTimeout?: number, batchSize?: number): Promise<void>;
|
|
287
|
+
/**
|
|
288
|
+
* Starts a background worker that continuously polls for and processes tasks from the queue.
|
|
289
|
+
* The worker will claim tasks up to the configured concurrency limit and process them in parallel.
|
|
290
|
+
*
|
|
291
|
+
* @param options Configure worker behavior.
|
|
292
|
+
* @returns Worker instance with close() method for graceful shutdown.
|
|
293
|
+
*/
|
|
294
|
+
startWorker(options?: WorkerOptions): Promise<Worker>;
|
|
295
|
+
/**
|
|
296
|
+
* Stops any running worker and closes the underlying connection if owned.
|
|
297
|
+
*/
|
|
298
|
+
close(): Promise<void>;
|
|
299
|
+
executeTask(task: ClaimedTask, claimTimeout: number, options?: {
|
|
300
|
+
fatalOnLeaseTimeout?: boolean;
|
|
301
|
+
}): Promise<void>;
|
|
302
|
+
}
|
|
303
|
+
export {};
|
|
304
|
+
//# sourceMappingURL=absurd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"absurd.d.ts","sourceRoot":"","sources":["../src/absurd.ts"],"names":[],"mappings":"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"}
|