1+ import { InMemoryQueue as MemoryQueue , type InMemoryQueueOptions } from '../drivers/memory.ts' ;
2+
3+ // Re-export the main class for convenience
4+ export { InMemoryQueue , type InMemoryQueueOptions } from '../drivers/memory.ts' ;
5+
6+ /**
7+ * Convenience factory for creating in-memory queues.
8+ *
9+ * @param name Queue name (required)
10+ * @param options Optional configuration
11+ * @returns InMemoryQueue instance
12+ *
13+ * @example
14+ * ```typescript
15+ * import { createMemoryQueue } from '@muniter/queue/memory';
16+ *
17+ * interface MyJobs {
18+ * 'send-email': { to: string; subject: string };
19+ * 'process-image': { url: string; width: number };
20+ * }
21+ *
22+ * const queue = createMemoryQueue<MyJobs>('test-queue', {
23+ * maxJobs: 1000
24+ * });
25+ *
26+ * queue.setHandlers({
27+ * 'send-email': async ({ payload }) => {
28+ * console.log(`Sending email to ${payload.to}`);
29+ * },
30+ * 'process-image': async ({ payload }) => {
31+ * console.log(`Processing image: ${payload.url}`);
32+ * }
33+ * });
34+ *
35+ * await queue.addJob('send-email', {
36+ * payload: { to: 'user@example .com', subject: 'Test' },
37+ * priority: 5,
38+ * delay: 10
39+ * });
40+ *
41+ * await queue.run(true, 1);
42+ * ```
43+ */
44+ export function createMemoryQueue < T = Record < string , any > > (
45+ name : string ,
46+ options : Omit < InMemoryQueueOptions , 'name' > = { }
47+ ) : MemoryQueue < T > {
48+ return new MemoryQueue < T > ( { name, ...options } ) ;
49+ }
50+
51+ // Export for convenience
52+ export { MemoryQueue } ;
0 commit comments