bunqueue 2.8.53 → 2.8.56

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 (747) hide show
  1. package/dist/application/background/dlq.d.ts +2 -0
  2. package/dist/application/background/dlq.js +26 -0
  3. package/dist/application/background/lifecycle.d.ts +4 -0
  4. package/dist/application/background/lifecycle.js +90 -0
  5. package/dist/application/background/recovery/active.d.ts +4 -0
  6. package/dist/application/background/recovery/active.js +69 -0
  7. package/dist/application/background/recovery/index.d.ts +2 -0
  8. package/dist/application/background/recovery/index.js +22 -0
  9. package/dist/application/background/recovery/pending.d.ts +3 -0
  10. package/dist/application/background/recovery/pending.js +69 -0
  11. package/dist/application/background/recovery/restore.d.ts +5 -0
  12. package/dist/application/background/recovery/restore.js +58 -0
  13. package/dist/application/background/recovery/shared.d.ts +6 -0
  14. package/dist/application/background/recovery/shared.js +15 -0
  15. package/dist/application/background/timeouts.d.ts +25 -0
  16. package/dist/application/background/timeouts.js +191 -0
  17. package/dist/application/backgroundTasks.d.ts +7 -31
  18. package/dist/application/backgroundTasks.js +6 -438
  19. package/dist/application/cleanupTasks.js +2 -1
  20. package/dist/application/clientTracking.js +3 -1
  21. package/dist/application/contextFactory.d.ts +13 -90
  22. package/dist/application/contextFactory.js +9 -0
  23. package/dist/application/dependencyResultTracker.d.ts +1 -0
  24. package/dist/application/dependencyResultTracker.js +3 -0
  25. package/dist/application/dlqManager.d.ts +9 -9
  26. package/dist/application/dlqManager.js +49 -167
  27. package/dist/application/dlqRetry.d.ts +12 -0
  28. package/dist/application/dlqRetry.js +97 -0
  29. package/dist/application/lockManager.js +24 -4
  30. package/dist/application/lockOperations.js +16 -3
  31. package/dist/application/operations/ack/batch.d.ts +8 -0
  32. package/dist/application/operations/ack/batch.js +64 -0
  33. package/dist/application/operations/ack/completion.d.ts +3 -0
  34. package/dist/application/operations/ack/completion.js +74 -0
  35. package/dist/application/operations/ack/failure.d.ts +3 -0
  36. package/dist/application/operations/ack/failure.js +160 -0
  37. package/dist/application/operations/ack.d.ts +5 -79
  38. package/dist/application/operations/ack.js +4 -319
  39. package/dist/application/operations/ackHelpers.d.ts +3 -52
  40. package/dist/application/operations/ackHelpers.js +11 -4
  41. package/dist/application/operations/customId.d.ts +18 -5
  42. package/dist/application/operations/customId.js +36 -25
  43. package/dist/application/operations/flowValidation.js +9 -4
  44. package/dist/application/operations/jobManagement.js +50 -11
  45. package/dist/application/operations/jobMoveOperations.js +3 -3
  46. package/dist/application/operations/jobStateTransitions.d.ts +1 -1
  47. package/dist/application/operations/jobStateTransitions.js +16 -2
  48. package/dist/application/operations/parentLink.d.ts +36 -0
  49. package/dist/application/operations/parentLink.js +153 -0
  50. package/dist/application/operations/parentLinkInput.d.ts +8 -0
  51. package/dist/application/operations/parentLinkInput.js +23 -0
  52. package/dist/application/operations/push.d.ts +5 -44
  53. package/dist/application/operations/push.js +62 -152
  54. package/dist/application/operations/pushAdmission.d.ts +32 -0
  55. package/dist/application/operations/pushAdmission.js +38 -0
  56. package/dist/application/operations/pushBatch.d.ts +4 -0
  57. package/dist/application/operations/pushBatch.js +136 -0
  58. package/dist/application/operations/pushContext.d.ts +39 -0
  59. package/dist/application/operations/pushContext.js +1 -0
  60. package/dist/application/operations/pushDeduplication.d.ts +42 -0
  61. package/dist/application/operations/pushDeduplication.js +131 -0
  62. package/dist/application/operations/pushInsert.d.ts +13 -1
  63. package/dist/application/operations/pushInsert.js +33 -17
  64. package/dist/application/operations/pushLocks.js +13 -9
  65. package/dist/application/operations/query/collect.d.ts +12 -0
  66. package/dist/application/operations/query/collect.js +118 -0
  67. package/dist/application/operations/query/jobLookup.d.ts +9 -0
  68. package/dist/application/operations/query/jobLookup.js +110 -0
  69. package/dist/application/operations/query/pagination.d.ts +8 -0
  70. package/dist/application/operations/query/pagination.js +90 -0
  71. package/dist/application/operations/query/state.d.ts +4 -0
  72. package/dist/application/operations/query/state.js +63 -0
  73. package/dist/application/operations/queryOperations.d.ts +5 -50
  74. package/dist/application/operations/queryOperations.js +4 -474
  75. package/dist/application/queue-manager/ack.d.ts +23 -0
  76. package/dist/application/queue-manager/ack.js +242 -0
  77. package/dist/application/queue-manager/configuration.d.ts +27 -0
  78. package/dist/application/queue-manager/configuration.js +84 -0
  79. package/dist/application/queue-manager/context.d.ts +5 -0
  80. package/dist/application/queue-manager/context.js +61 -0
  81. package/dist/application/queue-manager/control.d.ts +17 -0
  82. package/dist/application/queue-manager/control.js +133 -0
  83. package/dist/application/queue-manager/delivery.d.ts +32 -0
  84. package/dist/application/queue-manager/delivery.js +143 -0
  85. package/dist/application/queue-manager/dependencies.d.ts +8 -0
  86. package/dist/application/queue-manager/dependencies.js +127 -0
  87. package/dist/application/queue-manager/dependency-runtime.d.ts +8 -0
  88. package/dist/application/queue-manager/dependency-runtime.js +40 -0
  89. package/dist/application/queue-manager/flow-failures.d.ts +18 -0
  90. package/dist/application/queue-manager/flow-failures.js +107 -0
  91. package/dist/application/queue-manager/flow-options.d.ts +8 -0
  92. package/dist/application/queue-manager/flow-options.js +129 -0
  93. package/dist/application/queue-manager/job-management.d.ts +17 -0
  94. package/dist/application/queue-manager/job-management.js +100 -0
  95. package/dist/application/queue-manager/lifecycle.d.ts +4 -0
  96. package/dist/application/queue-manager/lifecycle.js +41 -0
  97. package/dist/application/queue-manager/limits.d.ts +41 -0
  98. package/dist/application/queue-manager/limits.js +108 -0
  99. package/dist/application/queue-manager/locks.d.ts +21 -0
  100. package/dist/application/queue-manager/locks.js +59 -0
  101. package/dist/application/queue-manager/observability.d.ts +16 -0
  102. package/dist/application/queue-manager/observability.js +44 -0
  103. package/dist/application/queue-manager/queries.d.ts +17 -0
  104. package/dist/application/queue-manager/queries.js +118 -0
  105. package/dist/application/queue-manager/repeat.d.ts +4 -0
  106. package/dist/application/queue-manager/repeat.js +26 -0
  107. package/dist/application/queue-manager/services.d.ts +19 -0
  108. package/dist/application/queue-manager/services.js +80 -0
  109. package/dist/application/queue-manager/state.d.ts +92 -0
  110. package/dist/application/queue-manager/state.js +144 -0
  111. package/dist/application/queue-manager/stats.d.ts +28 -0
  112. package/dist/application/queue-manager/stats.js +52 -0
  113. package/dist/application/queueManager.d.ts +4 -380
  114. package/dist/application/queueManager.js +3 -1880
  115. package/dist/application/queueTelemetryJournal.d.ts +20 -0
  116. package/dist/application/queueTelemetryJournal.js +133 -0
  117. package/dist/application/repeatJobs.d.ts +7 -0
  118. package/dist/application/repeatJobs.js +132 -0
  119. package/dist/application/stallDetection.js +9 -4
  120. package/dist/application/types/ack.d.ts +132 -0
  121. package/dist/application/types/ack.js +1 -0
  122. package/dist/application/types/background.d.ts +18 -0
  123. package/dist/application/types/background.js +1 -0
  124. package/dist/application/types/config.d.ts +37 -0
  125. package/dist/application/types/config.js +15 -0
  126. package/dist/application/types/contextFactory.d.ts +83 -0
  127. package/dist/application/types/contextFactory.js +1 -0
  128. package/dist/application/types/contexts.d.ts +110 -0
  129. package/dist/application/types/contexts.js +1 -0
  130. package/dist/application/types/index.d.ts +7 -0
  131. package/dist/application/types/index.js +1 -0
  132. package/dist/application/types/query.d.ts +23 -0
  133. package/dist/application/types/query.js +1 -0
  134. package/dist/application/types/queueManager.d.ts +94 -0
  135. package/dist/application/types/queueManager.js +1 -0
  136. package/dist/cli/commandRouter.d.ts +1 -1
  137. package/dist/cli/commands/core.js +1 -0
  138. package/dist/cli/output/collections.d.ts +8 -0
  139. package/dist/cli/output/collections.js +131 -0
  140. package/dist/cli/output/jobs.d.ts +2 -0
  141. package/dist/cli/output/jobs.js +61 -0
  142. package/dist/cli/output/style.d.ts +14 -0
  143. package/dist/cli/output/style.js +28 -0
  144. package/dist/cli/output/success.d.ts +1 -0
  145. package/dist/cli/output/success.js +108 -0
  146. package/dist/cli/output.d.ts +1 -6
  147. package/dist/cli/output.js +7 -395
  148. package/dist/client/bunqueue/dlqRateLimit.d.ts +8 -0
  149. package/dist/client/bunqueue/dlqRateLimit.js +24 -0
  150. package/dist/client/bunqueue/runtime.d.ts +35 -0
  151. package/dist/client/bunqueue/runtime.js +138 -0
  152. package/dist/client/bunqueue.d.ts +19 -34
  153. package/dist/client/bunqueue.js +45 -166
  154. package/dist/client/dlqConversion.d.ts +5 -0
  155. package/dist/client/dlqConversion.js +28 -0
  156. package/dist/client/events.d.ts +7 -56
  157. package/dist/client/events.js +38 -15
  158. package/dist/client/flow.d.ts +6 -12
  159. package/dist/client/flow.js +16 -34
  160. package/dist/client/flowJobDependencies.js +3 -1
  161. package/dist/client/flowJobFactory.d.ts +9 -1
  162. package/dist/client/flowJobFactory.js +25 -9
  163. package/dist/client/flowJobMoveMethods.d.ts +5 -5
  164. package/dist/client/flowJobMoveMethods.js +37 -17
  165. package/dist/client/flowLegacyPlan.js +22 -8
  166. package/dist/client/flowOptions.d.ts +1 -1
  167. package/dist/client/flowOptions.js +2 -1
  168. package/dist/client/flowPlan.js +2 -3
  169. package/dist/client/flowPush.d.ts +1 -0
  170. package/dist/client/flowPush.js +5 -1
  171. package/dist/client/flowReader.js +5 -5
  172. package/dist/client/flowResults.d.ts +11 -0
  173. package/dist/client/flowResults.js +42 -0
  174. package/dist/client/index.d.ts +3 -1
  175. package/dist/client/jobConversion.d.ts +3 -7
  176. package/dist/client/jobConversion.js +36 -33
  177. package/dist/client/jobConversionHelpers.d.ts +19 -3
  178. package/dist/client/jobConversionHelpers.js +20 -16
  179. package/dist/client/jobConversionTypes.d.ts +8 -0
  180. package/dist/client/jobDeduplication.d.ts +6 -0
  181. package/dist/client/jobDeduplication.js +14 -0
  182. package/dist/client/jobHelpers.d.ts +7 -2
  183. package/dist/client/jobHelpers.js +16 -8
  184. package/dist/client/queue/bullmqCompat.d.ts +18 -8
  185. package/dist/client/queue/bullmqCompat.js +39 -71
  186. package/dist/client/queue/deduplication.d.ts +2 -0
  187. package/dist/client/queue/deduplication.js +20 -11
  188. package/dist/client/queue/dlq.d.ts +11 -6
  189. package/dist/client/queue/dlq.js +57 -16
  190. package/dist/client/queue/dlqJobMethods.d.ts +9 -0
  191. package/dist/client/queue/dlqJobMethods.js +177 -0
  192. package/dist/client/queue/dlqOps.d.ts +2 -1
  193. package/dist/client/queue/dlqOps.js +4 -10
  194. package/dist/client/queue/dlqStats.d.ts +3 -0
  195. package/dist/client/queue/dlqStats.js +21 -0
  196. package/dist/client/queue/job-proxy/dependencies.d.ts +9 -0
  197. package/dist/client/queue/job-proxy/dependencies.js +67 -0
  198. package/dist/client/queue/job-proxy/reflection.d.ts +2 -0
  199. package/dist/client/queue/job-proxy/reflection.js +18 -0
  200. package/dist/client/queue/job-proxy/simple.d.ts +3 -0
  201. package/dist/client/queue/job-proxy/simple.js +316 -0
  202. package/dist/client/queue/job-proxy/tcp.d.ts +4 -0
  203. package/dist/client/queue/job-proxy/tcp.js +191 -0
  204. package/dist/client/queue/jobMetadata.d.ts +10 -0
  205. package/dist/client/queue/jobMetadata.js +24 -0
  206. package/dist/client/queue/jobMove.d.ts +4 -4
  207. package/dist/client/queue/jobMove.js +87 -24
  208. package/dist/client/queue/jobProxy.d.ts +4 -50
  209. package/dist/client/queue/jobProxy.js +3 -511
  210. package/dist/client/queue/operations/add/bulk.d.ts +7 -0
  211. package/dist/client/queue/operations/add/bulk.js +129 -0
  212. package/dist/client/queue/operations/add/payload.d.ts +24 -0
  213. package/dist/client/queue/operations/add/payload.js +85 -0
  214. package/dist/client/queue/operations/add/single.d.ts +3 -0
  215. package/dist/client/queue/operations/add/single.js +107 -0
  216. package/dist/client/queue/operations/add.d.ts +2 -47
  217. package/dist/client/queue/operations/add.js +2 -347
  218. package/dist/client/queue/operations/index.d.ts +1 -0
  219. package/dist/client/queue/operations/index.js +1 -0
  220. package/dist/client/queue/operations/management.d.ts +0 -4
  221. package/dist/client/queue/operations/management.js +35 -6
  222. package/dist/client/queue/operations/query.d.ts +1 -20
  223. package/dist/client/queue/operations/query.js +38 -116
  224. package/dist/client/queue/operations/queryStates.d.ts +13 -0
  225. package/dist/client/queue/operations/queryStates.js +32 -0
  226. package/dist/client/queue/operations/queryTcpPages.d.ts +14 -0
  227. package/dist/client/queue/operations/queryTcpPages.js +40 -0
  228. package/dist/client/queue/queue.d.ts +6 -189
  229. package/dist/client/queue/queue.js +6 -547
  230. package/dist/client/queue/rateLimit.d.ts +4 -4
  231. package/dist/client/queue/rateLimit.js +17 -8
  232. package/dist/client/queue/runtime/compatibility.d.ts +13 -0
  233. package/dist/client/queue/runtime/compatibility.js +38 -0
  234. package/dist/client/queue/runtime/configuration.d.ts +42 -0
  235. package/dist/client/queue/runtime/configuration.js +109 -0
  236. package/dist/client/queue/runtime/connection.d.ts +6 -0
  237. package/dist/client/queue/runtime/connection.js +16 -0
  238. package/dist/client/queue/runtime/control.d.ts +41 -0
  239. package/dist/client/queue/runtime/control.js +87 -0
  240. package/dist/client/queue/runtime/queries.d.ts +48 -0
  241. package/dist/client/queue/runtime/queries.js +95 -0
  242. package/dist/client/queue/runtime/scheduling.d.ts +33 -0
  243. package/dist/client/queue/runtime/scheduling.js +56 -0
  244. package/dist/client/queue/runtime/state.d.ts +96 -0
  245. package/dist/client/queue/runtime/state.js +149 -0
  246. package/dist/client/queue/scheduler.d.ts +2 -5
  247. package/dist/client/queue/scheduler.js +25 -23
  248. package/dist/client/queue/schedulerPagination.d.ts +7 -0
  249. package/dist/client/queue/schedulerPagination.js +10 -0
  250. package/dist/client/queue/types/add.d.ts +40 -0
  251. package/dist/client/queue/types/add.js +1 -0
  252. package/dist/client/queue/types/contexts.d.ts +33 -0
  253. package/dist/client/queue/types/contexts.js +5 -0
  254. package/dist/client/queue/types/index.d.ts +3 -0
  255. package/dist/client/queue/types/index.js +1 -0
  256. package/dist/client/queue/types/job.d.ts +50 -0
  257. package/dist/client/queue/types/job.js +1 -0
  258. package/dist/client/queue/types/runtime.d.ts +35 -0
  259. package/dist/client/queue/types/runtime.js +1 -0
  260. package/dist/client/queue/workers.d.ts +16 -8
  261. package/dist/client/queue/workers.js +42 -16
  262. package/dist/client/queue-events/tcpSubscription.d.ts +23 -0
  263. package/dist/client/queue-events/tcpSubscription.js +99 -0
  264. package/dist/client/queueGroup.d.ts +11 -0
  265. package/dist/client/queueGroup.js +28 -1
  266. package/dist/client/sandboxed/queueOps.d.ts +2 -2
  267. package/dist/client/sandboxed/queueOps.js +32 -5
  268. package/dist/client/sandboxed/runtime/dispatch.d.ts +13 -0
  269. package/dist/client/sandboxed/runtime/dispatch.js +186 -0
  270. package/dist/client/sandboxed/runtime/lifecycle.d.ts +20 -0
  271. package/dist/client/sandboxed/runtime/lifecycle.js +95 -0
  272. package/dist/client/sandboxed/runtime/log.d.ts +1 -0
  273. package/dist/client/sandboxed/runtime/log.js +15 -0
  274. package/dist/client/sandboxed/runtime/pool.d.ts +11 -0
  275. package/dist/client/sandboxed/runtime/pool.js +121 -0
  276. package/dist/client/sandboxed/runtime/recovery.d.ts +11 -0
  277. package/dist/client/sandboxed/runtime/recovery.js +122 -0
  278. package/dist/client/sandboxed/runtime/state.d.ts +39 -0
  279. package/dist/client/sandboxed/runtime/state.js +59 -0
  280. package/dist/client/sandboxed/types/index.d.ts +2 -0
  281. package/dist/client/sandboxed/types/index.js +1 -0
  282. package/dist/client/sandboxed/types/options.d.ts +27 -0
  283. package/dist/client/sandboxed/types/options.js +1 -0
  284. package/dist/client/sandboxed/types/process.d.ts +30 -0
  285. package/dist/client/sandboxed/types/process.js +1 -0
  286. package/dist/client/sandboxed/worker.d.ts +3 -85
  287. package/dist/client/sandboxed/worker.js +3 -557
  288. package/dist/client/sandboxed/wrapper.js +1 -0
  289. package/dist/client/tcp/client.d.ts +5 -112
  290. package/dist/client/tcp/client.js +5 -481
  291. package/dist/client/tcp/commandQueue.d.ts +23 -0
  292. package/dist/client/tcp/commandQueue.js +89 -0
  293. package/dist/client/tcp/connection.d.ts +4 -85
  294. package/dist/client/tcp/connection.js +3 -315
  295. package/dist/client/tcp/errors.d.ts +6 -0
  296. package/dist/client/tcp/errors.js +18 -0
  297. package/dist/client/tcp/runtime/commands.d.ts +9 -0
  298. package/dist/client/tcp/runtime/commands.js +124 -0
  299. package/dist/client/tcp/runtime/connectivity.d.ts +13 -0
  300. package/dist/client/tcp/runtime/connectivity.js +77 -0
  301. package/dist/client/tcp/runtime/health.d.ts +14 -0
  302. package/dist/client/tcp/runtime/health.js +127 -0
  303. package/dist/client/tcp/runtime/lifecycle.d.ts +8 -0
  304. package/dist/client/tcp/runtime/lifecycle.js +32 -0
  305. package/dist/client/tcp/runtime/state.d.ts +50 -0
  306. package/dist/client/tcp/runtime/state.js +45 -0
  307. package/dist/client/tcp/transport.d.ts +18 -0
  308. package/dist/client/tcp/transport.js +158 -0
  309. package/dist/client/tcp/types/command.d.ts +9 -0
  310. package/dist/client/tcp/types/command.js +1 -0
  311. package/dist/client/tcp/types/connection.d.ts +31 -0
  312. package/dist/client/tcp/types/connection.js +17 -0
  313. package/dist/client/tcp/types/index.d.ts +5 -0
  314. package/dist/client/tcp/types/index.js +1 -0
  315. package/dist/client/tcp/types/socket.d.ts +8 -0
  316. package/dist/client/tcp/types/socket.js +1 -0
  317. package/dist/client/tcp/types/tls.d.ts +4 -0
  318. package/dist/client/tcp/types/tls.js +1 -0
  319. package/dist/client/tcp/types.d.ts +2 -106
  320. package/dist/client/tcp/types.js +2 -22
  321. package/dist/client/types/connection.d.ts +29 -0
  322. package/dist/client/types/connection.js +1 -0
  323. package/dist/client/types/dlq.d.ts +45 -0
  324. package/dist/client/types/dlq.js +1 -0
  325. package/dist/client/types/events.d.ts +54 -0
  326. package/dist/client/types/events.js +1 -0
  327. package/dist/client/types/flow.d.ts +10 -0
  328. package/dist/client/types/flow.js +1 -0
  329. package/dist/client/types/index.d.ts +10 -0
  330. package/dist/client/types/index.js +1 -0
  331. package/dist/client/types/job.d.ts +127 -0
  332. package/dist/client/types/job.js +1 -0
  333. package/dist/client/types/metrics.d.ts +1 -0
  334. package/dist/client/types/metrics.js +1 -0
  335. package/dist/client/types/options.d.ts +62 -0
  336. package/dist/client/types/options.js +1 -0
  337. package/dist/client/types/worker.d.ts +38 -0
  338. package/dist/client/types/worker.js +1 -0
  339. package/dist/client/types.d.ts +2 -583
  340. package/dist/client/types.js +2 -6
  341. package/dist/client/worker/ackBatcher.d.ts +1 -1
  342. package/dist/client/worker/ackBatcher.js +17 -5
  343. package/dist/client/worker/ackOutcome.d.ts +8 -0
  344. package/dist/client/worker/ackOutcome.js +58 -0
  345. package/dist/client/worker/constants.d.ts +7 -0
  346. package/dist/client/worker/constants.js +7 -0
  347. package/dist/client/worker/groupConcurrency.js +3 -0
  348. package/dist/client/worker/handlers/completion.d.ts +28 -0
  349. package/dist/client/worker/handlers/completion.js +68 -0
  350. package/dist/client/worker/handlers/dependencies.d.ts +11 -0
  351. package/dist/client/worker/handlers/dependencies.js +107 -0
  352. package/dist/client/worker/handlers/mutations.d.ts +23 -0
  353. package/dist/client/worker/handlers/mutations.js +211 -0
  354. package/dist/client/worker/handlers/queries.d.ts +15 -0
  355. package/dist/client/worker/handlers/queries.js +100 -0
  356. package/dist/client/worker/index.d.ts +2 -2
  357. package/dist/client/worker/index.js +1 -1
  358. package/dist/client/worker/jobParser.js +4 -2
  359. package/dist/client/worker/processor.d.ts +2 -15
  360. package/dist/client/worker/processor.js +68 -125
  361. package/dist/client/worker/processorHandlers.d.ts +4 -65
  362. package/dist/client/worker/processorHandlers.js +4 -400
  363. package/dist/client/worker/processorOutcome.d.ts +14 -0
  364. package/dist/client/worker/processorOutcome.js +125 -0
  365. package/dist/client/worker/runtime/buffer.d.ts +8 -0
  366. package/dist/client/worker/runtime/buffer.js +50 -0
  367. package/dist/client/worker/runtime/control.d.ts +26 -0
  368. package/dist/client/worker/runtime/control.js +175 -0
  369. package/dist/client/worker/runtime/execution.d.ts +11 -0
  370. package/dist/client/worker/runtime/execution.js +123 -0
  371. package/dist/client/worker/runtime/lifecycle.d.ts +7 -0
  372. package/dist/client/worker/runtime/lifecycle.js +114 -0
  373. package/dist/client/worker/runtime/manual.d.ts +10 -0
  374. package/dist/client/worker/runtime/manual.js +137 -0
  375. package/dist/client/worker/runtime/options.d.ts +5 -0
  376. package/dist/client/worker/runtime/options.js +39 -0
  377. package/dist/client/worker/runtime/polling.d.ts +12 -0
  378. package/dist/client/worker/runtime/polling.js +123 -0
  379. package/dist/client/worker/runtime/state.d.ts +110 -0
  380. package/dist/client/worker/runtime/state.js +156 -0
  381. package/dist/client/worker/types/index.d.ts +5 -0
  382. package/dist/client/worker/types/index.js +1 -0
  383. package/dist/client/worker/types/manual.d.ts +7 -0
  384. package/dist/client/worker/types/manual.js +1 -0
  385. package/dist/client/worker/types/options.d.ts +24 -0
  386. package/dist/client/worker/types/options.js +1 -0
  387. package/dist/client/worker/types/outcome.d.ts +23 -0
  388. package/dist/client/worker/types/outcome.js +1 -0
  389. package/dist/client/worker/types/processor.d.ts +22 -0
  390. package/dist/client/worker/types/processor.js +1 -0
  391. package/dist/client/worker/types/transport.d.ts +11 -0
  392. package/dist/client/worker/types/transport.js +1 -0
  393. package/dist/client/worker/worker.d.ts +3 -160
  394. package/dist/client/worker/worker.js +3 -904
  395. package/dist/client/worker/workerRateLimiter.d.ts +5 -1
  396. package/dist/client/worker/workerRateLimiter.js +40 -20
  397. package/dist/client/worker.d.ts +1 -0
  398. package/dist/client/workflow/compensationChild.d.ts +2 -1
  399. package/dist/client/workflow/compensationChild.js +1 -1
  400. package/dist/client/workflow/compensationClaim.d.ts +11 -0
  401. package/dist/client/workflow/compensationClaim.js +30 -0
  402. package/dist/client/workflow/compensator.d.ts +7 -2
  403. package/dist/client/workflow/compensator.js +5 -11
  404. package/dist/client/workflow/recovery.js +25 -2
  405. package/dist/client/workflow/rollbackControl.js +1 -1
  406. package/dist/domain/job/constants.d.ts +12 -0
  407. package/dist/domain/job/constants.js +12 -0
  408. package/dist/domain/job/create.d.ts +2 -0
  409. package/dist/domain/job/create.js +103 -0
  410. package/dist/domain/job/ids.d.ts +5 -0
  411. package/dist/domain/job/ids.js +12 -0
  412. package/dist/domain/job/locks.d.ts +4 -0
  413. package/dist/domain/job/locks.js +23 -0
  414. package/dist/domain/job/payload.d.ts +18 -0
  415. package/dist/domain/job/payload.js +43 -0
  416. package/dist/domain/job/state.d.ts +8 -0
  417. package/dist/domain/job/state.js +51 -0
  418. package/dist/domain/job/terminal.d.ts +3 -0
  419. package/dist/domain/job/terminal.js +9 -0
  420. package/dist/domain/queue/dlqShard.d.ts +2 -0
  421. package/dist/domain/queue/dlqShard.js +34 -9
  422. package/dist/domain/queue/limiterManager.d.ts +11 -0
  423. package/dist/domain/queue/limiterManager.js +28 -0
  424. package/dist/domain/queue/priorityQueue.js +3 -39
  425. package/dist/domain/queue/priorityQueueOrder.d.ts +3 -0
  426. package/dist/domain/queue/priorityQueueOrder.js +21 -0
  427. package/dist/domain/queue/shard/dependencies.d.ts +11 -0
  428. package/dist/domain/queue/shard/dependencies.js +22 -0
  429. package/dist/domain/queue/shard/dlq.d.ts +25 -0
  430. package/dist/domain/queue/shard/dlq.js +71 -0
  431. package/dist/domain/queue/shard/keys.d.ts +18 -0
  432. package/dist/domain/queue/shard/keys.js +45 -0
  433. package/dist/domain/queue/shard/lifecycle.d.ts +10 -0
  434. package/dist/domain/queue/shard/lifecycle.js +43 -0
  435. package/dist/domain/queue/shard/limits.d.ts +24 -0
  436. package/dist/domain/queue/shard/limits.js +57 -0
  437. package/dist/domain/queue/shard/metrics.d.ts +32 -0
  438. package/dist/domain/queue/shard/metrics.js +72 -0
  439. package/dist/domain/queue/shard/state.d.ts +34 -0
  440. package/dist/domain/queue/shard/state.js +80 -0
  441. package/dist/domain/queue/shard.d.ts +5 -137
  442. package/dist/domain/queue/shard.js +4 -390
  443. package/dist/domain/queue/uniqueKeyManager.d.ts +3 -1
  444. package/dist/domain/queue/uniqueKeyManager.js +9 -1
  445. package/dist/domain/response/builders.d.ts +15 -0
  446. package/dist/domain/response/builders.js +39 -0
  447. package/dist/domain/types/command.d.ts +2 -522
  448. package/dist/domain/types/command.js +2 -5
  449. package/dist/domain/types/commands/base.d.ts +5 -0
  450. package/dist/domain/types/commands/base.js +1 -0
  451. package/dist/domain/types/commands/core.d.ts +106 -0
  452. package/dist/domain/types/commands/core.js +1 -0
  453. package/dist/domain/types/commands/cron.d.ts +36 -0
  454. package/dist/domain/types/commands/cron.js +1 -0
  455. package/dist/domain/types/commands/dashboard.d.ts +13 -0
  456. package/dist/domain/types/commands/dashboard.js +1 -0
  457. package/dist/domain/types/commands/dlq.d.ts +39 -0
  458. package/dist/domain/types/commands/dlq.js +1 -0
  459. package/dist/domain/types/commands/extended.d.ts +63 -0
  460. package/dist/domain/types/commands/extended.js +1 -0
  461. package/dist/domain/types/commands/index.d.ts +12 -0
  462. package/dist/domain/types/commands/index.js +12 -0
  463. package/dist/domain/types/commands/limits.d.ts +54 -0
  464. package/dist/domain/types/commands/limits.js +1 -0
  465. package/dist/domain/types/commands/management.d.ts +73 -0
  466. package/dist/domain/types/commands/management.js +1 -0
  467. package/dist/domain/types/commands/monitoring.d.ts +49 -0
  468. package/dist/domain/types/commands/monitoring.js +1 -0
  469. package/dist/domain/types/commands/protocol.d.ts +20 -0
  470. package/dist/domain/types/commands/protocol.js +1 -0
  471. package/dist/domain/types/commands/query.d.ts +46 -0
  472. package/dist/domain/types/commands/query.js +1 -0
  473. package/dist/domain/types/commands/union.d.ts +13 -0
  474. package/dist/domain/types/commands/union.js +1 -0
  475. package/dist/domain/types/commands/workers.d.ts +39 -0
  476. package/dist/domain/types/commands/workers.js +1 -0
  477. package/dist/domain/types/cron.d.ts +4 -2
  478. package/dist/domain/types/cron.js +3 -0
  479. package/dist/domain/types/dlq.d.ts +17 -0
  480. package/dist/domain/types/dlq.js +70 -14
  481. package/dist/domain/types/index.d.ts +2 -0
  482. package/dist/domain/types/index.js +1 -0
  483. package/dist/domain/types/job.d.ts +8 -269
  484. package/dist/domain/types/job.js +8 -234
  485. package/dist/domain/types/jobs/model.d.ts +152 -0
  486. package/dist/domain/types/jobs/model.js +1 -0
  487. package/dist/domain/types/metrics.d.ts +16 -0
  488. package/dist/domain/types/metrics.js +1 -0
  489. package/dist/domain/types/priorityQueue.d.ts +12 -0
  490. package/dist/domain/types/priorityQueue.js +1 -0
  491. package/dist/domain/types/protocol.d.ts +5 -0
  492. package/dist/domain/types/protocol.js +4 -0
  493. package/dist/domain/types/queue.d.ts +7 -0
  494. package/dist/domain/types/queue.js +13 -0
  495. package/dist/domain/types/response.d.ts +3 -192
  496. package/dist/domain/types/response.js +3 -101
  497. package/dist/domain/types/responses/model.d.ts +152 -0
  498. package/dist/domain/types/responses/model.js +1 -0
  499. package/dist/domain/types/shard.d.ts +4 -0
  500. package/dist/domain/types/shard.js +1 -0
  501. package/dist/infrastructure/cloud/cloudAgent.js +6 -0
  502. package/dist/infrastructure/cloud/commandHandler.d.ts +2 -41
  503. package/dist/infrastructure/cloud/commandHandler.js +1 -1
  504. package/dist/infrastructure/cloud/commands/integrations.d.ts +2 -0
  505. package/dist/infrastructure/cloud/commands/integrations.js +31 -0
  506. package/dist/infrastructure/cloud/commands/jobMapper.d.ts +56 -0
  507. package/dist/infrastructure/cloud/commands/jobMapper.js +72 -0
  508. package/dist/infrastructure/cloud/commands/jobs.d.ts +2 -0
  509. package/dist/infrastructure/cloud/commands/jobs.js +111 -0
  510. package/dist/infrastructure/cloud/commands/queues.d.ts +2 -0
  511. package/dist/infrastructure/cloud/commands/queues.js +126 -0
  512. package/dist/infrastructure/cloud/commands.d.ts +3 -10
  513. package/dist/infrastructure/cloud/commands.js +7 -344
  514. package/dist/infrastructure/cloud/snapshot/analytics.d.ts +16 -0
  515. package/dist/infrastructure/cloud/snapshot/analytics.js +132 -0
  516. package/dist/infrastructure/cloud/snapshot/collector.d.ts +24 -0
  517. package/dist/infrastructure/cloud/snapshot/collector.js +105 -0
  518. package/dist/infrastructure/cloud/snapshot/config.d.ts +5 -0
  519. package/dist/infrastructure/cloud/snapshot/config.js +86 -0
  520. package/dist/infrastructure/cloud/snapshot/jobs.d.ts +5 -0
  521. package/dist/infrastructure/cloud/snapshot/jobs.js +148 -0
  522. package/dist/infrastructure/cloud/snapshot/stalls.d.ts +3 -0
  523. package/dist/infrastructure/cloud/snapshot/stalls.js +34 -0
  524. package/dist/infrastructure/cloud/snapshotCollector.d.ts +2 -53
  525. package/dist/infrastructure/cloud/snapshotCollector.js +5 -107
  526. package/dist/infrastructure/cloud/snapshotHelpers.d.ts +5 -45
  527. package/dist/infrastructure/cloud/snapshotHelpers.js +4 -426
  528. package/dist/infrastructure/cloud/types/collector.d.ts +54 -0
  529. package/dist/infrastructure/cloud/types/collector.js +1 -0
  530. package/dist/infrastructure/cloud/types/command.d.ts +44 -0
  531. package/dist/infrastructure/cloud/types/command.js +1 -0
  532. package/dist/infrastructure/cloud/types/config.d.ts +18 -0
  533. package/dist/infrastructure/cloud/types/config.js +1 -0
  534. package/dist/infrastructure/cloud/types/event.d.ts +14 -0
  535. package/dist/infrastructure/cloud/types/event.js +1 -0
  536. package/dist/infrastructure/cloud/types/redact.d.ts +4 -0
  537. package/dist/infrastructure/cloud/types/redact.js +1 -0
  538. package/dist/infrastructure/cloud/types/snapshot.d.ts +52 -0
  539. package/dist/infrastructure/cloud/types/snapshot.js +1 -0
  540. package/dist/infrastructure/cloud/types/snapshotCore.d.ts +125 -0
  541. package/dist/infrastructure/cloud/types/snapshotCore.js +1 -0
  542. package/dist/infrastructure/cloud/types/snapshotJobs.d.ts +124 -0
  543. package/dist/infrastructure/cloud/types/snapshotJobs.js +1 -0
  544. package/dist/infrastructure/cloud/types/snapshotTelemetry.d.ts +100 -0
  545. package/dist/infrastructure/cloud/types/snapshotTelemetry.js +1 -0
  546. package/dist/infrastructure/cloud/types.d.ts +3 -445
  547. package/dist/infrastructure/cloud/types.js +0 -4
  548. package/dist/infrastructure/persistence/batchInsert.d.ts +13 -0
  549. package/dist/infrastructure/persistence/batchInsert.js +96 -0
  550. package/dist/infrastructure/persistence/jobOptionsBlob.d.ts +18 -0
  551. package/dist/infrastructure/persistence/jobOptionsBlob.js +56 -0
  552. package/dist/infrastructure/persistence/legacyNameMigration.d.ts +5 -0
  553. package/dist/infrastructure/persistence/legacyNameMigration.js +42 -0
  554. package/dist/infrastructure/persistence/migrations.d.ts +3 -0
  555. package/dist/infrastructure/persistence/migrations.js +120 -0
  556. package/dist/infrastructure/persistence/schema.d.ts +3 -5
  557. package/dist/infrastructure/persistence/schema.js +40 -136
  558. package/dist/infrastructure/persistence/sqlite/admission.d.ts +9 -0
  559. package/dist/infrastructure/persistence/sqlite/admission.js +34 -0
  560. package/dist/infrastructure/persistence/sqlite/control.d.ts +32 -0
  561. package/dist/infrastructure/persistence/sqlite/control.js +90 -0
  562. package/dist/infrastructure/persistence/sqlite/flows.d.ts +26 -0
  563. package/dist/infrastructure/persistence/sqlite/flows.js +167 -0
  564. package/dist/infrastructure/persistence/sqlite/jobs.d.ts +23 -0
  565. package/dist/infrastructure/persistence/sqlite/jobs.js +166 -0
  566. package/dist/infrastructure/persistence/sqlite/lifecycle.d.ts +6 -0
  567. package/dist/infrastructure/persistence/sqlite/lifecycle.js +30 -0
  568. package/dist/infrastructure/persistence/sqlite/mutations.d.ts +20 -0
  569. package/dist/infrastructure/persistence/sqlite/mutations.js +149 -0
  570. package/dist/infrastructure/persistence/sqlite/queries.d.ts +23 -0
  571. package/dist/infrastructure/persistence/sqlite/queries.js +89 -0
  572. package/dist/infrastructure/persistence/sqlite/records.d.ts +24 -0
  573. package/dist/infrastructure/persistence/sqlite/records.js +115 -0
  574. package/dist/infrastructure/persistence/sqlite/state.d.ts +36 -0
  575. package/dist/infrastructure/persistence/sqlite/state.js +207 -0
  576. package/dist/infrastructure/persistence/sqlite/telemetry.d.ts +16 -0
  577. package/dist/infrastructure/persistence/sqlite/telemetry.js +126 -0
  578. package/dist/infrastructure/persistence/sqlite.d.ts +5 -276
  579. package/dist/infrastructure/persistence/sqlite.js +3 -997
  580. package/dist/infrastructure/persistence/sqliteBatch.d.ts +4 -121
  581. package/dist/infrastructure/persistence/sqliteBatch.js +3 -422
  582. package/dist/infrastructure/persistence/sqliteSerializer.d.ts +6 -1
  583. package/dist/infrastructure/persistence/sqliteSerializer.js +33 -11
  584. package/dist/infrastructure/persistence/statements.d.ts +5 -1
  585. package/dist/infrastructure/persistence/statements.js +14 -9
  586. package/dist/infrastructure/persistence/types/admission.d.ts +8 -0
  587. package/dist/infrastructure/persistence/types/admission.js +1 -0
  588. package/dist/infrastructure/persistence/types/batch.d.ts +12 -0
  589. package/dist/infrastructure/persistence/types/batch.js +1 -0
  590. package/dist/infrastructure/persistence/types/sqlite.d.ts +17 -0
  591. package/dist/infrastructure/persistence/types/sqlite.js +1 -0
  592. package/dist/infrastructure/persistence/writeBuffer.d.ts +38 -0
  593. package/dist/infrastructure/persistence/writeBuffer.js +221 -0
  594. package/dist/infrastructure/scheduler/cron/execution.d.ts +12 -0
  595. package/dist/infrastructure/scheduler/cron/execution.js +150 -0
  596. package/dist/infrastructure/scheduler/cron/runtime.d.ts +31 -0
  597. package/dist/infrastructure/scheduler/cron/runtime.js +143 -0
  598. package/dist/infrastructure/scheduler/cronScheduler.d.ts +4 -117
  599. package/dist/infrastructure/scheduler/cronScheduler.js +3 -436
  600. package/dist/infrastructure/scheduler/types/cronScheduler.d.ts +16 -0
  601. package/dist/infrastructure/scheduler/types/cronScheduler.js +1 -0
  602. package/dist/infrastructure/server/bootstrap.js +3 -0
  603. package/dist/infrastructure/server/handler-routes/control.d.ts +8 -0
  604. package/dist/infrastructure/server/handler-routes/control.js +82 -0
  605. package/dist/infrastructure/server/handler-routes/jobs.d.ts +6 -0
  606. package/dist/infrastructure/server/handler-routes/jobs.js +110 -0
  607. package/dist/infrastructure/server/handler-routes/monitoring.d.ts +5 -0
  608. package/dist/infrastructure/server/handler-routes/monitoring.js +65 -0
  609. package/dist/infrastructure/server/handlerRoutes.d.ts +3 -26
  610. package/dist/infrastructure/server/handlerRoutes.js +3 -257
  611. package/dist/infrastructure/server/handlers/advanced/configNumbers.d.ts +2 -0
  612. package/dist/infrastructure/server/handlers/advanced/configNumbers.js +26 -0
  613. package/dist/infrastructure/server/handlers/advanced/dependencies.d.ts +15 -0
  614. package/dist/infrastructure/server/handlers/advanced/dependencies.js +38 -0
  615. package/dist/infrastructure/server/handlers/advanced/jobs.d.ts +33 -0
  616. package/dist/infrastructure/server/handlers/advanced/jobs.js +136 -0
  617. package/dist/infrastructure/server/handlers/advanced/queue.d.ts +42 -0
  618. package/dist/infrastructure/server/handlers/advanced/queue.js +111 -0
  619. package/dist/infrastructure/server/handlers/advanced.d.ts +3 -121
  620. package/dist/infrastructure/server/handlers/advanced.js +3 -336
  621. package/dist/infrastructure/server/handlers/core.d.ts +1 -4
  622. package/dist/infrastructure/server/handlers/core.js +37 -20
  623. package/dist/infrastructure/server/handlers/cron.js +9 -1
  624. package/dist/infrastructure/server/handlers/dlq.d.ts +3 -0
  625. package/dist/infrastructure/server/handlers/dlq.js +18 -4
  626. package/dist/infrastructure/server/handlers/flow.js +6 -1
  627. package/dist/infrastructure/server/handlers/introspection.d.ts +19 -0
  628. package/dist/infrastructure/server/handlers/introspection.js +21 -0
  629. package/dist/infrastructure/server/handlers/management.d.ts +8 -0
  630. package/dist/infrastructure/server/handlers/management.js +30 -0
  631. package/dist/infrastructure/server/handlers/monitoring/health.d.ts +13 -0
  632. package/dist/infrastructure/server/handlers/monitoring/health.js +61 -0
  633. package/dist/infrastructure/server/handlers/monitoring/operations.d.ts +8 -0
  634. package/dist/infrastructure/server/handlers/monitoring/operations.js +28 -0
  635. package/dist/infrastructure/server/handlers/monitoring/webhooks.d.ts +7 -0
  636. package/dist/infrastructure/server/handlers/monitoring/webhooks.js +56 -0
  637. package/dist/infrastructure/server/handlers/monitoring/workers.d.ts +6 -0
  638. package/dist/infrastructure/server/handlers/monitoring/workers.js +57 -0
  639. package/dist/infrastructure/server/handlers/monitoring.d.ts +4 -30
  640. package/dist/infrastructure/server/handlers/monitoring.js +4 -222
  641. package/dist/infrastructure/server/handlers/pushBatchValidation.d.ts +1 -1
  642. package/dist/infrastructure/server/handlers/pushBatchValidation.js +7 -0
  643. package/dist/infrastructure/server/handlers/query.js +13 -4
  644. package/dist/infrastructure/server/http-routes/jobAdvanced.d.ts +2 -0
  645. package/dist/infrastructure/server/http-routes/jobAdvanced.js +106 -0
  646. package/dist/infrastructure/server/http-routes/jobManagement.d.ts +2 -0
  647. package/dist/infrastructure/server/http-routes/jobManagement.js +74 -0
  648. package/dist/infrastructure/server/http-routes/queueJobs.d.ts +2 -0
  649. package/dist/infrastructure/server/http-routes/queueJobs.js +108 -0
  650. package/dist/infrastructure/server/httpRouteJobs.d.ts +1 -8
  651. package/dist/infrastructure/server/httpRouteJobs.js +33 -222
  652. package/dist/infrastructure/server/httpRouteQueues.d.ts +1 -6
  653. package/dist/infrastructure/server/httpRouteQueues.js +51 -217
  654. package/dist/infrastructure/server/httpRouteResources.js +1 -0
  655. package/dist/infrastructure/server/protocol/commands.d.ts +8 -0
  656. package/dist/infrastructure/server/protocol/commands.js +31 -0
  657. package/dist/infrastructure/server/protocol/frameParser.d.ts +16 -0
  658. package/dist/infrastructure/server/protocol/frameParser.js +65 -0
  659. package/dist/infrastructure/server/protocol/lineBuffer.d.ts +6 -0
  660. package/dist/infrastructure/server/protocol/lineBuffer.js +21 -0
  661. package/dist/infrastructure/server/protocol/validation.d.ts +9 -0
  662. package/dist/infrastructure/server/protocol/validation.js +75 -0
  663. package/dist/infrastructure/server/protocol.d.ts +5 -77
  664. package/dist/infrastructure/server/protocol.js +4 -265
  665. package/dist/infrastructure/server/rateLimiter.js +1 -0
  666. package/dist/infrastructure/server/socketWriteQueue.d.ts +1 -1
  667. package/dist/infrastructure/server/socketWriteQueue.js +8 -5
  668. package/dist/infrastructure/server/sse/constants.d.ts +5 -0
  669. package/dist/infrastructure/server/sse/constants.js +5 -0
  670. package/dist/infrastructure/server/sse/eventBuffer.d.ts +3 -0
  671. package/dist/infrastructure/server/sse/eventBuffer.js +21 -0
  672. package/dist/infrastructure/server/sseHandler.d.ts +2 -6
  673. package/dist/infrastructure/server/sseHandler.js +20 -96
  674. package/dist/infrastructure/server/tcp/clientRelease.d.ts +2 -0
  675. package/dist/infrastructure/server/tcp/clientRelease.js +18 -0
  676. package/dist/infrastructure/server/tcp/connections.d.ts +24 -0
  677. package/dist/infrastructure/server/tcp/connections.js +162 -0
  678. package/dist/infrastructure/server/tcp/constants.d.ts +3 -0
  679. package/dist/infrastructure/server/tcp/constants.js +3 -0
  680. package/dist/infrastructure/server/tcp/eventSubscriptions.d.ts +10 -0
  681. package/dist/infrastructure/server/tcp/eventSubscriptions.js +17 -0
  682. package/dist/infrastructure/server/tcp/responses.d.ts +3 -0
  683. package/dist/infrastructure/server/tcp/responses.js +8 -0
  684. package/dist/infrastructure/server/tcp.d.ts +10 -68
  685. package/dist/infrastructure/server/tcp.js +47 -256
  686. package/dist/infrastructure/server/types/protocol.d.ts +4 -0
  687. package/dist/infrastructure/server/types/protocol.js +1 -0
  688. package/dist/infrastructure/server/types/sse.d.ts +11 -0
  689. package/dist/infrastructure/server/types/sse.js +1 -0
  690. package/dist/infrastructure/server/types/tcpServer.d.ts +25 -0
  691. package/dist/infrastructure/server/types/tcpServer.js +1 -0
  692. package/dist/infrastructure/server/types/ws.d.ts +6 -0
  693. package/dist/infrastructure/server/types/ws.js +1 -0
  694. package/dist/infrastructure/server/ws/constants.d.ts +6 -0
  695. package/dist/infrastructure/server/ws/constants.js +130 -0
  696. package/dist/infrastructure/server/ws/snapshots.d.ts +4 -0
  697. package/dist/infrastructure/server/ws/snapshots.js +52 -0
  698. package/dist/infrastructure/server/ws/subscriptions.d.ts +10 -0
  699. package/dist/infrastructure/server/ws/subscriptions.js +39 -0
  700. package/dist/infrastructure/server/wsHandler.d.ts +2 -10
  701. package/dist/infrastructure/server/wsHandler.js +12 -237
  702. package/dist/mcp/adapter.d.ts +5 -403
  703. package/dist/mcp/adapter.js +6 -778
  704. package/dist/mcp/backend/embedded/base.d.ts +7 -0
  705. package/dist/mcp/backend/embedded/base.js +15 -0
  706. package/dist/mcp/backend/embedded/index.d.ts +14 -0
  707. package/dist/mcp/backend/embedded/index.js +22 -0
  708. package/dist/mcp/backend/embedded/jobs.d.ts +44 -0
  709. package/dist/mcp/backend/embedded/jobs.js +98 -0
  710. package/dist/mcp/backend/embedded/queues.d.ts +27 -0
  711. package/dist/mcp/backend/embedded/queues.js +84 -0
  712. package/dist/mcp/backend/embedded/services.d.ts +29 -0
  713. package/dist/mcp/backend/embedded/services.js +107 -0
  714. package/dist/mcp/backend/serializers.d.ts +7 -0
  715. package/dist/mcp/backend/serializers.js +32 -0
  716. package/dist/mcp/backend/tcp/base.d.ts +19 -0
  717. package/dist/mcp/backend/tcp/base.js +54 -0
  718. package/dist/mcp/backend/tcp/index.d.ts +14 -0
  719. package/dist/mcp/backend/tcp/index.js +20 -0
  720. package/dist/mcp/backend/tcp/jobs.d.ts +44 -0
  721. package/dist/mcp/backend/tcp/jobs.js +122 -0
  722. package/dist/mcp/backend/tcp/queues.d.ts +27 -0
  723. package/dist/mcp/backend/tcp/queues.js +89 -0
  724. package/dist/mcp/backend/tcp/services.d.ts +30 -0
  725. package/dist/mcp/backend/tcp/services.js +161 -0
  726. package/dist/mcp/types/adapter.d.ts +176 -0
  727. package/dist/mcp/types/adapter.js +1 -0
  728. package/dist/shared/asyncLock.d.ts +13 -0
  729. package/dist/shared/asyncLock.js +65 -0
  730. package/dist/shared/lock.d.ts +10 -72
  731. package/dist/shared/lock.js +7 -231
  732. package/dist/shared/lockError.d.ts +3 -0
  733. package/dist/shared/lockError.js +6 -0
  734. package/dist/shared/lockTimeout.d.ts +2 -0
  735. package/dist/shared/lockTimeout.js +2 -0
  736. package/dist/shared/rwLock.d.ts +22 -0
  737. package/dist/shared/rwLock.js +124 -0
  738. package/dist/shared/serialization.js +1 -0
  739. package/dist/shared/skipList.d.ts +0 -5
  740. package/dist/shared/skipList.js +10 -57
  741. package/dist/shared/skipListNodes.d.ts +6 -0
  742. package/dist/shared/skipListNodes.js +43 -0
  743. package/dist/shared/types/lock.d.ts +7 -0
  744. package/dist/shared/types/lock.js +1 -0
  745. package/dist/shared/types/skipList.d.ts +4 -0
  746. package/dist/shared/types/skipList.js +1 -0
  747. package/package.json +2 -1
