bunqueue 1.1.3 → 1.2.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.
Files changed (111) hide show
  1. package/README.md +37 -0
  2. package/dist/application/dlqManager.d.ts.map +1 -1
  3. package/dist/application/dlqManager.js +11 -3
  4. package/dist/application/dlqManager.js.map +1 -1
  5. package/dist/application/eventsManager.d.ts +10 -1
  6. package/dist/application/eventsManager.d.ts.map +1 -1
  7. package/dist/application/eventsManager.js +91 -21
  8. package/dist/application/eventsManager.js.map +1 -1
  9. package/dist/application/operations/ack.d.ts +16 -1
  10. package/dist/application/operations/ack.d.ts.map +1 -1
  11. package/dist/application/operations/ack.js +269 -5
  12. package/dist/application/operations/ack.js.map +1 -1
  13. package/dist/application/operations/jobManagement.d.ts.map +1 -1
  14. package/dist/application/operations/jobManagement.js +17 -3
  15. package/dist/application/operations/jobManagement.js.map +1 -1
  16. package/dist/application/operations/pull.d.ts +1 -0
  17. package/dist/application/operations/pull.d.ts.map +1 -1
  18. package/dist/application/operations/pull.js +106 -8
  19. package/dist/application/operations/pull.js.map +1 -1
  20. package/dist/application/operations/push.d.ts.map +1 -1
  21. package/dist/application/operations/push.js +9 -0
  22. package/dist/application/operations/push.js.map +1 -1
  23. package/dist/application/operations/queueControl.d.ts +4 -1
  24. package/dist/application/operations/queueControl.d.ts.map +1 -1
  25. package/dist/application/operations/queueControl.js +16 -13
  26. package/dist/application/operations/queueControl.js.map +1 -1
  27. package/dist/application/queueManager.d.ts +28 -2
  28. package/dist/application/queueManager.d.ts.map +1 -1
  29. package/dist/application/queueManager.js +132 -34
  30. package/dist/application/queueManager.js.map +1 -1
  31. package/dist/application/webhookManager.d.ts +7 -1
  32. package/dist/application/webhookManager.d.ts.map +1 -1
  33. package/dist/application/webhookManager.js +38 -6
  34. package/dist/application/webhookManager.js.map +1 -1
  35. package/dist/application/workerManager.d.ts +5 -1
  36. package/dist/application/workerManager.d.ts.map +1 -1
  37. package/dist/application/workerManager.js +35 -10
  38. package/dist/application/workerManager.js.map +1 -1
  39. package/dist/bunqueue +0 -0
  40. package/dist/cli/commands/backup.d.ts +20 -0
  41. package/dist/cli/commands/backup.d.ts.map +1 -0
  42. package/dist/cli/commands/backup.js +143 -0
  43. package/dist/cli/commands/backup.js.map +1 -0
  44. package/dist/cli/help.d.ts.map +1 -1
  45. package/dist/cli/help.js +6 -0
  46. package/dist/cli/help.js.map +1 -1
  47. package/dist/cli/index.d.ts.map +1 -1
  48. package/dist/cli/index.js +27 -0
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/domain/queue/priorityQueue.d.ts +15 -0
  51. package/dist/domain/queue/priorityQueue.d.ts.map +1 -1
  52. package/dist/domain/queue/priorityQueue.js +40 -0
  53. package/dist/domain/queue/priorityQueue.js.map +1 -1
  54. package/dist/domain/queue/shard.d.ts +67 -0
  55. package/dist/domain/queue/shard.d.ts.map +1 -1
  56. package/dist/domain/queue/shard.js +198 -0
  57. package/dist/domain/queue/shard.js.map +1 -1
  58. package/dist/infrastructure/backup/index.d.ts +5 -0
  59. package/dist/infrastructure/backup/index.d.ts.map +1 -0
  60. package/dist/infrastructure/backup/index.js +5 -0
  61. package/dist/infrastructure/backup/index.js.map +1 -0
  62. package/dist/infrastructure/backup/s3Backup.d.ts +101 -0
  63. package/dist/infrastructure/backup/s3Backup.d.ts.map +1 -0
  64. package/dist/infrastructure/backup/s3Backup.js +313 -0
  65. package/dist/infrastructure/backup/s3Backup.js.map +1 -0
  66. package/dist/infrastructure/persistence/sqlite.d.ts +3 -1
  67. package/dist/infrastructure/persistence/sqlite.d.ts.map +1 -1
  68. package/dist/infrastructure/persistence/sqlite.js +25 -4
  69. package/dist/infrastructure/persistence/sqlite.js.map +1 -1
  70. package/dist/infrastructure/scheduler/cronScheduler.d.ts +7 -0
  71. package/dist/infrastructure/scheduler/cronScheduler.d.ts.map +1 -1
  72. package/dist/infrastructure/scheduler/cronScheduler.js +49 -18
  73. package/dist/infrastructure/scheduler/cronScheduler.js.map +1 -1
  74. package/dist/infrastructure/server/handlers/advanced.d.ts +1 -1
  75. package/dist/infrastructure/server/handlers/advanced.d.ts.map +1 -1
  76. package/dist/infrastructure/server/handlers/advanced.js +14 -11
  77. package/dist/infrastructure/server/handlers/advanced.js.map +1 -1
  78. package/dist/infrastructure/server/handlers/core.d.ts +2 -2
  79. package/dist/infrastructure/server/handlers/core.d.ts.map +1 -1
  80. package/dist/infrastructure/server/handlers/core.js +6 -12
  81. package/dist/infrastructure/server/handlers/core.js.map +1 -1
  82. package/dist/infrastructure/server/http.d.ts.map +1 -1
  83. package/dist/infrastructure/server/http.js +22 -27
  84. package/dist/infrastructure/server/http.js.map +1 -1
  85. package/dist/infrastructure/server/rateLimiter.d.ts +4 -3
  86. package/dist/infrastructure/server/rateLimiter.d.ts.map +1 -1
  87. package/dist/infrastructure/server/rateLimiter.js +71 -19
  88. package/dist/infrastructure/server/rateLimiter.js.map +1 -1
  89. package/dist/main.js +18 -0
  90. package/dist/main.js.map +1 -1
  91. package/dist/shared/hash.d.ts +4 -4
  92. package/dist/shared/hash.d.ts.map +1 -1
  93. package/dist/shared/hash.js +20 -4
  94. package/dist/shared/hash.js.map +1 -1
  95. package/dist/shared/lock.d.ts +7 -1
  96. package/dist/shared/lock.d.ts.map +1 -1
  97. package/dist/shared/lock.js +75 -40
  98. package/dist/shared/lock.js.map +1 -1
  99. package/dist/shared/logger.d.ts +1 -0
  100. package/dist/shared/logger.d.ts.map +1 -1
  101. package/dist/shared/logger.js +1 -0
  102. package/dist/shared/logger.js.map +1 -1
  103. package/dist/shared/lru.d.ts +55 -0
  104. package/dist/shared/lru.d.ts.map +1 -1
  105. package/dist/shared/lru.js +165 -2
  106. package/dist/shared/lru.js.map +1 -1
  107. package/dist/shared/minHeap.d.ts +35 -0
  108. package/dist/shared/minHeap.d.ts.map +1 -0
  109. package/dist/shared/minHeap.js +116 -0
  110. package/dist/shared/minHeap.js.map +1 -0
  111. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -20,6 +20,7 @@ const clientCommands = [
20
20
  'stats',
21
21
  'metrics',
22
22
  'health',
23
+ 'backup',
23
24
  ];
