@quave/agenda 1.0.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 (216) hide show
  1. package/LICENSE.md +25 -0
  2. package/README.md +380 -0
  3. package/dist/Job.d.ts +190 -0
  4. package/dist/Job.js +689 -0
  5. package/dist/Job.js.map +1 -0
  6. package/dist/JobProcessingQueue.d.ts +47 -0
  7. package/dist/JobProcessingQueue.js +107 -0
  8. package/dist/JobProcessingQueue.js.map +1 -0
  9. package/dist/JobProcessor.d.ts +72 -0
  10. package/dist/JobProcessor.js +512 -0
  11. package/dist/JobProcessor.js.map +1 -0
  12. package/dist/backends/index.d.ts +18 -0
  13. package/dist/backends/index.js +20 -0
  14. package/dist/backends/index.js.map +1 -0
  15. package/dist/cjs/Job.d.ts +190 -0
  16. package/dist/cjs/Job.js +696 -0
  17. package/dist/cjs/Job.js.map +1 -0
  18. package/dist/cjs/JobProcessingQueue.d.ts +47 -0
  19. package/dist/cjs/JobProcessingQueue.js +111 -0
  20. package/dist/cjs/JobProcessingQueue.js.map +1 -0
  21. package/dist/cjs/JobProcessor.d.ts +72 -0
  22. package/dist/cjs/JobProcessor.js +519 -0
  23. package/dist/cjs/JobProcessor.js.map +1 -0
  24. package/dist/cjs/backends/index.d.ts +17 -0
  25. package/dist/cjs/backends/index.js +20 -0
  26. package/dist/cjs/backends/index.js.map +1 -0
  27. package/dist/cjs/decorators/Define.d.ts +33 -0
  28. package/dist/cjs/decorators/Define.js +47 -0
  29. package/dist/cjs/decorators/Define.js.map +1 -0
  30. package/dist/cjs/decorators/Every.d.ts +43 -0
  31. package/dist/cjs/decorators/Every.js +58 -0
  32. package/dist/cjs/decorators/Every.js.map +1 -0
  33. package/dist/cjs/decorators/JobsController.d.ts +43 -0
  34. package/dist/cjs/decorators/JobsController.js +40 -0
  35. package/dist/cjs/decorators/JobsController.js.map +1 -0
  36. package/dist/cjs/decorators/index.d.ts +41 -0
  37. package/dist/cjs/decorators/index.js +57 -0
  38. package/dist/cjs/decorators/index.js.map +1 -0
  39. package/dist/cjs/decorators/metadata.d.ts +50 -0
  40. package/dist/cjs/decorators/metadata.js +41 -0
  41. package/dist/cjs/decorators/metadata.js.map +1 -0
  42. package/dist/cjs/decorators/register.d.ts +52 -0
  43. package/dist/cjs/decorators/register.js +145 -0
  44. package/dist/cjs/decorators/register.js.map +1 -0
  45. package/dist/cjs/index.d.ts +498 -0
  46. package/dist/cjs/index.js +776 -0
  47. package/dist/cjs/index.js.map +1 -0
  48. package/dist/cjs/notifications/BaseNotificationChannel.d.ts +47 -0
  49. package/dist/cjs/notifications/BaseNotificationChannel.js +112 -0
  50. package/dist/cjs/notifications/BaseNotificationChannel.js.map +1 -0
  51. package/dist/cjs/notifications/InMemoryNotificationChannel.d.ts +13 -0
  52. package/dist/cjs/notifications/InMemoryNotificationChannel.js +37 -0
  53. package/dist/cjs/notifications/InMemoryNotificationChannel.js.map +1 -0
  54. package/dist/cjs/notifications/index.d.ts +2 -0
  55. package/dist/cjs/notifications/index.js +8 -0
  56. package/dist/cjs/notifications/index.js.map +1 -0
  57. package/dist/cjs/package.json +1 -0
  58. package/dist/cjs/types/AgendaBackend.d.ts +61 -0
  59. package/dist/cjs/types/AgendaBackend.js +3 -0
  60. package/dist/cjs/types/AgendaBackend.js.map +1 -0
  61. package/dist/cjs/types/AgendaConfig.d.ts +10 -0
  62. package/dist/cjs/types/AgendaConfig.js +3 -0
  63. package/dist/cjs/types/AgendaConfig.js.map +1 -0
  64. package/dist/cjs/types/AgendaStatus.d.ts +32 -0
  65. package/dist/cjs/types/AgendaStatus.js +3 -0
  66. package/dist/cjs/types/AgendaStatus.js.map +1 -0
  67. package/dist/cjs/types/DbOptions.d.ts +4 -0
  68. package/dist/cjs/types/DbOptions.js +3 -0
  69. package/dist/cjs/types/DbOptions.js.map +1 -0
  70. package/dist/cjs/types/DrainOptions.d.ts +37 -0
  71. package/dist/cjs/types/DrainOptions.js +3 -0
  72. package/dist/cjs/types/DrainOptions.js.map +1 -0
  73. package/dist/cjs/types/JobDefinition.d.ts +49 -0
  74. package/dist/cjs/types/JobDefinition.js +3 -0
  75. package/dist/cjs/types/JobDefinition.js.map +1 -0
  76. package/dist/cjs/types/JobLogger.d.ts +111 -0
  77. package/dist/cjs/types/JobLogger.js +3 -0
  78. package/dist/cjs/types/JobLogger.js.map +1 -0
  79. package/dist/cjs/types/JobParameters.d.ts +106 -0
  80. package/dist/cjs/types/JobParameters.js +21 -0
  81. package/dist/cjs/types/JobParameters.js.map +1 -0
  82. package/dist/cjs/types/JobQuery.d.ts +79 -0
  83. package/dist/cjs/types/JobQuery.js +36 -0
  84. package/dist/cjs/types/JobQuery.js.map +1 -0
  85. package/dist/cjs/types/JobRepository.d.ts +101 -0
  86. package/dist/cjs/types/JobRepository.js +3 -0
  87. package/dist/cjs/types/JobRepository.js.map +1 -0
  88. package/dist/cjs/types/NotificationChannel.d.ts +120 -0
  89. package/dist/cjs/types/NotificationChannel.js +3 -0
  90. package/dist/cjs/types/NotificationChannel.js.map +1 -0
  91. package/dist/cjs/utils/backoff.d.ts +152 -0
  92. package/dist/cjs/utils/backoff.js +175 -0
  93. package/dist/cjs/utils/backoff.js.map +1 -0
  94. package/dist/cjs/utils/dateConstraints.d.ts +48 -0
  95. package/dist/cjs/utils/dateConstraints.js +127 -0
  96. package/dist/cjs/utils/dateConstraints.js.map +1 -0
  97. package/dist/cjs/utils/isValidDate.d.ts +1 -0
  98. package/dist/cjs/utils/isValidDate.js +8 -0
  99. package/dist/cjs/utils/isValidDate.js.map +1 -0
  100. package/dist/cjs/utils/nextRunAt.d.ts +10 -0
  101. package/dist/cjs/utils/nextRunAt.js +119 -0
  102. package/dist/cjs/utils/nextRunAt.js.map +1 -0
  103. package/dist/cjs/utils/priority.d.ts +13 -0
  104. package/dist/cjs/utils/priority.js +23 -0
  105. package/dist/cjs/utils/priority.js.map +1 -0
  106. package/dist/cjs/utils/processEvery.d.ts +1 -0
  107. package/dist/cjs/utils/processEvery.js +13 -0
  108. package/dist/cjs/utils/processEvery.js.map +1 -0
  109. package/dist/cjs/utils/stack.d.ts +1 -0
  110. package/dist/cjs/utils/stack.js +21 -0
  111. package/dist/cjs/utils/stack.js.map +1 -0
  112. package/dist/cjs/version.d.ts +9 -0
  113. package/dist/cjs/version.js +13 -0
  114. package/dist/cjs/version.js.map +1 -0
  115. package/dist/decorators/Define.d.ts +33 -0
  116. package/dist/decorators/Define.js +44 -0
  117. package/dist/decorators/Define.js.map +1 -0
  118. package/dist/decorators/Every.d.ts +43 -0
  119. package/dist/decorators/Every.js +55 -0
  120. package/dist/decorators/Every.js.map +1 -0
  121. package/dist/decorators/JobsController.d.ts +43 -0
  122. package/dist/decorators/JobsController.js +37 -0
  123. package/dist/decorators/JobsController.js.map +1 -0
  124. package/dist/decorators/index.d.ts +41 -0
  125. package/dist/decorators/index.js +46 -0
  126. package/dist/decorators/index.js.map +1 -0
  127. package/dist/decorators/metadata.d.ts +50 -0
  128. package/dist/decorators/metadata.js +35 -0
  129. package/dist/decorators/metadata.js.map +1 -0
  130. package/dist/decorators/register.d.ts +52 -0
  131. package/dist/decorators/register.js +139 -0
  132. package/dist/decorators/register.js.map +1 -0
  133. package/dist/index.d.ts +498 -0
  134. package/dist/index.js +744 -0
  135. package/dist/index.js.map +1 -0
  136. package/dist/notifications/BaseNotificationChannel.d.ts +47 -0
  137. package/dist/notifications/BaseNotificationChannel.js +108 -0
  138. package/dist/notifications/BaseNotificationChannel.js.map +1 -0
  139. package/dist/notifications/InMemoryNotificationChannel.d.ts +13 -0
  140. package/dist/notifications/InMemoryNotificationChannel.js +33 -0
  141. package/dist/notifications/InMemoryNotificationChannel.js.map +1 -0
  142. package/dist/notifications/index.d.ts +2 -0
  143. package/dist/notifications/index.js +3 -0
  144. package/dist/notifications/index.js.map +1 -0
  145. package/dist/types/AgendaBackend.d.ts +61 -0
  146. package/dist/types/AgendaBackend.js +2 -0
  147. package/dist/types/AgendaBackend.js.map +1 -0
  148. package/dist/types/AgendaConfig.d.ts +10 -0
  149. package/dist/types/AgendaConfig.js +2 -0
  150. package/dist/types/AgendaConfig.js.map +1 -0
  151. package/dist/types/AgendaStatus.d.ts +32 -0
  152. package/dist/types/AgendaStatus.js +2 -0
  153. package/dist/types/AgendaStatus.js.map +1 -0
  154. package/dist/types/DbOptions.d.ts +4 -0
  155. package/dist/types/DbOptions.js +2 -0
  156. package/dist/types/DbOptions.js.map +1 -0
  157. package/dist/types/DrainOptions.d.ts +37 -0
  158. package/dist/types/DrainOptions.js +2 -0
  159. package/dist/types/DrainOptions.js.map +1 -0
  160. package/dist/types/JobDefinition.d.ts +49 -0
  161. package/dist/types/JobDefinition.js +2 -0
  162. package/dist/types/JobDefinition.js.map +1 -0
  163. package/dist/types/JobLogger.d.ts +111 -0
  164. package/dist/types/JobLogger.js +2 -0
  165. package/dist/types/JobLogger.js.map +1 -0
  166. package/dist/types/JobParameters.d.ts +106 -0
  167. package/dist/types/JobParameters.js +17 -0
  168. package/dist/types/JobParameters.js.map +1 -0
  169. package/dist/types/JobQuery.d.ts +79 -0
  170. package/dist/types/JobQuery.js +33 -0
  171. package/dist/types/JobQuery.js.map +1 -0
  172. package/dist/types/JobRepository.d.ts +101 -0
  173. package/dist/types/JobRepository.js +2 -0
  174. package/dist/types/JobRepository.js.map +1 -0
  175. package/dist/types/NotificationChannel.d.ts +120 -0
  176. package/dist/types/NotificationChannel.js +2 -0
  177. package/dist/types/NotificationChannel.js.map +1 -0
  178. package/dist/utils/backoff.d.ts +152 -0
  179. package/dist/utils/backoff.js +167 -0
  180. package/dist/utils/backoff.js.map +1 -0
  181. package/dist/utils/dateConstraints.d.ts +48 -0
  182. package/dist/utils/dateConstraints.js +117 -0
  183. package/dist/utils/dateConstraints.js.map +1 -0
  184. package/dist/utils/isValidDate.d.ts +1 -0
  185. package/dist/utils/isValidDate.js +5 -0
  186. package/dist/utils/isValidDate.js.map +1 -0
  187. package/dist/utils/nextRunAt.d.ts +10 -0
  188. package/dist/utils/nextRunAt.js +110 -0
  189. package/dist/utils/nextRunAt.js.map +1 -0
  190. package/dist/utils/priority.d.ts +13 -0
  191. package/dist/utils/priority.js +20 -0
  192. package/dist/utils/priority.js.map +1 -0
  193. package/dist/utils/processEvery.d.ts +1 -0
  194. package/dist/utils/processEvery.js +7 -0
  195. package/dist/utils/processEvery.js.map +1 -0
  196. package/dist/utils/stack.d.ts +1 -0
  197. package/dist/utils/stack.js +18 -0
  198. package/dist/utils/stack.js.map +1 -0
  199. package/dist/version.d.ts +9 -0
  200. package/dist/version.js +10 -0
  201. package/dist/version.js.map +1 -0
  202. package/package.json +79 -0
  203. package/test/fixtures/forkHelper.js +40 -0
  204. package/test/fixtures/someJobDefinition.ts +12 -0
  205. package/test/shared/agenda-test-suite.ts +1876 -0
  206. package/test/shared/backoff-test-suite.ts +408 -0
  207. package/test/shared/debounce-test-suite.ts +377 -0
  208. package/test/shared/full-test-suite.ts +161 -0
  209. package/test/shared/index.ts +50 -0
  210. package/test/shared/joblogger-test-suite.ts +305 -0
  211. package/test/shared/jobprocessor-test-suite.ts +266 -0
  212. package/test/shared/notification-channel-test-suite.ts +471 -0
  213. package/test/shared/removeoncomplete-test-suite.ts +228 -0
  214. package/test/shared/repository-test-suite.ts +708 -0
  215. package/test/shared/retry-test-suite.ts +174 -0
  216. package/test/shared/test-utils.ts +100 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,OAAO,EAAE,GAAG,EAAa,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAe,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAM,cAAc,GAAG;IACtB,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,CAAC;IACrB,cAAc,EAAE,EAAE;IAClB,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,CAAC;IACZ,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACnC,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC3C,gBAAgB,EAAE,KAAK;CACvB,CAAC;AAgHF;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,YAAY;IAwEvC,0FAA0F;IAC1F,8DAA8D;IAC9D,EAAE,CAAC,KAAa,EAAE,QAAkC;QACnD,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,cAAc,KAAK,wCAAwC,CAAC,CAAC;YACvF,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IAUD,oBAAoB;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAW,GAAG,KAAK;QACxC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE9D,wDAAwD;QACxD,MAAM,CAAC,OAAO,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EAAE;SACrD,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,YAAY,MAAqB,EAAE,EAA4B;QAC9D,KAAK,EAAE,CAAC;QAzCA,gBAAW,GAEhB,EAAE,CAAC;QAyCN,8DAA8D;QAC9D,sEAAsE;QACtE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3B,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YACvB,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,YAAY;YACvF,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,cAAc,CAAC,kBAAkB;YAClF,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,cAAc,CAAC,cAAc;YACtE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB;YAC5E,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS;YACvD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,cAAc,CAAC,mBAAmB;YACrF,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB;SAC5E,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEpC,wDAAwD;QACxD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7B,iDAAiD;YACjD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5F,yDAAyD;YACzD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAoB,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjE,wCAAwC;YACxC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAoD,CAAC;YACzE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACtD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,qCAAqC;YACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;QAEpC,qEAAqE;QACrE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAE5F,qEAAqE;QACrE,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE5B,gEAAgE;YAChE,4DAA4D;YAC5D,2DAA2D;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAC1B,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EACxB,CAAC,KAAY,EAAE,EAAE;gBAChB,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,CACD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,EAAE,CAAC;YACR,gEAAgE;YAChE,8DAA8D;YAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,CACd,GAAG,EAAE,CAAC,EAAE,EAAE,EACV,GAAG,EAAE,GAAE,CAAC,CACR,CAAC;QACH,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,OAA0B;QACtC,GAAG,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC;YACJ,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9D,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YAC9C,OAAO,mBAAmB,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACjD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,OAA0B;QACvC,GAAG,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACvD,GAAG,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACrC,OAAO,WAAW,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,8BAA8B,CAAC,CAAC;YACpC,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,OAA0B;QACtC,GAAG,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACrD,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;YACnC,OAAO,UAAU,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,6BAA6B,CAAC,CAAC;YACnC,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAY;QAChB,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,IAAqB;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACd,qFAAqF,CACrF,CAAC;QACH,CAAC;QACD,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,GAAW;QACzB,GAAG,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,GAAW;QAC7B,GAAG,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACpC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,GAAW;QACpB,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,GAAW;QAC3B,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,EAAU;QAC7B,GAAG,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,OAA4B;QACrC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACd,4FAA4F,CAC5F,CAAC;QACH,CAAC;QACD,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC/C,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACH,sBAAsB;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,YAAY;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,KAA4D;QACvE,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,uDAAuD;QACvD,mEAAmE;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QAC3D,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC,SAAS;aACZ,GAAG,CAAC;YACJ,GAAG,KAAK;YACR,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS;SACxC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACZ,GAAG,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,KAAmB;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,KAAmB;QAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC;QACV,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,sBAAsB,CAAC,GAAQ;QACpC,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACjF,4DAA4D;YAC5D,OAAO;QACR,CAAC;QAED,MAAM,YAAY,GAAoB;YACrC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAY;YAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;YACvB,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;YAC9B,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;YAC5B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS;SACpC,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACrD,GAAG,CAAC,wCAAwC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,gDAAgD,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5F,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,2BAA2B,CAC1B,GAAQ,EACR,IAAkB,EAClB,KAEC;QAED,IACC,CAAC,IAAI,CAAC,mBAAmB;YACzB,IAAI,CAAC,mBAAmB,CAAC,KAAK,KAAK,WAAW;YAC9C,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,EACrC,CAAC;YACF,gFAAgF;YAChF,OAAO;QACR,CAAC;QAED,MAAM,YAAY,GAAyB;YAC1C,IAAI;YACJ,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAY;YAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS;YACpC,GAAG,KAAK;SACR,CAAC;QAEF,cAAc;QACd,IAAI,CAAC,mBAAmB;aACtB,YAAY,CAAC,YAAY,CAAC;aAC1B,IAAI,CAAC,GAAG,EAAE;YACV,GAAG,CACF,mDAAmD,EACnD,IAAI,EACJ,GAAG,CAAC,KAAK,CAAC,IAAI,EACd,GAAG,CAAC,KAAK,CAAC,GAAG,CACb,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACd,GAAG,CACF,2DAA2D,EAC3D,IAAI,EACJ,GAAG,CAAC,KAAK,CAAC,IAAI,EACd,GAAG,CAAC,KAAK,CAAC,GAAG,EACb,KAAK,CACL,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,6BAA6B;QACpC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,EAAE,CAAC;YAC/C,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;YAC7D,2DAA2D;YAC3D,yCAAyC;YACzC,+EAA+E;YAC/E,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YACxC,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACtC,OAAO;YACR,CAAC;YAED,GAAG,CACF,qDAAqD,EACrD,YAAY,CAAC,IAAI,EACjB,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,KAAK,CAClB,CAAC;YAEF,0DAA0D;YAC1D,6FAA6F;YAC7F,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACrB,kDAAkD;gBAClD,qDAAqD;gBACrD,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBAC1D,IAAI,CAAC,IAAI,CAAC,QAAQ,YAAY,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;gBACnF,CAAC;qBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC1C,4DAA4D;oBAC5D,MAAM,YAAY,GAAiB;wBAClC,OAAO,EAAE,YAAY,CAAC,YAAY,IAAI,CAAC;wBACvC,KAAK,EAAE,CAAC,EAAE,gCAAgC;wBAC1C,SAAS,EAAE,YAAY,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE;wBAC7C,KAAK,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,eAAe,CAAC;qBACvD,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBACrD,IAAI,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC9E,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC/E,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAC,OAA0B;QACzC,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe;QACpB,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACV,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS;QACd,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YAC7C,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,+CAA+C,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IA8BD,MAAM,CACL,IAAY,EACZ,SAA4F,EAC5F,OAIC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;QAErC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG;YACxB,EAAE,EAAE,SAAgC;YACpC,QAAQ;YACR,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB;YAClE,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC5D,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC1C,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB;YACrE,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC1E,OAAO,EAAE,OAAO,EAAE,OAAO;SACzB,CAAC;QACF,GAAG,CAAC,+CAA+C,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,UAAU,CACvB,KAAe,EACf,SAA+C;QAE/C,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEnE,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAErD,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAQD,8DAA8D;IAC9D,MAAM,CAAC,IAAY,EAAE,IAAc;QAClC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IA6DD,KAAK,CAAC,KAAK,CACV,QAAyB,EACzB,KAAwB,EACxB,IAAc,EACd,OAOC;QAGD,GAAG,CAAC,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAE1D,gEAAgE;QAChE,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAgB,EAAE;YACtD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;YAE1B,uFAAuF;YACvF,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;gBACtB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YAED,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnC,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAEjB,OAAO,GAAG,CAAC;QACZ,CAAC,CAAC;QAEF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,GAAG,CAAC,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAiDD,KAAK,CAAC,QAAQ,CACb,IAAmB,EACnB,KAAwB,EACxB,IAAc,EACd,OAIC;QAED,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEpC,2CAA2C;YAC3C,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;gBACtB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YAED,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAEhC,OAAO,GAAG,CAAC;QACZ,CAAC,CAAC;QAEF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,GAAG,CAAC,+BAA+B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,GAAG,CAAC,+BAA+B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAQD,KAAK,CAAC,GAAG,CAAO,IAAY,EAAE,IAAW;QACxC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEpC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACzB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAEjB,OAAO,GAAuB,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAC1D,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,KAAK,CAAC,YAAY,CACjB,IAAY,EACZ,IAAU,EACV,SAAkC,EAClC,UAAkB,EAClB,OAAiE;QAEjE,GAAG,CAAC,2CAA2C,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEpC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEzE,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAEjB,OAAO,GAAG,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,wCAAwC,CAAC,CAAC;YAC9C,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACV,GAAG,CACF,2EAA2E,EAC3E,IAAI,CAAC,KAAK,CAAC,YAAY,CACvB,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACjD,OAAO;QACR,CAAC;QAED,6CAA6C;QAC7C,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,GAAG,CAAC,8CAA8C,CAAC,CAAC;YACpD,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAEzC,uEAAuE;YACvE,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CACnC,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,cAAc,EACzB,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,KAAK,CAAC,YAAY,EACvB,IAAI,CAAC,mBAAmB,CACxB,CAAC;IAEH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,eAAyB;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACzD,OAAO;QACR,CAAC;QAED,GAAG,CAAC,yDAAyD,CAAC,CAAC;QAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAE5C,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAE3D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACvC,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC;QAC/C,CAAC;QAED,sGAAsG;QACtG,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,GAAG,CAAC,gDAAgD,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;QAC7C,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QAE3E,yBAAyB;QACzB,IAAI,WAAW,EAAE,CAAC;YACjB,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,KAAK,CACV,OAAiE;QAEjE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAC1D,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtE,CAAC;QAED,oBAAoB;QACpB,MAAM,IAAI,GACT,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAEpE,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnD,uCAAuC;QACvC,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACvC,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC;QAC/C,CAAC;QAED,sGAAsG;QACtG,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,GAAG,CAAC,iDAAiD,CAAC,CAAC;YACvD,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;QAC7C,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QAEhF,yBAAyB;QACzB,IAAI,WAAW,EAAE,CAAC;YACjB,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAE9B,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAED,cAAc,yBAAyB,CAAC;AAExC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,sBAAsB,CAAC;AAErC,cAAc,UAAU,CAAC;AAEzB,cAAc,qBAAqB,CAAC;AAEpC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,gCAAgC,CAAC;AAE/C,cAAc,0BAA0B,CAAC;AAEzC,cAAc,yBAAyB,CAAC;AAExC,cAAc,yBAAyB,CAAC;AAExC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,sBAAsB,CAAC;AAErC,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACN,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,IAAI,EAMJ,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { EventEmitter } from 'events';