@@ -0,0 +1,8 @@
1
+ import type { Command } from '../../../domain/types/command';
2
+ import { type Response } from '../../../domain/types/response';
3
+ import type { ConnectionState } from '../types/protocol';
4
+ export declare function parseCommand(data: string): Command | null;
5
+ export declare function serializeResponse(response: Response): string;
6
+ export declare function parseCommands(data: string): Command[];
7
+ export declare function createConnectionState(clientId: string): ConnectionState;
8
+ export declare function errorResponse(message: string, requestId?: string): string;
@@ -0,0 +1,31 @@
1
+ import { error } from '../../../domain/types/response';
2
+ export function parseCommand(data) {
3
+ try {
4
+ const parsed = JSON.parse(data);
5
+ if (!parsed['cmd'])
6
+ return null;
7
+ return parsed;
8
+ }
9
+ catch {
10
+ return null;
11
+ }
12
+ }
13
+ export function serializeResponse(response) {
14
+ return JSON.stringify(response);
15
+ }
16
+ export function parseCommands(data) {
17
+ const lines = data.split('\n').filter((line) => line.trim().length > 0);
18
+ const commands = [];
19
+ for (const line of lines) {
20
+ const command = parseCommand(line);
21
+ if (command)
22
+ commands.push(command);
23
+ }
24
+ return commands;
25
+ }
26
+ export function createConnectionState(clientId) {
27
+ return { authenticated: false, clientId };
28
+ }
29
+ export function errorResponse(message, requestId) {
30
+ return serializeResponse(error(message, requestId));
31
+ }
@@ -0,0 +1,16 @@
1
+ export declare const MAX_FRAME_SIZE: number;
2
+ export declare class FrameSizeError extends Error {
3
+ readonly requestedSize: number;
4
+ readonly maxSize: number;
5
+ constructor(requestedSize: number, maxSize: number);
6
+ }
7
+ export declare class FrameParser {
8
+ private buffer;
9
+ private readonly maxFrameSize;
10
+ constructor(maxFrameSize?: number);
11
+ addData(data: Uint8Array): Uint8Array[];
12
+ get bufferedBytes(): number;
13
+ get hasPartialFrame(): boolean;
14
+ clear(): void;
15
+ static frame(data: Uint8Array): Uint8Array;
16
+ }
@@ -0,0 +1,65 @@
1
+ export const MAX_FRAME_SIZE = 64 * 1024 * 1024;
2
+ export class FrameSizeError extends Error {
3
+ requestedSize;
4
+ maxSize;
5
+ constructor(requestedSize, maxSize) {
6
+ super(`Frame size ${requestedSize} exceeds maximum allowed size ${maxSize}`);
7
+ this.requestedSize = requestedSize;
8
+ this.maxSize = maxSize;
9
+ this.name = 'FrameSizeError';
10
+ }
11
+ }
12
+ export class FrameParser {
13
+ buffer = new Uint8Array(0);
14
+ maxFrameSize;
15
+ constructor(maxFrameSize = MAX_FRAME_SIZE) {
16
+ this.maxFrameSize = maxFrameSize;
17
+ }
18
+ addData(data) {
19
+ const buffer = new Uint8Array(this.buffer.length + data.length);
20
+ buffer.set(this.buffer);
21
+ buffer.set(data, this.buffer.length);
22
+ const frames = [];
23
+ let offset = 0;
24
+ while (buffer.length - offset >= 4) {
25
+ const length = ((buffer[offset] << 24) |
26
+ (buffer[offset + 1] << 16) |
27
+ (buffer[offset + 2] << 8) |
28
+ buffer[offset + 3]) >>>
29
+ 0;
30
+ if (length > this.maxFrameSize) {
31
+ this.buffer = new Uint8Array(0);
32
+ throw new FrameSizeError(length, this.maxFrameSize);
33
+ }
34
+ if (buffer.length - offset < 4 + length)
35
+ break;
36
+ frames.push(buffer.slice(offset + 4, offset + 4 + length));
37
+ offset += 4 + length;
38
+ }
39
+ if (offset >= buffer.length)
40
+ this.buffer = new Uint8Array(0);
41
+ else if (offset === 0)
42
+ this.buffer = buffer;
43
+ else
44
+ this.buffer = buffer.slice(offset);
45
+ return frames;
46
+ }
47
+ get bufferedBytes() {
48
+ return this.buffer.length;
49
+ }
50
+ get hasPartialFrame() {
51
+ return this.buffer.length > 0;
52
+ }
53
+ clear() {
54
+ this.buffer = new Uint8Array(0);
55
+ }
56
+ static frame(data) {
57
+ const frame = new Uint8Array(4 + data.length);
58
+ frame[0] = (data.length >> 24) & 0xff;
59
+ frame[1] = (data.length >> 16) & 0xff;
60
+ frame[2] = (data.length >> 8) & 0xff;
61
+ frame[3] = data.length & 0xff;
62
+ frame.set(data, 4);
63
+ return frame;
64
+ }
65
+ }
@@ -0,0 +1,6 @@
1
+ export declare class LineBuffer {
2
+ private buffer;
3
+ addData(data: string): string[];
4
+ getRemaining(): string;
5
+ clear(): void;
6
+ }
@@ -0,0 +1,21 @@
1
+ export class LineBuffer {
2
+ buffer = '';
3
+ addData(data) {
4
+ this.buffer += data;
5
+ const lines = [];
6
+ let newlineIndex;
7
+ while ((newlineIndex = this.buffer.indexOf('\n')) !== -1) {
8
+ const line = this.buffer.slice(0, newlineIndex).trim();
9
+ this.buffer = this.buffer.slice(newlineIndex + 1);
10
+ if (line.length > 0)
11
+ lines.push(line);
12
+ }
13
+ return lines;
14
+ }
15
+ getRemaining() {
16
+ return this.buffer;
17
+ }
18
+ clear() {
19
+ this.buffer = '';
20
+ }
21
+ }
@@ -0,0 +1,9 @@
1
+ export declare function validateQueueName(name: string): string | null;
2
+ export declare function validateJobData(data: unknown): string | null;
3
+ export declare function validateNumericField(value: unknown, name: string, options?: {
4
+ min?: number;
5
+ max?: number;
6
+ required?: boolean;
7
+ }): string | null;
8
+ export declare function validateBackoffField(value: unknown): string | null;
9
+ export declare function validateJobOptions(options: Record<string, unknown>): string | null;
@@ -0,0 +1,75 @@
1
+ export function validateQueueName(name) {
2
+ if (!name || name.length === 0)
3
+ return 'Queue name is required';
4
+ if (name.length > 256)
5
+ return 'Queue name too long (max 256 characters)';
6
+ if (!/^[a-zA-Z0-9_\-.:]+$/.test(name))
7
+ return 'Queue name contains invalid characters';
8
+ return null;
9
+ }
10
+ export function validateJobData(data) {
11
+ let json;
12
+ try {
13
+ json = JSON.stringify(data);
14
+ }
15
+ catch {
16
+ return 'Job data must be JSON serializable';
17
+ }
18
+ if (json !== undefined && json.length > 10 * 1024 * 1024) {
19
+ return 'Job data too large (max 10MB)';
20
+ }
21
+ return null;
22
+ }
23
+ export function validateNumericField(value, name, options = {}) {
24
+ const { min = 0, max = Number.MAX_SAFE_INTEGER, required = false } = options;
25
+ if (value === undefined || value === null)
26
+ return required ? `${name} is required` : null;
27
+ if (typeof value !== 'number')
28
+ return `${name} must be a number`;
29
+ if (!Number.isFinite(value))
30
+ return `${name} must be a finite number`;
31
+ if (!Number.isInteger(value) &&
32
+ (name === 'priority' || name === 'attempts' || name === 'maxAttempts')) {
33
+ return `${name} must be an integer`;
34
+ }
35
+ if (value < min)
36
+ return `${name} must be at least ${min}`;
37
+ if (value > max)
38
+ return `${name} must be at most ${max}`;
39
+ return null;
40
+ }
41
+ export function validateBackoffField(value) {
42
+ if (value === undefined || value === null)
43
+ return null;
44
+ if (typeof value === 'object') {
45
+ const object = value;
46
+ if (object['type'] !== 'fixed' && object['type'] !== 'exponential') {
47
+ return "backoff.type must be 'fixed' or 'exponential'";
48
+ }
49
+ return validateNumericField(object['delay'], 'backoff.delay', {
50
+ min: 0,
51
+ max: 24 * 60 * 60 * 1000,
52
+ required: true,
53
+ });
54
+ }
55
+ return validateNumericField(value, 'backoff', { min: 0, max: 24 * 60 * 60 * 1000 });
56
+ }
57
+ export function validateJobOptions(options) {
58
+ const validations = [
59
+ validateNumericField(options['priority'], 'priority', { min: -1000000, max: 1000000 }),
60
+ validateNumericField(options['delay'], 'delay', { min: 0, max: 365 * 24 * 60 * 60 * 1000 }),
61
+ validateNumericField(options['timeout'], 'timeout', { min: 0, max: 24 * 60 * 60 * 1000 }),
62
+ validateNumericField(options['maxAttempts'], 'maxAttempts', { min: 1, max: 1000 }),
63
+ validateBackoffField(options['backoff']),
64
+ validateNumericField(options['ttl'], 'ttl', { min: 0, max: 365 * 24 * 60 * 60 * 1000 }),
65
+ validateNumericField(options['stallTimeout'], 'stallTimeout', {
66
+ min: 0,
67
+ max: 24 * 60 * 60 * 1000,
68
+ }),
69
+ ];
70
+ for (const error of validations) {
71
+ if (error)
72
+ return error;
73
+ }
74
+ return null;
75
+ }
@@ -1,78 +1,6 @@
1
- /**
2
- * Protocol Parser
3
- * Handles JSON text protocol parsing and serialization
4
- */
5
- import type { Command } from '../../domain/types/command';
6
- import { type Response } from '../../domain/types/response';
7
- /** Parse a command from JSON string */
8
- export declare function parseCommand(data: string): Command | null;
9
- /** Serialize response to JSON string */
10
- export declare function serializeResponse(response: Response): string;
11
- /** Parse multiple commands from newline-delimited JSON */
12
- export declare function parseCommands(data: string): Command[];
13
- /** Validate queue name */
14
- export declare function validateQueueName(name: string): string | null;
15
- /** Validate job data size */
16
- export declare function validateJobData(data: unknown): string | null;
17
- /** Validate a numeric field is within safe bounds */
18
- export declare function validateNumericField(value: unknown, name: string, options?: {
19
- min?: number;
20
- max?: number;
21
- required?: boolean;
22
- }): string | null;
23
- /**
24
- * Validate the backoff field, which the public JobOptions type allows in two
25
- * forms: a plain number (delay ms) or `{ type: 'fixed' | 'exponential', delay
26
- * }`. Embedded mode already accepts both (domain parseBackoff); the TCP path
27
- * must too, or the object form throws over the wire while working embedded.
28
- */
29
- export declare function validateBackoffField(value: unknown): string | null;
30
- /** Validate job options numeric fields */
31
- export declare function validateJobOptions(options: Record<string, unknown>): string | null;
32
- /** Re-export from shared module for backward compatibility */
1
+ export { createConnectionState, errorResponse, parseCommand, parseCommands, serializeResponse, } from './protocol/commands';
2
+ export { FrameParser, FrameSizeError, MAX_FRAME_SIZE } from './protocol/frameParser';
3
+ export { LineBuffer } from './protocol/lineBuffer';
4
+ export { validateBackoffField, validateJobData, validateJobOptions, validateNumericField, validateQueueName, } from './protocol/validation';
5
+ export type { ConnectionState } from './types/protocol';
33
6
  export { validateWebhookUrl } from '../../shared/webhookValidation';