24
25
  const firstArg = process.argv[2];
25
26
  const isClientCommand = firstArg && clientCommands.includes(firstArg);
@@ -39,6 +40,9 @@ import { createHttpServer } from './infrastructure/server/http';
39
40
  import { Logger, serverLog, statsLog } from './shared/logger';
40
41
  import { stopRateLimiter } from './infrastructure/server/rateLimiter';
41
42
  import { VERSION } from './shared/version';
43
+ import { S3BackupManager } from './infrastructure/backup';
44
+ import { SHARD_COUNT } from './shared/hash';
45
+ import { cpus } from 'os';
42
46
  /** Load configuration from environment variables */
43
47
  function loadConfig() {
44
48
  return {
@@ -49,6 +53,7 @@ function loadConfig() {
49
53
  dataPath: process.env.DATA_PATH ?? process.env.SQLITE_PATH,
50
54
  corsOrigins: process.env.CORS_ALLOW_ORIGIN?.split(',').filter(Boolean) ?? ['*'],
51
55
  requireAuthForMetrics: process.env.METRICS_AUTH === 'true',
56
+ s3BackupEnabled: process.env.S3_BACKUP_ENABLED === '1' || process.env.S3_BACKUP_ENABLED === 'true',
52
57
  };
53
58
  }
54
59
  /** Print startup banner */
@@ -75,6 +80,8 @@ ${dim}────────────────────────
75
80
  ${green}●${reset} HTTP ${bold}${config.hostname}:${config.httpPort}${reset}
76
81
  ${yellow}●${reset} Data ${config.dataPath ?? 'in-memory'}
77
82
  ${yellow}●${reset} Auth ${config.authTokens.length > 0 ? `${green}enabled${reset}` : `${dim}disabled${reset}`}
83
+ ${yellow}●${reset} Backup ${config.s3BackupEnabled ? `${green}S3 enabled${reset}` : `${dim}disabled${reset}`}
84
+ ${dim}●${reset} Shards ${bold}${SHARD_COUNT}${reset} ${dim}(${cpus().length} CPU cores)${reset}
78
85
 
79
86
  ${dim}─────────────────────────────────────────────────${reset}
80
87
 
@@ -103,6 +110,13 @@ function startServer() {
103
110
  corsOrigins: config.corsOrigins,
104
111
  requireAuthForMetrics: config.requireAuthForMetrics,
105
112
  });
