@openora/core 0.4.0 → 0.4.1-canary.11

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 (427) hide show
  1. package/LICENSE-COMMERCIAL.md +2 -2
  2. package/README.md +8 -2
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/admin-console/__tests__/backoffice.service.test.js +1 -1
  5. package/dist/admin-console/__tests__/backoffice.service.test.js.map +1 -1
  6. package/dist/admin-console/contract/index.d.ts +14 -14
  7. package/dist/admin-console/contract/index.d.ts.map +1 -1
  8. package/dist/admin-console/contract/index.js +8 -8
  9. package/dist/admin-console/contract/index.js.map +1 -1
  10. package/dist/admin-console/router/index.d.ts +7 -7
  11. package/dist/admin-console/service/backoffice.service.d.ts +22 -49
  12. package/dist/admin-console/service/backoffice.service.d.ts.map +1 -1
  13. package/dist/admin-console/service/backoffice.service.js +16 -31
  14. package/dist/admin-console/service/backoffice.service.js.map +1 -1
  15. package/dist/audit/__tests__/audit.service.test.js +29 -2
  16. package/dist/audit/__tests__/audit.service.test.js.map +1 -1
  17. package/dist/audit/contract/index.d.ts.map +1 -1
  18. package/dist/audit/contract/index.js +2 -0
  19. package/dist/audit/contract/index.js.map +1 -1
  20. package/dist/audit/plugin.d.ts.map +1 -1
  21. package/dist/audit/plugin.js +54 -4
  22. package/dist/audit/plugin.js.map +1 -1
  23. package/dist/audit/service/audit.service.d.ts +1 -0
  24. package/dist/audit/service/audit.service.d.ts.map +1 -1
  25. package/dist/audit/service/audit.service.js +53 -25
  26. package/dist/audit/service/audit.service.js.map +1 -1
  27. package/dist/casino/gaming/contract/index.d.ts.map +1 -1
  28. package/dist/casino/gaming/contract/index.js +3 -3
  29. package/dist/casino/gaming/contract/index.js.map +1 -1
  30. package/dist/casino/gaming/drizzle/migrations/0001_easy_ben_grimm.sql +4 -0
  31. package/dist/casino/gaming/drizzle/migrations/meta/0001_snapshot.json +188 -0
  32. package/dist/casino/gaming/drizzle/migrations/meta/_journal.json +7 -0
  33. package/dist/casino/gaming/schema/index.js +2 -2
  34. package/dist/casino/gaming/schema/index.js.map +1 -1
  35. package/dist/casino/gaming/service/gaming.service.d.ts +11 -11
  36. package/dist/casino/gaming/service/gaming.service.d.ts.map +1 -1
  37. package/dist/casino/gaming/service/gaming.service.js +4 -14
  38. package/dist/casino/gaming/service/gaming.service.js.map +1 -1
  39. package/dist/cms/__tests__/cms.cache.test.js +1 -1
  40. package/dist/cms/__tests__/cms.cache.test.js.map +1 -1
  41. package/dist/cms/__tests__/cms.router.test.d.ts +2 -0
  42. package/dist/cms/__tests__/cms.router.test.d.ts.map +1 -0
  43. package/dist/cms/__tests__/cms.router.test.js +51 -0
  44. package/dist/cms/__tests__/cms.router.test.js.map +1 -0
  45. package/dist/cms/router/index.d.ts.map +1 -1
  46. package/dist/cms/router/index.js +12 -12
  47. package/dist/cms/router/index.js.map +1 -1
  48. package/dist/cms/service/cms.service.d.ts +7 -7
  49. package/dist/cms/service/cms.service.d.ts.map +1 -1
  50. package/dist/cms/service/cms.service.js +39 -23
  51. package/dist/cms/service/cms.service.js.map +1 -1
  52. package/dist/compliance/__tests__/compliance.service.test.js +2 -1
  53. package/dist/compliance/__tests__/compliance.service.test.js.map +1 -1
  54. package/dist/compliance/__tests__/kyc.service.test.js +12 -10
  55. package/dist/compliance/__tests__/kyc.service.test.js.map +1 -1
  56. package/dist/compliance/__tests__/rg-monitoring.service.test.js +17 -6
  57. package/dist/compliance/__tests__/rg-monitoring.service.test.js.map +1 -1
  58. package/dist/compliance/__tests__/rg.contract.test.js +18 -10
  59. package/dist/compliance/__tests__/rg.contract.test.js.map +1 -1
  60. package/dist/compliance/__tests__/rg.router.test.js +5 -4
  61. package/dist/compliance/__tests__/rg.router.test.js.map +1 -1
  62. package/dist/compliance/__tests__/rg.service.test.js +18 -12
  63. package/dist/compliance/__tests__/rg.service.test.js.map +1 -1
  64. package/dist/compliance/contract/index.d.ts +20 -14
  65. package/dist/compliance/contract/index.d.ts.map +1 -1
  66. package/dist/compliance/contract/limits.d.ts +9 -2
  67. package/dist/compliance/contract/limits.d.ts.map +1 -1
  68. package/dist/compliance/contract/limits.js +21 -3
  69. package/dist/compliance/contract/limits.js.map +1 -1
  70. package/dist/compliance/contract/rg.d.ts +28 -23
  71. package/dist/compliance/contract/rg.d.ts.map +1 -1
  72. package/dist/compliance/contract/rg.js +14 -9
  73. package/dist/compliance/contract/rg.js.map +1 -1
  74. package/dist/compliance/drizzle/migrations/0001_funny_vance_astro.sql +5 -0
  75. package/dist/compliance/drizzle/migrations/meta/0001_snapshot.json +660 -0
  76. package/dist/compliance/drizzle/migrations/meta/_journal.json +7 -0
  77. package/dist/compliance/plugin.d.ts.map +1 -1
  78. package/dist/compliance/plugin.js +26 -12
  79. package/dist/compliance/plugin.js.map +1 -1
  80. package/dist/compliance/router/index.d.ts +20 -14
  81. package/dist/compliance/router/index.d.ts.map +1 -1
  82. package/dist/compliance/router/index.js +2 -1
  83. package/dist/compliance/router/index.js.map +1 -1
  84. package/dist/compliance/schema/index.d.ts +31 -14
  85. package/dist/compliance/schema/index.d.ts.map +1 -1
  86. package/dist/compliance/schema/index.js +10 -7
  87. package/dist/compliance/schema/index.js.map +1 -1
  88. package/dist/compliance/service/compliance.service.d.ts +27 -22
  89. package/dist/compliance/service/compliance.service.d.ts.map +1 -1
  90. package/dist/compliance/service/compliance.service.js +9 -22
  91. package/dist/compliance/service/compliance.service.js.map +1 -1
  92. package/dist/compliance/service/kyc.service.d.ts +22 -19
  93. package/dist/compliance/service/kyc.service.d.ts.map +1 -1
  94. package/dist/compliance/service/kyc.service.js +19 -24
  95. package/dist/compliance/service/kyc.service.js.map +1 -1
  96. package/dist/compliance/service/re-kyc-trigger.d.ts +4 -4
  97. package/dist/compliance/service/re-kyc-trigger.d.ts.map +1 -1
  98. package/dist/compliance/service/re-kyc-trigger.js +10 -6
  99. package/dist/compliance/service/re-kyc-trigger.js.map +1 -1
  100. package/dist/compliance/service/rg-eval.d.ts.map +1 -1
  101. package/dist/compliance/service/rg-eval.js +4 -2
  102. package/dist/compliance/service/rg-eval.js.map +1 -1
  103. package/dist/compliance/service/rg-monitoring.service.d.ts +6 -5
  104. package/dist/compliance/service/rg-monitoring.service.d.ts.map +1 -1
  105. package/dist/compliance/service/rg-monitoring.service.js +62 -31
  106. package/dist/compliance/service/rg-monitoring.service.js.map +1 -1
  107. package/dist/compliance/service/rg.service.d.ts +28 -6
  108. package/dist/compliance/service/rg.service.d.ts.map +1 -1
  109. package/dist/compliance/service/rg.service.js +60 -34
  110. package/dist/compliance/service/rg.service.js.map +1 -1
  111. package/dist/contracts/adapters/admin-wallet-reporting.d.ts +5 -5
  112. package/dist/contracts/adapters/payment.d.ts +2 -2
  113. package/dist/contracts/adapters/wallet-commands.d.ts +5 -5
  114. package/dist/contracts/adapters/wallet-reader.d.ts +2 -2
  115. package/dist/contracts/adapters/wallet-reader.d.ts.map +1 -1
  116. package/dist/contracts/schemas/common.d.ts +2 -5
  117. package/dist/contracts/schemas/common.d.ts.map +1 -1
  118. package/dist/contracts/schemas/common.js +3 -4
  119. package/dist/contracts/schemas/common.js.map +1 -1
  120. package/dist/contracts/schemas/events.d.ts +35 -9
  121. package/dist/contracts/schemas/events.d.ts.map +1 -1
  122. package/dist/contracts/schemas/events.js +32 -7
  123. package/dist/contracts/schemas/events.js.map +1 -1
  124. package/dist/contracts/schemas/platform-config.d.ts +9 -9
  125. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  126. package/dist/contracts/schemas/platform-config.js +6 -5
  127. package/dist/contracts/schemas/platform-config.js.map +1 -1
  128. package/dist/contracts/schemas/player.d.ts +2 -2
  129. package/dist/contracts/schemas/player.js +3 -3
  130. package/dist/contracts/schemas/player.js.map +1 -1
  131. package/dist/contracts/schemas/tag.d.ts +2 -2
  132. package/dist/contracts/schemas/tag.js +3 -3
  133. package/dist/contracts/schemas/tag.js.map +1 -1
  134. package/dist/engagement/chat/moderation/moderate.d.ts.map +1 -1
  135. package/dist/engagement/chat/moderation/moderate.js +2 -1
  136. package/dist/engagement/chat/moderation/moderate.js.map +1 -1
  137. package/dist/engagement/chat/react/use-chat-stream.d.ts +2 -3
  138. package/dist/engagement/chat/react/use-chat-stream.d.ts.map +1 -1
  139. package/dist/engagement/chat/react/use-chat-stream.js +4 -2
  140. package/dist/engagement/chat/react/use-chat-stream.js.map +1 -1
  141. package/dist/engagement/chat/router/index.d.ts.map +1 -1
  142. package/dist/engagement/chat/router/index.js +2 -1
  143. package/dist/engagement/chat/router/index.js.map +1 -1
  144. package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
  145. package/dist/engagement/chat/service/chat.service.js +22 -11
  146. package/dist/engagement/chat/service/chat.service.js.map +1 -1
  147. package/dist/engagement/notifications/__tests__/notifications.service.test.js +4 -3
  148. package/dist/engagement/notifications/__tests__/notifications.service.test.js.map +1 -1
  149. package/dist/engagement/notifications/contract/index.d.ts +24 -2
  150. package/dist/engagement/notifications/contract/index.d.ts.map +1 -1
  151. package/dist/engagement/notifications/contract/index.js +10 -1
  152. package/dist/engagement/notifications/contract/index.js.map +1 -1
  153. package/dist/engagement/notifications/index.d.ts +1 -1
  154. package/dist/engagement/notifications/index.d.ts.map +1 -1
  155. package/dist/engagement/notifications/plugin.d.ts.map +1 -1
  156. package/dist/engagement/notifications/plugin.js +6 -3
  157. package/dist/engagement/notifications/plugin.js.map +1 -1
  158. package/dist/engagement/notifications/router/index.d.ts +4 -1
  159. package/dist/engagement/notifications/router/index.d.ts.map +1 -1
  160. package/dist/engagement/notifications/router/index.js +15 -6
  161. package/dist/engagement/notifications/router/index.js.map +1 -1
  162. package/dist/engagement/notifications/service/notifications.service.d.ts +6 -13
  163. package/dist/engagement/notifications/service/notifications.service.d.ts.map +1 -1
  164. package/dist/engagement/notifications/service/notifications.service.js +6 -14
  165. package/dist/engagement/notifications/service/notifications.service.js.map +1 -1
  166. package/dist/iam/__tests__/iam.service.test.js +14 -9
  167. package/dist/iam/__tests__/iam.service.test.js.map +1 -1
  168. package/dist/iam/plugin.d.ts.map +1 -1
  169. package/dist/iam/plugin.js +4 -2
  170. package/dist/iam/plugin.js.map +1 -1
  171. package/dist/iam/seed/seed-default-roles.d.ts.map +1 -1
  172. package/dist/iam/seed/seed-default-roles.js +2 -1
  173. package/dist/iam/seed/seed-default-roles.js.map +1 -1
  174. package/dist/iam/service/iam.service.d.ts +19 -17
  175. package/dist/iam/service/iam.service.d.ts.map +1 -1
  176. package/dist/iam/service/iam.service.js +68 -34
  177. package/dist/iam/service/iam.service.js.map +1 -1
  178. package/dist/pam/identity/admin-user-directory.d.ts.map +1 -1
  179. package/dist/pam/identity/admin-user-directory.js +18 -9
  180. package/dist/pam/identity/admin-user-directory.js.map +1 -1
  181. package/dist/pam/identity/router/index.d.ts.map +1 -1
  182. package/dist/pam/identity/router/index.js +4 -2
  183. package/dist/pam/identity/router/index.js.map +1 -1
  184. package/dist/pam/identity/service/identity.service.d.ts +24 -2
  185. package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
  186. package/dist/pam/identity/service/identity.service.js +51 -19
  187. package/dist/pam/identity/service/identity.service.js.map +1 -1
  188. package/dist/pam/identity/service/login-enforcement.service.d.ts +3 -3
  189. package/dist/pam/identity/service/login-enforcement.service.d.ts.map +1 -1
  190. package/dist/pam/identity/service/login-enforcement.service.js.map +1 -1
  191. package/dist/pam/identity/service/session.service.d.ts +5 -3
  192. package/dist/pam/identity/service/session.service.d.ts.map +1 -1
  193. package/dist/pam/identity/service/session.service.js +3 -3
  194. package/dist/pam/identity/service/session.service.js.map +1 -1
  195. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +2 -1
  196. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +1 -1
  197. package/dist/pam/player-management/__tests__/player.router.test.js +2 -2
  198. package/dist/pam/player-management/__tests__/player.router.test.js.map +1 -1
  199. package/dist/pam/player-management/__tests__/player.service.test.js +2 -1
  200. package/dist/pam/player-management/__tests__/player.service.test.js.map +1 -1
  201. package/dist/pam/player-management/contract/index.d.ts +10 -10
  202. package/dist/pam/player-management/router/index.d.ts +8 -8
  203. package/dist/pam/player-management/service/kyc-status-writer.d.ts.map +1 -1
  204. package/dist/pam/player-management/service/kyc-status-writer.js +2 -1
  205. package/dist/pam/player-management/service/kyc-status-writer.js.map +1 -1
  206. package/dist/pam/player-management/service/player.service.d.ts +15 -15
  207. package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
  208. package/dist/pam/player-management/service/player.service.js +15 -12
  209. package/dist/pam/player-management/service/player.service.js.map +1 -1
  210. package/dist/pam/player-note/schema/index.d.ts +4 -4
  211. package/dist/pam/player-note/schema/index.js +6 -6
  212. package/dist/pam/player-note/schema/index.js.map +1 -1
  213. package/dist/pam/player-note/service/player-note.service.d.ts +11 -3
  214. package/dist/pam/player-note/service/player-note.service.d.ts.map +1 -1
  215. package/dist/pam/player-note/service/player-note.service.js +1 -1
  216. package/dist/pam/player-note/service/player-note.service.js.map +1 -1
  217. package/dist/pam/profile/__tests__/profile.service.test.js +2 -1
  218. package/dist/pam/profile/__tests__/profile.service.test.js.map +1 -1
  219. package/dist/pam/profile/contract/index.d.ts +4 -4
  220. package/dist/pam/profile/react/profile.d.ts +6 -7
  221. package/dist/pam/profile/react/profile.d.ts.map +1 -1
  222. package/dist/pam/profile/react/profile.js.map +1 -1
  223. package/dist/pam/profile/router/index.d.ts +4 -4
  224. package/dist/pam/profile/service/profile.service.d.ts +4 -4
  225. package/dist/pam/profile/service/profile.service.d.ts.map +1 -1
  226. package/dist/pam/profile/service/profile.service.js +2 -1
  227. package/dist/pam/profile/service/profile.service.js.map +1 -1
  228. package/dist/pam/shared/headers-mapper.d.ts.map +1 -1
  229. package/dist/pam/shared/headers-mapper.js +2 -1
  230. package/dist/pam/shared/headers-mapper.js.map +1 -1
  231. package/dist/pam/shared/player-mapper.d.ts +17 -2
  232. package/dist/pam/shared/player-mapper.d.ts.map +1 -1
  233. package/dist/pam/shared/player-mapper.js +2 -2
  234. package/dist/pam/shared/player-mapper.js.map +1 -1
  235. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js +2 -1
  236. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js.map +1 -1
  237. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +19 -18
  238. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +1 -1
  239. package/dist/pam/tag/__tests__/tag-mappers.test.js +6 -6
  240. package/dist/pam/tag/__tests__/tag-mappers.test.js.map +1 -1
  241. package/dist/pam/tag/__tests__/tag-rule.service.test.js +14 -14
  242. package/dist/pam/tag/__tests__/tag-rule.service.test.js.map +1 -1
  243. package/dist/pam/tag/__tests__/tag.router.test.d.ts +2 -0
  244. package/dist/pam/tag/__tests__/tag.router.test.d.ts.map +1 -0
  245. package/dist/pam/tag/__tests__/tag.router.test.js +38 -0
  246. package/dist/pam/tag/__tests__/tag.router.test.js.map +1 -0
  247. package/dist/pam/tag/contract/index.d.ts +3 -3
  248. package/dist/pam/tag/drizzle/migrations/0001_neat_iron_monger.sql +2 -0
  249. package/dist/pam/tag/drizzle/migrations/meta/0001_snapshot.json +295 -0
  250. package/dist/pam/tag/drizzle/migrations/meta/_journal.json +7 -0
  251. package/dist/pam/tag/router/index.d.ts +3 -3
  252. package/dist/pam/tag/schema/index.d.ts +16 -16
  253. package/dist/pam/tag/schema/index.d.ts.map +1 -1
  254. package/dist/pam/tag/schema/index.js +19 -19
  255. package/dist/pam/tag/schema/index.js.map +1 -1
  256. package/dist/pam/tag/seed/data/default-tag-rules.js +6 -6
  257. package/dist/pam/tag/seed/data/default-tag-rules.js.map +1 -1
  258. package/dist/pam/tag/seed/seed-default-tag-rules.d.ts.map +1 -1
  259. package/dist/pam/tag/seed/seed-default-tag-rules.js +5 -3
  260. package/dist/pam/tag/seed/seed-default-tag-rules.js.map +1 -1
  261. package/dist/pam/tag/service/tag-evaluation.service.d.ts.map +1 -1
  262. package/dist/pam/tag/service/tag-evaluation.service.js +32 -18
  263. package/dist/pam/tag/service/tag-evaluation.service.js.map +1 -1
  264. package/dist/pam/tag/service/tag-mappers.d.ts +8 -2
  265. package/dist/pam/tag/service/tag-mappers.d.ts.map +1 -1
  266. package/dist/pam/tag/service/tag-mappers.js +3 -8
  267. package/dist/pam/tag/service/tag-mappers.js.map +1 -1
  268. package/dist/pam/tag/service/tag-rule.service.d.ts +34 -4
  269. package/dist/pam/tag/service/tag-rule.service.d.ts.map +1 -1
  270. package/dist/pam/tag/service/tag-rule.service.js +9 -15
  271. package/dist/pam/tag/service/tag-rule.service.js.map +1 -1
  272. package/dist/pam/tag/service/tag.service.d.ts +51 -8
  273. package/dist/pam/tag/service/tag.service.d.ts.map +1 -1
  274. package/dist/pam/tag/service/tag.service.js +6 -11
  275. package/dist/pam/tag/service/tag.service.js.map +1 -1
  276. package/dist/react/context/api-client.d.ts.map +1 -1
  277. package/dist/react/context/api-client.js +14 -7
  278. package/dist/react/context/api-client.js.map +1 -1
  279. package/dist/react/hooks/use-event-stream.d.ts.map +1 -1
  280. package/dist/react/hooks/use-event-stream.js +6 -3
  281. package/dist/react/hooks/use-event-stream.js.map +1 -1
  282. package/dist/react/hooks/use-paginated-list.js +3 -3
  283. package/dist/react/hooks/use-paginated-list.js.map +1 -1
  284. package/dist/server/auth/admin-guard.d.ts +12 -0
  285. package/dist/server/auth/admin-guard.d.ts.map +1 -1
  286. package/dist/server/auth/admin-guard.js +14 -1
  287. package/dist/server/auth/admin-guard.js.map +1 -1
  288. package/dist/server/auth/auth.d.ts +9 -0
  289. package/dist/server/auth/auth.d.ts.map +1 -1
  290. package/dist/server/auth/auth.js +9 -1
  291. package/dist/server/auth/auth.js.map +1 -1
  292. package/dist/server/auth/permission-levels.d.ts.map +1 -1
  293. package/dist/server/auth/permission-levels.js +12 -6
  294. package/dist/server/auth/permission-levels.js.map +1 -1
  295. package/dist/server/db/drizzle.d.ts.map +1 -1
  296. package/dist/server/db/drizzle.js +2 -1
  297. package/dist/server/db/drizzle.js.map +1 -1
  298. package/dist/server/db/drizzle.service.d.ts.map +1 -1
  299. package/dist/server/db/drizzle.service.js +2 -1
  300. package/dist/server/db/drizzle.service.js.map +1 -1
  301. package/dist/server/db/index.d.ts +1 -1
  302. package/dist/server/db/index.d.ts.map +1 -1
  303. package/dist/server/db/index.js +1 -1
  304. package/dist/server/db/index.js.map +1 -1
  305. package/dist/server/db/migrate.d.ts.map +1 -1
  306. package/dist/server/db/migrate.js +2 -1
  307. package/dist/server/db/migrate.js.map +1 -1
  308. package/dist/server/db/outbox/__tests__/relay.test.js +4 -2
  309. package/dist/server/db/outbox/__tests__/relay.test.js.map +1 -1
  310. package/dist/server/db/outbox/relay.d.ts +15 -0
  311. package/dist/server/db/outbox/relay.d.ts.map +1 -1
  312. package/dist/server/db/outbox/relay.js +21 -14
  313. package/dist/server/db/outbox/relay.js.map +1 -1
  314. package/dist/server/db/query-helpers.d.ts +2 -0
  315. package/dist/server/db/query-helpers.d.ts.map +1 -1
  316. package/dist/server/db/query-helpers.js +28 -1
  317. package/dist/server/db/query-helpers.js.map +1 -1
  318. package/dist/server/kernel/__tests__/event-bus.test.js +10 -7
  319. package/dist/server/kernel/__tests__/event-bus.test.js.map +1 -1
  320. package/dist/server/kernel/__tests__/job-queue.test.js +5 -2
  321. package/dist/server/kernel/__tests__/job-queue.test.js.map +1 -1
  322. package/dist/server/kernel/__tests__/rate-limiter.test.js +10 -5
  323. package/dist/server/kernel/__tests__/rate-limiter.test.js.map +1 -1
  324. package/dist/server/kernel/__tests__/redis-cache.test.js +2 -1
  325. package/dist/server/kernel/__tests__/redis-cache.test.js.map +1 -1
  326. package/dist/server/kernel/bullmq-job-queue.d.ts +12 -0
  327. package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
  328. package/dist/server/kernel/bullmq-job-queue.js +21 -4
  329. package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
  330. package/dist/server/kernel/cache.d.ts.map +1 -1
  331. package/dist/server/kernel/cache.js +14 -7
  332. package/dist/server/kernel/cache.js.map +1 -1
  333. package/dist/server/kernel/container.d.ts +10 -0
  334. package/dist/server/kernel/container.d.ts.map +1 -1
  335. package/dist/server/kernel/container.js +12 -1
  336. package/dist/server/kernel/container.js.map +1 -1
  337. package/dist/server/kernel/event-bus.d.ts +9 -0
  338. package/dist/server/kernel/event-bus.d.ts.map +1 -1
  339. package/dist/server/kernel/event-bus.js +9 -1
  340. package/dist/server/kernel/event-bus.js.map +1 -1
  341. package/dist/server/kernel/event-stream.d.ts.map +1 -1
  342. package/dist/server/kernel/event-stream.js +2 -1
  343. package/dist/server/kernel/event-stream.js.map +1 -1
  344. package/dist/server/kernel/job-queue.d.ts +12 -0
  345. package/dist/server/kernel/job-queue.d.ts.map +1 -1
  346. package/dist/server/kernel/job-queue.js +38 -15
  347. package/dist/server/kernel/job-queue.js.map +1 -1
  348. package/dist/server/kernel/ownership.d.ts.map +1 -1
  349. package/dist/server/kernel/ownership.js +2 -1
  350. package/dist/server/kernel/ownership.js.map +1 -1
  351. package/dist/server/kernel/platform-config-loader.d.ts.map +1 -1
  352. package/dist/server/kernel/platform-config-loader.js +34 -16
  353. package/dist/server/kernel/platform-config-loader.js.map +1 -1
  354. package/dist/server/kernel/rate-limiter.d.ts.map +1 -1
  355. package/dist/server/kernel/rate-limiter.js +6 -3
  356. package/dist/server/kernel/rate-limiter.js.map +1 -1
  357. package/dist/server/kernel/realtime-transport.d.ts.map +1 -1
  358. package/dist/server/kernel/realtime-transport.js +10 -5
  359. package/dist/server/kernel/realtime-transport.js.map +1 -1
  360. package/dist/server/kernel/redis-cache.d.ts.map +1 -1
  361. package/dist/server/kernel/redis-cache.js +10 -5
  362. package/dist/server/kernel/redis-cache.js.map +1 -1
  363. package/dist/server/kernel/redis-rate-limiter.d.ts +11 -0
  364. package/dist/server/kernel/redis-rate-limiter.d.ts.map +1 -1
  365. package/dist/server/kernel/redis-rate-limiter.js +13 -1
  366. package/dist/server/kernel/redis-rate-limiter.js.map +1 -1
  367. package/dist/server/kernel/serialize-row.d.ts.map +1 -1
  368. package/dist/server/kernel/serialize-row.js +4 -2
  369. package/dist/server/kernel/serialize-row.js.map +1 -1
  370. package/dist/server/plugin-host/load-extensions.js +2 -1
  371. package/dist/server/plugin-host/load-extensions.js.map +1 -1
  372. package/dist/server/plugin-host/load-plugins.d.ts.map +1 -1
  373. package/dist/server/plugin-host/load-plugins.js +4 -2
  374. package/dist/server/plugin-host/load-plugins.js.map +1 -1
  375. package/dist/server/plugin-host/service-manifest.d.ts.map +1 -1
  376. package/dist/server/plugin-host/service-manifest.js +4 -2
  377. package/dist/server/plugin-host/service-manifest.js.map +1 -1
  378. package/dist/server/runtime/create-app.d.ts +12 -0
  379. package/dist/server/runtime/create-app.d.ts.map +1 -1
  380. package/dist/server/runtime/create-app.js +27 -6
  381. package/dist/server/runtime/create-app.js.map +1 -1
  382. package/dist/wallet/__tests__/admin-reporting.test.js +2 -2
  383. package/dist/wallet/__tests__/admin-reporting.test.js.map +1 -1
  384. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +5 -5
  385. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +1 -1
  386. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +45 -34
  387. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
  388. package/dist/wallet/__tests__/wallet-commands.service.test.js +54 -37
  389. package/dist/wallet/__tests__/wallet-commands.service.test.js.map +1 -1
  390. package/dist/wallet/__tests__/wallet-kyc-gate.test.js +5 -5
  391. package/dist/wallet/__tests__/wallet-kyc-gate.test.js.map +1 -1
  392. package/dist/wallet/__tests__/wallet.rate-limit.test.js +2 -2
  393. package/dist/wallet/__tests__/wallet.rate-limit.test.js.map +1 -1
  394. package/dist/wallet/__tests__/wallet.service.test.js +62 -34
  395. package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
  396. package/dist/wallet/adapters/mock/mock-payment-adapter.d.ts +2 -2
  397. package/dist/wallet/adapters/wallet-reader.service.d.ts +1 -1
  398. package/dist/wallet/adapters/wallet-reader.service.js +1 -1
  399. package/dist/wallet/adapters/wallet-reader.service.js.map +1 -1
  400. package/dist/wallet/admin-reporting.d.ts +4 -4
  401. package/dist/wallet/admin-reporting.d.ts.map +1 -1
  402. package/dist/wallet/admin-reporting.js +8 -8
  403. package/dist/wallet/admin-reporting.js.map +1 -1
  404. package/dist/wallet/contract/index.d.ts +20 -20
  405. package/dist/wallet/contract/index.d.ts.map +1 -1
  406. package/dist/wallet/contract/index.js +14 -10
  407. package/dist/wallet/contract/index.js.map +1 -1
  408. package/dist/wallet/drizzle/migrations/0001_redundant_micromacro.sql +4 -0
  409. package/dist/wallet/drizzle/migrations/meta/0001_snapshot.json +397 -0
  410. package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
  411. package/dist/wallet/plugin.d.ts.map +1 -1
  412. package/dist/wallet/plugin.js +5 -1
  413. package/dist/wallet/plugin.js.map +1 -1
  414. package/dist/wallet/router/index.d.ts +11 -11
  415. package/dist/wallet/schema/index.js +3 -3
  416. package/dist/wallet/schema/index.js.map +1 -1
  417. package/dist/wallet/service/wallet-commands.service.d.ts +1 -0
  418. package/dist/wallet/service/wallet-commands.service.d.ts.map +1 -1
  419. package/dist/wallet/service/wallet-commands.service.js +32 -24
  420. package/dist/wallet/service/wallet-commands.service.js.map +1 -1
  421. package/dist/wallet/service/wallet.service.d.ts +46 -18
  422. package/dist/wallet/service/wallet.service.d.ts.map +1 -1
  423. package/dist/wallet/service/wallet.service.js +152 -74
  424. package/dist/wallet/service/wallet.service.js.map +1 -1
  425. package/oxlint/oxlintrc.json +19 -3
  426. package/package.json +1 -1
  427. package/turbo-generators/src/config.ts +18 -6