34
- /** Connection state */
35
- export interface ConnectionState {
36
- authenticated: boolean;
37
- clientId: string;
38
- }
39
- /** Create initial connection state */
40
- export declare function createConnectionState(clientId: string): ConnectionState;
41
- /** Error response helper */
42
- export declare function errorResponse(message: string, reqId?: string): string;
43
- /** Line buffer for TCP connections */
44
- export declare class LineBuffer {
45
- private buffer;
46
- /** Add data to buffer and extract complete lines */
47
- addData(data: string): string[];
48
- /** Get remaining buffer content */
49
- getRemaining(): string;
50
- /** Clear buffer */
51
- clear(): void;
52
- }
53
- /** Maximum allowed frame size (64MB) - prevents memory exhaustion DoS */
54
- export declare const MAX_FRAME_SIZE: number;
55
- /** Error thrown when frame size exceeds maximum */
56
- export declare class FrameSizeError extends Error {
57
- readonly requestedSize: number;
58
- readonly maxSize: number;
59
- constructor(requestedSize: number, maxSize: number);
60
- }
61
- /** Binary protocol frame parser */
62
- export declare class FrameParser {
63
- private buffer;
64
- private readonly maxFrameSize;
65
- constructor(maxFrameSize?: number);
66
- /** Add data and extract complete frames
67
- * @throws {FrameSizeError} if frame length exceeds maxFrameSize
68
- */
69
- addData(data: Uint8Array): Uint8Array[];
70
- /** Number of bytes currently buffered awaiting a complete frame. */
71
- get bufferedBytes(): number;
72
- /** True while a partial (incomplete) frame is buffered. */
73
- get hasPartialFrame(): boolean;
74
- /** Clear the internal buffer */
75
- clear(): void;
76
- /** Create a framed message */
77
- static frame(data: Uint8Array): Uint8Array;
78
- }
@@ -1,266 +1,5 @@
1
- /**
2
- * Protocol Parser
3
- * Handles JSON text protocol parsing and serialization
4
- */
5
- import { error } from '../../domain/types/response';
6
- /** Parse a command from JSON string */
7
- export function parseCommand(data) {
8
- try {
9
- const parsed = JSON.parse(data);
10
- if (!parsed['cmd']) {
11
- return null;
12
- }
13
- return parsed;
14
- }
15
- catch {
16
- return null;
17
- }
18
- }
19
- /** Serialize response to JSON string */
20
- export function serializeResponse(response) {
21
- return JSON.stringify(response);
22
- }
23
- /** Parse multiple commands from newline-delimited JSON */
24
- export function parseCommands(data) {
25
- const lines = data.split('\n').filter((line) => line.trim().length > 0);
26
- const commands = [];
27
- for (const line of lines) {
28
- const cmd = parseCommand(line);
29
- if (cmd) {
30
- commands.push(cmd);
31
- }
32
- }
33
- return commands;
34
- }
35
- /** Validate queue name */
36
- export function validateQueueName(name) {
37
- if (!name || name.length === 0) {
38
- return 'Queue name is required';
39
- }
40
- if (name.length > 256) {
41
- return 'Queue name too long (max 256 characters)';
42
- }
43
- if (!/^[a-zA-Z0-9_\-.:]+$/.test(name)) {
44
- return 'Queue name contains invalid characters';
45
- }
46
- return null;
47
- }
48
- /** Validate job data size */
49
- export function validateJobData(data) {
50
- const json = JSON.stringify(data);
51
- if (json.length > 10 * 1024 * 1024) {
52
- return 'Job data too large (max 10MB)';
53
- }
54
- return null;
55
- }
56
- /** Validate a numeric field is within safe bounds */
57
- export function validateNumericField(value, name, options = {}) {
58
- const { min = 0, max = Number.MAX_SAFE_INTEGER, required = false } = options;
59
- if (value === undefined || value === null) {
60
- return required ? `${name} is required` : null;
61
- }
62
- if (typeof value !== 'number') {
63
- return `${name} must be a number`;
64
- }
65
- if (!Number.isFinite(value)) {
66
- return `${name} must be a finite number`;
67
- }
68
- if (!Number.isInteger(value) &&
69
- (name === 'priority' || name === 'attempts' || name === 'maxAttempts')) {
70
- return `${name} must be an integer`;
71
- }
72
- if (value < min) {
73
- return `${name} must be at least ${min}`;
74
- }
75
- if (value > max) {
76
- return `${name} must be at most ${max}`;
77
- }
78
- return null;
79
- }
80
- /**
81
- * Validate the backoff field, which the public JobOptions type allows in two
82
- * forms: a plain number (delay ms) or `{ type: 'fixed' | 'exponential', delay
83
- * }`. Embedded mode already accepts both (domain parseBackoff); the TCP path
84
- * must too, or the object form throws over the wire while working embedded.
85
- */
86
- export function validateBackoffField(value) {
87
- if (value === undefined || value === null)
88
- return null;
89
- if (typeof value === 'object') {
90
- const obj = value;
91
- if (obj['type'] !== 'fixed' && obj['type'] !== 'exponential') {
92
- return "backoff.type must be 'fixed' or 'exponential'";
93
- }
94
- return validateNumericField(obj['delay'], 'backoff.delay', {
95
- min: 0,
96
- max: 24 * 60 * 60 * 1000, // max 1 day
97
- required: true,
98
- });
99
- }
100
- return validateNumericField(value, 'backoff', { min: 0, max: 24 * 60 * 60 * 1000 }); // max 1 day
101
- }
102
- /** Validate job options numeric fields */
103
- export function validateJobOptions(options) {
104
- const validations = [
105
- validateNumericField(options['priority'], 'priority', { min: -1000000, max: 1000000 }),
106
- validateNumericField(options['delay'], 'delay', { min: 0, max: 365 * 24 * 60 * 60 * 1000 }), // max 1 year
107
- validateNumericField(options['timeout'], 'timeout', { min: 0, max: 24 * 60 * 60 * 1000 }), // max 1 day
108
- validateNumericField(options['maxAttempts'], 'maxAttempts', { min: 1, max: 1000 }),
109
- validateBackoffField(options['backoff']),
110
- validateNumericField(options['ttl'], 'ttl', { min: 0, max: 365 * 24 * 60 * 60 * 1000 }), // max 1 year
111
- validateNumericField(options['stallTimeout'], 'stallTimeout', {
112
- min: 0,
113
- max: 24 * 60 * 60 * 1000,
114
- }), // max 1 day
115
- ];
116
- for (const error of validations) {
117
- if (error)
118
- return error;
119
- }
120
- return null;
121
- }
122
- /** Re-export from shared module for backward compatibility */
1
+ export { createConnectionState, errorResponse, parseCommand, parseCommands, serializeResponse, } from './protocol/commands';
2
+ export { FrameParser, FrameSizeError, MAX_FRAME_SIZE } from './protocol/frameParser';
3
+ export { LineBuffer } from './protocol/lineBuffer';
4
+ export { validateBackoffField, validateJobData, validateJobOptions, validateNumericField, validateQueueName, } from './protocol/validation';
123
5
  export { validateWebhookUrl } from '../../shared/webhookValidation';