113
+ // Initialize S3 backup manager
114
+ let backupManager = null;
115
+ if (config.dataPath) {
116
+ const backupConfig = S3BackupManager.fromEnv(config.dataPath);
117
+ backupManager = new S3BackupManager(backupConfig);
118
+ backupManager.start();
119
+ }
106
120
  // Graceful shutdown
107
121
  const shutdown = async (signal) => {
108
122
  serverLog.info(`Received ${signal}, shutting down...`);
@@ -117,6 +131,10 @@ function startServer() {
117
131
  serverLog.info(`Waiting for ${stats.active} active jobs...`);
118
132
  await new Promise((r) => setTimeout(r, 1000));
119
133
  }
134
+ // Stop backup manager
135
+ if (backupManager) {
136
+ backupManager.stop();
137
+ }
120
138
  queueManager.shutdown();
121
139
  stopRateLimiter();
122
140
  serverLog.info('Shutdown complete');
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -8,11 +8,11 @@
8
8
  */
9
9
  export declare function fnv1a(str: string): number;
10
10
  /**
11
- * Calculate shard index from string
12
- * Uses 32 shards (& 0x1F mask)
11
+ * Shard configuration - auto-detected from hardware
12
+ * Uses power of 2 for fast bitwise mask
13
13
  */
14
- export declare const SHARD_COUNT = 32;
15
- export declare const SHARD_MASK = 31;
14
+ export declare const SHARD_COUNT: number;
15
+ export declare const SHARD_MASK: number;
16
16
  export declare function shardIndex(key: string): number;
17
17
  /**
18
18
  * Calculate processing shard index from job ID (UUIDv7 string)
@@ -1 +1 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/shared/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;GAGG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOzC;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,UAAU,KAAO,CAAC;AAE/B,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,IAAI,IAAI,MAAM,CAe7B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAO/D"}
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/shared/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;GAGG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOzC;AAoBD;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAwB,CAAC;AACjD,eAAO,MAAM,UAAU,QAAkB,CAAC;AAE1C,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,IAAI,IAAI,MAAM,CAe7B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAO/D"}
@@ -2,6 +2,7 @@
2
2
  * Fast hash functions
3
3
  * FNV-1a implementation for consistent hashing
4
4
  */
5
+ import { cpus } from 'os';
5
6
  const FNV_PRIME = 0x01000193;
6
7
  const FNV_OFFSET = 0x811c9dc5;
7
8
  /**
@@ -17,11 +18,26 @@ export function fnv1a(str) {
17
18
  return hash >>> 0; // Convert to unsigned 32-bit
18
19
  }
19
20
  /**
20
- * Calculate shard index from string
21
- * Uses 32 shards (& 0x1F mask)
21
+ * Calculate optimal shard count based on CPU cores
22
+ * - Must be power of 2 for fast bitwise AND
23
+ * - At least equal to CPU cores for parallelism
24
+ * - Capped at 64 to avoid excessive memory overhead
22
25
  */
23
- export const SHARD_COUNT = 32;
24
- export const SHARD_MASK = 0x1f;
26
+ function calculateShardCount() {
27
+ const cores = cpus().length || 4; // Fallback to 4 if detection fails
28
+ // Find next power of 2 >= cores, capped at 64
29
+ let shards = 1;
30
+ while (shards < cores && shards < 64) {
31
+ shards *= 2;
32
+ }
33
+ return shards;
34
+ }
35
+ /**
36
+ * Shard configuration - auto-detected from hardware
37
+ * Uses power of 2 for fast bitwise mask
38
+ */
39
+ export const SHARD_COUNT = calculateShardCount();
40
+ export const SHARD_MASK = SHARD_COUNT - 1;
25
41
  export function shardIndex(key) {
26
42
  return fnv1a(key) & SHARD_MASK;
27
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/shared/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,UAAU,GAAG,UAAU,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,6BAA6B;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAE/B,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG,kBAAkB,CAAC;IAC/B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;aAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;aAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAS,EAAE,CAAS;IACpD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,KAAK,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/shared/hash.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Async Lock implementation
3
3
  * Provides read-write locks with timeout support
4
+ * Optimized with O(1) queue operations using wrapped resolvers
4
5
  */
5
6
  /** Lock acquisition result */
6
7
  export interface LockGuard {
@@ -13,6 +14,7 @@ export declare class LockTimeoutError extends Error {
13
14
  /**
14
15
  * Simple async mutex lock
15
16
  * FIFO ordering for fairness
17
+ * O(1) timeout cancellation using marked entries instead of indexOf+splice
16
18
  */
17
19
  export declare class AsyncLock {
18
20
  private locked;
@@ -24,13 +26,14 @@ export declare class AsyncLock {
24
26
  acquire(timeoutMs?: number): Promise<LockGuard>;
25
27
  /** Check if lock is held */
26
28
  isLocked(): boolean;
27
- /** Get queue length */
29
+ /** Get queue length (includes cancelled entries) */
28
30
  getQueueLength(): number;
29
31
  }
30
32
  /**
31
33
  * Read-Write Lock
32
34
  * Multiple readers OR single writer
33
35
  * Writers have priority to prevent starvation
36
+ * O(1) timeout cancellation using marked entries
34
37
  */
35
38
  export declare class RWLock {
36
39
  private readers;
@@ -46,8 +49,11 @@ export declare class RWLock {
46
49
  /**
47
50
  * Acquire write lock
48
51
  * Exclusive access, no readers or other writers
52
+ * Optimized: synchronous fast path when uncontested
49
53
  */
50
54
  acquireWrite(timeoutMs?: number): Promise<LockGuard>;
55
+ /** Create write lock guard - extracted to avoid code duplication */
56
+ private createWriteGuard;
51
57
  /** Get current state */
52
58
  getState(): {
53
59
  readers: number;
@@ -1 +1 @@
1
- {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/shared/lock.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8BAA8B;AAC9B,MAAM,WAAW,SAAS;IACxB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,yBAAyB;AACzB,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,GAAE,MAAqC;CAI3D;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAE/C;;;OAGG;IACG,OAAO,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAkC3D,4BAA4B;IAC5B,QAAQ,IAAI,OAAO;IAInB,uBAAuB;IACvB,cAAc,IAAI,MAAM;CAGzB;AAED;;;;GAIG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD;;;OAGG;IACG,WAAW,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAqC/D;;;OAGG;IACG,YAAY,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAkDhE,wBAAwB;IACxB,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;CAOxE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAOZ"}
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/shared/lock.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8BAA8B;AAC9B,MAAM,WAAW,SAAS;IACxB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,yBAAyB;AACzB,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,GAAE,MAAqC;CAI3D;AAQD;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C;;;OAGG;IACG,OAAO,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IA6C3D,4BAA4B;IAC5B,QAAQ,IAAI,OAAO;IAInB,oDAAoD;IACpD,cAAc,IAAI,MAAM;CAGzB;AAED;;;;;GAKG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEhD;;;OAGG;IACG,WAAW,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAgD/D;;;;OAIG;IACG,YAAY,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IA8ChE,oEAAoE;IACpE,OAAO,CAAC,gBAAgB;IA2BxB,wBAAwB;IACxB,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;CAOxE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAOZ"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Async Lock implementation
3
3
  * Provides read-write locks with timeout support
4
+ * Optimized with O(1) queue operations using wrapped resolvers
4
5
  */
5
6
  /** Lock timeout error */
6
7
  export class LockTimeoutError extends Error {
@@ -12,6 +13,7 @@ export class LockTimeoutError extends Error {
12
13
  /**
13
14
  * Simple async mutex lock
14
15
  * FIFO ordering for fairness
16
+ * O(1) timeout cancellation using marked entries instead of indexOf+splice
15
17
  */
16
18
  export class AsyncLock {
17
19
  locked = false;
@@ -28,25 +30,32 @@ export class AsyncLock {
28
30
  throw new LockTimeoutError();
29
31
  }
30
32
  await new Promise((resolve) => {
33
+ const entry = { resolve, cancelled: false };
31
34
  const timer = setTimeout(() => {
32
- const idx = this.queue.indexOf(resolve);
33
- if (idx !== -1)
34
- this.queue.splice(idx, 1);
35
+ // O(1) cancellation - just mark as cancelled
36
+ entry.cancelled = true;
35
37
  resolve();
36
38
  }, remaining);
37
- this.queue.push(() => {
39
+ entry.resolve = () => {
38
40
  clearTimeout(timer);
39
41
  resolve();
40
- });
42
+ };
43
+ this.queue.push(entry);
41
44
  });
42
45
  }
43
46
  this.locked = true;
44
47
  return {
45
48
  release: () => {
46
49
  this.locked = false;
47
- const next = this.queue.shift();
48
- if (next)
49
- next();
50
+ // Skip cancelled entries - O(k) where k = cancelled entries at head
51
+ let next = this.queue.shift();
52
+ while (next) {
53
+ if (!next.cancelled) {
54
+ next.resolve();
55
+ break;
56
+ }
57
+ next = this.queue.shift();
58
+ }
50
59
  },
51
60
  };
52
61
  }
@@ -54,7 +63,7 @@ export class AsyncLock {
54
63
  isLocked() {
55
64
  return this.locked;
56
65
  }
57
- /** Get queue length */
66
+ /** Get queue length (includes cancelled entries) */
58
67
  getQueueLength() {
59
68
  return this.queue.length;
60
69
  }
@@ -63,6 +72,7 @@ export class AsyncLock {
63
72
  * Read-Write Lock
64
73
  * Multiple readers OR single writer
65
74
  * Writers have priority to prevent starvation
75
+ * O(1) timeout cancellation using marked entries
66
76
  */
67
77
  export class RWLock {
68
78
  readers = 0;
@@ -83,16 +93,17 @@ export class RWLock {
83
93
  throw new LockTimeoutError('Read lock acquisition timed out');
84
94
  }
85
95
  await new Promise((resolve) => {
96
+ const entry = { resolve, cancelled: false };
86
97
  const timer = setTimeout(() => {
87
- const idx = this.readerQueue.indexOf(resolve);
88
- if (idx !== -1)
89
- this.readerQueue.splice(idx, 1);
98
+ // O(1) cancellation - just mark as cancelled
99
+ entry.cancelled = true;
90
100
  resolve();
91
101
  }, remaining);
92
- this.readerQueue.push(() => {
102
+ entry.resolve = () => {
93
103
  clearTimeout(timer);
94
104
  resolve();
95
- });
105
+ };
106
+ this.readerQueue.push(entry);
96
107
  });
97
108
  }
98
109
  this.readers++;
@@ -100,9 +111,15 @@ export class RWLock {
100
111
  release: () => {
101
112
  this.readers--;
102
113
  if (this.readers === 0 && this.writerWaiting > 0) {
103
- const next = this.writerQueue.shift();
104
- if (next)
105
- next();
114
+ // Skip cancelled entries
115
+ let next = this.writerQueue.shift();
116
+ while (next) {
117
+ if (!next.cancelled) {
118
+ next.resolve();
119
+ break;
120
+ }
121
+ next = this.writerQueue.shift();
122
+ }
106
123
  }
107
124
  },
108
125
  };
@@ -110,8 +127,15 @@ export class RWLock {
110
127
  /**
111
128
  * Acquire write lock
112
129
  * Exclusive access, no readers or other writers
130
+ * Optimized: synchronous fast path when uncontested
113
131
  */
114
132
  async acquireWrite(timeoutMs = 5000) {
133
+ // Fast path: uncontested - acquire synchronously without Promise overhead
134
+ if (!this.writer && this.readers === 0) {
135
+ this.writer = true;
136
+ return this.createWriteGuard();
137
+ }
138
+ // Slow path: contention - wait asynchronously
115
139
  const start = Date.now();
116
140
  this.writerWaiting++;
117
141
  try {
@@ -121,44 +145,55 @@ export class RWLock {
121
145
  throw new LockTimeoutError('Write lock acquisition timed out');
122
146
  }
123
147
  await new Promise((resolve) => {
148
+ const entry = { resolve, cancelled: false };
124
149
  const timer = setTimeout(() => {
125
- const idx = this.writerQueue.indexOf(resolve);
126
- if (idx !== -1)
127
- this.writerQueue.splice(idx, 1);
150
+ // O(1) cancellation - just mark as cancelled
151
+ entry.cancelled = true;
128
152
  resolve();
129
153
  }, remaining);
130
- this.writerQueue.push(() => {
154
+ entry.resolve = () => {
131
155
  clearTimeout(timer);
132
156
  resolve();
133
- });
157
+ };
158
+ this.writerQueue.push(entry);
134
159
  });
135
160
  }
136
161
  this.writerWaiting--;
137
162
  this.writer = true;
138
- return {
139
- release: () => {
140
- this.writer = false;
141
- // Notify waiting writers first (priority)
142
- if (this.writerWaiting > 0) {
143
- const next = this.writerQueue.shift();
144
- if (next)
145
- next();
146
- }
147
- else {
148
- // Then notify all waiting readers
149
- const readers = this.readerQueue.splice(0);
150
- for (const reader of readers) {
151
- reader();
152
- }
153
- }
154
- },
155
- };
163
+ return this.createWriteGuard();
156
164
  }
157
165
  catch (e) {
158
166
  this.writerWaiting--;
159
167
  throw e;
160
168
  }
161
169
  }
170
+ /** Create write lock guard - extracted to avoid code duplication */
171
+ createWriteGuard() {
172
+ return {
173
+ release: () => {
174
+ this.writer = false;
175
+ // Notify waiting writers first (priority)
176
+ if (this.writerWaiting > 0) {
177
+ // Skip cancelled entries
178
+ let next = this.writerQueue.shift();
179
+ while (next) {
180
+ if (!next.cancelled) {
181
+ next.resolve();
182
+ return;
183
+ }
184
+ next = this.writerQueue.shift();
185
+ }
186
+ }
187
+ // Then notify all waiting readers (skip cancelled)
188
+ const readers = this.readerQueue.splice(0);
189
+ for (const entry of readers) {
190
+ if (!entry.cancelled) {
191
+ entry.resolve();
192
+ }
193
+ }
194
+ },
195
+ };
196
+ }
162
197
  /** Get current state */
163
198
  getState() {
164
199
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/shared/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/shared/lock.ts"],"names":[],"mappings":"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"}
@@ -38,4 +38,5 @@ export declare const statsLog: Logger;
38
38
  export declare const storageLog: Logger;
39
39
  export declare const queueLog: Logger;
40
40
  export declare const webhookLog: Logger;
41
+ export declare const backupLog: Logger;
41
42
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,0CAA0C;AAC1C,qBAAa,MAAM;IAGL,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;gBAEH,SAAS,EAAE,MAAM;IAE9C,8BAA8B;IAC9B,MAAM,CAAC,cAAc,IAAI,IAAI;IAI7B,oDAAoD;IACpD,MAAM,CAAC,eAAe,IAAI,IAAI;IAI9B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D,OAAO,CAAC,GAAG;CA6BZ;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,qBAAqB;AACrB,eAAO,MAAM,SAAS,QAAyB,CAAC;AAChD,eAAO,MAAM,MAAM,QAAsB,CAAC;AAC1C,eAAO,MAAM,OAAO,QAAuB,CAAC;AAC5C,eAAO,MAAM,KAAK,QAAqB,CAAC;AACxC,eAAO,MAAM,OAAO,QAAuB,CAAC;AAC5C,eAAO,MAAM,QAAQ,QAAwB,CAAC;AAC9C,eAAO,MAAM,UAAU,QAA0B,CAAC;AAClD,eAAO,MAAM,QAAQ,QAAwB,CAAC;AAC9C,eAAO,MAAM,UAAU,QAA0B,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,0CAA0C;AAC1C,qBAAa,MAAM;IAGL,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;gBAEH,SAAS,EAAE,MAAM;IAE9C,8BAA8B;IAC9B,MAAM,CAAC,cAAc,IAAI,IAAI;IAI7B,oDAAoD;IACpD,MAAM,CAAC,eAAe,IAAI,IAAI;IAI9B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D,OAAO,CAAC,GAAG;CA6BZ;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,qBAAqB;AACrB,eAAO,MAAM,SAAS,QAAyB,CAAC;AAChD,eAAO,MAAM,MAAM,QAAsB,CAAC;AAC1C,eAAO,MAAM,OAAO,QAAuB,CAAC;AAC5C,eAAO,MAAM,KAAK,QAAqB,CAAC;AACxC,eAAO,MAAM,OAAO,QAAuB,CAAC;AAC5C,eAAO,MAAM,QAAQ,QAAwB,CAAC;AAC9C,eAAO,MAAM,UAAU,QAA0B,CAAC;AAClD,eAAO,MAAM,QAAQ,QAAwB,CAAC;AAC9C,eAAO,MAAM,UAAU,QAA0B,CAAC;AAClD,eAAO,MAAM,SAAS,QAAyB,CAAC"}
@@ -74,4 +74,5 @@ export const statsLog = createLogger('Stats');
74
74
  export const storageLog = createLogger('Storage');
75
75
  export const queueLog = createLogger('Queue');
76
76
  export const webhookLog = createLogger('Webhook');
77
+ export const backupLog = createLogger('Backup');
77
78
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"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"}
@@ -55,15 +55,70 @@ export declare class LRUSet<T> implements SetLike<T> {
55
55
  values(): IterableIterator<T>;
56
56
  [Symbol.iterator](): IterableIterator<T>;
57
57
  }
58
+ /**
59
+ * Bounded Set - fast FIFO eviction without LRU tracking
60
+ * Optimized for high-throughput scenarios where recency doesn't matter
61
+ * Uses batch eviction to avoid per-item iterator overhead
62
+ */
63
+ export declare class BoundedSet<T> implements SetLike<T> {
64
+ private readonly cache;
65
+ private readonly maxSize;
66
+ private readonly onEvict?;
67
+ /** Evict 10% of items at once to amortize iterator cost */
68
+ private readonly evictBatchSize;
69
+ constructor(maxSize: number, onEvict?: (value: T) => void);
70
+ add(value: T): void;
71
+ /** Evict multiple items at once - more efficient than one at a time */
72
+ private evictBatch;
73
+ has(value: T): boolean;
74
+ delete(value: T): boolean;
75
+ clear(): void;
76
+ get size(): number;
77
+ values(): IterableIterator<T>;
78
+ [Symbol.iterator](): IterableIterator<T>;
79
+ }
80
+ /**
81
+ * Bounded Map - fast FIFO eviction without LRU tracking
82
+ * Optimized for high-throughput scenarios where recency doesn't matter
83
+ * Uses batch eviction to avoid per-item iterator overhead
84
+ */
85
+ export declare class BoundedMap<K, V> implements MapLike<K, V> {
86
+ private readonly cache;
87
+ private readonly maxSize;
88
+ private readonly onEvict?;
89
+ /** Evict 10% of items at once to amortize iterator cost */
90
+ private readonly evictBatchSize;
91
+ constructor(maxSize: number, onEvict?: (key: K, value: V) => void);
92
+ get(key: K): V | undefined;
93
+ set(key: K, value: V): void;
94
+ /** Evict multiple items at once - more efficient than one at a time */
95
+ private evictBatch;
96
+ has(key: K): boolean;
97
+ delete(key: K): boolean;
98
+ clear(): void;
99
+ get size(): number;
100
+ keys(): IterableIterator<K>;
101
+ values(): IterableIterator<V>;
102
+ entries(): IterableIterator<[K, V]>;
103
+ forEach(callback: (value: V, key: K) => void): void;
104
+ [Symbol.iterator](): IterableIterator<[K, V]>;
105
+ }
58
106
  /**
59
107
  * TTL Map - entries expire after timeout
108
+ * Optimized with expiry heap for O(k) cleanup instead of O(n)
60
109
  */
61
110
  export declare class TTLMap<K, V> {
62
111
  private readonly cache;
63
112
  private readonly ttlMs;
64
113
  private cleanupInterval;
114
+ /**
115
+ * Expiry heap: sorted array of (expiresAt, key) for efficient cleanup
116
+ * Oldest expiry at index 0
117
+ */
118
+ private readonly expiryHeap;
65
119
  constructor(ttlMs: number, cleanupIntervalMs?: number);
66
120
  private startCleanup;
121
+ /** O(k) cleanup where k = expired entries, instead of O(n) full scan */
67
122
  private cleanup;
68
123
  get(key: K): V | undefined;
69
124
  set(key: K, value: V, ttlMs?: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"lru.d.ts","sourceRoot":"","sources":["../../src/shared/lru.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lru.d.ts","sourceRoot":"","sources":["../../src/shared/lru.ts"],"names":[],"mappings":"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"}