bunqueue 2.6.89 → 2.6.90
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 +51 -0
- package/dist/client/bunqueue.d.ts +128 -0
- package/dist/client/bunqueue.d.ts.map +1 -0
- package/dist/client/bunqueue.js +215 -0
- package/dist/client/bunqueue.js.map +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -147,6 +147,56 @@ const worker = new Worker(
|
|
|
147
147
|
await queue.add('process', { data: 'hello' });
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
+
### Simple Mode
|
|
151
|
+
|
|
152
|
+
One object. Queue + Worker + Routes + Middleware + Cron. Zero boilerplate.
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
import { Bunqueue } from 'bunqueue/client';
|
|
156
|
+
|
|
157
|
+
const app = new Bunqueue('notifications', {
|
|
158
|
+
embedded: true,
|
|
159
|
+
|
|
160
|
+
// Route jobs by name
|
|
161
|
+
routes: {
|
|
162
|
+
'send-email': async (job) => {
|
|
163
|
+
console.log(`Email to ${job.data.to}`);
|
|
164
|
+
return { sent: true };
|
|
165
|
+
},
|
|
166
|
+
'send-sms': async (job) => {
|
|
167
|
+
console.log(`SMS to ${job.data.to}`);
|
|
168
|
+
return { sent: true };
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
concurrency: 10,
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Middleware — wraps every job (logging, timing, error recovery)
|
|
175
|
+
app.use(async (job, next) => {
|
|
176
|
+
const start = Date.now();
|
|
177
|
+
const result = await next();
|
|
178
|
+
console.log(`${job.name} took ${Date.now() - start}ms`);
|
|
179
|
+
return result;
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// Cron — scheduled jobs
|
|
183
|
+
await app.cron('daily-report', '0 9 * * *', { type: 'summary' });
|
|
184
|
+
await app.every('healthcheck', 30000, { type: 'ping' });
|
|
185
|
+
|
|
186
|
+
// Events
|
|
187
|
+
app.on('completed', (job, result) => console.log(result));
|
|
188
|
+
app.on('failed', (job, err) => console.error(err));
|
|
189
|
+
|
|
190
|
+
// Add jobs
|
|
191
|
+
await app.add('send-email', { to: 'alice@example.com' });
|
|
192
|
+
await app.add('send-sms', { to: '+1234567890' });
|
|
193
|
+
|
|
194
|
+
// Graceful shutdown
|
|
195
|
+
await app.close();
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Works with both embedded and TCP mode. [Simple Mode docs →](https://bunqueue.dev/guide/simple-mode/)
|
|
199
|
+
|
|
150
200
|
## Performance
|
|
151
201
|
|
|
152
202
|
SQLite handles surprisingly high throughput for single-node deployments:
|
|
@@ -220,6 +270,7 @@ docker compose --profile monitoring up -d
|
|
|
220
270
|
**[Read the full documentation →](https://bunqueue.dev/)**
|
|
221
271
|
|
|
222
272
|
- [Quick Start](https://bunqueue.dev/guide/quickstart/)
|
|
273
|
+
- [Simple Mode](https://bunqueue.dev/guide/simple-mode/)
|
|
223
274
|
- [Queue API](https://bunqueue.dev/guide/queue/)
|
|
224
275
|
- [Worker API](https://bunqueue.dev/guide/worker/)
|
|
225
276
|
- [Server Mode](https://bunqueue.dev/guide/server/)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bunqueue - Simplified all-in-one Queue + Worker
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { Bunqueue } from 'bunqueue/client';
|
|
7
|
+
*
|
|
8
|
+
* // Simple processor
|
|
9
|
+
* const q = new Bunqueue<{ email: string }>('emails', {
|
|
10
|
+
* processor: async (job) => {
|
|
11
|
+
* await job.updateProgress(50);
|
|
12
|
+
* return { sent: true };
|
|
13
|
+
* },
|
|
14
|
+
* concurrency: 5,
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* // Job routing
|
|
18
|
+
* const q2 = new Bunqueue('notifications', {
|
|
19
|
+
* routes: {
|
|
20
|
+
* 'send-email': async (job) => { ... },
|
|
21
|
+
* 'send-sms': async (job) => { ... },
|
|
22
|
+
* },
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Middleware
|
|
26
|
+
* q.use(async (job, next) => {
|
|
27
|
+
* const start = Date.now();
|
|
28
|
+
* const result = await next();
|
|
29
|
+
* console.log(`Done in ${Date.now() - start}ms`);
|
|
30
|
+
* return result;
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // Cron
|
|
34
|
+
* q.cron('daily-report', '0 9 * * *', { type: 'summary' });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
import { Queue } from './queue/queue';
|
|
38
|
+
import { Worker } from './worker/worker';
|
|
39
|
+
import type { Job, JobOptions, QueueOptions, WorkerOptions, Processor, ConnectionOptions } from './types';
|
|
40
|
+
import type { SchedulerInfo } from './queue/scheduler';
|
|
41
|
+
/** Middleware function: receives job and next(), returns result */
|
|
42
|
+
export type BunqueueMiddleware<T = unknown, R = unknown> = (job: Job<T>, next: () => Promise<R>) => Promise<R>;
|
|
43
|
+
export interface BunqueueOptions<T = unknown, R = unknown> {
|
|
44
|
+
/** Job processor function (use this OR routes, not both) */
|
|
45
|
+
processor?: Processor<T, R>;
|
|
46
|
+
/** Named job processors — routes jobs by name to the right handler */
|
|
47
|
+
routes?: Record<string, Processor<T, R>>;
|
|
48
|
+
/** Worker concurrency (default: 1) */
|
|
49
|
+
concurrency?: number;
|
|
50
|
+
/** Connection options for TCP mode */
|
|
51
|
+
connection?: ConnectionOptions;
|
|
52
|
+
/** Use embedded mode (default: auto-detect) */
|
|
53
|
+
embedded?: boolean;
|
|
54
|
+
/** SQLite data path (embedded mode) */
|
|
55
|
+
dataPath?: string;
|
|
56
|
+
/** Default job options */
|
|
57
|
+
defaultJobOptions?: JobOptions;
|
|
58
|
+
/** Worker auto-start (default: true) */
|
|
59
|
+
autorun?: boolean;
|
|
60
|
+
/** Heartbeat interval in ms (default: 10000, 0=disabled) */
|
|
61
|
+
heartbeatInterval?: number;
|
|
62
|
+
/** Worker batch size (default: 10) */
|
|
63
|
+
batchSize?: number;
|
|
64
|
+
/** Long poll timeout in ms (default: 0) */
|
|
65
|
+
pollTimeout?: number;
|
|
66
|
+
/** Auto-batching options (TCP mode) */
|
|
67
|
+
autoBatch?: QueueOptions['autoBatch'];
|
|
68
|
+
/** Rate limiter options */
|
|
69
|
+
limiter?: WorkerOptions['limiter'];
|
|
70
|
+
/** Remove job on complete */
|
|
71
|
+
removeOnComplete?: WorkerOptions['removeOnComplete'];
|
|
72
|
+
/** Remove job on fail */
|
|
73
|
+
removeOnFail?: WorkerOptions['removeOnFail'];
|
|
74
|
+
}
|
|
75
|
+
export declare class Bunqueue<T = unknown, R = unknown> {
|
|
76
|
+
readonly name: string;
|
|
77
|
+
readonly queue: Queue<T>;
|
|
78
|
+
readonly worker: Worker<T, R>;
|
|
79
|
+
private readonly middlewares;
|
|
80
|
+
private readonly baseProcessor;
|
|
81
|
+
constructor(name: string, opts: BunqueueOptions<T, R>);
|
|
82
|
+
/** Add middleware to the processing pipeline */
|
|
83
|
+
use(middleware: BunqueueMiddleware<T, R>): this;
|
|
84
|
+
private executeWithMiddleware;
|
|
85
|
+
add(name: string, data: T, opts?: JobOptions): Promise<Job<T>>;
|
|
86
|
+
addBulk(jobs: Array<{
|
|
87
|
+
name: string;
|
|
88
|
+
data: T;
|
|
89
|
+
opts?: JobOptions;
|
|
90
|
+
}>): Promise<Job<T>[]>;
|
|
91
|
+
getJob(id: string): Promise<Job<T> | null>;
|
|
92
|
+
getJobCounts(): import("./queue/operations").JobCounts;
|
|
93
|
+
getJobCountsAsync(): Promise<import("./queue/operations").JobCounts>;
|
|
94
|
+
count(): number;
|
|
95
|
+
countAsync(): Promise<number>;
|
|
96
|
+
/** Add a cron job */
|
|
97
|
+
cron(schedulerId: string, pattern: string, data?: T, opts?: {
|
|
98
|
+
timezone?: string;
|
|
99
|
+
jobOpts?: JobOptions;
|
|
100
|
+
}): Promise<SchedulerInfo | null>;
|
|
101
|
+
/** Add a repeating job (every N ms) */
|
|
102
|
+
every(schedulerId: string, intervalMs: number, data?: T, opts?: {
|
|
103
|
+
jobOpts?: JobOptions;
|
|
104
|
+
}): Promise<SchedulerInfo | null>;
|
|
105
|
+
/** Remove a cron/repeating job */
|
|
106
|
+
removeCron(schedulerId: string): Promise<boolean>;
|
|
107
|
+
/** List all cron/repeating jobs */
|
|
108
|
+
listCrons(): Promise<SchedulerInfo[]>;
|
|
109
|
+
on(event: 'ready' | 'drained' | 'closed', listener: () => void): this;
|
|
110
|
+
on(event: 'active', listener: (job: Job<T>) => void): this;
|
|
111
|
+
on(event: 'completed', listener: (job: Job<T>, result: R) => void): this;
|
|
112
|
+
on(event: 'failed', listener: (job: Job<T>, error: Error) => void): this;
|
|
113
|
+
on(event: 'progress', listener: (job: Job<T> | null, progress: number) => void): this;
|
|
114
|
+
on(event: 'stalled', listener: (jobId: string, reason: string) => void): this;
|
|
115
|
+
on(event: 'error', listener: (error: Error) => void): this;
|
|
116
|
+
once(event: 'ready' | 'drained' | 'closed', listener: () => void): this;
|
|
117
|
+
once(event: 'active', listener: (job: Job<T>) => void): this;
|
|
118
|
+
once(event: 'completed', listener: (job: Job<T>, result: R) => void): this;
|
|
119
|
+
once(event: 'failed', listener: (job: Job<T>, error: Error) => void): this;
|
|
120
|
+
off(event: any, listener: (...args: any[]) => void): this;
|
|
121
|
+
pause(): void;
|
|
122
|
+
resume(): void;
|
|
123
|
+
close(force?: boolean): Promise<void>;
|
|
124
|
+
isRunning(): boolean;
|
|
125
|
+
isPaused(): boolean;
|
|
126
|
+
isClosed(): boolean;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=bunqueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bunqueue.d.ts","sourceRoot":"","sources":["../../src/client/bunqueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bunqueue - Simplified all-in-one Queue + Worker
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { Bunqueue } from 'bunqueue/client';
|
|
7
|
+
*
|
|
8
|
+
* // Simple processor
|
|
9
|
+
* const q = new Bunqueue<{ email: string }>('emails', {
|
|
10
|
+
* processor: async (job) => {
|
|
11
|
+
* await job.updateProgress(50);
|
|
12
|
+
* return { sent: true };
|
|
13
|
+
* },
|
|
14
|
+
* concurrency: 5,
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* // Job routing
|
|
18
|
+
* const q2 = new Bunqueue('notifications', {
|
|
19
|
+
* routes: {
|
|
20
|
+
* 'send-email': async (job) => { ... },
|
|
21
|
+
* 'send-sms': async (job) => { ... },
|
|
22
|
+
* },
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Middleware
|
|
26
|
+
* q.use(async (job, next) => {
|
|
27
|
+
* const start = Date.now();
|
|
28
|
+
* const result = await next();
|
|
29
|
+
* console.log(`Done in ${Date.now() - start}ms`);
|
|
30
|
+
* return result;
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // Cron
|
|
34
|
+
* q.cron('daily-report', '0 9 * * *', { type: 'summary' });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
import { Queue } from './queue/queue';
|
|
38
|
+
import { Worker } from './worker/worker';
|
|
39
|
+
export class Bunqueue {
|
|
40
|
+
name;
|
|
41
|
+
queue;
|
|
42
|
+
worker;
|
|
43
|
+
middlewares = [];
|
|
44
|
+
baseProcessor;
|
|
45
|
+
constructor(name, opts) {
|
|
46
|
+
if (!opts.processor && !opts.routes) {
|
|
47
|
+
throw new Error('Bunqueue requires either "processor" or "routes"');
|
|
48
|
+
}
|
|
49
|
+
if (opts.processor && opts.routes) {
|
|
50
|
+
throw new Error('Bunqueue: use "processor" or "routes", not both');
|
|
51
|
+
}
|
|
52
|
+
this.name = name;
|
|
53
|
+
// Build base processor from routes or single processor
|
|
54
|
+
if (opts.routes) {
|
|
55
|
+
const routeMap = opts.routes;
|
|
56
|
+
this.baseProcessor = ((job) => {
|
|
57
|
+
const handler = routeMap[job.name];
|
|
58
|
+
if (!handler) {
|
|
59
|
+
throw new Error(`No route for job "${job.name}" in queue "${name}"`);
|
|
60
|
+
}
|
|
61
|
+
return handler(job);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else if (opts.processor) {
|
|
65
|
+
this.baseProcessor = opts.processor;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Should never reach here due to validation above
|
|
69
|
+
throw new Error('Bunqueue requires either "processor" or "routes"');
|
|
70
|
+
}
|
|
71
|
+
// Wrapped processor that applies middleware chain
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
73
|
+
const self = this;
|
|
74
|
+
const wrappedProcessor = ((job) => self.executeWithMiddleware(job));
|
|
75
|
+
const queueOpts = {
|
|
76
|
+
connection: opts.connection,
|
|
77
|
+
embedded: opts.embedded,
|
|
78
|
+
dataPath: opts.dataPath,
|
|
79
|
+
defaultJobOptions: opts.defaultJobOptions,
|
|
80
|
+
autoBatch: opts.autoBatch,
|
|
81
|
+
};
|
|
82
|
+
const workerOpts = {
|
|
83
|
+
connection: opts.connection,
|
|
84
|
+
embedded: opts.embedded,
|
|
85
|
+
dataPath: opts.dataPath,
|
|
86
|
+
concurrency: opts.concurrency,
|
|
87
|
+
autorun: opts.autorun,
|
|
88
|
+
heartbeatInterval: opts.heartbeatInterval,
|
|
89
|
+
batchSize: opts.batchSize,
|
|
90
|
+
pollTimeout: opts.pollTimeout,
|
|
91
|
+
limiter: opts.limiter,
|
|
92
|
+
removeOnComplete: opts.removeOnComplete,
|
|
93
|
+
removeOnFail: opts.removeOnFail,
|
|
94
|
+
};
|
|
95
|
+
this.queue = new Queue(name, queueOpts);
|
|
96
|
+
this.worker = new Worker(name, wrappedProcessor, workerOpts);
|
|
97
|
+
}
|
|
98
|
+
// ============ Middleware ============
|
|
99
|
+
/** Add middleware to the processing pipeline */
|
|
100
|
+
use(middleware) {
|
|
101
|
+
this.middlewares.push(middleware);
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
executeWithMiddleware(job) {
|
|
105
|
+
const asJob = job;
|
|
106
|
+
if (this.middlewares.length === 0) {
|
|
107
|
+
const result = this.baseProcessor(job);
|
|
108
|
+
return result instanceof Promise ? result : Promise.resolve(result);
|
|
109
|
+
}
|
|
110
|
+
let index = 0;
|
|
111
|
+
const middlewares = this.middlewares;
|
|
112
|
+
const baseProcessor = this.baseProcessor;
|
|
113
|
+
const next = () => {
|
|
114
|
+
if (index < middlewares.length) {
|
|
115
|
+
const mw = middlewares[index++];
|
|
116
|
+
return mw(asJob, next);
|
|
117
|
+
}
|
|
118
|
+
const result = baseProcessor(job);
|
|
119
|
+
return result instanceof Promise ? result : Promise.resolve(result);
|
|
120
|
+
};
|
|
121
|
+
return next();
|
|
122
|
+
}
|
|
123
|
+
// ============ Queue Operations ============
|
|
124
|
+
add(name, data, opts) {
|
|
125
|
+
return this.queue.add(name, data, opts);
|
|
126
|
+
}
|
|
127
|
+
addBulk(jobs) {
|
|
128
|
+
return this.queue.addBulk(jobs);
|
|
129
|
+
}
|
|
130
|
+
getJob(id) {
|
|
131
|
+
return this.queue.getJob(id);
|
|
132
|
+
}
|
|
133
|
+
getJobCounts() {
|
|
134
|
+
return this.queue.getJobCounts();
|
|
135
|
+
}
|
|
136
|
+
getJobCountsAsync() {
|
|
137
|
+
return this.queue.getJobCountsAsync();
|
|
138
|
+
}
|
|
139
|
+
count() {
|
|
140
|
+
return this.queue.count();
|
|
141
|
+
}
|
|
142
|
+
countAsync() {
|
|
143
|
+
return this.queue.countAsync();
|
|
144
|
+
}
|
|
145
|
+
// ============ Cron ============
|
|
146
|
+
/** Add a cron job */
|
|
147
|
+
cron(schedulerId, pattern, data, opts) {
|
|
148
|
+
const repeatOpts = { pattern, timezone: opts?.timezone };
|
|
149
|
+
const jobTemplate = {
|
|
150
|
+
name: schedulerId,
|
|
151
|
+
data,
|
|
152
|
+
opts: opts?.jobOpts,
|
|
153
|
+
};
|
|
154
|
+
return this.queue.upsertJobScheduler(schedulerId, repeatOpts, jobTemplate);
|
|
155
|
+
}
|
|
156
|
+
/** Add a repeating job (every N ms) */
|
|
157
|
+
every(schedulerId, intervalMs, data, opts) {
|
|
158
|
+
const repeatOpts = { every: intervalMs };
|
|
159
|
+
const jobTemplate = {
|
|
160
|
+
name: schedulerId,
|
|
161
|
+
data,
|
|
162
|
+
opts: opts?.jobOpts,
|
|
163
|
+
};
|
|
164
|
+
return this.queue.upsertJobScheduler(schedulerId, repeatOpts, jobTemplate);
|
|
165
|
+
}
|
|
166
|
+
/** Remove a cron/repeating job */
|
|
167
|
+
removeCron(schedulerId) {
|
|
168
|
+
return this.queue.removeJobScheduler(schedulerId);
|
|
169
|
+
}
|
|
170
|
+
/** List all cron/repeating jobs */
|
|
171
|
+
listCrons() {
|
|
172
|
+
return this.queue.getJobSchedulers();
|
|
173
|
+
}
|
|
174
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
175
|
+
on(event, listener) {
|
|
176
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
177
|
+
this.worker.on(event, listener);
|
|
178
|
+
return this;
|
|
179
|
+
}
|
|
180
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
181
|
+
once(event, listener) {
|
|
182
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
183
|
+
this.worker.once(event, listener);
|
|
184
|
+
return this;
|
|
185
|
+
}
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
187
|
+
off(event, listener) {
|
|
188
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
189
|
+
this.worker.off(event, listener);
|
|
190
|
+
return this;
|
|
191
|
+
}
|
|
192
|
+
// ============ Control ============
|
|
193
|
+
pause() {
|
|
194
|
+
this.queue.pause();
|
|
195
|
+
this.worker.pause();
|
|
196
|
+
}
|
|
197
|
+
resume() {
|
|
198
|
+
this.queue.resume();
|
|
199
|
+
this.worker.resume();
|
|
200
|
+
}
|
|
201
|
+
async close(force = false) {
|
|
202
|
+
await this.worker.close(force);
|
|
203
|
+
this.queue.close();
|
|
204
|
+
}
|
|
205
|
+
isRunning() {
|
|
206
|
+
return this.worker.isRunning();
|
|
207
|
+
}
|
|
208
|
+
isPaused() {
|
|
209
|
+
return this.worker.isPaused();
|
|
210
|
+
}
|
|
211
|
+
isClosed() {
|
|
212
|
+
return this.worker.isClosed();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=bunqueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bunqueue.js","sourceRoot":"","sources":["../../src/client/bunqueue.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
*/
|
|
21
21
|
export { Queue } from './queue';
|
|
22
22
|
export { Worker } from './worker';
|
|
23
|
+
export { Bunqueue } from './bunqueue';
|
|
24
|
+
export type { BunqueueOptions, BunqueueMiddleware } from './bunqueue';
|
|
23
25
|
export { SandboxedWorker } from './sandboxedWorker';
|
|
24
26
|
export { QueueEvents } from './events';
|
|
25
27
|
export { QueueGroup } from './queueGroup';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAClF,YAAY,EACV,GAAG,EACH,UAAU,EACV,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACpG,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChF,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAClF,YAAY,EACV,GAAG,EACH,UAAU,EACV,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACpG,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChF,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
export { Queue } from './queue';
|
|
22
22
|
export { Worker } from './worker';
|
|
23
|
+
export { Bunqueue } from './bunqueue';
|
|
23
24
|
export { SandboxedWorker } from './sandboxedWorker';
|
|
24
25
|
export { QueueEvents } from './events';
|
|
25
26
|
export { QueueGroup } from './queueGroup';
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bunqueue",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.90",
|
|
4
4
|
"description": "High-performance job queue for Bun & AI agents. SQLite persistence, cron scheduling, priorities, retries, DLQ, webhooks, native MCP server. Zero external dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/main.js",
|