124
- /** Create initial connection state */
125
- export function createConnectionState(clientId) {
126
- return {
127
- authenticated: false,
128
- clientId,
129
- };
130
- }
131
- /** Error response helper */
132
- export function errorResponse(message, reqId) {
133
- return serializeResponse(error(message, reqId));
134
- }
135
- /** Line buffer for TCP connections */
136
- export class LineBuffer {
137
- buffer = '';
138
- /** Add data to buffer and extract complete lines */
139
- addData(data) {
140
- this.buffer += data;
141
- const lines = [];
142
- let newlineIdx;
143
- while ((newlineIdx = this.buffer.indexOf('\n')) !== -1) {
144
- const line = this.buffer.slice(0, newlineIdx).trim();
145
- this.buffer = this.buffer.slice(newlineIdx + 1);
146
- if (line.length > 0) {
147
- lines.push(line);
148
- }
149
- }
150
- return lines;
151
- }
152
- /** Get remaining buffer content */
153
- getRemaining() {
154
- return this.buffer;
155
- }
156
- /** Clear buffer */
157
- clear() {
158
- this.buffer = '';
159
- }
160
- }
161
- /** Maximum allowed frame size (64MB) - prevents memory exhaustion DoS */
162
- export const MAX_FRAME_SIZE = 64 * 1024 * 1024;
163
- /** Error thrown when frame size exceeds maximum */
164
- export class FrameSizeError extends Error {
165
- requestedSize;
166
- maxSize;
167
- constructor(requestedSize, maxSize) {
168
- super(`Frame size ${requestedSize} exceeds maximum allowed size ${maxSize}`);
169
- this.requestedSize = requestedSize;
170
- this.maxSize = maxSize;
171
- this.name = 'FrameSizeError';
172
- }
173
- }
174
- /** Binary protocol frame parser */
175
- export class FrameParser {
176
- buffer = new Uint8Array(0);
177
- maxFrameSize;
178
- constructor(maxFrameSize = MAX_FRAME_SIZE) {
179
- this.maxFrameSize = maxFrameSize;
180
- }
181
- /** Add data and extract complete frames
182
- * @throws {FrameSizeError} if frame length exceeds maxFrameSize
183
- */
184
- addData(data) {
185
- // Concatenate any buffered partial frame with the new data into a single
186
- // owned buffer (one copy). `data` is fully copied here and never retained,
187
- // so the caller may safely reuse its read buffer after this returns.
188
- const buffer = new Uint8Array(this.buffer.length + data.length);
189
- buffer.set(this.buffer);
190
- buffer.set(data, this.buffer.length);
191
- const frames = [];
192
- // Read cursor. Previously the tail was resliced with `buffer.slice(4 + len)`
193
- // after EVERY frame — O(tail) per frame, i.e. O(F²) when F frames arrive
194
- // coalesced in a single read (deep pipelining / OS segment coalescing). The
195
- // cursor advances in O(1) per frame, making the whole pass O(total bytes).
196
- let offset = 0;
197
- while (buffer.length - offset >= 4) {
198
- // Read length prefix (big-endian u32) using unsigned right shift to ensure positive value
199
- // Using >>> 0 at the end converts the result to an unsigned 32-bit integer
200
- const length = ((buffer[offset] << 24) |
201
- (buffer[offset + 1] << 16) |
202
- (buffer[offset + 2] << 8) |
203
- buffer[offset + 3]) >>>
204
- 0;
205
- // Validate frame size to prevent memory exhaustion DoS. A single frame's
206
- // declared length can never exceed maxFrameSize (64MB), so the partial
207
- // buffer is bounded by maxFrameSize regardless of how it is segmented
208
- // across TCP reads. Slowloris (a connection that declares a large frame
209
- // then never completes it) is handled at the transport layer by an idle
210
- // read timeout in the server, NOT by dropping legal large partial frames.
211
- if (length > this.maxFrameSize) {
212
- // Clear buffer to prevent further processing of malicious data
213
- this.buffer = new Uint8Array(0);
214
- throw new FrameSizeError(length, this.maxFrameSize);
215
- }
216
- if (buffer.length - offset < 4 + length) {
217
- // Not enough data for this (legal, < maxFrameSize) frame yet. Keep the
218
- // partial bytes buffered until the rest of the frame arrives across
219
- // subsequent TCP segments.
220
- break;
221
- }
222
- // Extract frame. The body is copied out (slice) so it never aliases the
223
- // retained tail buffer.
224
- frames.push(buffer.slice(offset + 4, offset + 4 + length));
225
- offset += 4 + length;
226
- }
227
- // Retain only the unconsumed tail. Three cases mirror the previous behavior
228
- // without the per-frame reslice:
229
- // - fully drained: a fresh empty buffer (do not pin the read's ArrayBuffer)
230
- // - nothing consumed: keep the concat buffer as-is (no extra copy)
231
- // - partial leftover after ≥1 frame: copy the small tail (no aliasing)
232
- if (offset >= buffer.length) {
233
- this.buffer = new Uint8Array(0);
234
- }
235
- else if (offset === 0) {
236
- this.buffer = buffer;
237
- }
238
- else {
239
- this.buffer = buffer.slice(offset);
240
- }
241
- return frames;
242
- }
243
- /** Number of bytes currently buffered awaiting a complete frame. */
244
- get bufferedBytes() {
245
- return this.buffer.length;
246
- }
247
- /** True while a partial (incomplete) frame is buffered. */
248
- get hasPartialFrame() {
249
- return this.buffer.length > 0;
250
- }
251
- /** Clear the internal buffer */
252
- clear() {
253
- this.buffer = new Uint8Array(0);
254
- }
255
- /** Create a framed message */
256
- static frame(data) {
257
- const frame = new Uint8Array(4 + data.length);
258
- // Write length prefix (big-endian u32)
259
- frame[0] = (data.length >> 24) & 0xff;
260
- frame[1] = (data.length >> 16) & 0xff;
261
- frame[2] = (data.length >> 8) & 0xff;
262
- frame[3] = data.length & 0xff;
263
- frame.set(data, 4);
264
- return frame;
265
- }
266
- }
@@ -96,6 +96,7 @@ export class ProtocolRateLimiter {
96
96
  this.cleanupInterval = setInterval(() => {
97
97
  this.cleanup();
98
98
  }, this.config.cleanupIntervalMs);
99
+ this.cleanupInterval.unref();
99
100
  }
