@archlast/server 0.1.7 → 0.1.9

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 (372) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +14 -10
  3. package/dist/admin/auth.d.ts +24 -5
  4. package/dist/admin/auth.js +49 -25
  5. package/dist/admin/schema.d.ts +122 -32
  6. package/dist/admin/schema.js +131 -95
  7. package/dist/admin/seed.d.ts +1 -1
  8. package/dist/admin/seed.js +79 -47
  9. package/dist/auth/api-key-resolver.d.ts +1 -1
  10. package/dist/auth/api-key-resolver.js +7 -3
  11. package/dist/auth/archlast-auth-adapter.d.ts +2 -5
  12. package/dist/auth/archlast-auth-adapter.js +1 -1
  13. package/dist/auth/better-auth-adapter.d.ts.map +1 -1
  14. package/dist/auth/better-auth-adapter.js +41 -26
  15. package/dist/auth/better-auth-adapter.js.map +1 -1
  16. package/dist/auth/better-auth-admin.d.ts.map +1 -1
  17. package/dist/auth/better-auth-admin.js +1 -1
  18. package/dist/auth/better-auth-admin.js.map +1 -1
  19. package/dist/auth/better-auth-api-key-resolver.js +1 -1
  20. package/dist/auth/better-auth-api-key-resolver.js.map +1 -1
  21. package/dist/auth/better-auth-instance.d.ts +247 -303
  22. package/dist/auth/better-auth-instance.d.ts.map +1 -1
  23. package/dist/auth/better-auth-instance.js +11 -0
  24. package/dist/auth/better-auth-instance.js.map +1 -1
  25. package/dist/auth/better-auth-seed.d.ts +5 -2
  26. package/dist/auth/better-auth-seed.js +31 -22
  27. package/dist/auth/better-auth-session-adapter.d.ts.map +1 -1
  28. package/dist/auth/better-auth-session-adapter.js +14 -10
  29. package/dist/auth/better-auth-session-adapter.js.map +1 -1
  30. package/dist/auth/errors.d.ts.map +1 -1
  31. package/dist/auth/errors.js +11 -11
  32. package/dist/auth/errors.js.map +1 -1
  33. package/dist/auth/oauth-proxy.d.ts +5 -2
  34. package/dist/auth/oauth-proxy.js +23 -27
  35. package/dist/auth/resolver.d.ts.map +1 -1
  36. package/dist/auth/resolver.js.map +1 -1
  37. package/dist/auth/role-helpers.d.ts +1 -1
  38. package/dist/auth/role-helpers.d.ts.map +1 -1
  39. package/dist/auth/role-helpers.js.map +1 -1
  40. package/dist/auth/session-manager.d.ts +2 -5
  41. package/dist/auth/session-manager.js +16 -6
  42. package/dist/auth/system/better-auth-schema.d.ts.map +1 -1
  43. package/dist/auth/system/better-auth-schema.js +6 -23
  44. package/dist/auth/system/better-auth-schema.js.map +1 -1
  45. package/dist/cache/circuit-breaker.d.ts +81 -0
  46. package/dist/cache/circuit-breaker.d.ts.map +1 -0
  47. package/dist/cache/circuit-breaker.js +170 -0
  48. package/dist/cache/circuit-breaker.js.map +1 -0
  49. package/dist/cache/client.d.ts +6 -3
  50. package/dist/cache/client.d.ts.map +1 -1
  51. package/dist/cache/client.js +12 -53
  52. package/dist/cache/client.js.map +1 -1
  53. package/dist/cache/index.d.ts +2 -0
  54. package/dist/cache/index.d.ts.map +1 -1
  55. package/dist/cache/index.js +5 -1
  56. package/dist/cache/index.js.map +1 -1
  57. package/dist/cache/invalidation-queue.d.ts +63 -0
  58. package/dist/cache/invalidation-queue.d.ts.map +1 -0
  59. package/dist/cache/invalidation-queue.js +196 -0
  60. package/dist/cache/invalidation-queue.js.map +1 -0
  61. package/dist/cache/layers.d.ts +14 -4
  62. package/dist/cache/layers.d.ts.map +1 -1
  63. package/dist/cache/layers.js +66 -72
  64. package/dist/cache/layers.js.map +1 -1
  65. package/dist/cache/manager.d.ts.map +1 -1
  66. package/dist/cache/manager.js +6 -41
  67. package/dist/cache/manager.js.map +1 -1
  68. package/dist/cache/protocol.d.ts +4 -39
  69. package/dist/cache/protocol.d.ts.map +1 -1
  70. package/dist/cache/protocol.js.map +1 -1
  71. package/dist/cache/redis-adapter.d.ts +103 -0
  72. package/dist/cache/redis-adapter.d.ts.map +1 -0
  73. package/dist/cache/redis-adapter.js +424 -0
  74. package/dist/cache/redis-adapter.js.map +1 -0
  75. package/dist/cache/run-sidecar.js +10 -1
  76. package/dist/cache/run-sidecar.js.map +1 -1
  77. package/dist/cache/sidecar-server.d.ts +51 -1
  78. package/dist/cache/sidecar-server.d.ts.map +1 -1
  79. package/dist/cache/sidecar-server.js +368 -22
  80. package/dist/cache/sidecar-server.js.map +1 -1
  81. package/dist/cache/store.d.ts +43 -0
  82. package/dist/cache/store.d.ts.map +1 -1
  83. package/dist/cache/store.js +69 -76
  84. package/dist/cache/store.js.map +1 -1
  85. package/dist/cache/strategies.d.ts +2 -9
  86. package/dist/cache/strategies.d.ts.map +1 -1
  87. package/dist/cache/types.d.ts +130 -0
  88. package/dist/cache/types.d.ts.map +1 -0
  89. package/dist/cache/types.js +60 -0
  90. package/dist/cache/types.js.map +1 -0
  91. package/dist/config/bullmq.d.ts +16 -0
  92. package/dist/config/bullmq.d.ts.map +1 -0
  93. package/dist/config/bullmq.js +103 -0
  94. package/dist/config/bullmq.js.map +1 -0
  95. package/dist/config/index.d.ts +1 -0
  96. package/dist/config/index.d.ts.map +1 -1
  97. package/dist/config/index.js +1 -0
  98. package/dist/config/index.js.map +1 -1
  99. package/dist/config/schema.d.ts +80 -6
  100. package/dist/config/schema.d.ts.map +1 -1
  101. package/dist/config/schema.js +71 -6
  102. package/dist/config/schema.js.map +1 -1
  103. package/dist/config/service.d.ts +54 -4
  104. package/dist/config/service.d.ts.map +1 -1
  105. package/dist/config/service.js +56 -2
  106. package/dist/config/service.js.map +1 -1
  107. package/dist/controllers/admin/admin-tokens.controller.d.ts +131 -115
  108. package/dist/controllers/admin/admin-tokens.controller.js +117 -98
  109. package/dist/controllers/admin/api-keys.controller.d.ts +1 -1
  110. package/dist/controllers/admin/api-keys.controller.d.ts.map +1 -1
  111. package/dist/controllers/admin/api-keys.controller.js.map +1 -1
  112. package/dist/controllers/admin/app-users.controller.d.ts +274 -243
  113. package/dist/controllers/admin/app-users.controller.js +301 -257
  114. package/dist/controllers/admin/auth.controller.d.ts +260 -236
  115. package/dist/controllers/admin/auth.controller.js +197 -174
  116. package/dist/controllers/admin/backup.controller.d.ts.map +1 -1
  117. package/dist/controllers/admin/backup.controller.js.map +1 -1
  118. package/dist/controllers/admin/settings.controller.d.ts +1 -1
  119. package/dist/controllers/admin/storage-stats.controller.d.ts +63 -0
  120. package/dist/controllers/admin/storage-stats.controller.d.ts.map +1 -0
  121. package/dist/controllers/admin/storage-stats.controller.js +33 -0
  122. package/dist/controllers/admin/storage-stats.controller.js.map +1 -0
  123. package/dist/controllers/admin/tenants.controller.d.ts.map +1 -1
  124. package/dist/controllers/admin/tenants.controller.js.map +1 -1
  125. package/dist/controllers/admin/users.controller.d.ts +1 -1
  126. package/dist/controllers/admin/users.controller.d.ts.map +1 -1
  127. package/dist/controllers/admin/users.controller.js.map +1 -1
  128. package/dist/controllers/auth.controller.d.ts +289 -271
  129. package/dist/controllers/auth.controller.js +275 -226
  130. package/dist/controllers/crud-generator.controller.d.ts.map +1 -1
  131. package/dist/controllers/crud-generator.controller.js +4 -2
  132. package/dist/controllers/crud-generator.controller.js.map +1 -1
  133. package/dist/controllers/index.d.ts +1 -1
  134. package/dist/controllers/index.d.ts.map +1 -1
  135. package/dist/controllers/index.js.map +1 -1
  136. package/dist/controllers/introspection.controller.d.ts +666 -0
  137. package/dist/controllers/introspection.controller.d.ts.map +1 -1
  138. package/dist/controllers/introspection.controller.js +628 -0
  139. package/dist/controllers/introspection.controller.js.map +1 -1
  140. package/dist/controllers/invite.controller.d.ts +190 -170
  141. package/dist/controllers/invite.controller.js +183 -164
  142. package/dist/controllers/mfa.controller.d.ts +205 -183
  143. package/dist/controllers/mfa.controller.js +131 -111
  144. package/dist/controllers/otp.controller.d.ts +194 -171
  145. package/dist/controllers/otp.controller.js +192 -175
  146. package/dist/controllers/storage.controller.d.ts.map +1 -1
  147. package/dist/controllers/storage.controller.js.map +1 -1
  148. package/dist/controllers/system.controller.d.ts +21 -3
  149. package/dist/controllers/system.controller.d.ts.map +1 -1
  150. package/dist/controllers/system.controller.js +32 -2
  151. package/dist/controllers/system.controller.js.map +1 -1
  152. package/dist/controllers/tenant.controller.d.ts +258 -227
  153. package/dist/controllers/tenant.controller.js +224 -200
  154. package/dist/db/cachedclient.d.ts +6 -11
  155. package/dist/db/cachedclient.d.ts.map +1 -1
  156. package/dist/db/cachedclient.js +79 -43
  157. package/dist/db/cachedclient.js.map +1 -1
  158. package/dist/db/distributed-client.d.ts +79 -24
  159. package/dist/db/distributed-client.js +23 -24
  160. package/dist/db/factory.d.ts +3 -8
  161. package/dist/db/factory.d.ts.map +1 -1
  162. package/dist/db/factory.js +3 -22
  163. package/dist/db/factory.js.map +1 -1
  164. package/dist/db/socket-client.d.ts +7 -0
  165. package/dist/db/socket-client.d.ts.map +1 -1
  166. package/dist/db/socket-client.js +140 -11
  167. package/dist/db/socket-client.js.map +1 -1
  168. package/dist/deployment/handler.d.ts +10 -2
  169. package/dist/deployment/handler.d.ts.map +1 -1
  170. package/dist/deployment/handler.js +103 -21
  171. package/dist/deployment/handler.js.map +1 -1
  172. package/dist/deployment/persistence.d.ts.map +1 -1
  173. package/dist/deployment/persistence.js +6 -1
  174. package/dist/deployment/persistence.js.map +1 -1
  175. package/dist/docker/compose.d.ts.map +1 -1
  176. package/dist/docker/compose.js +76 -0
  177. package/dist/docker/compose.js.map +1 -1
  178. package/dist/engine/runner.d.ts.map +1 -1
  179. package/dist/engine/runner.js +0 -43
  180. package/dist/engine/runner.js.map +1 -1
  181. package/dist/functions/built-in/auth-apikey.d.ts.map +1 -1
  182. package/dist/functions/built-in/auth-apikey.js.map +1 -1
  183. package/dist/functions/built-in/system-cache.d.ts.map +1 -1
  184. package/dist/functions/built-in/system-cache.js +6 -31
  185. package/dist/functions/built-in/system-cache.js.map +1 -1
  186. package/dist/functions/built-in/system-data.d.ts.map +1 -1
  187. package/dist/functions/built-in/system-data.js +4 -2
  188. package/dist/functions/built-in/system-data.js.map +1 -1
  189. package/dist/functions/definition.d.ts.map +1 -1
  190. package/dist/functions/definition.js +6 -2
  191. package/dist/functions/definition.js.map +1 -1
  192. package/dist/http/router.d.ts +1 -0
  193. package/dist/http/router.d.ts.map +1 -1
  194. package/dist/http/router.js +14 -3
  195. package/dist/http/router.js.map +1 -1
  196. package/dist/http/routes/metrics.d.ts +42 -0
  197. package/dist/http/routes/metrics.d.ts.map +1 -0
  198. package/dist/http/routes/metrics.js +29 -0
  199. package/dist/http/routes/metrics.js.map +1 -0
  200. package/dist/http/server.d.ts +1 -0
  201. package/dist/http/server.d.ts.map +1 -1
  202. package/dist/http/server.js +63 -22
  203. package/dist/http/server.js.map +1 -1
  204. package/dist/ipc/socket-bridge.d.ts +1 -0
  205. package/dist/ipc/socket-bridge.d.ts.map +1 -1
  206. package/dist/ipc/socket-bridge.js +5 -1
  207. package/dist/ipc/socket-bridge.js.map +1 -1
  208. package/dist/jobs/bullmq-adapter.d.ts +154 -0
  209. package/dist/jobs/bullmq-adapter.d.ts.map +1 -0
  210. package/dist/jobs/bullmq-adapter.js +688 -0
  211. package/dist/jobs/bullmq-adapter.js.map +1 -0
  212. package/dist/jobs/bullmq-circuit-breaker.d.ts +133 -0
  213. package/dist/jobs/bullmq-circuit-breaker.d.ts.map +1 -0
  214. package/dist/jobs/bullmq-circuit-breaker.js +323 -0
  215. package/dist/jobs/bullmq-circuit-breaker.js.map +1 -0
  216. package/dist/jobs/bullmq-dlq-manager.d.ts +155 -0
  217. package/dist/jobs/bullmq-dlq-manager.d.ts.map +1 -0
  218. package/dist/jobs/bullmq-dlq-manager.js +325 -0
  219. package/dist/jobs/bullmq-dlq-manager.js.map +1 -0
  220. package/dist/jobs/bullmq-metrics.d.ts +104 -0
  221. package/dist/jobs/bullmq-metrics.d.ts.map +1 -0
  222. package/dist/jobs/bullmq-metrics.js +323 -0
  223. package/dist/jobs/bullmq-metrics.js.map +1 -0
  224. package/dist/jobs/bullmq-priority-service.d.ts +173 -0
  225. package/dist/jobs/bullmq-priority-service.d.ts.map +1 -0
  226. package/dist/jobs/bullmq-priority-service.js +390 -0
  227. package/dist/jobs/bullmq-priority-service.js.map +1 -0
  228. package/dist/jobs/bullmq-scheduler.d.ts +111 -0
  229. package/dist/jobs/bullmq-scheduler.d.ts.map +1 -0
  230. package/dist/jobs/bullmq-scheduler.js +300 -0
  231. package/dist/jobs/bullmq-scheduler.js.map +1 -0
  232. package/dist/jobs/bullmq-worker.d.ts +155 -0
  233. package/dist/jobs/bullmq-worker.d.ts.map +1 -0
  234. package/dist/jobs/bullmq-worker.js +651 -0
  235. package/dist/jobs/bullmq-worker.js.map +1 -0
  236. package/dist/jobs/circuit-breaker.d.ts +120 -0
  237. package/dist/jobs/circuit-breaker.d.ts.map +1 -0
  238. package/dist/jobs/circuit-breaker.js +262 -0
  239. package/dist/jobs/circuit-breaker.js.map +1 -0
  240. package/dist/jobs/index.d.ts +1 -1
  241. package/dist/jobs/index.d.ts.map +1 -1
  242. package/dist/jobs/index.js.map +1 -1
  243. package/dist/jobs/queue.d.ts +120 -1
  244. package/dist/jobs/queue.d.ts.map +1 -1
  245. package/dist/jobs/queue.js +487 -9
  246. package/dist/jobs/queue.js.map +1 -1
  247. package/dist/jobs/redis-connection.d.ts +50 -0
  248. package/dist/jobs/redis-connection.d.ts.map +1 -0
  249. package/dist/jobs/redis-connection.js +123 -0
  250. package/dist/jobs/redis-connection.js.map +1 -0
  251. package/dist/jobs/run-scheduler.js +163 -10
  252. package/dist/jobs/run-scheduler.js.map +1 -1
  253. package/dist/jobs/run-worker.js +101 -9
  254. package/dist/jobs/run-worker.js.map +1 -1
  255. package/dist/jobs/worker-thread.d.ts +6 -0
  256. package/dist/jobs/worker-thread.d.ts.map +1 -1
  257. package/dist/jobs/worker-thread.js +37 -8
  258. package/dist/jobs/worker-thread.js.map +1 -1
  259. package/dist/jobs/worker.d.ts +33 -0
  260. package/dist/jobs/worker.d.ts.map +1 -1
  261. package/dist/jobs/worker.js +358 -115
  262. package/dist/jobs/worker.js.map +1 -1
  263. package/dist/linq/async-enumerable.d.ts.map +1 -1
  264. package/dist/linq/async-enumerable.js.map +1 -1
  265. package/dist/linq/enumerable.d.ts.map +1 -1
  266. package/dist/linq/enumerable.js +10 -10
  267. package/dist/linq/enumerable.js.map +1 -1
  268. package/dist/metrics/collector.d.ts +26 -0
  269. package/dist/metrics/collector.d.ts.map +1 -0
  270. package/dist/metrics/collector.js +103 -0
  271. package/dist/metrics/collector.js.map +1 -0
  272. package/dist/polling/updates.controller.d.ts +57 -0
  273. package/dist/polling/updates.controller.d.ts.map +1 -0
  274. package/dist/polling/updates.controller.js +70 -0
  275. package/dist/polling/updates.controller.js.map +1 -0
  276. package/dist/repository/db-set.d.ts.map +1 -1
  277. package/dist/repository/db-set.js +12 -8
  278. package/dist/repository/db-set.js.map +1 -1
  279. package/dist/repository/ef-core.d.ts.map +1 -1
  280. package/dist/repository/ef-core.js +6 -6
  281. package/dist/repository/ef-core.js.map +1 -1
  282. package/dist/repository/factory.d.ts +1 -1
  283. package/dist/repository/factory.d.ts.map +1 -1
  284. package/dist/repository/factory.js.map +1 -1
  285. package/dist/repository/interfaces.d.ts.map +1 -1
  286. package/dist/repository/interfaces.js.map +1 -1
  287. package/dist/repository/queryable.d.ts.map +1 -1
  288. package/dist/repository/queryable.js.map +1 -1
  289. package/dist/rpc/adapter.d.ts.map +1 -1
  290. package/dist/rpc/adapter.js.map +1 -1
  291. package/dist/rpc/router.d.ts +2 -2
  292. package/dist/rpc/router.d.ts.map +1 -1
  293. package/dist/rpc/router.js +1 -1
  294. package/dist/rpc/router.js.map +1 -1
  295. package/dist/schema/input-types.d.ts +1 -1
  296. package/dist/schema/input-types.d.ts.map +1 -1
  297. package/dist/schema/input-types.js +4 -3
  298. package/dist/schema/input-types.js.map +1 -1
  299. package/dist/schema/modifiers.d.ts +2 -1
  300. package/dist/schema/modifiers.d.ts.map +1 -1
  301. package/dist/schema/modifiers.js +41 -5
  302. package/dist/schema/modifiers.js.map +1 -1
  303. package/dist/schema/relationship-types.d.ts +7 -2
  304. package/dist/schema/relationship-types.js +1 -1
  305. package/dist/schema/type-helpers.d.ts +35 -0
  306. package/dist/schema/type-helpers.d.ts.map +1 -1
  307. package/dist/schema/type-helpers.js +32 -21
  308. package/dist/schema/type-helpers.js.map +1 -1
  309. package/dist/schema/types.d.ts.map +1 -1
  310. package/dist/schema/validators.d.ts +1 -1
  311. package/dist/schema/validators.d.ts.map +1 -1
  312. package/dist/schema/validators.js +27 -16
  313. package/dist/schema/validators.js.map +1 -1
  314. package/dist/services/admin/app-users.service.d.ts +1 -1
  315. package/dist/services/admin/app-users.service.js +31 -38
  316. package/dist/services/admin/auth.service.d.ts +1 -1
  317. package/dist/services/admin/auth.service.js +11 -5
  318. package/dist/services/admin/backup/BackupOrchestrator.d.ts.map +1 -1
  319. package/dist/services/admin/backup/BackupOrchestrator.js +4 -7
  320. package/dist/services/admin/backup/BackupOrchestrator.js.map +1 -1
  321. package/dist/services/admin/backup/StorageStreamer.d.ts +3 -3
  322. package/dist/services/admin/backup/StorageStreamer.d.ts.map +1 -1
  323. package/dist/services/admin/backup/StorageStreamer.js +16 -55
  324. package/dist/services/admin/backup/StorageStreamer.js.map +1 -1
  325. package/dist/services/admin/backup/ZipComposer.d.ts +2 -0
  326. package/dist/services/admin/backup/ZipComposer.d.ts.map +1 -1
  327. package/dist/services/admin/backup/ZipComposer.js +23 -0
  328. package/dist/services/admin/backup/ZipComposer.js.map +1 -1
  329. package/dist/services/admin/backup.service.d.ts.map +1 -1
  330. package/dist/services/admin/backup.service.js.map +1 -1
  331. package/dist/services/admin/data.service.d.ts.map +1 -1
  332. package/dist/services/admin/data.service.js +287 -286
  333. package/dist/services/admin/data.service.js.map +1 -1
  334. package/dist/services/admin/tenants.service.d.ts.map +1 -1
  335. package/dist/services/admin/tenants.service.js.map +1 -1
  336. package/dist/services/auth.service.d.ts +2 -3
  337. package/dist/services/auth.service.js +16 -16
  338. package/dist/services/introspection.service.d.ts.map +1 -1
  339. package/dist/services/introspection.service.js +6 -3
  340. package/dist/services/introspection.service.js.map +1 -1
  341. package/dist/services/invite.service.d.ts +1 -1
  342. package/dist/services/invite.service.js +17 -15
  343. package/dist/services/storage.service.d.ts.map +1 -1
  344. package/dist/services/storage.service.js +35 -4
  345. package/dist/services/storage.service.js.map +1 -1
  346. package/dist/services/system.service.d.ts +4 -0
  347. package/dist/services/system.service.d.ts.map +1 -1
  348. package/dist/services/system.service.js +43 -1
  349. package/dist/services/system.service.js.map +1 -1
  350. package/dist/services/tenant.service.d.ts +1 -1
  351. package/dist/services/tenant.service.js +43 -31
  352. package/dist/sse/subscriptions.controller.d.ts +57 -0
  353. package/dist/sse/subscriptions.controller.d.ts.map +1 -0
  354. package/dist/sse/subscriptions.controller.js +127 -0
  355. package/dist/sse/subscriptions.controller.js.map +1 -0
  356. package/dist/startup/bootstrap.d.ts +13 -2
  357. package/dist/startup/bootstrap.d.ts.map +1 -1
  358. package/dist/startup/bootstrap.js +85 -13
  359. package/dist/startup/bootstrap.js.map +1 -1
  360. package/dist/storage/s3-backend.d.ts.map +1 -1
  361. package/dist/storage/s3-backend.js +3 -3
  362. package/dist/storage/s3-backend.js.map +1 -1
  363. package/dist/websocket/server.d.ts.map +1 -1
  364. package/dist/websocket/server.js +14 -3
  365. package/dist/websocket/server.js.map +1 -1
  366. package/docker/README.md +299 -1
  367. package/package.json +5 -1
  368. package/templates/.env.example +76 -16
  369. package/templates/archlast.config.js +15 -1
  370. package/templates/docker-compose.dev.yml +8 -8
  371. package/templates/docker-compose.prod.yml +29 -12
  372. package/templates/docker-compose.yml +112 -28
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BullMQScheduler = exports.SchedulePreset = void 0;
4
+ const logger_js_1 = require("../logging/logger.js");
5
+ /**
6
+ * Schedule preset values for common scheduling intervals
7
+ */
8
+ var SchedulePreset;
9
+ (function (SchedulePreset) {
10
+ SchedulePreset["RunNow"] = "RUN_NOW";
11
+ SchedulePreset["EveryMinute"] = "EVERY_MINUTE";
12
+ SchedulePreset["Every5Minutes"] = "EVERY_5_MINUTES";
13
+ SchedulePreset["Every10Minutes"] = "EVERY_10_MINUTES";
14
+ SchedulePreset["Every30Minutes"] = "EVERY_30_MINUTES";
15
+ SchedulePreset["Hourly"] = "HOURLY";
16
+ SchedulePreset["Every8Hours"] = "EVERY_8_HOURS";
17
+ SchedulePreset["Every16Hours"] = "EVERY_16_HOURS";
18
+ SchedulePreset["DailyMidnight"] = "DAILY_MIDNIGHT";
19
+ SchedulePreset["Weekly"] = "WEEKLY";
20
+ SchedulePreset["Monthly"] = "MONTHLY";
21
+ SchedulePreset["Quarterly"] = "QUARTERLY";
22
+ })(SchedulePreset || (exports.SchedulePreset = SchedulePreset = {}));
23
+ /**
24
+ * Mapping from schedule presets to cron expressions
25
+ */
26
+ const PRESET_TO_CRON = {
27
+ [SchedulePreset.RunNow]: null, // Immediate one-time job
28
+ [SchedulePreset.EveryMinute]: "* * * * *",
29
+ [SchedulePreset.Every5Minutes]: "*/5 * * * *",
30
+ [SchedulePreset.Every10Minutes]: "*/10 * * * *",
31
+ [SchedulePreset.Every30Minutes]: "*/30 * * * *",
32
+ [SchedulePreset.Hourly]: "0 * * * *",
33
+ [SchedulePreset.Every8Hours]: "0 */8 * * *",
34
+ [SchedulePreset.Every16Hours]: "0 */16 * * *",
35
+ [SchedulePreset.DailyMidnight]: "0 0 * * *",
36
+ [SchedulePreset.Weekly]: "0 0 * * 0",
37
+ [SchedulePreset.Monthly]: "0 0 1 * *",
38
+ [SchedulePreset.Quarterly]: "0 0 1 */3 *",
39
+ };
40
+ /**
41
+ * BullMQ-based scheduler using JobSchedulers (v5.16+) for cron scheduling.
42
+ * Replaces setTimeout-based scheduling with persistent Redis-backed schedulers.
43
+ */
44
+ class BullMQScheduler {
45
+ queue;
46
+ scheduledJobNames = new Set();
47
+ /**
48
+ * Creates a new BullMQScheduler instance
49
+ * @param jobQueue - BullMQJobQueue adapter instance
50
+ * @param _connection - Redis connection (kept for interface compatibility)
51
+ */
52
+ constructor(jobQueue, _connection) {
53
+ // Access the internal BullMQ Queue from the adapter
54
+ this.queue = jobQueue.queue;
55
+ }
56
+ /**
57
+ * Resolves a schedule preset to its cron expression
58
+ * @param preset - The schedule preset to resolve
59
+ * @returns The cron expression or null for RunNow
60
+ */
61
+ resolvePreset(preset) {
62
+ const cron = PRESET_TO_CRON[preset];
63
+ if (cron === undefined) {
64
+ throw new Error(`Unknown schedule preset '${preset}'.`);
65
+ }
66
+ return cron;
67
+ }
68
+ /**
69
+ * Validates and normalizes a scheduled job configuration
70
+ * @param job - The job configuration to validate
71
+ * @returns Normalized job configuration
72
+ */
73
+ validateJobConfig(job) {
74
+ const name = typeof job.name === "string" ? job.name.trim() : "";
75
+ if (!name) {
76
+ throw new Error("Scheduled job name is required.");
77
+ }
78
+ const payload = job.payload;
79
+ const maxAttempts = job.maxAttempts;
80
+ if ("preset" in job) {
81
+ if (job.preset === SchedulePreset.RunNow) {
82
+ return { cron: null, name, payload, maxAttempts, runNow: true };
83
+ }
84
+ const cronFromPreset = this.resolvePreset(job.preset);
85
+ if (!cronFromPreset) {
86
+ throw new Error("Cron expression is required.");
87
+ }
88
+ return { cron: cronFromPreset, name, payload, maxAttempts, runNow: false };
89
+ }
90
+ const cron = typeof job.cron === "string"
91
+ ? job.cron.trim()
92
+ : "";
93
+ if (!cron) {
94
+ throw new Error("Cron expression is required.");
95
+ }
96
+ return { cron, name, payload, maxAttempts, runNow: false };
97
+ }
98
+ /**
99
+ * Schedules a job using either a cron expression or schedule preset.
100
+ * Uses BullMQ's upsertJobScheduler for persistent scheduling.
101
+ * @param job - The job configuration to schedule
102
+ */
103
+ add(job) {
104
+ const { cron, name, payload, maxAttempts, runNow } = this.validateJobConfig(job);
105
+ if (runNow) {
106
+ // For RunNow, immediately add a job to the queue
107
+ void (async () => {
108
+ try {
109
+ await this.queue.add(name, payload, {
110
+ attempts: maxAttempts ?? 5,
111
+ removeOnComplete: 100,
112
+ });
113
+ logger_js_1.logger.log({
114
+ timestamp: Date.now(),
115
+ level: "info",
116
+ kind: "system",
117
+ message: "One-off scheduled job enqueued",
118
+ context: { name, preset: SchedulePreset.RunNow },
119
+ });
120
+ }
121
+ catch (err) {
122
+ logger_js_1.logger.log({
123
+ timestamp: Date.now(),
124
+ level: "error",
125
+ kind: "system",
126
+ message: "Failed to enqueue one-off scheduled job",
127
+ context: {
128
+ name,
129
+ preset: SchedulePreset.RunNow,
130
+ error: err instanceof Error ? err.message : String(err),
131
+ },
132
+ });
133
+ }
134
+ })();
135
+ return;
136
+ }
137
+ // Use BullMQ JobScheduler for recurring jobs
138
+ void (async () => {
139
+ try {
140
+ await this.queue.upsertJobScheduler(name, // Use job name as scheduler ID
141
+ {
142
+ pattern: cron, // Cron expression for scheduling
143
+ }, {
144
+ // Job template
145
+ name: name,
146
+ data: payload,
147
+ opts: {
148
+ attempts: maxAttempts ?? 5,
149
+ removeOnComplete: 100,
150
+ },
151
+ });
152
+ // Track this scheduled job
153
+ this.scheduledJobNames.add(name);
154
+ logger_js_1.logger.log({
155
+ timestamp: Date.now(),
156
+ level: "info",
157
+ kind: "system",
158
+ message: "Scheduled job created/updated via BullMQ JobScheduler",
159
+ context: { name, cron },
160
+ });
161
+ }
162
+ catch (err) {
163
+ logger_js_1.logger.log({
164
+ timestamp: Date.now(),
165
+ level: "error",
166
+ kind: "system",
167
+ message: "Failed to create scheduled job via BullMQ JobScheduler",
168
+ context: {
169
+ name,
170
+ cron,
171
+ error: err instanceof Error ? err.message : String(err),
172
+ },
173
+ });
174
+ }
175
+ })();
176
+ }
177
+ /**
178
+ * Alias to schedule by functionName to align with function contexts.
179
+ * @param config - Configuration object with functionName and scheduling options
180
+ */
181
+ schedule(config) {
182
+ const { functionName, payload, cron, preset, maxAttempts } = config;
183
+ const job = preset !== undefined
184
+ ? {
185
+ name: functionName,
186
+ preset,
187
+ payload: payload ?? {},
188
+ maxAttempts,
189
+ }
190
+ : {
191
+ name: functionName,
192
+ cron: cron ?? "* * * * *",
193
+ payload: payload ?? {},
194
+ maxAttempts,
195
+ };
196
+ this.add(job);
197
+ }
198
+ /**
199
+ * Cancels a scheduled job by name.
200
+ * Removes the JobScheduler from BullMQ.
201
+ * @param name - The name of the scheduled job to cancel
202
+ */
203
+ cancel(name) {
204
+ void (async () => {
205
+ try {
206
+ await this.queue.removeJobScheduler(name);
207
+ this.scheduledJobNames.delete(name);
208
+ logger_js_1.logger.log({
209
+ timestamp: Date.now(),
210
+ level: "info",
211
+ kind: "system",
212
+ message: "Scheduled job cancelled",
213
+ context: { name },
214
+ });
215
+ }
216
+ catch (err) {
217
+ logger_js_1.logger.log({
218
+ timestamp: Date.now(),
219
+ level: "error",
220
+ kind: "system",
221
+ message: "Failed to cancel scheduled job",
222
+ context: {
223
+ name,
224
+ error: err instanceof Error ? err.message : String(err),
225
+ },
226
+ });
227
+ }
228
+ })();
229
+ }
230
+ /**
231
+ * Stops all scheduled jobs.
232
+ * Removes all JobSchedulers from BullMQ.
233
+ */
234
+ stopAll() {
235
+ void (async () => {
236
+ try {
237
+ // Get all scheduled jobs and cancel each one
238
+ const schedulers = await this.queue.getJobSchedulers();
239
+ for (const scheduler of schedulers) {
240
+ if (!scheduler.id)
241
+ continue;
242
+ await this.queue.removeJobScheduler(scheduler.id);
243
+ this.scheduledJobNames.delete(scheduler.id);
244
+ logger_js_1.logger.log({
245
+ timestamp: Date.now(),
246
+ level: "info",
247
+ kind: "system",
248
+ message: "Scheduled job cancelled",
249
+ context: { name: scheduler.id },
250
+ });
251
+ }
252
+ // Also clear any locally tracked jobs that might not be in BullMQ yet
253
+ this.scheduledJobNames.clear();
254
+ }
255
+ catch (err) {
256
+ logger_js_1.logger.log({
257
+ timestamp: Date.now(),
258
+ level: "error",
259
+ kind: "system",
260
+ message: "Failed to stop all scheduled jobs",
261
+ context: {
262
+ error: err instanceof Error ? err.message : String(err),
263
+ },
264
+ });
265
+ }
266
+ })();
267
+ }
268
+ /**
269
+ * Gets all scheduled job schedulers from BullMQ.
270
+ * @returns Array of scheduled job information
271
+ */
272
+ async getScheduledJobs() {
273
+ try {
274
+ const schedulers = await this.queue.getJobSchedulers();
275
+ return schedulers
276
+ .filter((scheduler) => scheduler.id != null)
277
+ .map((scheduler) => ({
278
+ name: scheduler.id,
279
+ pattern: scheduler.pattern,
280
+ every: scheduler.every,
281
+ nextRun: scheduler.next,
282
+ }));
283
+ }
284
+ catch (err) {
285
+ logger_js_1.logger.log({
286
+ timestamp: Date.now(),
287
+ level: "error",
288
+ kind: "system",
289
+ message: "Failed to get scheduled jobs",
290
+ context: {
291
+ error: err instanceof Error ? err.message : String(err),
292
+ },
293
+ });
294
+ return [];
295
+ }
296
+ }
297
+ }
298
+ exports.BullMQScheduler = BullMQScheduler;
299
+ exports.default = BullMQScheduler;
300
+ //# sourceMappingURL=bullmq-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bullmq-scheduler.js","sourceRoot":"","sources":["../../src/jobs/bullmq-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ import { JobQueue } from "./queue.js";
2
+ import { WorkerPool } from "./worker-thread.js";
3
+ import type { IpcClient } from "../ipc/socket-bridge.js";
4
+ import { CircuitBreaker } from "./circuit-breaker.js";
5
+ /**
6
+ * Error thrown when a job exceeds its timeout duration
7
+ */
8
+ export declare class JobTimeoutError extends Error {
9
+ constructor(jobName: string, timeoutMs: number);
10
+ }
11
+ type JobHandler<Payload = any> = (payload: Payload) => Promise<void | {
12
+ affectedQueries?: Set<string> | string[];
13
+ affectedKeys?: Set<string> | string[];
14
+ }>;
15
+ interface ExecutionEngineDispatcher {
16
+ runFunction: (name: string, payload: any, auth: any, queryId?: string) => Promise<any>;
17
+ }
18
+ interface BullMQWorkerOptions {
19
+ concurrency?: number;
20
+ lockDuration?: number;
21
+ threadPool?: WorkerPool;
22
+ engineDispatcher?: ExecutionEngineDispatcher;
23
+ circuitBreaker?: CircuitBreaker;
24
+ }
25
+ /**
26
+ * BullMQ-based worker manager that processes jobs from Redis queues
27
+ */
28
+ export declare class BullMQWorkerManager {
29
+ private worker;
30
+ private activeJobIds;
31
+ private shuttingDown;
32
+ private jobQueue;
33
+ private ipc;
34
+ private queueName;
35
+ private concurrency;
36
+ private lockDuration;
37
+ private threadPool;
38
+ private engineDispatcher;
39
+ private circuitBreaker;
40
+ constructor(queueName: string, jobQueue: JobQueue, options?: BullMQWorkerOptions);
41
+ /**
42
+ * Set the IPC client for revalidation notifications
43
+ */
44
+ setIpcClient(ipcClient: IpcClient | null): void;
45
+ /**
46
+ * Initialize and start the BullMQ worker
47
+ */
48
+ initialize(): Promise<void>;
49
+ /**
50
+ * Process a BullMQ job
51
+ */
52
+ private processBullMQJob;
53
+ /**
54
+ * Normalize BullMQ Job payloads into the legacy JobRecord shape.
55
+ * Supports both wrapped payloads ({ name, payload, ... }) and raw payloads.
56
+ */
57
+ private toJobRecord;
58
+ /**
59
+ * Execute job with circuit breaker protection
60
+ */
61
+ private executeJobWithCircuitBreaker;
62
+ /**
63
+ * Execute job with registered handler
64
+ */
65
+ private executeWithHandler;
66
+ /**
67
+ * Execute job with thread pool
68
+ */
69
+ private executeWithThreadPool;
70
+ /**
71
+ * Execute job with engine dispatcher
72
+ */
73
+ private executeWithEngineDispatcher;
74
+ /**
75
+ * Execute a function with timeout enforcement
76
+ */
77
+ private executeWithTimeout;
78
+ /**
79
+ * Send revalidation notification via IPC
80
+ */
81
+ private notifyRevalidation;
82
+ /**
83
+ * Categorize error for metrics
84
+ */
85
+ private categorizeError;
86
+ /**
87
+ * Get the number of active jobs being processed
88
+ */
89
+ getActiveJobsCount(): number;
90
+ /**
91
+ * Get the IDs of all active jobs being processed
92
+ */
93
+ getActiveJobIds(): string[];
94
+ /**
95
+ * Graceful shutdown
96
+ */
97
+ stop(gracePeriodMs?: number): Promise<void>;
98
+ /**
99
+ * Check if worker is stopped
100
+ */
101
+ isStopped(): boolean;
102
+ }
103
+ /**
104
+ * Initialize the worker with a job queue.
105
+ * Must be called before start().
106
+ */
107
+ export declare function initWorker(queue: JobQueue, ipcClient?: IpcClient): void;
108
+ /**
109
+ * Register a job handler
110
+ */
111
+ export declare function registerHandler<Payload = any>(name: string, handler: JobHandler<Payload>): void;
112
+ /**
113
+ * Remove a job handler
114
+ */
115
+ export declare function removeHandler(name: string): void;
116
+ /**
117
+ * Get all registered handlers
118
+ */
119
+ export declare function getHandlers(): Record<string, JobHandler<any>>;
120
+ /**
121
+ * Set the engine dispatcher for fallback job execution
122
+ */
123
+ export declare function setEngineDispatcher(dispatcher: ExecutionEngineDispatcher): void;
124
+ /**
125
+ * Get the number of active jobs being processed
126
+ */
127
+ export declare function getActiveJobsCount(): number;
128
+ /**
129
+ * Get the IDs of all active jobs being processed
130
+ */
131
+ export declare function getActiveJobIds(): string[];
132
+ /**
133
+ * Stop the worker from claiming new jobs
134
+ * Used for graceful shutdown initiation
135
+ */
136
+ export declare function stopWorker(): Promise<void>;
137
+ /**
138
+ * Start the worker
139
+ */
140
+ export declare function start(): Promise<void>;
141
+ /**
142
+ * Get circuit breaker instance (for monitoring/management)
143
+ * Returns null if circuit breaker is disabled
144
+ */
145
+ export declare function getCircuitBreaker(): CircuitBreaker | null;
146
+ /**
147
+ * Check if circuit breaker is enabled
148
+ */
149
+ export declare function isCircuitBreakerEnabled(): boolean;
150
+ /**
151
+ * Check if worker is stopped
152
+ */
153
+ export declare function isStopped(): boolean;
154
+ export type { JobHandler };
155
+ //# sourceMappingURL=bullmq-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bullmq-worker.d.ts","sourceRoot":"","sources":["../../src/jobs/bullmq-worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAa,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EACH,cAAc,EAGjB,MAAM,sBAAsB,CAAC;AAG9B;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAIjD;AAED,KAAK,UAAU,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,GAAG;IAClE,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;IACzC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH,UAAU,yBAAyB;IAC/B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1F;AAED,UAAU,mBAAmB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAC7C,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC;AAyBD;;GAEG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,cAAc,CAA+B;gBAEzC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,mBAAwB;IAUpF;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAI/C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiFjC;;OAEG;YACW,gBAAgB;IAoC9B;;;OAGG;IACH,OAAO,CAAC,WAAW;IA4CnB;;OAEG;YACW,4BAA4B;IA6B1C;;OAEG;YACW,kBAAkB;IAwChC;;OAEG;YACW,qBAAqB;IAgCnC;;OAEG;YACW,2BAA2B;IAqDzC;;OAEG;YACW,kBAAkB;IAgChC;;OAEG;YACW,kBAAkB;IA2BhC;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACG,IAAI,CAAC,aAAa,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDlE;;OAEG;IACH,SAAS,IAAI,OAAO;CAGvB;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CA2BvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI,CAE/F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAE7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAE/E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD;AAED;;GAEG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAgC3C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,YAAY,EAAE,UAAU,EAAE,CAAC"}