2
+ import type { NotificationChannel, NotificationChannelConfig, JobNotification, NotificationHandler, NotificationChannelState, JobStateNotification, StateNotificationHandler } from '../types/NotificationChannel.js';
3
+ /**
4
+ * Internal config type with all properties required
5
+ */
6
+ interface ResolvedNotificationChannelConfig {
7
+ channelName: string;
8
+ reconnect: {
9
+ enabled: boolean;
10
+ maxAttempts: number;
11
+ initialDelayMs: number;
12
+ maxDelayMs: number;
13
+ };
14
+ }
15
+ /**
16
+ * Abstract base class for notification channels.
17
+ * Provides common functionality like state management and reconnection logic.
18
+ */
19
+ export declare abstract class BaseNotificationChannel extends EventEmitter implements NotificationChannel {
20
+ protected _state: NotificationChannelState;
21
+ protected handlers: Set<NotificationHandler>;
22
+ protected stateHandlers: Set<StateNotificationHandler>;
23
+ protected reconnectAttempts: number;
24
+ protected reconnectTimeout?: ReturnType<typeof setTimeout>;
25
+ protected readonly config: ResolvedNotificationChannelConfig;
26
+ constructor(config?: NotificationChannelConfig);
27
+ get state(): NotificationChannelState;
28
+ protected setState(newState: NotificationChannelState): void;
29
+ abstract connect(): Promise<void>;
30
+ abstract disconnect(): Promise<void>;
31
+ abstract publish(notification: JobNotification): Promise<void>;
32
+ subscribe(handler: NotificationHandler): () => void;
33
+ protected notifyHandlers(notification: JobNotification): Promise<void>;
34
+ /**
35
+ * Notify all registered state handlers of a state notification.
36
+ * Subclasses should call this when receiving state notifications.
37
+ */
38
+ protected notifyStateHandlers(notification: JobStateNotification): Promise<void>;
39
+ /**
40
+ * Subscribe to state notifications.
41
+ * Default implementation manages the stateHandlers set.
42
+ */
43
+ subscribeState(handler: StateNotificationHandler): () => void;
44
+ protected scheduleReconnect(): void;
45
+ protected clearReconnect(): void;
46
+ }
47
+ export {};
@@ -0,0 +1,108 @@
1
+ import { EventEmitter } from 'events';
2
+ /**
3
+ * Abstract base class for notification channels.
4
+ * Provides common functionality like state management and reconnection logic.
5
+ */
6
+ export class BaseNotificationChannel extends EventEmitter {
7
+ constructor(config = {}) {
8
+ super();
9
+ this._state = 'disconnected';
10
+ this.handlers = new Set();
11
+ this.stateHandlers = new Set();
12
+ this.reconnectAttempts = 0;
13
+ this.config = {
14
+ channelName: config.channelName ?? 'agenda:jobs',
15
+ reconnect: {
16
+ enabled: config.reconnect?.enabled ?? true,
17
+ maxAttempts: config.reconnect?.maxAttempts ?? 10,
18
+ initialDelayMs: config.reconnect?.initialDelayMs ?? 100,
19
+ maxDelayMs: config.reconnect?.maxDelayMs ?? 30000
20
+ }
21
+ };
22
+ }
23
+ get state() {
24
+ return this._state;
25
+ }
26
+ setState(newState) {
27
+ if (this._state !== newState) {
28
+ this._state = newState;
29
+ this.emit('stateChange', newState);
30
+ }
31
+ }
32
+ subscribe(handler) {
33
+ this.handlers.add(handler);
34
+ return () => {
35
+ this.handlers.delete(handler);
36
+ };
37
+ }
38
+ async notifyHandlers(notification) {
39
+ const promises = [];
40
+ for (const handler of this.handlers) {
41
+ try {
42
+ const result = handler(notification);
43
+ if (result instanceof Promise) {
44
+ promises.push(result);
45
+ }
46
+ }
47
+ catch (error) {
48
+ this.emit('error', error);
49
+ }
50
+ }
51
+ await Promise.allSettled(promises);
52
+ }
53
+ /**
54
+ * Notify all registered state handlers of a state notification.
55
+ * Subclasses should call this when receiving state notifications.
56
+ */
57
+ async notifyStateHandlers(notification) {
58
+ const promises = [];
59
+ for (const handler of this.stateHandlers) {
60
+ try {
61
+ const result = handler(notification);
62
+ if (result instanceof Promise) {
63
+ promises.push(result);
64
+ }
65
+ }
66
+ catch (error) {
67
+ this.emit('error', error);
68
+ }
69
+ }
70
+ await Promise.allSettled(promises);
71
+ }
72
+ /**
73
+ * Subscribe to state notifications.
74
+ * Default implementation manages the stateHandlers set.
75
+ */
76
+ subscribeState(handler) {
77
+ this.stateHandlers.add(handler);
78
+ return () => {
79
+ this.stateHandlers.delete(handler);
80
+ };
81
+ }
82
+ scheduleReconnect() {
83
+ if (!this.config.reconnect.enabled) {
84
+ return;
85
+ }
86
+ if (this.reconnectAttempts >= this.config.reconnect.maxAttempts) {
87
+ this.setState('error');
88
+ this.emit('error', new Error('Max reconnection attempts reached'));
89
+ return;
90
+ }
91
+ const delay = Math.min(this.config.reconnect.initialDelayMs * Math.pow(2, this.reconnectAttempts), this.config.reconnect.maxDelayMs);
92
+ this.setState('reconnecting');
93
+ this.reconnectAttempts++;
94
+ this.reconnectTimeout = setTimeout(() => {
95
+ this.connect().catch(error => {
96
+ this.emit('error', error);
97
+ });
98
+ }, delay);
99
+ }
100
+ clearReconnect() {
101
+ if (this.reconnectTimeout) {
102
+ clearTimeout(this.reconnectTimeout);
103
+ this.reconnectTimeout = undefined;
104
+ }
105
+ this.reconnectAttempts = 0;
106
+ }
107
+ }
108
+ //# sourceMappingURL=BaseNotificationChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseNotificationChannel.js","sourceRoot":"","sources":["../../src/notifications/BaseNotificationChannel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { NotificationChannelConfig, JobNotification, JobStateNotification } from '../types/NotificationChannel.js';
2
+ import { BaseNotificationChannel } from './BaseNotificationChannel.js';
3
+ /**
4
+ * In-memory notification channel for testing and single-process scenarios.
5
+ * Notifications are delivered synchronously within the same process.
6
+ */
7
+ export declare class InMemoryNotificationChannel extends BaseNotificationChannel {
8
+ constructor(config?: NotificationChannelConfig);
9
+ connect(): Promise<void>;
10
+ disconnect(): Promise<void>;
11
+ publish(notification: JobNotification): Promise<void>;
12
+ publishState(notification: JobStateNotification): Promise<void>;
13
+ }
@@ -0,0 +1,33 @@
1
+ import { BaseNotificationChannel } from './BaseNotificationChannel.js';
2
+ /**
3
+ * In-memory notification channel for testing and single-process scenarios.
4
+ * Notifications are delivered synchronously within the same process.
5
+ */
6
+ export class InMemoryNotificationChannel extends BaseNotificationChannel {
7
+ constructor(config = {}) {
8
+ super(config);
9
+ }
10
+ async connect() {
11
+ this.clearReconnect();
12
+ this.setState('connected');
13
+ }
14
+ async disconnect() {
15
+ this.clearReconnect();
16
+ this.handlers.clear();
17
+ this.stateHandlers.clear();
18
+ this.setState('disconnected');
19
+ }
20
+ async publish(notification) {
21
+ if (this._state !== 'connected') {
22
+ throw new Error('Cannot publish: channel not connected');
23
+ }
24
+ await this.notifyHandlers(notification);
25
+ }
26
+ async publishState(notification) {
27
+ if (this._state !== 'connected') {
28
+ throw new Error('Cannot publish state: channel not connected');
29
+ }
30
+ await this.notifyStateHandlers(notification);
31
+ }
32
+ }
33
+ //# sourceMappingURL=InMemoryNotificationChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryNotificationChannel.js","sourceRoot":"","sources":["../../src/notifications/InMemoryNotificationChannel.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;GAGG;AACH,MAAM,OAAO,2BAA4B,SAAQ,uBAAuB;IACvE,YAAY,SAAoC,EAAE;QACjD,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU;QACf,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,YAA6B;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAkC;QACpD,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;CACD"}
@@ -0,0 +1,2 @@
1
+ export { BaseNotificationChannel } from './BaseNotificationChannel.js';
2
+ export { InMemoryNotificationChannel } from './InMemoryNotificationChannel.js';
@@ -0,0 +1,3 @@
1
+ export { BaseNotificationChannel } from './BaseNotificationChannel.js';
2
+ export { InMemoryNotificationChannel } from './InMemoryNotificationChannel.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,61 @@
1
+ import type { JobRepository } from './JobRepository.js';
2
+ import type { NotificationChannel } from './NotificationChannel.js';
3
+ import type { JobLogger } from './JobLogger.js';
4
+ /**
5
+ * Unified backend interface for Agenda.
6
+ *
7
+ * A backend provides storage (required) and optionally notifications.
8
+ * This allows a single driver to implement both capabilities (e.g., PostgreSQL with LISTEN/NOTIFY)
9
+ * or just storage (e.g., MongoDB without notifications).
10
+ *
11
+ * Examples:
12
+ * - MongoBackend: provides repository only (polling-based)
13
+ * - PostgresBackend: provides repository + notificationChannel (LISTEN/NOTIFY)
14
+ * - Custom: mix storage from one system, notifications from another
15
+ */
16
+ export interface AgendaBackend {
17
+ /**
18
+ * Human-readable name for this backend (e.g., 'MongoDB', 'PostgreSQL', 'Redis').
19
+ * Used for display in dashboards and debugging.
20
+ */
21
+ readonly name: string;
22
+ /**
23
+ * The job repository for storage operations.
24
+ * This is required - every backend must provide storage.
25
+ */
26
+ readonly repository: JobRepository;
27
+ /**
28
+ * Optional notification channel for real-time job notifications.
29
+ * If provided, Agenda will use this for immediate job processing.
30
+ * If not provided, Agenda falls back to periodic polling.
31
+ */
32
+ readonly notificationChannel?: NotificationChannel | undefined;
33
+ /**
34
+ * Job logger for persistent job event logging.
35
+ * Backends provide a logger that stores events in a dedicated table/collection.
36
+ * The logger is lightweight and only initializes its storage on first use.
37
+ * Agenda activates this logger when the user enables logging via `logging: true`.
38
+ */
39
+ readonly logger?: JobLogger | undefined;
40
+ /**
41
+ * Whether the backend owns its database connection.
42
+ * - true: backend created the connection (e.g., from connection string)
43
+ * - false: connection was passed in by the user
44
+ *
45
+ * Used by agenda.stop() to determine whether to close the connection.
46
+ * Defaults to true if not implemented.
47
+ */
48
+ readonly ownsConnection?: boolean | undefined;
49
+ /**
50
+ * Connect to the backend.
51
+ * Called when agenda.start() is invoked.
52
+ * Should establish database connections, set up notification subscriptions, etc.
53
+ */
54
+ connect(): Promise<void>;
55
+ /**
56
+ * Disconnect from the backend.
57
+ * Called when agenda.stop() is invoked.
58
+ * Should clean up connections, unsubscribe from notifications, etc.
59
+ */
60
+ disconnect(): Promise<void>;
61
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AgendaBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaBackend.js","sourceRoot":"","sources":["../../src/types/AgendaBackend.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface AgendaConfig {
2
+ name?: string;
3
+ defaultConcurrency: number;
4
+ processEvery: number;
5
+ maxConcurrency: number;
6
+ defaultLockLimit: number;
7
+ lockLimit: number;
8
+ defaultLockLifetime: number;
9
+ removeOnComplete: boolean;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AgendaConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaConfig.js","sourceRoot":"","sources":["../../src/types/AgendaConfig.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import type { JobParameters } from './JobParameters.js';
2
+ import type { JobDefinition } from './JobDefinition.js';
3
+ export interface AgendaJobStatus {
4
+ [name: string]: {
5
+ running: number;
6
+ locked: number;
7
+ config: JobDefinition;
8
+ };
9
+ }
10
+ export interface AgendaStatus {
11
+ version: string;
12
+ queueName: string | undefined;
13
+ totalQueueSizeDB: number;
14
+ config: {
15
+ totalLockLimit: number;
16
+ maxConcurrency: number;
17
+ processEvery: string | number;
18
+ };
19
+ backend: {
20
+ /** Backend name (e.g., 'MongoDB', 'PostgreSQL', 'Redis') */
21
+ name: string;
22
+ /** Whether a notification channel is configured for real-time processing */
23
+ hasNotificationChannel: boolean;
24
+ };
25
+ internal: {
26
+ localQueueProcessing: number;
27
+ };
28
+ jobStatus?: AgendaJobStatus;
29
+ queuedJobs: number | JobParameters[];
30
+ runningJobs: number | JobParameters[];
31
+ lockedJobs: number | JobParameters[];
32
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AgendaStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgendaStatus.js","sourceRoot":"","sources":["../../src/types/AgendaStatus.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Sort direction for job queries.
3
+ */
4
+ export type SortDirection = 'asc' | 'desc';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DbOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DbOptions.js","sourceRoot":"","sources":["../../src/types/DbOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Options for the drain() method
3
+ */
4
+ export interface DrainOptions {
5
+ /**
6
+ * Maximum time in milliseconds to wait for jobs to complete.
7
+ * If not specified, drain() will wait indefinitely.
8
+ */
9
+ timeout?: number;
10
+ /**
11
+ * AbortSignal to cancel the drain operation.
12
+ * When aborted, drain() will resolve immediately with the current state.
13
+ */
14
+ signal?: AbortSignal;
15
+ }
16
+ /**
17
+ * Result of the drain() operation
18
+ */
19
+ export interface DrainResult {
20
+ /**
21
+ * Number of jobs that completed during the drain
22
+ */
23
+ completed: number;
24
+ /**
25
+ * Number of jobs still running when drain finished
26
+ * (only non-zero if timeout was hit or signal was aborted)
27
+ */
28
+ running: number;
29
+ /**
30
+ * Whether the drain finished because the timeout was reached
31
+ */
32
+ timedOut: boolean;
33
+ /**
34
+ * Whether the drain finished because the signal was aborted
35
+ */
36
+ aborted: boolean;
37
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DrainOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrainOptions.js","sourceRoot":"","sources":["../../src/types/DrainOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ import type { Job } from '../Job.js';
2
+ import type { BackoffStrategy } from '../utils/backoff.js';
3
+ export interface JobDefinition<DATA = unknown> {
4
+ /** max number of locked jobs of this kind */
5
+ lockLimit: number;
6
+ /** lock lifetime in milliseconds */
7
+ lockLifetime: number;
8
+ /** Higher priority jobs will run first. */
9
+ priority?: number;
10
+ /** how many jobs of this kind can run in parallel/simultanously per Agenda instance */
11
+ concurrency?: number;
12
+ /**
13
+ * Backoff strategy for automatic retries on failure.
14
+ * Can be a built-in strategy from `backoffStrategies` or a custom function.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { backoffStrategies } from 'agenda';
19
+ *
20
+ * // Using built-in exponential backoff
21
+ * agenda.define('myJob', handler, {
22
+ * backoff: backoffStrategies.exponential({ delay: 1000, maxRetries: 5 })
23
+ * });
24
+ *
25
+ * // Using a preset
26
+ * agenda.define('myJob', handler, {
27
+ * backoff: backoffStrategies.standard()
28
+ * });
29
+ *
30
+ * // Custom strategy
31
+ * agenda.define('myJob', handler, {
32
+ * backoff: (ctx) => ctx.attempt <= 3 ? 1000 * ctx.attempt : null
33
+ * });
34
+ * ```
35
+ */
36
+ backoff?: BackoffStrategy;
37
+ /** Automatically remove this job from database after successful completion (one-time jobs only) */
38
+ removeOnComplete?: boolean;
39
+ /**
40
+ * Enable or disable persistent logging for this job definition.
41
+ * When `false`, no log entries are written for jobs of this type,
42
+ * even if a global job logger is configured.
43
+ * Defaults to `true` (logging enabled when a job logger is configured).
44
+ */
45
+ logging?: boolean;
46
+ filePath: string | undefined;
47
+ fn: DefinitionProcessor<DATA, void | ((error?: Error) => void)>;
48
+ }
49
+ export type DefinitionProcessor<DATA, CB> = (agendaJob: Job<DATA>, done: CB) => CB extends void ? Promise<void> : void;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=JobDefinition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobDefinition.js","sourceRoot":"","sources":["../../src/types/JobDefinition.ts"],"names":[],"mappings":""}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Log level for job event entries.
3
+ */
4
+ export type LogLevel = 'info' | 'warn' | 'error' | 'debug';
5
+ /**
6
+ * Job lifecycle events that are logged.
7
+ */
8
+ export type JobLogEvent = 'start' | 'success' | 'fail' | 'complete' | 'retry' | 'retry:exhausted' | 'locked' | 'expired';
9
+ /**
10
+ * A structured log entry for a job lifecycle event.
11
+ */
12
+ export interface JobLogEntry {
13
+ /** Unique identifier (assigned by the storage backend) */
14
+ _id?: string;
15
+ /** When the event occurred */
16
+ timestamp: Date;
17
+ /** Log severity level */
18
+ level: LogLevel;
19
+ /** The lifecycle event type */
20
+ event: JobLogEvent;
21
+ /** The job ID (if applicable) */
22
+ jobId?: string;
23
+ /** The job name */
24
+ jobName: string;
25
+ /** Human-readable message describing the event */
26
+ message: string;
27
+ /** Duration of execution in milliseconds (for success/complete events) */
28
+ duration?: number;
29
+ /** Error message (for fail events) */
30
+ error?: string;
31
+ /** Number of failures (for fail/retry events) */
32
+ failCount?: number;
33
+ /** Delay before the next retry in milliseconds (for retry events) */
34
+ retryDelay?: number;
35
+ /** The retry attempt number (for retry events) */
36
+ retryAttempt?: number;
37
+ /** The name of the Agenda instance that logged this event */
38
+ agendaName?: string;
39
+ /** Additional metadata */
40
+ meta?: Record<string, unknown>;
41
+ }
42
+ /**
43
+ * Query options for retrieving log entries.
44
+ */
45
+ export interface JobLogQuery {
46
+ /** Filter by job ID */
47
+ jobId?: string;
48
+ /** Filter by job name */
49
+ jobName?: string;
50
+ /** Filter by log level(s) */
51
+ level?: LogLevel | LogLevel[];
52
+ /** Filter by event type(s) */
53
+ event?: JobLogEvent | JobLogEvent[];
54
+ /** Filter entries from this date (inclusive) */
55
+ from?: Date;
56
+ /** Filter entries up to this date (inclusive) */
57
+ to?: Date;
58
+ /** Maximum number of entries to return (default: 50) */
59
+ limit?: number;
60
+ /** Number of entries to skip for pagination */
61
+ offset?: number;
62
+ /** Sort direction by timestamp (default: 'desc') */
63
+ sort?: 'asc' | 'desc';
64
+ }
65
+ /**
66
+ * Result of a log query including entries and total count (for pagination).
67
+ */
68
+ export interface JobLogQueryResult {
69
+ /** The log entries matching the query */
70
+ entries: JobLogEntry[];
71
+ /** Total number of entries matching the query (ignoring limit/offset) */
72
+ total: number;
73
+ }
74
+ /**
75
+ * Pluggable interface for persistent job event logging.
76
+ *
77
+ * Implement this interface to store job lifecycle logs in your preferred backend.
78
+ * Each backend package (mongo, postgres, redis) provides a built-in implementation
79
+ * that stores logs in a dedicated table/collection alongside the jobs.
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * // Enable backend's built-in logger
84
+ * const agenda = new Agenda({
85
+ * backend: new PostgresBackend({ connectionString: '...', logging: true }),
86
+ * logging: true
87
+ * });
88
+ *
89
+ * // Query logs
90
+ * const result = await agenda.getLogs({ jobName: 'myJob', limit: 100 });
91
+ * ```
92
+ */
93
+ export interface JobLogger {
94
+ /**
95
+ * Write a log entry.
96
+ * Called automatically by Agenda for each job lifecycle event.
97
+ * Implementations should be fast and non-blocking.
98
+ */
99
+ log(entry: Omit<JobLogEntry, '_id'>): Promise<void>;
100
+ /**
101
+ * Query log entries with optional filtering and pagination.
102
+ * Used by agendash to display logs.
103
+ */
104
+ getLogs(query?: JobLogQuery): Promise<JobLogQueryResult>;
105
+ /**
106
+ * Delete log entries matching the query.
107
+ * If no query is provided, deletes ALL log entries.
108
+ * Returns the number of deleted entries.
109
+ */
110
+ clearLogs(query?: JobLogQuery): Promise<number>;
111
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=JobLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobLogger.js","sourceRoot":"","sources":["../../src/types/JobLogger.ts"],"names":[],"mappings":""}