@@ -1,13 +1,40 @@
1
1
  import { sql } from 'drizzle-orm';
2
2
  export function findOneOrThrow(rows, error) {
3
3
  const row = rows[0];
4
- if (row === undefined)
4
+ if (row === undefined) {
5
5
  throw error;
6
+ }
6
7
  return row;
7
8
  }
8
9
  export function pageToOffset(page, limit) {
9
10
  return (page - 1) * limit;
10
11
  }
12
+ // The single sanctioned JS-side conversion point for a decimal-string money amount.
13
+ // Ledger writes and balance comparisons stay in SQL (numeric arithmetic); this is only
14
+ // for a coarse, non-ledger decision (a review-queue heuristic, a velocity/cap check)
15
+ // where float precision loss at the margins does not change the outcome.
16
+ export function moneyToNumber(amount) {
17
+ return Number(amount);
18
+ }
19
+ // Run `fn` over `items` with at most `concurrency` promises in flight, results in input
20
+ // order. Use this instead of `Promise.all(items.map(fn))` whenever `items` comes from a
21
+ // query (unbounded) and `fn` touches the DB: an uncapped fan-out opens one pool connection
22
+ // per item, exhausts the pool, and starves every other query on the same Postgres instance.
23
+ // Enforced in service files by oss-module-shape/no-unbounded-db-fanout.
24
+ export async function mapConcurrent(items, concurrency, fn) {
25
+ const results = Array.from({ length: items.length });
26
+ let cursor = 0;
27
+ const worker = async () => {
28
+ while (cursor < items.length) {
29
+ const index = cursor;
30
+ cursor += 1;
31
+ results[index] = await fn(items[index], index);
32
+ }
33
+ };
34
+ const workers = Math.max(1, Math.min(concurrency, items.length));
35
+ await Promise.all(Array.from({ length: workers }, worker));
36
+ return results;
37
+ }
11
38
  // Serialize a critical section per `key` with a transaction-scoped Postgres advisory lock