100
101
  }
101
102
  /** Clean up old entries - O(n) but runs infrequently */
@@ -48,7 +48,7 @@ export declare class SocketWriteQueue {
48
48
  * Call from the socket's `drain` handler. Stops at the first short write,
49
49
  * leaving the remainder queued for the next drain.
50
50
  */
51
- flush(socket: WritableSocket): void;
51
+ flush(socket: WritableSocket): boolean;
52
52
  /** Number of bytes still buffered awaiting drain. */
53
53
  get bytesQueued(): number;
54
54
  /** Whether there is unwritten data awaiting drain. */
@@ -84,23 +84,26 @@ export class SocketWriteQueue {
84
84
  written = socket.write(view);
85
85
  }
86
86
  catch {
87
- return;
87
+ return false;
88
88
  }
89
- if (written <= 0) {
90
- // Socket not ready / closed; wait for the next drain.
91
- return;
89
+ if (written < 0)
90
+ return false;
91
+ if (written === 0) {
92
+ // Socket is still backpressured; wait for the next drain.
93
+ return true;
92
94
  }
93
95
  if (written < view.length) {
94
96
  // Still backpressured: advance offset within the current chunk.
95
97
  this.offset += written;
96
98
  this.queuedBytes -= written;
97
- return;
99
+ return true;
98
100
  }
99
101
  // Whole chunk flushed.
100
102
  this.queuedBytes -= view.length;
101
103
  this.pending.shift();
102
104
  this.offset = 0;
103
105
  }
106
+ return true;
104
107
  }
105
108
  /** Number of bytes still buffered awaiting drain. */
106
109
  get bytesQueued() {
@@ -0,0 +1,5 @@
1
+ export declare const sseTextEncoder: TextEncoder;
2
+ export declare const MAX_SSE_CLIENTS = 1000;
3
+ export declare const SSE_HEARTBEAT_MS = 30000;
4
+ export declare const SSE_RETRY_MS = 3000;
5
+ export declare const SSE_EVENT_BUFFER_SIZE = 1000;
@@ -0,0 +1,5 @@
1
+ export const sseTextEncoder = new TextEncoder();
2
+ export const MAX_SSE_CLIENTS = 1000;
3
+ export const SSE_HEARTBEAT_MS = 30_000;
4
+ export const SSE_RETRY_MS = 3_000;
5
+ export const SSE_EVENT_BUFFER_SIZE = 1000;
@@ -0,0 +1,3 @@
1
+ import type { BufferedSseEvent, SseClient } from '../types/sse';
2
+ export declare function bufferSseEvent(buffer: BufferedSseEvent[], event: BufferedSseEvent): void;
3
+ export declare function replaySseEvents(buffer: readonly BufferedSseEvent[], client: SseClient, lastEventId: number): void;