@digilogiclabs/platform-core 1.0.0 → 1.1.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.
@@ -217,24 +217,54 @@ interface IEmail {
217
217
  /**
218
218
  * Queue abstraction interface
219
219
  * Provides a vendor-agnostic way to work with job queues
220
+ *
221
+ * Design Principles:
222
+ * - Self-hostable: Works with Redis (BullMQ) or in-memory for testing
223
+ * - No cloud lock-in: All adapters use open-source technologies
224
+ * - Backward compatible: All new fields/methods are optional
225
+ * - Zero external costs: Only requires self-hosted Redis for production
220
226
  */
227
+ interface BackoffOptions {
228
+ type: 'fixed' | 'exponential';
229
+ delay: number;
230
+ /** Maximum delay for exponential backoff (ms) */
231
+ maxDelay?: number;
232
+ }
233
+ interface RepeatOptions {
234
+ /** Repeat every N milliseconds */
235
+ every?: number;
236
+ /** Cron expression (e.g., "0 * * * *" for hourly) */
237
+ cron?: string;
238
+ /** Timezone for cron (e.g., "America/New_York") */
239
+ tz?: string;
240
+ /** Maximum number of times to repeat */
241
+ limit?: number;
242
+ }
221
243
  interface JobOptions {
222
244
  /** Delay before job is processed (ms) */
223
245
  delay?: number;
224
246
  /** Number of retry attempts */
225
247
  attempts?: number;
226
248
  /** Backoff strategy */
227
- backoff?: {
228
- type: 'fixed' | 'exponential';
229
- delay: number;
230
- };
249
+ backoff?: BackoffOptions;
231
250
  /** Job priority (higher = more priority) */
232
251
  priority?: number;
233
252
  /** Remove job after completion */
234
253
  removeOnComplete?: boolean | number;
235
254
  /** Remove job after failure */
236
255
  removeOnFail?: boolean | number;
256
+ /** Job timeout in milliseconds (new) */
257
+ timeout?: number;
258
+ /** Custom job ID (new) */
259
+ jobId?: string;
260
+ /** Repeat/cron options (new) */
261
+ repeat?: RepeatOptions;
262
+ /** Correlation ID for tracing (new) */
263
+ correlationId?: string;
264
+ /** Custom metadata (new) */
265
+ metadata?: Record<string, unknown>;
237
266
  }
267
+ type JobState = 'waiting' | 'active' | 'completed' | 'failed' | 'delayed';
238
268
  interface Job<T = unknown> {
239
269
  id: string;
240
270
  name: string;
@@ -242,12 +272,52 @@ interface Job<T = unknown> {
242
272
  attemptsMade: number;
243
273
  progress: number;
244
274
  timestamp: number;
275
+ /** Job state (new, optional) */
276
+ state?: JobState;
277
+ /** Processing start time (new, optional) */
278
+ processedOn?: number;
279
+ /** Completion time (new, optional) */
280
+ finishedOn?: number;
281
+ /** Failure reason (new, optional) */
282
+ failedReason?: string;
283
+ /** Correlation ID (new, optional) */
284
+ correlationId?: string;
285
+ /** Custom metadata (new, optional) */
286
+ metadata?: Record<string, unknown>;
245
287
  }
246
288
  interface JobResult<T = unknown> {
247
289
  jobId: string;
248
290
  result?: T;
249
291
  error?: Error;
292
+ /** Duration in ms (new, optional) */
293
+ duration?: number;
294
+ }
295
+ interface JobContext<T = unknown> {
296
+ job: Job<T>;
297
+ /** Update job progress (0-100) */
298
+ updateProgress(progress: number): Promise<void>;
299
+ /** Log message for this job */
300
+ log(message: string): void;
301
+ /** Check if job timed out */
302
+ isTimedOut(): boolean;
250
303
  }
304
+ interface QueueStats {
305
+ waiting: number;
306
+ active: number;
307
+ completed: number;
308
+ failed: number;
309
+ delayed: number;
310
+ }
311
+ type JobEventType = 'completed' | 'failed' | 'progress' | 'active' | 'stalled';
312
+ interface JobEvent<T = unknown> {
313
+ type: JobEventType;
314
+ job: Job<T>;
315
+ result?: unknown;
316
+ error?: Error;
317
+ progress?: number;
318
+ timestamp: number;
319
+ }
320
+ type JobEventHandler<T = unknown> = (event: JobEvent<T>) => void | Promise<void>;
251
321
  interface IQueue<T = unknown> {
252
322
  /**
253
323
  * Add a job to the queue
@@ -262,9 +332,12 @@ interface IQueue<T = unknown> {
262
332
  options?: JobOptions;
263
333
  }>): Promise<Job<T>[]>;
264
334
  /**
265
- * Process jobs
335
+ * Process jobs (backward compatible signature)
336
+ * New signature with options is also supported
266
337
  */
267
- process(handler: (job: Job<T>) => Promise<unknown>): void;
338
+ process(handler: (job: Job<T>) => Promise<unknown>, options?: {
339
+ concurrency?: number;
340
+ }): void;
268
341
  /**
269
342
  * Get a job by ID
270
343
  */
@@ -284,13 +357,7 @@ interface IQueue<T = unknown> {
284
357
  /**
285
358
  * Get queue statistics
286
359
  */
287
- getStats(): Promise<{
288
- waiting: number;
289
- active: number;
290
- completed: number;
291
- failed: number;
292
- delayed: number;
293
- }>;
360
+ getStats(): Promise<QueueStats>;
294
361
  /**
295
362
  * Check queue connectivity
296
363
  */
@@ -299,7 +366,62 @@ interface IQueue<T = unknown> {
299
366
  * Close queue connection
300
367
  */
301
368
  close(): Promise<void>;
369
+ /**
370
+ * Add a recurring job (cron/interval)
371
+ * @throws {Error} If adapter doesn't support recurring jobs
372
+ */
373
+ addRecurring?(name: string, data: T, repeat: RepeatOptions, options?: Omit<JobOptions, 'repeat'>): Promise<Job<T>>;
374
+ /**
375
+ * Get jobs by state
376
+ */
377
+ getJobs?(state: JobState | JobState[], start?: number, end?: number): Promise<Job<T>[]>;
378
+ /**
379
+ * Get failed jobs (dead letter queue)
380
+ */
381
+ getFailedJobs?(start?: number, end?: number): Promise<Job<T>[]>;
382
+ /**
383
+ * Retry a failed job
384
+ */
385
+ retryJob?(id: string): Promise<void>;
386
+ /**
387
+ * Replay all failed jobs
388
+ */
389
+ replayAllFailed?(): Promise<number>;
390
+ /**
391
+ * Update job progress
392
+ */
393
+ updateProgress?(id: string, progress: number): Promise<void>;
394
+ /**
395
+ * Clean old jobs
396
+ */
397
+ clean?(grace: number, limit: number, state: JobState): Promise<string[]>;
398
+ /**
399
+ * Remove all jobs
400
+ */
401
+ obliterate?(options?: {
402
+ force?: boolean;
403
+ }): Promise<void>;
404
+ /**
405
+ * Subscribe to job events
406
+ */
407
+ on?(event: JobEventType, handler: JobEventHandler<T>): void;
408
+ /**
409
+ * Unsubscribe from job events
410
+ */
411
+ off?(event: JobEventType, handler: JobEventHandler<T>): void;
412
+ /**
413
+ * Get queue name
414
+ */
415
+ getName?(): string;
302
416
  }
417
+ /**
418
+ * Calculate exponential backoff delay
419
+ */
420
+ declare function calculateBackoff(attempt: number, options: BackoffOptions): number;
421
+ /**
422
+ * Generate a unique job ID
423
+ */
424
+ declare function generateJobId(): string;
303
425
 
304
426
  /**
305
427
  * Logger Interface
@@ -1143,8 +1265,8 @@ declare const StorageConfigSchema: z.ZodEffects<z.ZodObject<{
1143
1265
  bucket?: string | undefined;
1144
1266
  publicUrl?: string | undefined;
1145
1267
  }, {
1146
- provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1147
1268
  endpoint?: string | undefined;
1269
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1148
1270
  region?: string | undefined;
1149
1271
  accessKey?: string | undefined;
1150
1272
  secretKey?: string | undefined;
@@ -1163,8 +1285,8 @@ declare const StorageConfigSchema: z.ZodEffects<z.ZodObject<{
1163
1285
  bucket?: string | undefined;
1164
1286
  publicUrl?: string | undefined;
1165
1287
  }, {
1166
- provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1167
1288
  endpoint?: string | undefined;
1289
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1168
1290
  region?: string | undefined;
1169
1291
  accessKey?: string | undefined;
1170
1292
  secretKey?: string | undefined;
@@ -1185,7 +1307,7 @@ declare const EmailConfigSchema: z.ZodEffects<z.ZodObject<{
1185
1307
  replyTo: z.ZodOptional<z.ZodString>;
1186
1308
  rateLimitPerSecond: z.ZodDefault<z.ZodNumber>;
1187
1309
  }, "strip", z.ZodTypeAny, {
1188
- provider: "console" | "memory" | "smtp" | "resend";
1310
+ provider: "console" | "smtp" | "memory" | "resend";
1189
1311
  secure: boolean;
1190
1312
  rateLimitPerSecond: number;
1191
1313
  host?: string | undefined;
@@ -1196,7 +1318,7 @@ declare const EmailConfigSchema: z.ZodEffects<z.ZodObject<{
1196
1318
  from?: string | undefined;
1197
1319
  replyTo?: string | undefined;
1198
1320
  }, {
1199
- provider?: "console" | "memory" | "smtp" | "resend" | undefined;
1321
+ provider?: "console" | "smtp" | "memory" | "resend" | undefined;
1200
1322
  host?: string | undefined;
1201
1323
  port?: number | undefined;
1202
1324
  secure?: boolean | undefined;
@@ -1207,7 +1329,7 @@ declare const EmailConfigSchema: z.ZodEffects<z.ZodObject<{
1207
1329
  replyTo?: string | undefined;
1208
1330
  rateLimitPerSecond?: number | undefined;
1209
1331
  }>, {
1210
- provider: "console" | "memory" | "smtp" | "resend";
1332
+ provider: "console" | "smtp" | "memory" | "resend";
1211
1333
  secure: boolean;
1212
1334
  rateLimitPerSecond: number;
1213
1335
  host?: string | undefined;
@@ -1218,7 +1340,7 @@ declare const EmailConfigSchema: z.ZodEffects<z.ZodObject<{
1218
1340
  from?: string | undefined;
1219
1341
  replyTo?: string | undefined;
1220
1342
  }, {
1221
- provider?: "console" | "memory" | "smtp" | "resend" | undefined;
1343
+ provider?: "console" | "smtp" | "memory" | "resend" | undefined;
1222
1344
  host?: string | undefined;
1223
1345
  port?: number | undefined;
1224
1346
  secure?: boolean | undefined;
@@ -1239,41 +1361,41 @@ declare const QueueConfigSchema: z.ZodEffects<z.ZodObject<{
1239
1361
  removeOnComplete: z.ZodDefault<z.ZodBoolean>;
1240
1362
  removeOnFail: z.ZodDefault<z.ZodBoolean>;
1241
1363
  }, "strip", z.ZodTypeAny, {
1364
+ removeOnComplete: boolean;
1365
+ removeOnFail: boolean;
1242
1366
  provider: "memory" | "bullmq";
1243
1367
  maxRetries: number;
1244
1368
  queueName: string;
1245
1369
  concurrency: number;
1246
1370
  retryDelay: number;
1247
- removeOnComplete: boolean;
1248
- removeOnFail: boolean;
1249
1371
  redisUrl?: string | undefined;
1250
1372
  }, {
1373
+ removeOnComplete?: boolean | undefined;
1374
+ removeOnFail?: boolean | undefined;
1251
1375
  provider?: "memory" | "bullmq" | undefined;
1252
1376
  maxRetries?: number | undefined;
1253
1377
  redisUrl?: string | undefined;
1254
1378
  queueName?: string | undefined;
1255
1379
  concurrency?: number | undefined;
1256
1380
  retryDelay?: number | undefined;
1257
- removeOnComplete?: boolean | undefined;
1258
- removeOnFail?: boolean | undefined;
1259
1381
  }>, {
1382
+ removeOnComplete: boolean;
1383
+ removeOnFail: boolean;
1260
1384
  provider: "memory" | "bullmq";
1261
1385
  maxRetries: number;
1262
1386
  queueName: string;
1263
1387
  concurrency: number;
1264
1388
  retryDelay: number;
1265
- removeOnComplete: boolean;
1266
- removeOnFail: boolean;
1267
1389
  redisUrl?: string | undefined;
1268
1390
  }, {
1391
+ removeOnComplete?: boolean | undefined;
1392
+ removeOnFail?: boolean | undefined;
1269
1393
  provider?: "memory" | "bullmq" | undefined;
1270
1394
  maxRetries?: number | undefined;
1271
1395
  redisUrl?: string | undefined;
1272
1396
  queueName?: string | undefined;
1273
1397
  concurrency?: number | undefined;
1274
1398
  retryDelay?: number | undefined;
1275
- removeOnComplete?: boolean | undefined;
1276
- removeOnFail?: boolean | undefined;
1277
1399
  }>;
1278
1400
  declare const RetryConfigSchema: z.ZodObject<{
1279
1401
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -1325,20 +1447,20 @@ declare const TimeoutConfigSchema: z.ZodObject<{
1325
1447
  email: z.ZodDefault<z.ZodNumber>;
1326
1448
  queue: z.ZodDefault<z.ZodNumber>;
1327
1449
  }, "strip", z.ZodTypeAny, {
1450
+ email: number;
1328
1451
  enabled: boolean;
1329
1452
  default: number;
1330
1453
  database: number;
1331
1454
  cache: number;
1332
1455
  storage: number;
1333
- email: number;
1334
1456
  queue: number;
1335
1457
  }, {
1458
+ email?: number | undefined;
1336
1459
  enabled?: boolean | undefined;
1337
1460
  default?: number | undefined;
1338
1461
  database?: number | undefined;
1339
1462
  cache?: number | undefined;
1340
1463
  storage?: number | undefined;
1341
- email?: number | undefined;
1342
1464
  queue?: number | undefined;
1343
1465
  }>;
1344
1466
  declare const BulkheadConfigSchema: z.ZodObject<{
@@ -1347,15 +1469,15 @@ declare const BulkheadConfigSchema: z.ZodObject<{
1347
1469
  maxQueued: z.ZodDefault<z.ZodNumber>;
1348
1470
  timeout: z.ZodDefault<z.ZodNumber>;
1349
1471
  }, "strip", z.ZodTypeAny, {
1472
+ timeout: number;
1350
1473
  enabled: boolean;
1351
1474
  maxConcurrent: number;
1352
1475
  maxQueued: number;
1353
- timeout: number;
1354
1476
  }, {
1477
+ timeout?: number | undefined;
1355
1478
  enabled?: boolean | undefined;
1356
1479
  maxConcurrent?: number | undefined;
1357
1480
  maxQueued?: number | undefined;
1358
- timeout?: number | undefined;
1359
1481
  }>;
1360
1482
  declare const ResilienceConfigSchema: z.ZodObject<{
1361
1483
  retry: z.ZodDefault<z.ZodObject<{
@@ -1408,20 +1530,20 @@ declare const ResilienceConfigSchema: z.ZodObject<{
1408
1530
  email: z.ZodDefault<z.ZodNumber>;
1409
1531
  queue: z.ZodDefault<z.ZodNumber>;
1410
1532
  }, "strip", z.ZodTypeAny, {
1533
+ email: number;
1411
1534
  enabled: boolean;
1412
1535
  default: number;
1413
1536
  database: number;
1414
1537
  cache: number;
1415
1538
  storage: number;
1416
- email: number;
1417
1539
  queue: number;
1418
1540
  }, {
1541
+ email?: number | undefined;
1419
1542
  enabled?: boolean | undefined;
1420
1543
  default?: number | undefined;
1421
1544
  database?: number | undefined;
1422
1545
  cache?: number | undefined;
1423
1546
  storage?: number | undefined;
1424
- email?: number | undefined;
1425
1547
  queue?: number | undefined;
1426
1548
  }>>;
1427
1549
  bulkhead: z.ZodDefault<z.ZodObject<{
@@ -1430,24 +1552,24 @@ declare const ResilienceConfigSchema: z.ZodObject<{
1430
1552
  maxQueued: z.ZodDefault<z.ZodNumber>;
1431
1553
  timeout: z.ZodDefault<z.ZodNumber>;
1432
1554
  }, "strip", z.ZodTypeAny, {
1555
+ timeout: number;
1433
1556
  enabled: boolean;
1434
1557
  maxConcurrent: number;
1435
1558
  maxQueued: number;
1436
- timeout: number;
1437
1559
  }, {
1560
+ timeout?: number | undefined;
1438
1561
  enabled?: boolean | undefined;
1439
1562
  maxConcurrent?: number | undefined;
1440
1563
  maxQueued?: number | undefined;
1441
- timeout?: number | undefined;
1442
1564
  }>>;
1443
1565
  }, "strip", z.ZodTypeAny, {
1444
1566
  timeout: {
1567
+ email: number;
1445
1568
  enabled: boolean;
1446
1569
  default: number;
1447
1570
  database: number;
1448
1571
  cache: number;
1449
1572
  storage: number;
1450
- email: number;
1451
1573
  queue: number;
1452
1574
  };
1453
1575
  retry: {
@@ -1466,19 +1588,19 @@ declare const ResilienceConfigSchema: z.ZodObject<{
1466
1588
  monitorInterval: number;
1467
1589
  };
1468
1590
  bulkhead: {
1591
+ timeout: number;
1469
1592
  enabled: boolean;
1470
1593
  maxConcurrent: number;
1471
1594
  maxQueued: number;
1472
- timeout: number;
1473
1595
  };
1474
1596
  }, {
1475
1597
  timeout?: {
1598
+ email?: number | undefined;
1476
1599
  enabled?: boolean | undefined;
1477
1600
  default?: number | undefined;
1478
1601
  database?: number | undefined;
1479
1602
  cache?: number | undefined;
1480
1603
  storage?: number | undefined;
1481
- email?: number | undefined;
1482
1604
  queue?: number | undefined;
1483
1605
  } | undefined;
1484
1606
  retry?: {
@@ -1497,10 +1619,10 @@ declare const ResilienceConfigSchema: z.ZodObject<{
1497
1619
  monitorInterval?: number | undefined;
1498
1620
  } | undefined;
1499
1621
  bulkhead?: {
1622
+ timeout?: number | undefined;
1500
1623
  enabled?: boolean | undefined;
1501
1624
  maxConcurrent?: number | undefined;
1502
1625
  maxQueued?: number | undefined;
1503
- timeout?: number | undefined;
1504
1626
  } | undefined;
1505
1627
  }>;
1506
1628
  declare const LoggingConfigSchema: z.ZodObject<{
@@ -1552,8 +1674,8 @@ declare const TracingConfigSchema: z.ZodObject<{
1552
1674
  endpoint: z.ZodOptional<z.ZodString>;
1553
1675
  exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
1554
1676
  }, "strip", z.ZodTypeAny, {
1555
- provider: "otlp" | "memory" | "noop";
1556
1677
  enabled: boolean;
1678
+ provider: "otlp" | "memory" | "noop";
1557
1679
  sampleRate: number;
1558
1680
  propagateContext: boolean;
1559
1681
  exporterType: "console" | "otlp-http" | "otlp-grpc";
@@ -1563,9 +1685,9 @@ declare const TracingConfigSchema: z.ZodObject<{
1563
1685
  serviceVersion?: string | undefined;
1564
1686
  }, {
1565
1687
  environment?: string | undefined;
1566
- provider?: "otlp" | "memory" | "noop" | undefined;
1567
1688
  endpoint?: string | undefined;
1568
1689
  enabled?: boolean | undefined;
1690
+ provider?: "otlp" | "memory" | "noop" | undefined;
1569
1691
  serviceName?: string | undefined;
1570
1692
  serviceVersion?: string | undefined;
1571
1693
  sampleRate?: number | undefined;
@@ -1622,8 +1744,8 @@ declare const ObservabilityConfigSchema: z.ZodObject<{
1622
1744
  endpoint: z.ZodOptional<z.ZodString>;
1623
1745
  exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
1624
1746
  }, "strip", z.ZodTypeAny, {
1625
- provider: "otlp" | "memory" | "noop";
1626
1747
  enabled: boolean;
1748
+ provider: "otlp" | "memory" | "noop";
1627
1749
  sampleRate: number;
1628
1750
  propagateContext: boolean;
1629
1751
  exporterType: "console" | "otlp-http" | "otlp-grpc";
@@ -1633,9 +1755,9 @@ declare const ObservabilityConfigSchema: z.ZodObject<{
1633
1755
  serviceVersion?: string | undefined;
1634
1756
  }, {
1635
1757
  environment?: string | undefined;
1636
- provider?: "otlp" | "memory" | "noop" | undefined;
1637
1758
  endpoint?: string | undefined;
1638
1759
  enabled?: boolean | undefined;
1760
+ provider?: "otlp" | "memory" | "noop" | undefined;
1639
1761
  serviceName?: string | undefined;
1640
1762
  serviceVersion?: string | undefined;
1641
1763
  sampleRate?: number | undefined;
@@ -1658,8 +1780,8 @@ declare const ObservabilityConfigSchema: z.ZodObject<{
1658
1780
  histogramBuckets: number[];
1659
1781
  };
1660
1782
  tracing: {
1661
- provider: "otlp" | "memory" | "noop";
1662
1783
  enabled: boolean;
1784
+ provider: "otlp" | "memory" | "noop";
1663
1785
  sampleRate: number;
1664
1786
  propagateContext: boolean;
1665
1787
  exporterType: "console" | "otlp-http" | "otlp-grpc";
@@ -1685,9 +1807,9 @@ declare const ObservabilityConfigSchema: z.ZodObject<{
1685
1807
  } | undefined;
1686
1808
  tracing?: {
1687
1809
  environment?: string | undefined;
1688
- provider?: "otlp" | "memory" | "noop" | undefined;
1689
1810
  endpoint?: string | undefined;
1690
1811
  enabled?: boolean | undefined;
1812
+ provider?: "otlp" | "memory" | "noop" | undefined;
1691
1813
  serviceName?: string | undefined;
1692
1814
  serviceVersion?: string | undefined;
1693
1815
  sampleRate?: number | undefined;
@@ -1713,17 +1835,17 @@ declare const MiddlewareConfigSchema: z.ZodObject<{
1713
1835
  enabled: z.ZodDefault<z.ZodBoolean>;
1714
1836
  defaultTTL: z.ZodDefault<z.ZodNumber>;
1715
1837
  }, "strip", z.ZodTypeAny, {
1716
- defaultTTL: number;
1717
1838
  enabled: boolean;
1839
+ defaultTTL: number;
1718
1840
  }, {
1719
- defaultTTL?: number | undefined;
1720
1841
  enabled?: boolean | undefined;
1842
+ defaultTTL?: number | undefined;
1721
1843
  }>>;
1722
1844
  }, "strip", z.ZodTypeAny, {
1723
1845
  enabled: boolean;
1724
1846
  cache: {
1725
- defaultTTL: number;
1726
1847
  enabled: boolean;
1848
+ defaultTTL: number;
1727
1849
  };
1728
1850
  logging: boolean;
1729
1851
  metrics: boolean;
@@ -1734,8 +1856,8 @@ declare const MiddlewareConfigSchema: z.ZodObject<{
1734
1856
  }, {
1735
1857
  enabled?: boolean | undefined;
1736
1858
  cache?: {
1737
- defaultTTL?: number | undefined;
1738
1859
  enabled?: boolean | undefined;
1860
+ defaultTTL?: number | undefined;
1739
1861
  } | undefined;
1740
1862
  logging?: boolean | undefined;
1741
1863
  metrics?: boolean | undefined;
@@ -1872,8 +1994,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
1872
1994
  bucket?: string | undefined;
1873
1995
  publicUrl?: string | undefined;
1874
1996
  }, {
1875
- provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1876
1997
  endpoint?: string | undefined;
1998
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1877
1999
  region?: string | undefined;
1878
2000
  accessKey?: string | undefined;
1879
2001
  secretKey?: string | undefined;
@@ -1892,8 +2014,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
1892
2014
  bucket?: string | undefined;
1893
2015
  publicUrl?: string | undefined;
1894
2016
  }, {
1895
- provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1896
2017
  endpoint?: string | undefined;
2018
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
1897
2019
  region?: string | undefined;
1898
2020
  accessKey?: string | undefined;
1899
2021
  secretKey?: string | undefined;
@@ -1914,7 +2036,7 @@ declare const PlatformConfigSchema: z.ZodObject<{
1914
2036
  replyTo: z.ZodOptional<z.ZodString>;
1915
2037
  rateLimitPerSecond: z.ZodDefault<z.ZodNumber>;
1916
2038
  }, "strip", z.ZodTypeAny, {
1917
- provider: "console" | "memory" | "smtp" | "resend";
2039
+ provider: "console" | "smtp" | "memory" | "resend";
1918
2040
  secure: boolean;
1919
2041
  rateLimitPerSecond: number;
1920
2042
  host?: string | undefined;
@@ -1925,7 +2047,7 @@ declare const PlatformConfigSchema: z.ZodObject<{
1925
2047
  from?: string | undefined;
1926
2048
  replyTo?: string | undefined;
1927
2049
  }, {
1928
- provider?: "console" | "memory" | "smtp" | "resend" | undefined;
2050
+ provider?: "console" | "smtp" | "memory" | "resend" | undefined;
1929
2051
  host?: string | undefined;
1930
2052
  port?: number | undefined;
1931
2053
  secure?: boolean | undefined;
@@ -1936,7 +2058,7 @@ declare const PlatformConfigSchema: z.ZodObject<{
1936
2058
  replyTo?: string | undefined;
1937
2059
  rateLimitPerSecond?: number | undefined;
1938
2060
  }>, {
1939
- provider: "console" | "memory" | "smtp" | "resend";
2061
+ provider: "console" | "smtp" | "memory" | "resend";
1940
2062
  secure: boolean;
1941
2063
  rateLimitPerSecond: number;
1942
2064
  host?: string | undefined;
@@ -1947,7 +2069,7 @@ declare const PlatformConfigSchema: z.ZodObject<{
1947
2069
  from?: string | undefined;
1948
2070
  replyTo?: string | undefined;
1949
2071
  }, {
1950
- provider?: "console" | "memory" | "smtp" | "resend" | undefined;
2072
+ provider?: "console" | "smtp" | "memory" | "resend" | undefined;
1951
2073
  host?: string | undefined;
1952
2074
  port?: number | undefined;
1953
2075
  secure?: boolean | undefined;
@@ -1968,41 +2090,41 @@ declare const PlatformConfigSchema: z.ZodObject<{
1968
2090
  removeOnComplete: z.ZodDefault<z.ZodBoolean>;
1969
2091
  removeOnFail: z.ZodDefault<z.ZodBoolean>;
1970
2092
  }, "strip", z.ZodTypeAny, {
2093
+ removeOnComplete: boolean;
2094
+ removeOnFail: boolean;
1971
2095
  provider: "memory" | "bullmq";
1972
2096
  maxRetries: number;
1973
2097
  queueName: string;
1974
2098
  concurrency: number;
1975
2099
  retryDelay: number;
1976
- removeOnComplete: boolean;
1977
- removeOnFail: boolean;
1978
2100
  redisUrl?: string | undefined;
1979
2101
  }, {
2102
+ removeOnComplete?: boolean | undefined;
2103
+ removeOnFail?: boolean | undefined;
1980
2104
  provider?: "memory" | "bullmq" | undefined;
1981
2105
  maxRetries?: number | undefined;
1982
2106
  redisUrl?: string | undefined;
1983
2107
  queueName?: string | undefined;
1984
2108
  concurrency?: number | undefined;
1985
2109
  retryDelay?: number | undefined;
1986
- removeOnComplete?: boolean | undefined;
1987
- removeOnFail?: boolean | undefined;
1988
2110
  }>, {
2111
+ removeOnComplete: boolean;
2112
+ removeOnFail: boolean;
1989
2113
  provider: "memory" | "bullmq";
1990
2114
  maxRetries: number;
1991
2115
  queueName: string;
1992
2116
  concurrency: number;
1993
2117
  retryDelay: number;
1994
- removeOnComplete: boolean;
1995
- removeOnFail: boolean;
1996
2118
  redisUrl?: string | undefined;
1997
2119
  }, {
2120
+ removeOnComplete?: boolean | undefined;
2121
+ removeOnFail?: boolean | undefined;
1998
2122
  provider?: "memory" | "bullmq" | undefined;
1999
2123
  maxRetries?: number | undefined;
2000
2124
  redisUrl?: string | undefined;
2001
2125
  queueName?: string | undefined;
2002
2126
  concurrency?: number | undefined;
2003
2127
  retryDelay?: number | undefined;
2004
- removeOnComplete?: boolean | undefined;
2005
- removeOnFail?: boolean | undefined;
2006
2128
  }>>;
2007
2129
  resilience: z.ZodDefault<z.ZodObject<{
2008
2130
  retry: z.ZodDefault<z.ZodObject<{
@@ -2055,20 +2177,20 @@ declare const PlatformConfigSchema: z.ZodObject<{
2055
2177
  email: z.ZodDefault<z.ZodNumber>;
2056
2178
  queue: z.ZodDefault<z.ZodNumber>;
2057
2179
  }, "strip", z.ZodTypeAny, {
2180
+ email: number;
2058
2181
  enabled: boolean;
2059
2182
  default: number;
2060
2183
  database: number;
2061
2184
  cache: number;
2062
2185
  storage: number;
2063
- email: number;
2064
2186
  queue: number;
2065
2187
  }, {
2188
+ email?: number | undefined;
2066
2189
  enabled?: boolean | undefined;
2067
2190
  default?: number | undefined;
2068
2191
  database?: number | undefined;
2069
2192
  cache?: number | undefined;
2070
2193
  storage?: number | undefined;
2071
- email?: number | undefined;
2072
2194
  queue?: number | undefined;
2073
2195
  }>>;
2074
2196
  bulkhead: z.ZodDefault<z.ZodObject<{
@@ -2077,24 +2199,24 @@ declare const PlatformConfigSchema: z.ZodObject<{
2077
2199
  maxQueued: z.ZodDefault<z.ZodNumber>;
2078
2200
  timeout: z.ZodDefault<z.ZodNumber>;
2079
2201
  }, "strip", z.ZodTypeAny, {
2202
+ timeout: number;
2080
2203
  enabled: boolean;
2081
2204
  maxConcurrent: number;
2082
2205
  maxQueued: number;
2083
- timeout: number;
2084
2206
  }, {
2207
+ timeout?: number | undefined;
2085
2208
  enabled?: boolean | undefined;
2086
2209
  maxConcurrent?: number | undefined;
2087
2210
  maxQueued?: number | undefined;
2088
- timeout?: number | undefined;
2089
2211
  }>>;
2090
2212
  }, "strip", z.ZodTypeAny, {
2091
2213
  timeout: {
2214
+ email: number;
2092
2215
  enabled: boolean;
2093
2216
  default: number;
2094
2217
  database: number;
2095
2218
  cache: number;
2096
2219
  storage: number;
2097
- email: number;
2098
2220
  queue: number;
2099
2221
  };
2100
2222
  retry: {
@@ -2113,19 +2235,19 @@ declare const PlatformConfigSchema: z.ZodObject<{
2113
2235
  monitorInterval: number;
2114
2236
  };
2115
2237
  bulkhead: {
2238
+ timeout: number;
2116
2239
  enabled: boolean;
2117
2240
  maxConcurrent: number;
2118
2241
  maxQueued: number;
2119
- timeout: number;
2120
2242
  };
2121
2243
  }, {
2122
2244
  timeout?: {
2245
+ email?: number | undefined;
2123
2246
  enabled?: boolean | undefined;
2124
2247
  default?: number | undefined;
2125
2248
  database?: number | undefined;
2126
2249
  cache?: number | undefined;
2127
2250
  storage?: number | undefined;
2128
- email?: number | undefined;
2129
2251
  queue?: number | undefined;
2130
2252
  } | undefined;
2131
2253
  retry?: {
@@ -2144,10 +2266,10 @@ declare const PlatformConfigSchema: z.ZodObject<{
2144
2266
  monitorInterval?: number | undefined;
2145
2267
  } | undefined;
2146
2268
  bulkhead?: {
2269
+ timeout?: number | undefined;
2147
2270
  enabled?: boolean | undefined;
2148
2271
  maxConcurrent?: number | undefined;
2149
2272
  maxQueued?: number | undefined;
2150
- timeout?: number | undefined;
2151
2273
  } | undefined;
2152
2274
  }>>;
2153
2275
  observability: z.ZodDefault<z.ZodObject<{
@@ -2200,8 +2322,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
2200
2322
  endpoint: z.ZodOptional<z.ZodString>;
2201
2323
  exporterType: z.ZodDefault<z.ZodEnum<["otlp-http", "otlp-grpc", "console"]>>;
2202
2324
  }, "strip", z.ZodTypeAny, {
2203
- provider: "otlp" | "memory" | "noop";
2204
2325
  enabled: boolean;
2326
+ provider: "otlp" | "memory" | "noop";
2205
2327
  sampleRate: number;
2206
2328
  propagateContext: boolean;
2207
2329
  exporterType: "console" | "otlp-http" | "otlp-grpc";
@@ -2211,9 +2333,9 @@ declare const PlatformConfigSchema: z.ZodObject<{
2211
2333
  serviceVersion?: string | undefined;
2212
2334
  }, {
2213
2335
  environment?: string | undefined;
2214
- provider?: "otlp" | "memory" | "noop" | undefined;
2215
2336
  endpoint?: string | undefined;
2216
2337
  enabled?: boolean | undefined;
2338
+ provider?: "otlp" | "memory" | "noop" | undefined;
2217
2339
  serviceName?: string | undefined;
2218
2340
  serviceVersion?: string | undefined;
2219
2341
  sampleRate?: number | undefined;
@@ -2236,8 +2358,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
2236
2358
  histogramBuckets: number[];
2237
2359
  };
2238
2360
  tracing: {
2239
- provider: "otlp" | "memory" | "noop";
2240
2361
  enabled: boolean;
2362
+ provider: "otlp" | "memory" | "noop";
2241
2363
  sampleRate: number;
2242
2364
  propagateContext: boolean;
2243
2365
  exporterType: "console" | "otlp-http" | "otlp-grpc";
@@ -2263,9 +2385,9 @@ declare const PlatformConfigSchema: z.ZodObject<{
2263
2385
  } | undefined;
2264
2386
  tracing?: {
2265
2387
  environment?: string | undefined;
2266
- provider?: "otlp" | "memory" | "noop" | undefined;
2267
2388
  endpoint?: string | undefined;
2268
2389
  enabled?: boolean | undefined;
2390
+ provider?: "otlp" | "memory" | "noop" | undefined;
2269
2391
  serviceName?: string | undefined;
2270
2392
  serviceVersion?: string | undefined;
2271
2393
  sampleRate?: number | undefined;
@@ -2291,17 +2413,17 @@ declare const PlatformConfigSchema: z.ZodObject<{
2291
2413
  enabled: z.ZodDefault<z.ZodBoolean>;
2292
2414
  defaultTTL: z.ZodDefault<z.ZodNumber>;
2293
2415
  }, "strip", z.ZodTypeAny, {
2294
- defaultTTL: number;
2295
2416
  enabled: boolean;
2417
+ defaultTTL: number;
2296
2418
  }, {
2297
- defaultTTL?: number | undefined;
2298
2419
  enabled?: boolean | undefined;
2420
+ defaultTTL?: number | undefined;
2299
2421
  }>>;
2300
2422
  }, "strip", z.ZodTypeAny, {
2301
2423
  enabled: boolean;
2302
2424
  cache: {
2303
- defaultTTL: number;
2304
2425
  enabled: boolean;
2426
+ defaultTTL: number;
2305
2427
  };
2306
2428
  logging: boolean;
2307
2429
  metrics: boolean;
@@ -2312,8 +2434,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
2312
2434
  }, {
2313
2435
  enabled?: boolean | undefined;
2314
2436
  cache?: {
2315
- defaultTTL?: number | undefined;
2316
2437
  enabled?: boolean | undefined;
2438
+ defaultTTL?: number | undefined;
2317
2439
  } | undefined;
2318
2440
  logging?: boolean | undefined;
2319
2441
  metrics?: boolean | undefined;
@@ -2323,6 +2445,18 @@ declare const PlatformConfigSchema: z.ZodObject<{
2323
2445
  } | undefined;
2324
2446
  }>>;
2325
2447
  }, "strip", z.ZodTypeAny, {
2448
+ email: {
2449
+ provider: "console" | "smtp" | "memory" | "resend";
2450
+ secure: boolean;
2451
+ rateLimitPerSecond: number;
2452
+ host?: string | undefined;
2453
+ port?: number | undefined;
2454
+ username?: string | undefined;
2455
+ password?: string | undefined;
2456
+ apiKey?: string | undefined;
2457
+ from?: string | undefined;
2458
+ replyTo?: string | undefined;
2459
+ };
2326
2460
  database: {
2327
2461
  provider: "memory" | "postgres" | "supabase";
2328
2462
  poolSize: number;
@@ -2356,36 +2490,24 @@ declare const PlatformConfigSchema: z.ZodObject<{
2356
2490
  bucket?: string | undefined;
2357
2491
  publicUrl?: string | undefined;
2358
2492
  };
2359
- email: {
2360
- provider: "console" | "memory" | "smtp" | "resend";
2361
- secure: boolean;
2362
- rateLimitPerSecond: number;
2363
- host?: string | undefined;
2364
- port?: number | undefined;
2365
- username?: string | undefined;
2366
- password?: string | undefined;
2367
- apiKey?: string | undefined;
2368
- from?: string | undefined;
2369
- replyTo?: string | undefined;
2370
- };
2371
2493
  queue: {
2494
+ removeOnComplete: boolean;
2495
+ removeOnFail: boolean;
2372
2496
  provider: "memory" | "bullmq";
2373
2497
  maxRetries: number;
2374
2498
  queueName: string;
2375
2499
  concurrency: number;
2376
2500
  retryDelay: number;
2377
- removeOnComplete: boolean;
2378
- removeOnFail: boolean;
2379
2501
  redisUrl?: string | undefined;
2380
2502
  };
2381
2503
  resilience: {
2382
2504
  timeout: {
2505
+ email: number;
2383
2506
  enabled: boolean;
2384
2507
  default: number;
2385
2508
  database: number;
2386
2509
  cache: number;
2387
2510
  storage: number;
2388
- email: number;
2389
2511
  queue: number;
2390
2512
  };
2391
2513
  retry: {
@@ -2404,10 +2526,10 @@ declare const PlatformConfigSchema: z.ZodObject<{
2404
2526
  monitorInterval: number;
2405
2527
  };
2406
2528
  bulkhead: {
2529
+ timeout: number;
2407
2530
  enabled: boolean;
2408
2531
  maxConcurrent: number;
2409
2532
  maxQueued: number;
2410
- timeout: number;
2411
2533
  };
2412
2534
  };
2413
2535
  observability: {
@@ -2426,8 +2548,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
2426
2548
  histogramBuckets: number[];
2427
2549
  };
2428
2550
  tracing: {
2429
- provider: "otlp" | "memory" | "noop";
2430
2551
  enabled: boolean;
2552
+ provider: "otlp" | "memory" | "noop";
2431
2553
  sampleRate: number;
2432
2554
  propagateContext: boolean;
2433
2555
  exporterType: "console" | "otlp-http" | "otlp-grpc";
@@ -2440,8 +2562,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
2440
2562
  middleware: {
2441
2563
  enabled: boolean;
2442
2564
  cache: {
2443
- defaultTTL: number;
2444
2565
  enabled: boolean;
2566
+ defaultTTL: number;
2445
2567
  };
2446
2568
  logging: boolean;
2447
2569
  metrics: boolean;
@@ -2451,6 +2573,18 @@ declare const PlatformConfigSchema: z.ZodObject<{
2451
2573
  };
2452
2574
  };
2453
2575
  }, {
2576
+ email?: {
2577
+ provider?: "console" | "smtp" | "memory" | "resend" | undefined;
2578
+ host?: string | undefined;
2579
+ port?: number | undefined;
2580
+ secure?: boolean | undefined;
2581
+ username?: string | undefined;
2582
+ password?: string | undefined;
2583
+ apiKey?: string | undefined;
2584
+ from?: string | undefined;
2585
+ replyTo?: string | undefined;
2586
+ rateLimitPerSecond?: number | undefined;
2587
+ } | undefined;
2454
2588
  database?: {
2455
2589
  provider?: "memory" | "postgres" | "supabase" | undefined;
2456
2590
  url?: string | undefined;
@@ -2474,8 +2608,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
2474
2608
  maxRetries?: number | undefined;
2475
2609
  } | undefined;
2476
2610
  storage?: {
2477
- provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
2478
2611
  endpoint?: string | undefined;
2612
+ provider?: "memory" | "supabase" | "s3" | "minio" | "r2" | undefined;
2479
2613
  region?: string | undefined;
2480
2614
  accessKey?: string | undefined;
2481
2615
  secretKey?: string | undefined;
@@ -2484,36 +2618,24 @@ declare const PlatformConfigSchema: z.ZodObject<{
2484
2618
  forcePathStyle?: boolean | undefined;
2485
2619
  signedUrlExpiry?: number | undefined;
2486
2620
  } | undefined;
2487
- email?: {
2488
- provider?: "console" | "memory" | "smtp" | "resend" | undefined;
2489
- host?: string | undefined;
2490
- port?: number | undefined;
2491
- secure?: boolean | undefined;
2492
- username?: string | undefined;
2493
- password?: string | undefined;
2494
- apiKey?: string | undefined;
2495
- from?: string | undefined;
2496
- replyTo?: string | undefined;
2497
- rateLimitPerSecond?: number | undefined;
2498
- } | undefined;
2499
2621
  queue?: {
2622
+ removeOnComplete?: boolean | undefined;
2623
+ removeOnFail?: boolean | undefined;
2500
2624
  provider?: "memory" | "bullmq" | undefined;
2501
2625
  maxRetries?: number | undefined;
2502
2626
  redisUrl?: string | undefined;
2503
2627
  queueName?: string | undefined;
2504
2628
  concurrency?: number | undefined;
2505
2629
  retryDelay?: number | undefined;
2506
- removeOnComplete?: boolean | undefined;
2507
- removeOnFail?: boolean | undefined;
2508
2630
  } | undefined;
2509
2631
  resilience?: {
2510
2632
  timeout?: {
2633
+ email?: number | undefined;
2511
2634
  enabled?: boolean | undefined;
2512
2635
  default?: number | undefined;
2513
2636
  database?: number | undefined;
2514
2637
  cache?: number | undefined;
2515
2638
  storage?: number | undefined;
2516
- email?: number | undefined;
2517
2639
  queue?: number | undefined;
2518
2640
  } | undefined;
2519
2641
  retry?: {
@@ -2532,10 +2654,10 @@ declare const PlatformConfigSchema: z.ZodObject<{
2532
2654
  monitorInterval?: number | undefined;
2533
2655
  } | undefined;
2534
2656
  bulkhead?: {
2657
+ timeout?: number | undefined;
2535
2658
  enabled?: boolean | undefined;
2536
2659
  maxConcurrent?: number | undefined;
2537
2660
  maxQueued?: number | undefined;
2538
- timeout?: number | undefined;
2539
2661
  } | undefined;
2540
2662
  } | undefined;
2541
2663
  observability?: {
@@ -2555,9 +2677,9 @@ declare const PlatformConfigSchema: z.ZodObject<{
2555
2677
  } | undefined;
2556
2678
  tracing?: {
2557
2679
  environment?: string | undefined;
2558
- provider?: "otlp" | "memory" | "noop" | undefined;
2559
2680
  endpoint?: string | undefined;
2560
2681
  enabled?: boolean | undefined;
2682
+ provider?: "otlp" | "memory" | "noop" | undefined;
2561
2683
  serviceName?: string | undefined;
2562
2684
  serviceVersion?: string | undefined;
2563
2685
  sampleRate?: number | undefined;
@@ -2568,8 +2690,8 @@ declare const PlatformConfigSchema: z.ZodObject<{
2568
2690
  middleware?: {
2569
2691
  enabled?: boolean | undefined;
2570
2692
  cache?: {
2571
- defaultTTL?: number | undefined;
2572
2693
  enabled?: boolean | undefined;
2694
+ defaultTTL?: number | undefined;
2573
2695
  } | undefined;
2574
2696
  logging?: boolean | undefined;
2575
2697
  metrics?: boolean | undefined;
@@ -2720,45 +2842,86 @@ declare class MemoryEmail implements IEmail {
2720
2842
  get size(): number;
2721
2843
  }
2722
2844
 
2845
+ /**
2846
+ * Enhanced Memory Queue Implementation
2847
+ *
2848
+ * Full-featured in-memory queue for testing with:
2849
+ * - Retry/backoff support
2850
+ * - Job state management
2851
+ * - Event emitters
2852
+ * - Dead letter queue (failed jobs)
2853
+ * - Recurring job support
2854
+ *
2855
+ * Design: Self-contained, no external dependencies, full IQueue compliance
2856
+ */
2857
+
2723
2858
  declare class MemoryQueue<T = unknown> implements IQueue<T> {
2724
2859
  private jobs;
2725
2860
  private handlers;
2861
+ private eventHandlers;
2862
+ private paused;
2863
+ private processingConcurrency;
2864
+ private activeCount;
2865
+ private repeatIntervals;
2866
+ private queueName;
2867
+ private processingQueue;
2868
+ private isProcessing;
2869
+ constructor(name?: string);
2726
2870
  add(name: string, data: T, options?: JobOptions): Promise<Job<T>>;
2727
2871
  addBulk(jobs: Array<{
2728
2872
  name: string;
2729
2873
  data: T;
2730
2874
  options?: JobOptions;
2731
2875
  }>): Promise<Job<T>[]>;
2732
- process(handler: (job: Job<T>) => Promise<unknown>): void;
2876
+ process(handler: (job: Job<T>) => Promise<unknown>, options?: {
2877
+ concurrency?: number;
2878
+ }): void;
2733
2879
  getJob(id: string): Promise<Job<T> | null>;
2734
2880
  removeJob(id: string): Promise<void>;
2735
2881
  pause(): Promise<void>;
2736
2882
  resume(): Promise<void>;
2737
- getStats(): Promise<{
2738
- waiting: number;
2739
- active: number;
2740
- completed: number;
2741
- failed: number;
2742
- delayed: number;
2743
- }>;
2883
+ getStats(): Promise<QueueStats>;
2744
2884
  healthCheck(): Promise<boolean>;
2745
2885
  close(): Promise<void>;
2886
+ addRecurring(name: string, data: T, repeat: RepeatOptions, options?: Omit<JobOptions, "repeat">): Promise<Job<T>>;
2887
+ getJobs(state: JobState | JobState[], start?: number, end?: number): Promise<Job<T>[]>;
2888
+ getFailedJobs(start?: number, end?: number): Promise<Job<T>[]>;
2889
+ retryJob(id: string): Promise<void>;
2890
+ replayAllFailed(): Promise<number>;
2891
+ updateProgress(id: string, progress: number): Promise<void>;
2892
+ clean(grace: number, limit: number, state: JobState): Promise<string[]>;
2893
+ obliterate(options?: {
2894
+ force?: boolean;
2895
+ }): Promise<void>;
2896
+ on(event: JobEventType, handler: JobEventHandler<T>): void;
2897
+ off(event: JobEventType, handler: JobEventHandler<T>): void;
2898
+ getName(): string;
2746
2899
  /**
2747
2900
  * Clear all jobs (for testing)
2748
2901
  */
2749
2902
  clear(): void;
2750
2903
  /**
2751
- * Get all jobs (for testing)
2904
+ * Get all jobs regardless of state (for testing)
2752
2905
  */
2753
- getJobs(): Job<T>[];
2906
+ getAllJobs(): Job<T>[];
2754
2907
  /**
2755
- * Get pending jobs (for testing)
2908
+ * Get pending (waiting) jobs (for testing)
2756
2909
  */
2757
2910
  getPendingJobs(): Job<T>[];
2758
2911
  /**
2759
2912
  * Get number of jobs (for testing)
2760
2913
  */
2761
2914
  get size(): number;
2915
+ /**
2916
+ * Wait for all jobs to complete (for testing)
2917
+ */
2918
+ drain(timeout?: number): Promise<void>;
2919
+ private hasWaitingJobs;
2920
+ private processNext;
2921
+ private executeWithTimeout;
2922
+ private handleJobFailure;
2923
+ private emitEvent;
2924
+ private toPublicJob;
2762
2925
  }
2763
2926
 
2764
2927
  /**
@@ -2783,4 +2946,4 @@ declare class ConsoleEmail implements IEmail {
2783
2946
  private formatAddresses;
2784
2947
  }
2785
2948
 
2786
- export { type SpanContext as $, type LoggerConfig as A, type MetricTags as B, ConsoleEmail as C, type Secret as D, EnvSecrets as E, type SecretMetadata as F, type GetSecretOptions as G, type HistogramStats as H, type IPlatform as I, type Job as J, type SetSecretOptions as K, type LogLevel as L, MemoryDatabase as M, NoopLogger as N, type RotationResult as O, type PlatformHealthStatus as P, type QueryResult as Q, type RotateSecretOptions as R, type StorageFile as S, type TimingStats as T, type UploadOptions as U, createPlatformAsync as V, createScopedMetrics as W, MemoryTracing as X, NoopTracing as Y, type ITracing as Z, type ISpan as _, MemoryCache as a, type SpanOptions as a0, type SpanStatus as a1, type SpanKind as a2, type TracingConfig as a3, type EmailAddress as a4, type EmailAttachment as a5, type SpanStatusCode as a6, type SpanEvent as a7, DatabaseProviderSchema as a8, CacheProviderSchema as a9, type QueueConfig as aA, type ResilienceConfig as aB, type ObservabilityConfig as aC, type MiddlewareConfig as aD, loadConfig as aE, validateConfig as aF, safeValidateConfig as aG, getDefaultConfig as aH, StorageProviderSchema as aa, EmailProviderSchema as ab, QueueProviderSchema as ac, TracingProviderSchema as ad, LogLevelSchema as ae, DatabaseConfigSchema as af, CacheConfigSchema as ag, StorageConfigSchema as ah, EmailConfigSchema as ai, QueueConfigSchema as aj, RetryConfigSchema as ak, CircuitBreakerConfigSchema as al, TimeoutConfigSchema as am, BulkheadConfigSchema as an, ResilienceConfigSchema as ao, LoggingConfigSchema as ap, MetricsConfigSchema as aq, TracingConfigSchema as ar, ObservabilityConfigSchema as as, MiddlewareConfigSchema as at, PlatformConfigSchema as au, type PlatformConfig as av, type DatabaseConfig as aw, type CacheConfig as ax, type StorageConfig as ay, type EmailConfig as az, MemoryStorage as b, MemoryEmail as c, MemoryQueue as d, type IDatabase as e, MemorySecrets as f, createPlatform as g, ConsoleLogger as h, MemoryMetrics as i, NoopMetrics as j, type IQueryBuilder as k, type ICache as l, type IStorage as m, type IEmail as n, type IQueue as o, type ILogger as p, type IMetrics as q, type ISecrets as r, type JobOptions as s, type EmailMessage as t, type MetricsSummary as u, type EmailResult as v, type ICacheOptions as w, type JobResult as x, type LogMeta as y, type LogEntry as z };
2949
+ export { type RotateSecretOptions as $, type JobResult as A, type JobContext as B, ConsoleEmail as C, type JobEvent as D, EnvSecrets as E, type QueueStats as F, type BackoffOptions as G, type LogMeta as H, type IPlatform as I, type Job as J, type LogEntry as K, type LogLevel as L, MemoryDatabase as M, NoopLogger as N, type LoggerConfig as O, type PlatformHealthStatus as P, type QueryResult as Q, type RepeatOptions as R, type StorageFile as S, type MetricTags as T, type UploadOptions as U, type HistogramStats as V, type TimingStats as W, type Secret as X, type SecretMetadata as Y, type GetSecretOptions as Z, type SetSecretOptions as _, MemoryCache as a, type RotationResult as a0, createPlatformAsync as a1, createScopedMetrics as a2, MemoryTracing as a3, NoopTracing as a4, type ITracing as a5, type ISpan as a6, type SpanContext as a7, type SpanOptions as a8, type SpanStatus as a9, MetricsConfigSchema as aA, TracingConfigSchema as aB, ObservabilityConfigSchema as aC, MiddlewareConfigSchema as aD, PlatformConfigSchema as aE, type PlatformConfig as aF, type DatabaseConfig as aG, type CacheConfig as aH, type StorageConfig as aI, type EmailConfig as aJ, type QueueConfig as aK, type ResilienceConfig as aL, type ObservabilityConfig as aM, type MiddlewareConfig as aN, loadConfig as aO, validateConfig as aP, safeValidateConfig as aQ, getDefaultConfig as aR, type SpanKind as aa, type TracingConfig as ab, type EmailAddress as ac, type EmailAttachment as ad, calculateBackoff as ae, generateJobId as af, type SpanStatusCode as ag, type SpanEvent as ah, DatabaseProviderSchema as ai, CacheProviderSchema as aj, StorageProviderSchema as ak, EmailProviderSchema as al, QueueProviderSchema as am, TracingProviderSchema as an, LogLevelSchema as ao, DatabaseConfigSchema as ap, CacheConfigSchema as aq, StorageConfigSchema as ar, EmailConfigSchema as as, QueueConfigSchema as at, RetryConfigSchema as au, CircuitBreakerConfigSchema as av, TimeoutConfigSchema as aw, BulkheadConfigSchema as ax, ResilienceConfigSchema as ay, LoggingConfigSchema as az, MemoryStorage as b, MemoryEmail as c, MemoryQueue as d, type IDatabase as e, MemorySecrets as f, createPlatform as g, ConsoleLogger as h, MemoryMetrics as i, NoopMetrics as j, type IQueryBuilder as k, type ICache as l, type IStorage as m, type IEmail as n, type IQueue as o, type ILogger as p, type IMetrics as q, type ISecrets as r, type JobOptions as s, type EmailMessage as t, type MetricsSummary as u, type EmailResult as v, type JobState as w, type JobEventType as x, type JobEventHandler as y, type ICacheOptions as z };