12
39
  // (auto-released on commit/rollback). `hashtext` maps the string key to the required bigint. Must run in a transaction.
13
40
  export async function withAdvisoryXactLock(txn, key, fn) {
@@ -1 +1 @@
1
- {"version":3,"file":"query-helpers.js","sourceRoot":"","sources":["../../../src/server/db/query-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,MAAM,UAAU,cAAc,CAAI,IAAS,EAAE,KAAY;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,KAAK,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,0FAA0F;AAC1F,wHAAwH;AACxH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAc,EACd,GAAW,EACX,EAAoB;IAEpB,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAA,yCAAyC,GAAG,IAAI,CAAC,CAAC;IACvE,OAAO,EAAE,EAAE,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"query-helpers.js","sourceRoot":"","sources":["../../../src/server/db/query-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,MAAM,UAAU,cAAc,CAAI,IAAS,EAAE,KAAY;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,oFAAoF;AACpF,uFAAuF;AACvF,qFAAqF;AACrF,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,wFAAwF;AACxF,wFAAwF;AACxF,2FAA2F;AAC3F,4FAA4F;AAC5F,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAmB,EACnB,WAAmB,EACnB,EAA0C;IAE1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC;YACrB,MAAM,IAAI,CAAC,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0FAA0F;AAC1F,wHAAwH;AACxH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAc,EACd,GAAW,EACX,EAAoB;IAEpB,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAA,yCAAyC,GAAG,IAAI,CAAC,CAAC;IACvE,OAAO,EAAE,EAAE,CAAC;AACd,CAAC"}
@@ -14,12 +14,14 @@ describe('createEventBus', () => {
14
14
  });
15
15
  bus.emit('wallet.deposit.completed', {
16
16
  userId: 'u1',
17
- amount: 50,
17
+ amount: '50',
18
18
  currency: 'USD',
19
19
  transactionId: 'tx1',
20
20
  });
21
21
  await flush();
22
- expect(received).toEqual([{ userId: 'u1', amount: 50, currency: 'USD', transactionId: 'tx1' }]);
22
+ expect(received).toEqual([
23
+ { userId: 'u1', amount: '50', currency: 'USD', transactionId: 'tx1' },
24
+ ]);
23
25
  });
24
26
  it('delivers the envelope as the optional second arg to handlers', async () => {
25
27
  const bus = createEventBus(new InMemoryBroker(), fakeLogger());
@@ -29,7 +31,7 @@ describe('createEventBus', () => {
29
31
  });
30
32
  bus.emit('wallet.deposit.completed', {
31
33
  userId: 'u1',
32
- amount: 10,
34
+ amount: '10',
33
35
  currency: 'USD',
34
36
  transactionId: 'tx2',
35
37
  });
@@ -39,25 +41,26 @@ describe('createEventBus', () => {
39
41
  expect(typeof env?.eventId).toBe('string');
40
42
  expect(env?.eventId).toHaveLength(36);
41
43
  expect(env?.topic).toBe('wallet.deposit.completed');
42
- expect(env?.schemaVersion).toBe(1);
44
+ expect(env?.schemaVersion).toBe(2);
43
45
  expect(typeof env?.occurredAt).toBe('string');
44
46
  });
45
47
  it('envelope eventId is unique per emission', async () => {
46
48
  const bus = createEventBus(new InMemoryBroker(), fakeLogger());
47
49
  const ids = [];
48
50
  bus.on('wallet.deposit.completed', (_p, env) => {
49
- if (env?.eventId)
51
+ if (env?.eventId) {
50
52
  ids.push(env.eventId);
53
+ }
51
54
  });
52
55
  bus.emit('wallet.deposit.completed', {
53
56
  userId: 'u1',
54
- amount: 1,
57
+ amount: '1',
55
58
  currency: 'USD',
56
59
  transactionId: 'a',
57
60
  });
58
61
  bus.emit('wallet.deposit.completed', {
59
62
  userId: 'u1',
60
- amount: 2,
63
+ amount: '2',
61
64
  currency: 'USD',
62
65
  transactionId: 'b',
63
66
  });
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.test.js","sourceRoot":"","sources":["../../../../src/server/kernel/__tests__/event-bus.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-bus.test.js","sourceRoot":"","sources":["../../../../src/server/kernel/__tests__/event-bus.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjE,SAAS,UAAU;IACjB,OAAO,IAAI,CAAS,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEzD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,GAAG,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACnC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;SACtE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAqC,EAAE,CAAC;QAEvD,GAAG,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACxD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACnC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;YAC7C,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;gBACjB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACnC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACnC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;QACH,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,GAAG,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACtC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACtC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,EAC9D,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,GAAG,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE,EAAE;YACvC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,GAAG,EAAW,CAAC,CAAC;QAC/D,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,EAC9D,iCAAiC,CAClC,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,SAAS,GAAyB,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAyB;YACvC,OAAO,EAAE,CAAC,QAAuB,EAAE,EAAE;gBACnC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,SAAS,EAAE,CAAC,MAAc,EAAE,QAAuB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS;YACvE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;SAC7B,CAAC;QACF,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAErD,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import { describe, it, expect, vi } from 'vitest';
2
2
  import { mock } from '../../../testing/mock.js';
3
3
  import { z } from 'zod';
4
4
  import { queue } from '@openora/core/contracts';
5
+ import { findOneOrThrow } from '@openora/core/server';
5
6
  import { InProcessJobQueue } from '../job-queue.js';
6
7
  function fakeLogger() {
7
8
  return mock({ error: vi.fn(), warn: vi.fn(), info: vi.fn(), debug: vi.fn() });
@@ -11,8 +12,9 @@ const wait = (ms) => new Promise((r) => setTimeout(r, ms));
11
12
  // Returns as soon as predicate holds rather than sleeping a fixed amount, avoiding CI scheduling jitter.
12
13
  async function waitFor(predicate, timeoutMs = 2000) {
13
14
  const deadline = Date.now() + timeoutMs;
14
- while (!predicate() && Date.now() < deadline)
15
+ while (!predicate() && Date.now() < deadline) {
15
16
  await wait(5);
17
+ }
16
18
  }
17
19
  const Payload = z.object({ value: z.string() });
18
20
  describe('InProcessJobQueue', () => {
@@ -68,7 +70,8 @@ describe('InProcessJobQueue', () => {
68
70
  await waitFor(() => dead.mock.calls.length > 0);
69
71
  expect(attempts).toEqual([1, 2, 3]);
70
72
  expect(dead).toHaveBeenCalledOnce();
71
- expect(dead.mock.calls[0][1].message).toBe('boom');
73
+ const deadCall = findOneOrThrow(dead.mock.calls, new Error('expected a dead-letter call'));
74
+ expect(deadCall[1].message).toBe('boom');
72
75
  await q.close();
73
76
  });
74
77
  it('serializes jobs that share an orderingKey', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"job-queue.test.js","sourceRoot":"","sources":["../../../../src/server/kernel/__tests__/job-queue.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job-queue.test.js","sourceRoot":"","sources":["../../../../src/server/kernel/__tests__/job-queue.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,SAAS,UAAU;IACjB,OAAO,IAAI,CAAS,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAEnE,yGAAyG;AACzG,KAAK,UAAU,OAAO,CAAC,SAAwB,EAAE,SAAS,GAAG,IAAI;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAGhD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,CAAC,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,CAAC,CAAC,cAAc,CAAC;YACf,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,CAAC,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEzB,CAAC,CAAC,cAAc,CAAC;YACf,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;SACF,CAAC,CAAC;QACH,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,CAAC,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACrB,CAAC,CAAC,cAAc,CAAC;YACf,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACf,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YACD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,OAAO,CACb,KAAK,CAAC,OAAO,CAAC,EACd,EAAE,KAAK,EAAE,GAAG,EAAE,EACd;YACE,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;SACvC,CACF,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAE,QAAQ,CAAC,CAAC,CAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,CAAC,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,CAAC,CAAC,cAAc,CAAC;YACf,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;YACvB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE;YACzC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACrB,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;QACnF,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,CAAC,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAoB,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,cAAc,CAAC;YACf,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,KAAK,EAAE,CAAC;gBACR,MAAM,IAAI,CAAC;YACb,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;QACvF,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,EAAE,CAAC;QACV,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,CAAC,CAAC,cAAc,CAAC;YACf,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -8,15 +8,17 @@ describe('InProcessRateLimiter', () => {
8
8
  it('allows up to the limit then denies within the same window', async () => {
9
9
  const limiter = new InProcessRateLimiter();
10
10
  const results = [];
11
- for (let i = 0; i < 4; i++)
11
+ for (let i = 0; i < 4; i++) {
12
12
  results.push(await limiter.consume('k', OPTS));
13
+ }
13
14
  expect(results.map((r) => r.allowed)).toEqual([true, true, true, false]);
14
15
  limiter.close();
15
16
  });
16
17
  it('reports retryAfterMs equal to the time left in the window on denial', async () => {
17
18
  const limiter = new InProcessRateLimiter();
18
- for (let i = 0; i < 3; i++)
19
+ for (let i = 0; i < 3; i++) {
19
20
  await limiter.consume('k', OPTS);
21
+ }
20
22
  vi.advanceTimersByTime(400);
21
23
  const denied = await limiter.consume('k', OPTS);
22
24
  expect(denied.allowed).toBe(false);
@@ -25,8 +27,9 @@ describe('InProcessRateLimiter', () => {
25
27
  });
26
28
  it('rolls over: a fresh budget is available once the window elapses', async () => {
27
29
  const limiter = new InProcessRateLimiter();
28
- for (let i = 0; i < 3; i++)
30
+ for (let i = 0; i < 3; i++) {
29
31
  await limiter.consume('k', OPTS);
32
+ }
30
33
  expect((await limiter.consume('k', OPTS)).allowed).toBe(false);
31
34
  vi.advanceTimersByTime(1000);
32
35
  expect((await limiter.consume('k', OPTS)).allowed).toBe(true);
@@ -34,8 +37,9 @@ describe('InProcessRateLimiter', () => {
34
37
  });
35
38
  it('isolates budgets between keys', async () => {
36
39
  const limiter = new InProcessRateLimiter();
37
- for (let i = 0; i < 3; i++)
40
+ for (let i = 0; i < 3; i++) {
38
41
  await limiter.consume('a', OPTS);
42
+ }
39
43
  expect((await limiter.consume('a', OPTS)).allowed).toBe(false);
40
44
  expect((await limiter.consume('b', OPTS)).allowed).toBe(true);
41
45
  limiter.close();
@@ -45,8 +49,9 @@ describe('assertRateLimit / makeRateLimitError', () => {
45
49
  it('throws a TOO_MANY_REQUESTS ORPCError carrying retryAfterMs once the limit is hit', async () => {
46
50
  vi.useFakeTimers();
47
51
  const limiter = new InProcessRateLimiter();
48
- for (let i = 0; i < 3; i++)
52
+ for (let i = 0; i < 3; i++) {
49
53
  await assertRateLimit(limiter, 'k', OPTS);
54
+ }
50
55
  await expect(assertRateLimit(limiter, 'k', OPTS)).rejects.toMatchObject({
51
56
  code: 'TOO_MANY_REQUESTS',
52
57
  data: { retryAfterMs: OPTS.windowMs },
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.test.js","sourceRoot":"","sources":["../../../../src/server/kernel/__tests__/rate-limiter.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limiter.test.js","sourceRoot":"","sources":["../../../../src/server/kernel/__tests__/rate-limiter.test.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,9 @@ function fakeClient(isReady = true) {
9
9
  });
10
10
  const get = vi.fn(async (key) => store.get(key) ?? null);
11
11
  const del = vi.fn(async (keys) => {
12
- for (const k of keys)
12
+ for (const k of keys) {
13
13
  store.delete(k);
14
+ }
14
15
  return keys.length;
15
16
  });
16
17
  return { isReady, get, set, del };
@@ -1 +1 @@
1
- {"version":3,"file":"redis-cache.test.js","sourceRoot":"","sources":["../../../../src/server/kernel/__tests__/redis-cache.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis-cache.test.js","sourceRoot":"","sources":["../../../../src/server/kernel/__tests__/redis-cache.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,16 @@
1
1
  import type { JobQueueAdapter, QueueName, EnqueueOptions, RepeatOptions, WorkerRegistration } from '@openora/core/contracts';
2
+ /**
3
+ * Durable `JOB_QUEUE` reference driver, auto-bound by `createApp` when
4
+ * `REDIS_URL` is set - jobs survive a process restart and `cron`/`everyMs`
5
+ * schedules run for real. `idempotencyKey` maps to the BullMQ `jobId`, so
6
+ * BullMQ itself dedupes concurrent enqueues. `orderingKey` is NOT honoured
7
+ * (OSS BullMQ has no per-key ordering groups) - jobs run unordered regardless
8
+ * of the key, so every handler must be idempotent under any interleaving, not
9
+ * just under retries. The `'failed'` listener only triggers the dead-letter
10
+ * hook once `attemptsMade` reaches the job's own `attempts` (default 1) -
11
+ * intermediate retry failures are silent by design. `close()` closes workers
12
+ * before queues so in-flight jobs drain first.
13
+ */
2
14
  export declare class BullMqJobQueue implements JobQueueAdapter {
3
15
  private readonly logger;
4
16
  private readonly connection;
@@ -1 +1 @@
1
- {"version":3,"file":"bullmq-job-queue.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/bullmq-job-queue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,EAEb,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAgBjC,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAExC,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC5F,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAgC5D,QAAQ,CAAC,CAAC,EACR,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC;IAWhB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,OAAO,CAAC,QAAQ;YAQF,UAAU;CAwBzB"}
1
+ {"version":3,"file":"bullmq-job-queue.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/bullmq-job-queue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,cAAc,EACd,aAAa,EAEb,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAgBjC;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAExC,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC5F,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAqC5D,QAAQ,CAAC,CAAC,EACR,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC;IAWhB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,OAAO,CAAC,QAAQ;YAUF,UAAU;CAwBzB"}
@@ -1,5 +1,17 @@
1
1
  import { Queue, Worker } from 'bullmq';
2
2
  import { createLogger } from './logger.js';
3
+ /**
4
+ * Durable `JOB_QUEUE` reference driver, auto-bound by `createApp` when
5
+ * `REDIS_URL` is set - jobs survive a process restart and `cron`/`everyMs`
6
+ * schedules run for real. `idempotencyKey` maps to the BullMQ `jobId`, so
7
+ * BullMQ itself dedupes concurrent enqueues. `orderingKey` is NOT honoured
8
+ * (OSS BullMQ has no per-key ordering groups) - jobs run unordered regardless
9
+ * of the key, so every handler must be idempotent under any interleaving, not
10
+ * just under retries. The `'failed'` listener only triggers the dead-letter
11
+ * hook once `attemptsMade` reaches the job's own `attempts` (default 1) -
12
+ * intermediate retry failures are silent by design. `close()` closes workers
13
+ * before queues so in-flight jobs drain first.
14
+ */
3
15
  export class BullMqJobQueue {
4
16
  logger = createLogger('bullmq-job-queue');
5
17
  connection;
@@ -48,15 +60,19 @@ export class BullMqJobQueue {
48
60
  meta: job.data.meta,
49
61
  };
50
62
  await reg.handler(ctx);
51
- }, { connection: this.connection, concurrency: registration.options?.concurrency });
63
+ },
64
+ // BullMQ rejects an explicit `concurrency: undefined`; default to 1 when unset.
65
+ { connection: this.connection, concurrency: registration.options?.concurrency ?? 1 });
52
66
  // 'failed' fires per attempt; act only once retries are exhausted (attemptsMade has
53
67
  // reached the job's own attempts, default 1) - mirrors the in-process dead-letter.
54
68
  worker.on('failed', (job, error) => {
55
- if (!job)
69
+ if (!job) {
56
70
  return;
71
+ }
57
72
  const maxAttempts = job.opts.attempts ?? 1;
58
- if (job.attemptsMade < maxAttempts)
73
+ if (job.attemptsMade < maxAttempts) {
59
74
  return;
75
+ }
60
76
  void this.deadLetter(reg, job, error);
61
77
  });
62
78
  this.workers.push(worker);
@@ -80,8 +96,9 @@ export class BullMqJobQueue {
80
96
  }
81
97
  getQueue(queue) {
82
98
  const existing = this.queues.get(queue);
83
- if (existing)
99
+ if (existing) {
84
100
  return existing;
101
+ }
85
102
  const created = new Queue(queue, { connection: this.connection });
86
103
  this.queues.set(queue, created);
87
104
  return created;
@@ -1 +1 @@
1
- {"version":3,"file":"bullmq-job-queue.js","sourceRoot":"","sources":["../../../src/server/kernel/bullmq-job-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bullmq-job-queue.js","sourceRoot":"","sources":["../../../src/server/kernel/bullmq-job-queue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAgB5D,qBAAa,cAAe,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;;IAOzD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAU3C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASrE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,OAAO,CAAC,KAAK;IAOb,KAAK,IAAI,IAAI;CAId;AAKD,wBAAsB,MAAM,CAAC,CAAC,EAC5B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAmBZ;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAgB5D,qBAAa,cAAe,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;;IAOzD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAY3C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C,OAAO,CAAC,KAAK;IASb,KAAK,IAAI,IAAI;CAId;AAKD,wBAAsB,MAAM,CAAC,CAAC,EAC5B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAuBZ;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -17,8 +17,9 @@ export class InProcessCache {
17
17
  }
18
18
  get(key) {
19
19
  const entry = this.entries.get(key);
20
- if (!entry)
20
+ if (!entry) {
21
21
  return Promise.resolve(undefined);
22
+ }
22
23
  if (Date.now() >= entry.expiresAt) {
23
24
  this.entries.delete(key);
24
25
  return Promise.resolve(undefined);
@@ -28,22 +29,25 @@ export class InProcessCache {
28
29
  set(key, value, opts) {
29
30
  if (!this.entries.has(key) && this.entries.size >= MAX_ENTRIES) {
30
31
  const oldestKey = this.entries.keys().next().value;
31
- if (oldestKey !== undefined)
32
+ if (oldestKey !== undefined) {
32
33
  this.entries.delete(oldestKey);
34
+ }
33
35
  }
34
36
  this.entries.set(key, { value, expiresAt: Date.now() + opts.ttlMs });
35
37
  return Promise.resolve();
36
38
  }
37
39
  delete(key) {
38
- for (const k of Array.isArray(key) ? key : [key])
40
+ for (const k of Array.isArray(key) ? key : [key]) {
39
41
  this.entries.delete(k);
42
+ }
40
43
  return Promise.resolve();
41
44
  }
42
45
  sweep() {
43
46
  const now = Date.now();
44
47
  for (const [key, entry] of this.entries) {
45
- if (now >= entry.expiresAt)
48
+ if (now >= entry.expiresAt) {
46
49
  this.entries.delete(key);
50
+ }
47
51
  }
48
52
  }
49
53
  close() {
@@ -55,8 +59,9 @@ export class InProcessCache {
55
59
  // `loader`, so a hot key can stampede on cache-miss. Acceptable for the TTLs this
56
60
  // is bound at (seconds); add a per-key in-flight promise map if that ever changes.
57
61
  export async function cached(cache, key, ttlMs, loader) {
58
- if (!cache)
62
+ if (!cache) {
59
63
  return loader();
64
+ }
60
65
  let hit;
61
66
  try {
62
67
  hit = await cache.get(key);
@@ -65,8 +70,9 @@ export async function cached(cache, key, ttlMs, loader) {
65
70
  logger.warn({ key, err }, 'cache get failed');
66
71
  hit = undefined;
67
72
  }
68
- if (hit !== undefined)
73
+ if (hit !== undefined) {
69
74
  return hit;
75
+ }
70
76
  const value = await loader();
71
77
  try {
72
78
  await cache.set(key, value, { ttlMs });
@@ -77,8 +83,9 @@ export async function cached(cache, key, ttlMs, loader) {
77
83
  return value;
78
84
  }
79
85
  export async function invalidate(cache, keys) {
80
- if (!cache)
86
+ if (!cache) {
81
87
  return;
88
+ }
82
89
  try {
83
90
  await cache.delete(keys);
84
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/server/kernel/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/server/kernel/cache.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,15 @@
1
1
  import type { AnyToken } from '@openora/core/contracts';
2
2
  export type Factory<T> = (c: Container) => T;
3
+ /**
4
+ * Functional DI container - no decorators, no reflection. `get()` resolves
5
+ * lazily and caches the instance for the container's lifetime; `register()`
6
+ * for an already-resolved token clears the cached instance, so a later
7
+ * `register()` (an overlay rebinding an adapter after the default plugin
8
+ * loads) always wins on the next `get()`. Resolving a token whose factory
9
+ * transitively depends on itself throws rather than recursing forever.
10
+ * `dispose()` runs every `onDispose` callback in REVERSE registration order -
11
+ * register dependencies before their dependents so teardown happens safely.
12
+ */
3
13
  export declare class Container {
4
14
  private readonly factories;
5
15
  private readonly instances;
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAUxD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,KAAK,CAAC,CAAC;AAE7C,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1D,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO;IAItC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IAoB7B,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAUxD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,KAAK,CAAC,CAAC;AAE7C;;;;;;;;;GASG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAEnE,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1D,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO;IAItC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IAsB7B,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B"}
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Functional DI container - no decorators, no reflection. `get()` resolves
3
+ * lazily and caches the instance for the container's lifetime; `register()`
4
+ * for an already-resolved token clears the cached instance, so a later
5
+ * `register()` (an overlay rebinding an adapter after the default plugin
6
+ * loads) always wins on the next `get()`. Resolving a token whose factory
7
+ * transitively depends on itself throws rather than recursing forever.
8
+ * `dispose()` runs every `onDispose` callback in REVERSE registration order -
9
+ * register dependencies before their dependents so teardown happens safely.
10
+ */
1
11
  export class Container {
2
12
  factories = new Map();
3
13
  instances = new Map();
@@ -11,8 +21,9 @@ export class Container {
11
21
  return this.factories.has(token);
12
22
  }
13
23
  get(token) {
14
- if (this.instances.has(token))
24
+ if (this.instances.has(token)) {
15
25
  return this.instances.get(token);
26
+ }
16
27
  const factory = this.factories.get(token);
17
28
  if (!factory) {
18
29
  throw new Error(`No provider registered for token "${token.description ?? String(token)}"`);
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/server/kernel/container.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,SAAS;IACH,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IAChD,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,SAAS,GAAsC,EAAE,CAAC;IAEnE,QAAQ,CAAI,KAAkB,EAAE,OAAmB;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAA2B,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,KAAwB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAI,KAAkB;QACvB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAM,CAAC;QAErE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,wCAAwC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAC9E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAM,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,EAA8B;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/server/kernel/container.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,MAAM,OAAO,SAAS;IACH,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IAChD,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,SAAS,GAAsC,EAAE,CAAC;IAEnE,QAAQ,CAAI,KAAkB,EAAE,OAAmB;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAA2B,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,KAAwB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAI,KAAkB;QACvB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAM,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,wCAAwC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAC9E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAM,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,EAA8B;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF"}
@@ -10,6 +10,15 @@ export type EventBus = {
10
10
  on(event: string, handler: EventHandler): () => void;
11
11
  };
12
12
  export declare const EVENT_BUS: Token<EventBus>;
13
+ /**
14
+ * Default in-process `MESSAGE_BROKER` - `publish` fans out synchronously to
15
+ * whatever's subscribed in THIS process only; it does not survive a restart
16
+ * and does not reach other replicas. An overlay rebinds `MESSAGE_BROKER` to a
17
+ * durable `MessageBrokerAdapter` (eg RabbitMQ via `AMQP_URL`) once events must
18
+ * cross a process boundary. `subscribe`'s returned unsubscribe function is
19
+ * safe to call mid-dispatch: the handler list is copied on write, never
20
+ * mutated in place.
21
+ */
13
22
  export declare class InMemoryBroker implements MessageBrokerAdapter {
14
23
  private readonly handlers;
15
24
  publish(envelope: EventEnvelope): void;
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,CACtC,OAAO,EAAE,CAAC,EACV,QAAQ,CAAC,EAAE,aAAa,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAK1B,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChF,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAS5C,iBAAiB,CAAC,CAAC,SAAS,eAAe,EACzC,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IAClG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,QAAQ,CAA4B,CAAC;AAGnE,qBAAa,cAAe,YAAW,oBAAoB;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;IAEJ,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAMtC,SAAS,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACrD,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,MAAM,IAAI;IAaP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAkBD,iIAAiI;AACjI,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,GAAE,MAAkC,EAC1C,MAAM,CAAC,EAAE,YAAY,GACpB,QAAQ,CAyCV"}
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../src/server/kernel/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAGrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,CACtC,OAAO,EAAE,CAAC,EACV,QAAQ,CAAC,EAAE,aAAa,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAK1B,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChF,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAS5C,iBAAiB,CAAC,CAAC,SAAS,eAAe,EACzC,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IAClG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,QAAQ,CAA4B,CAAC;AAEnE;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,oBAAoB;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;IAEJ,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAMtC,SAAS,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACrD,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,MAAM,IAAI;IAaP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAkBD,iIAAiI;AACjI,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,GAAE,MAAkC,EAC1C,MAAM,CAAC,EAAE,YAAY,GACpB,QAAQ,CAyCV"}
@@ -2,7 +2,15 @@ import { createToken, domainEventSchemas, getEventVersion, } from '@openora/core
2
2
  import { createLogger } from './logger.js';
3
3
  import { getCurrentTraceId } from './request-context.js';
4
4
  export const EVENT_BUS = createToken('EVENT_BUS');
5
- // Default in-process transport. Swap by binding a durable MessageBrokerAdapter to MESSAGE_BROKER in an overlay.
5
+ /**
6
+ * Default in-process `MESSAGE_BROKER` - `publish` fans out synchronously to
7
+ * whatever's subscribed in THIS process only; it does not survive a restart
8
+ * and does not reach other replicas. An overlay rebinds `MESSAGE_BROKER` to a
9
+ * durable `MessageBrokerAdapter` (eg RabbitMQ via `AMQP_URL`) once events must
10
+ * cross a process boundary. `subscribe`'s returned unsubscribe function is
11
+ * safe to call mid-dispatch: the handler list is copied on write, never
12
+ * mutated in place.
13
+ */
6
14
  export class InMemoryBroker {
7
15
  handlers = new Map();
8
16
  publish(envelope) {