@c9up/ream 0.1.3

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 (451) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/dist/Application.d.ts +71 -0
  4. package/dist/Application.d.ts.map +1 -0
  5. package/dist/Application.js +151 -0
  6. package/dist/Application.js.map +1 -0
  7. package/dist/Codemods.d.ts +16 -0
  8. package/dist/Codemods.d.ts.map +1 -0
  9. package/dist/Codemods.js +277 -0
  10. package/dist/Codemods.js.map +1 -0
  11. package/dist/ConfigLoader.d.ts +29 -0
  12. package/dist/ConfigLoader.d.ts.map +1 -0
  13. package/dist/ConfigLoader.js +43 -0
  14. package/dist/ConfigLoader.js.map +1 -0
  15. package/dist/ErrorBoundary.d.ts +51 -0
  16. package/dist/ErrorBoundary.d.ts.map +1 -0
  17. package/dist/ErrorBoundary.js +122 -0
  18. package/dist/ErrorBoundary.js.map +1 -0
  19. package/dist/GracefulShutdown.d.ts +28 -0
  20. package/dist/GracefulShutdown.d.ts.map +1 -0
  21. package/dist/GracefulShutdown.js +55 -0
  22. package/dist/GracefulShutdown.js.map +1 -0
  23. package/dist/HealthCheck.d.ts +42 -0
  24. package/dist/HealthCheck.d.ts.map +1 -0
  25. package/dist/HealthCheck.js +65 -0
  26. package/dist/HealthCheck.js.map +1 -0
  27. package/dist/HotReload.d.ts +28 -0
  28. package/dist/HotReload.d.ts.map +1 -0
  29. package/dist/HotReload.js +60 -0
  30. package/dist/HotReload.js.map +1 -0
  31. package/dist/HttpKernel.d.ts +62 -0
  32. package/dist/HttpKernel.d.ts.map +1 -0
  33. package/dist/HttpKernel.js +210 -0
  34. package/dist/HttpKernel.js.map +1 -0
  35. package/dist/Ignitor.d.ts +195 -0
  36. package/dist/Ignitor.d.ts.map +1 -0
  37. package/dist/Ignitor.js +505 -0
  38. package/dist/Ignitor.js.map +1 -0
  39. package/dist/Provider.d.ts +54 -0
  40. package/dist/Provider.d.ts.map +1 -0
  41. package/dist/Provider.js +37 -0
  42. package/dist/Provider.js.map +1 -0
  43. package/dist/bodyparser/BodyParserMiddleware.d.ts +38 -0
  44. package/dist/bodyparser/BodyParserMiddleware.d.ts.map +1 -0
  45. package/dist/bodyparser/BodyParserMiddleware.js +143 -0
  46. package/dist/bodyparser/BodyParserMiddleware.js.map +1 -0
  47. package/dist/bodyparser/MultipartFile.d.ts +77 -0
  48. package/dist/bodyparser/MultipartFile.d.ts.map +1 -0
  49. package/dist/bodyparser/MultipartFile.js +138 -0
  50. package/dist/bodyparser/MultipartFile.js.map +1 -0
  51. package/dist/bodyparser/parseSize.d.ts +6 -0
  52. package/dist/bodyparser/parseSize.d.ts.map +1 -0
  53. package/dist/bodyparser/parseSize.js +21 -0
  54. package/dist/bodyparser/parseSize.js.map +1 -0
  55. package/dist/bootstrap/hyper-server.d.ts +27 -0
  56. package/dist/bootstrap/hyper-server.d.ts.map +1 -0
  57. package/dist/bootstrap/hyper-server.js +63 -0
  58. package/dist/bootstrap/hyper-server.js.map +1 -0
  59. package/dist/console/CommandRunner.d.ts +18 -0
  60. package/dist/console/CommandRunner.d.ts.map +1 -0
  61. package/dist/console/CommandRunner.js +65 -0
  62. package/dist/console/CommandRunner.js.map +1 -0
  63. package/dist/container/Container.d.ts +60 -0
  64. package/dist/container/Container.d.ts.map +1 -0
  65. package/dist/container/Container.js +329 -0
  66. package/dist/container/Container.js.map +1 -0
  67. package/dist/container/types.d.ts +25 -0
  68. package/dist/container/types.d.ts.map +1 -0
  69. package/dist/container/types.js +6 -0
  70. package/dist/container/types.js.map +1 -0
  71. package/dist/decorators/Lazy.d.ts +19 -0
  72. package/dist/decorators/Lazy.d.ts.map +1 -0
  73. package/dist/decorators/Lazy.js +53 -0
  74. package/dist/decorators/Lazy.js.map +1 -0
  75. package/dist/decorators/Service.d.ts +48 -0
  76. package/dist/decorators/Service.d.ts.map +1 -0
  77. package/dist/decorators/Service.js +70 -0
  78. package/dist/decorators/Service.js.map +1 -0
  79. package/dist/errors/FuzzyMatcher.d.ts +41 -0
  80. package/dist/errors/FuzzyMatcher.d.ts.map +1 -0
  81. package/dist/errors/FuzzyMatcher.js +81 -0
  82. package/dist/errors/FuzzyMatcher.js.map +1 -0
  83. package/dist/errors/ModuleErrors.d.ts +41 -0
  84. package/dist/errors/ModuleErrors.d.ts.map +1 -0
  85. package/dist/errors/ModuleErrors.js +65 -0
  86. package/dist/errors/ModuleErrors.js.map +1 -0
  87. package/dist/errors/PipelineStageError.d.ts +31 -0
  88. package/dist/errors/PipelineStageError.d.ts.map +1 -0
  89. package/dist/errors/PipelineStageError.js +77 -0
  90. package/dist/errors/PipelineStageError.js.map +1 -0
  91. package/dist/errors/ReamError.d.ts +50 -0
  92. package/dist/errors/ReamError.d.ts.map +1 -0
  93. package/dist/errors/ReamError.js +108 -0
  94. package/dist/errors/ReamError.js.map +1 -0
  95. package/dist/events/Emitter.d.ts +124 -0
  96. package/dist/events/Emitter.d.ts.map +1 -0
  97. package/dist/events/Emitter.js +271 -0
  98. package/dist/events/Emitter.js.map +1 -0
  99. package/dist/events/EventsProvider.d.ts +28 -0
  100. package/dist/events/EventsProvider.d.ts.map +1 -0
  101. package/dist/events/EventsProvider.js +36 -0
  102. package/dist/events/EventsProvider.js.map +1 -0
  103. package/dist/events/config.d.ts +8 -0
  104. package/dist/events/config.d.ts.map +1 -0
  105. package/dist/events/config.js +4 -0
  106. package/dist/events/config.js.map +1 -0
  107. package/dist/events/configure.d.ts +10 -0
  108. package/dist/events/configure.d.ts.map +1 -0
  109. package/dist/events/configure.js +11 -0
  110. package/dist/events/configure.js.map +1 -0
  111. package/dist/events/helix/helpers.d.ts +62 -0
  112. package/dist/events/helix/helpers.d.ts.map +1 -0
  113. package/dist/events/helix/helpers.js +187 -0
  114. package/dist/events/helix/helpers.js.map +1 -0
  115. package/dist/events/index.d.ts +17 -0
  116. package/dist/events/index.d.ts.map +1 -0
  117. package/dist/events/index.js +15 -0
  118. package/dist/events/index.js.map +1 -0
  119. package/dist/events/native.d.ts +21 -0
  120. package/dist/events/native.d.ts.map +1 -0
  121. package/dist/events/native.js +17 -0
  122. package/dist/events/native.js.map +1 -0
  123. package/dist/events/services/main.d.ts +18 -0
  124. package/dist/events/services/main.d.ts.map +1 -0
  125. package/dist/events/services/main.js +31 -0
  126. package/dist/events/services/main.js.map +1 -0
  127. package/dist/events/testing/FakeBus.d.ts +66 -0
  128. package/dist/events/testing/FakeBus.d.ts.map +1 -0
  129. package/dist/events/testing/FakeBus.js +356 -0
  130. package/dist/events/testing/FakeBus.js.map +1 -0
  131. package/dist/graphql/GraphQLEngine.d.ts +69 -0
  132. package/dist/graphql/GraphQLEngine.d.ts.map +1 -0
  133. package/dist/graphql/GraphQLEngine.js +309 -0
  134. package/dist/graphql/GraphQLEngine.js.map +1 -0
  135. package/dist/graphql/GraphQLProvider.d.ts +32 -0
  136. package/dist/graphql/GraphQLProvider.d.ts.map +1 -0
  137. package/dist/graphql/GraphQLProvider.js +49 -0
  138. package/dist/graphql/GraphQLProvider.js.map +1 -0
  139. package/dist/helpers/base64.d.ts +40 -0
  140. package/dist/helpers/base64.d.ts.map +1 -0
  141. package/dist/helpers/base64.js +70 -0
  142. package/dist/helpers/base64.js.map +1 -0
  143. package/dist/helpers/index.d.ts +7 -0
  144. package/dist/helpers/index.d.ts.map +1 -0
  145. package/dist/helpers/index.js +5 -0
  146. package/dist/helpers/index.js.map +1 -0
  147. package/dist/helpers/is.d.ts +101 -0
  148. package/dist/helpers/is.d.ts.map +1 -0
  149. package/dist/helpers/is.js +151 -0
  150. package/dist/helpers/is.js.map +1 -0
  151. package/dist/helpers/napi-loader.d.ts +46 -0
  152. package/dist/helpers/napi-loader.d.ts.map +1 -0
  153. package/dist/helpers/napi-loader.js +69 -0
  154. package/dist/helpers/napi-loader.js.map +1 -0
  155. package/dist/helpers/safeEqual.d.ts +9 -0
  156. package/dist/helpers/safeEqual.d.ts.map +1 -0
  157. package/dist/helpers/safeEqual.js +16 -0
  158. package/dist/helpers/safeEqual.js.map +1 -0
  159. package/dist/helpers/string.d.ts +161 -0
  160. package/dist/helpers/string.d.ts.map +1 -0
  161. package/dist/helpers/string.js +429 -0
  162. package/dist/helpers/string.js.map +1 -0
  163. package/dist/helpers/types.d.ts +83 -0
  164. package/dist/helpers/types.d.ts.map +1 -0
  165. package/dist/helpers/types.js +6 -0
  166. package/dist/helpers/types.js.map +1 -0
  167. package/dist/http/Exception.d.ts +103 -0
  168. package/dist/http/Exception.d.ts.map +1 -0
  169. package/dist/http/Exception.js +228 -0
  170. package/dist/http/Exception.js.map +1 -0
  171. package/dist/http/HttpContext.d.ts +69 -0
  172. package/dist/http/HttpContext.d.ts.map +1 -0
  173. package/dist/http/HttpContext.js +55 -0
  174. package/dist/http/HttpContext.js.map +1 -0
  175. package/dist/http/RedirectBuilder.d.ts +31 -0
  176. package/dist/http/RedirectBuilder.d.ts.map +1 -0
  177. package/dist/http/RedirectBuilder.js +75 -0
  178. package/dist/http/RedirectBuilder.js.map +1 -0
  179. package/dist/http/Request.d.ts +160 -0
  180. package/dist/http/Request.d.ts.map +1 -0
  181. package/dist/http/Request.js +484 -0
  182. package/dist/http/Request.js.map +1 -0
  183. package/dist/http/Response.d.ts +114 -0
  184. package/dist/http/Response.d.ts.map +1 -0
  185. package/dist/http/Response.js +303 -0
  186. package/dist/http/Response.js.map +1 -0
  187. package/dist/http/SseStream.d.ts +89 -0
  188. package/dist/http/SseStream.d.ts.map +1 -0
  189. package/dist/http/SseStream.js +228 -0
  190. package/dist/http/SseStream.js.map +1 -0
  191. package/dist/http/urlDecode.d.ts +8 -0
  192. package/dist/http/urlDecode.d.ts.map +1 -0
  193. package/dist/http/urlDecode.js +18 -0
  194. package/dist/http/urlDecode.js.map +1 -0
  195. package/dist/index.d.ts +92 -0
  196. package/dist/index.d.ts.map +1 -0
  197. package/dist/index.js +67 -0
  198. package/dist/index.js.map +1 -0
  199. package/dist/middleware/Pipeline.d.ts +36 -0
  200. package/dist/middleware/Pipeline.d.ts.map +1 -0
  201. package/dist/middleware/Pipeline.js +104 -0
  202. package/dist/middleware/Pipeline.js.map +1 -0
  203. package/dist/openapi/OpenApiGenerator.d.ts +58 -0
  204. package/dist/openapi/OpenApiGenerator.d.ts.map +1 -0
  205. package/dist/openapi/OpenApiGenerator.js +192 -0
  206. package/dist/openapi/OpenApiGenerator.js.map +1 -0
  207. package/dist/openapi/OpenApiMiddleware.d.ts +24 -0
  208. package/dist/openapi/OpenApiMiddleware.d.ts.map +1 -0
  209. package/dist/openapi/OpenApiMiddleware.js +78 -0
  210. package/dist/openapi/OpenApiMiddleware.js.map +1 -0
  211. package/dist/openapi/OpenApiProvider.d.ts +36 -0
  212. package/dist/openapi/OpenApiProvider.d.ts.map +1 -0
  213. package/dist/openapi/OpenApiProvider.js +42 -0
  214. package/dist/openapi/OpenApiProvider.js.map +1 -0
  215. package/dist/resources/ApiResource.d.ts +45 -0
  216. package/dist/resources/ApiResource.d.ts.map +1 -0
  217. package/dist/resources/ApiResource.js +58 -0
  218. package/dist/resources/ApiResource.js.map +1 -0
  219. package/dist/router/Router.d.ts +205 -0
  220. package/dist/router/Router.d.ts.map +1 -0
  221. package/dist/router/Router.js +552 -0
  222. package/dist/router/Router.js.map +1 -0
  223. package/dist/rpc/RpcProvider.d.ts +34 -0
  224. package/dist/rpc/RpcProvider.d.ts.map +1 -0
  225. package/dist/rpc/RpcProvider.js +37 -0
  226. package/dist/rpc/RpcProvider.js.map +1 -0
  227. package/dist/rpc/RpcRouter.d.ts +61 -0
  228. package/dist/rpc/RpcRouter.d.ts.map +1 -0
  229. package/dist/rpc/RpcRouter.js +187 -0
  230. package/dist/rpc/RpcRouter.js.map +1 -0
  231. package/dist/scheduler/Schedule.d.ts +53 -0
  232. package/dist/scheduler/Schedule.d.ts.map +1 -0
  233. package/dist/scheduler/Schedule.js +76 -0
  234. package/dist/scheduler/Schedule.js.map +1 -0
  235. package/dist/scheduler/ScheduleProvider.d.ts +56 -0
  236. package/dist/scheduler/ScheduleProvider.d.ts.map +1 -0
  237. package/dist/scheduler/ScheduleProvider.js +145 -0
  238. package/dist/scheduler/ScheduleProvider.js.map +1 -0
  239. package/dist/scheduler/Scheduler.d.ts +209 -0
  240. package/dist/scheduler/Scheduler.d.ts.map +1 -0
  241. package/dist/scheduler/Scheduler.js +432 -0
  242. package/dist/scheduler/Scheduler.js.map +1 -0
  243. package/dist/scheduler/index.d.ts +14 -0
  244. package/dist/scheduler/index.d.ts.map +1 -0
  245. package/dist/scheduler/index.js +6 -0
  246. package/dist/scheduler/index.js.map +1 -0
  247. package/dist/scheduler/locks/LockBackend.d.ts +37 -0
  248. package/dist/scheduler/locks/LockBackend.d.ts.map +1 -0
  249. package/dist/scheduler/locks/LockBackend.js +13 -0
  250. package/dist/scheduler/locks/LockBackend.js.map +1 -0
  251. package/dist/scheduler/locks/MemoryLockBackend.d.ts +39 -0
  252. package/dist/scheduler/locks/MemoryLockBackend.d.ts.map +1 -0
  253. package/dist/scheduler/locks/MemoryLockBackend.js +71 -0
  254. package/dist/scheduler/locks/MemoryLockBackend.js.map +1 -0
  255. package/dist/scheduler/observability/ErrorReporter.d.ts +15 -0
  256. package/dist/scheduler/observability/ErrorReporter.d.ts.map +1 -0
  257. package/dist/scheduler/observability/ErrorReporter.js +13 -0
  258. package/dist/scheduler/observability/ErrorReporter.js.map +1 -0
  259. package/dist/scheduler/observability/ScheduleEvent.d.ts +57 -0
  260. package/dist/scheduler/observability/ScheduleEvent.d.ts.map +1 -0
  261. package/dist/scheduler/observability/ScheduleEvent.js +12 -0
  262. package/dist/scheduler/observability/ScheduleEvent.js.map +1 -0
  263. package/dist/scheduler/observability/ScheduleEventSink.d.ts +20 -0
  264. package/dist/scheduler/observability/ScheduleEventSink.d.ts.map +1 -0
  265. package/dist/scheduler/observability/ScheduleEventSink.js +17 -0
  266. package/dist/scheduler/observability/ScheduleEventSink.js.map +1 -0
  267. package/dist/scheduler/observability/StatsTracker.d.ts +50 -0
  268. package/dist/scheduler/observability/StatsTracker.d.ts.map +1 -0
  269. package/dist/scheduler/observability/StatsTracker.js +96 -0
  270. package/dist/scheduler/observability/StatsTracker.js.map +1 -0
  271. package/dist/security/CookieSigner.d.ts +13 -0
  272. package/dist/security/CookieSigner.d.ts.map +1 -0
  273. package/dist/security/CookieSigner.js +51 -0
  274. package/dist/security/CookieSigner.js.map +1 -0
  275. package/dist/security/SignedUrl.d.ts +17 -0
  276. package/dist/security/SignedUrl.d.ts.map +1 -0
  277. package/dist/security/SignedUrl.js +63 -0
  278. package/dist/security/SignedUrl.js.map +1 -0
  279. package/dist/security/crypto.d.ts +25 -0
  280. package/dist/security/crypto.d.ts.map +1 -0
  281. package/dist/security/crypto.js +82 -0
  282. package/dist/security/crypto.js.map +1 -0
  283. package/dist/server/HyperServer.d.ts +64 -0
  284. package/dist/server/HyperServer.d.ts.map +1 -0
  285. package/dist/server/HyperServer.js +54 -0
  286. package/dist/server/HyperServer.js.map +1 -0
  287. package/dist/server/Server.d.ts +68 -0
  288. package/dist/server/Server.d.ts.map +1 -0
  289. package/dist/server/Server.js +113 -0
  290. package/dist/server/Server.js.map +1 -0
  291. package/dist/services/app.d.ts +14 -0
  292. package/dist/services/app.d.ts.map +1 -0
  293. package/dist/services/app.js +27 -0
  294. package/dist/services/app.js.map +1 -0
  295. package/dist/services/router.d.ts +21 -0
  296. package/dist/services/router.d.ts.map +1 -0
  297. package/dist/services/router.js +36 -0
  298. package/dist/services/router.js.map +1 -0
  299. package/dist/services/server.d.ts +16 -0
  300. package/dist/services/server.d.ts.map +1 -0
  301. package/dist/services/server.js +32 -0
  302. package/dist/services/server.js.map +1 -0
  303. package/dist/session/Session.d.ts +88 -0
  304. package/dist/session/Session.d.ts.map +1 -0
  305. package/dist/session/Session.js +186 -0
  306. package/dist/session/Session.js.map +1 -0
  307. package/dist/session/SessionMiddleware.d.ts +16 -0
  308. package/dist/session/SessionMiddleware.d.ts.map +1 -0
  309. package/dist/session/SessionMiddleware.js +132 -0
  310. package/dist/session/SessionMiddleware.js.map +1 -0
  311. package/dist/session/drivers/CookieDriver.d.ts +17 -0
  312. package/dist/session/drivers/CookieDriver.d.ts.map +1 -0
  313. package/dist/session/drivers/CookieDriver.js +42 -0
  314. package/dist/session/drivers/CookieDriver.js.map +1 -0
  315. package/dist/session/drivers/MemoryDriver.d.ts +9 -0
  316. package/dist/session/drivers/MemoryDriver.d.ts.map +1 -0
  317. package/dist/session/drivers/MemoryDriver.js +24 -0
  318. package/dist/session/drivers/MemoryDriver.js.map +1 -0
  319. package/dist/storage/S3Driver.d.ts +27 -0
  320. package/dist/storage/S3Driver.d.ts.map +1 -0
  321. package/dist/storage/S3Driver.js +135 -0
  322. package/dist/storage/S3Driver.js.map +1 -0
  323. package/dist/storage/StaticMiddleware.d.ts +27 -0
  324. package/dist/storage/StaticMiddleware.d.ts.map +1 -0
  325. package/dist/storage/StaticMiddleware.js +153 -0
  326. package/dist/storage/StaticMiddleware.js.map +1 -0
  327. package/dist/storage/StaticProvider.d.ts +26 -0
  328. package/dist/storage/StaticProvider.d.ts.map +1 -0
  329. package/dist/storage/StaticProvider.js +31 -0
  330. package/dist/storage/StaticProvider.js.map +1 -0
  331. package/dist/storage/StorageManager.d.ts +31 -0
  332. package/dist/storage/StorageManager.d.ts.map +1 -0
  333. package/dist/storage/StorageManager.js +120 -0
  334. package/dist/storage/StorageManager.js.map +1 -0
  335. package/dist/testing/RequestBuilder.d.ts +67 -0
  336. package/dist/testing/RequestBuilder.d.ts.map +1 -0
  337. package/dist/testing/RequestBuilder.js +202 -0
  338. package/dist/testing/RequestBuilder.js.map +1 -0
  339. package/dist/testing/TestClient.d.ts +96 -0
  340. package/dist/testing/TestClient.d.ts.map +1 -0
  341. package/dist/testing/TestClient.js +263 -0
  342. package/dist/testing/TestClient.js.map +1 -0
  343. package/dist/types/helpers.d.ts +47 -0
  344. package/dist/types/helpers.d.ts.map +1 -0
  345. package/dist/types/helpers.js +5 -0
  346. package/dist/types/helpers.js.map +1 -0
  347. package/events.darwin-arm64.node +0 -0
  348. package/events.darwin-x64.node +0 -0
  349. package/events.linux-arm64-gnu.node +0 -0
  350. package/events.linux-x64-gnu.node +0 -0
  351. package/events.win32-x64-msvc.node +0 -0
  352. package/index.darwin-arm64.node +0 -0
  353. package/index.darwin-x64.node +0 -0
  354. package/index.linux-arm64-gnu.node +0 -0
  355. package/index.linux-x64-gnu.node +0 -0
  356. package/index.win32-x64-msvc.node +0 -0
  357. package/package.json +106 -0
  358. package/scheduler.darwin-arm64.node +0 -0
  359. package/scheduler.darwin-x64.node +0 -0
  360. package/scheduler.linux-arm64-gnu.node +0 -0
  361. package/scheduler.linux-x64-gnu.node +0 -0
  362. package/scheduler.win32-x64-msvc.node +0 -0
  363. package/scripts/copy-napi.mjs +113 -0
  364. package/src/Application.ts +177 -0
  365. package/src/Codemods.ts +343 -0
  366. package/src/ConfigLoader.ts +49 -0
  367. package/src/ErrorBoundary.ts +157 -0
  368. package/src/GracefulShutdown.ts +80 -0
  369. package/src/HealthCheck.ts +96 -0
  370. package/src/HotReload.ts +78 -0
  371. package/src/HttpKernel.ts +305 -0
  372. package/src/Ignitor.ts +656 -0
  373. package/src/Provider.ts +74 -0
  374. package/src/bodyparser/BodyParserMiddleware.ts +183 -0
  375. package/src/bodyparser/MultipartFile.ts +181 -0
  376. package/src/bodyparser/parseSize.ts +19 -0
  377. package/src/bootstrap/hyper-server.ts +78 -0
  378. package/src/console/CommandRunner.ts +82 -0
  379. package/src/container/Container.ts +383 -0
  380. package/src/container/types.ts +30 -0
  381. package/src/decorators/Lazy.ts +57 -0
  382. package/src/decorators/Service.ts +85 -0
  383. package/src/errors/FuzzyMatcher.ts +93 -0
  384. package/src/errors/ModuleErrors.ts +73 -0
  385. package/src/errors/PipelineStageError.ts +97 -0
  386. package/src/errors/ReamError.ts +138 -0
  387. package/src/events/Emitter.ts +333 -0
  388. package/src/events/EventsProvider.ts +58 -0
  389. package/src/events/config.ts +10 -0
  390. package/src/events/configure.ts +19 -0
  391. package/src/events/helix/helpers.ts +260 -0
  392. package/src/events/index.ts +22 -0
  393. package/src/events/native.ts +37 -0
  394. package/src/events/services/main.ts +39 -0
  395. package/src/events/testing/FakeBus.ts +420 -0
  396. package/src/graphql/GraphQLEngine.ts +421 -0
  397. package/src/graphql/GraphQLProvider.ts +59 -0
  398. package/src/helpers/base64.ts +72 -0
  399. package/src/helpers/index.ts +6 -0
  400. package/src/helpers/is.ts +162 -0
  401. package/src/helpers/napi-loader.ts +106 -0
  402. package/src/helpers/safeEqual.ts +15 -0
  403. package/src/helpers/string.ts +469 -0
  404. package/src/helpers/types.ts +100 -0
  405. package/src/http/Exception.ts +272 -0
  406. package/src/http/HttpContext.ts +108 -0
  407. package/src/http/RedirectBuilder.ts +89 -0
  408. package/src/http/Request.ts +540 -0
  409. package/src/http/Response.ts +351 -0
  410. package/src/http/SseStream.ts +250 -0
  411. package/src/http/urlDecode.ts +18 -0
  412. package/src/index.ts +263 -0
  413. package/src/middleware/Pipeline.ts +136 -0
  414. package/src/openapi/OpenApiGenerator.ts +254 -0
  415. package/src/openapi/OpenApiMiddleware.ts +101 -0
  416. package/src/openapi/OpenApiProvider.ts +67 -0
  417. package/src/resources/ApiResource.ts +79 -0
  418. package/src/router/Router.ts +733 -0
  419. package/src/rpc/RpcProvider.ts +54 -0
  420. package/src/rpc/RpcRouter.ts +243 -0
  421. package/src/scheduler/Schedule.ts +96 -0
  422. package/src/scheduler/ScheduleProvider.ts +177 -0
  423. package/src/scheduler/Scheduler.ts +601 -0
  424. package/src/scheduler/index.ts +24 -0
  425. package/src/scheduler/locks/LockBackend.ts +38 -0
  426. package/src/scheduler/locks/MemoryLockBackend.ts +85 -0
  427. package/src/scheduler/observability/ErrorReporter.ts +13 -0
  428. package/src/scheduler/observability/ScheduleEvent.ts +61 -0
  429. package/src/scheduler/observability/ScheduleEventSink.ts +21 -0
  430. package/src/scheduler/observability/StatsTracker.ts +134 -0
  431. package/src/security/CookieSigner.ts +54 -0
  432. package/src/security/SignedUrl.ts +71 -0
  433. package/src/security/crypto.ts +98 -0
  434. package/src/server/HyperServer.ts +121 -0
  435. package/src/server/Server.ts +147 -0
  436. package/src/services/app.ts +34 -0
  437. package/src/services/router.ts +44 -0
  438. package/src/services/server.ts +40 -0
  439. package/src/session/Session.ts +231 -0
  440. package/src/session/SessionMiddleware.ts +153 -0
  441. package/src/session/drivers/CookieDriver.ts +48 -0
  442. package/src/session/drivers/MemoryDriver.ts +29 -0
  443. package/src/storage/S3Driver.ts +171 -0
  444. package/src/storage/StaticMiddleware.ts +182 -0
  445. package/src/storage/StaticProvider.ts +40 -0
  446. package/src/storage/StorageManager.ts +142 -0
  447. package/src/testing/RequestBuilder.ts +275 -0
  448. package/src/testing/TestClient.ts +344 -0
  449. package/src/types/helpers.ts +52 -0
  450. package/swcrc.app.json +17 -0
  451. package/tsconfig.app.json +21 -0
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Emitter — AdonisJS-compatible typed event system backed by EventBus.
3
+ *
4
+ * Class-based events:
5
+ * emitter.on(TaskDeclared, SendNotification)
6
+ * await new TaskDeclared(task).emit()
7
+ *
8
+ * String-based events:
9
+ * emitter.on('user:registered', (user) => { ... })
10
+ * emitter.emit('user:registered', user)
11
+ *
12
+ * Listeners support @inject() for DI when a container resolver is provided.
13
+ */
14
+ import type { EventBus } from './native.js';
15
+ /**
16
+ * Listener class interface — must have a handle() method.
17
+ */
18
+ export interface ListenerClass<T = unknown> {
19
+ handle(event: T): Promise<void> | void;
20
+ }
21
+ type EventConstructor<T = unknown> = new (...args: never[]) => T;
22
+ type ListenerFn<T = unknown> = (event: T) => Promise<void> | void;
23
+ type ListenerConstructor<T = unknown> = new (...args: never[]) => ListenerClass<T>;
24
+ type Listener<T = unknown> = ListenerFn<T> | ListenerConstructor<T>;
25
+ /** Resolver for instantiating listener classes with DI. */
26
+ export interface ContainerResolver {
27
+ make<T>(target: new (...args: never[]) => T): T;
28
+ }
29
+ export declare class Emitter {
30
+ #private;
31
+ private bus;
32
+ private resolver?;
33
+ private classListeners;
34
+ private stringListeners;
35
+ constructor(bus: EventBus, resolver?: ContainerResolver);
36
+ /**
37
+ * Listen for a class-based event.
38
+ * emitter.on(TaskDeclared, SendNotification) // listener class
39
+ * emitter.on(TaskDeclared, (event) => { ... }) // inline function
40
+ */
41
+ on<T>(event: EventConstructor<T>, listener: Listener<T>): void;
42
+ /**
43
+ * Listen for a string-based event.
44
+ * emitter.on('user:registered', (user) => { ... })
45
+ */
46
+ on(event: string, listener: ListenerFn): void;
47
+ /**
48
+ * Emit a string-based event.
49
+ */
50
+ emit(event: string, data: unknown): void;
51
+ /** Emit an error event for listener failures. */
52
+ private emitError;
53
+ /**
54
+ * Dispatch a class-based event. Called by BaseEvent#emit().
55
+ */
56
+ dispatchEvent<T extends object>(event: T): Promise<void>;
57
+ /**
58
+ * Subscribe to events matching a wildcard pattern.
59
+ * Uses Rust wildcard engine via NAPI for pattern matching.
60
+ *
61
+ * emitter.onAny('order.*', (name, data) => { ... }) // single segment
62
+ * emitter.onAny('order.**', (name, data) => { ... }) // deep match
63
+ */
64
+ onAny(pattern: string, listener: (eventName: string, data: unknown) => void): Promise<number>;
65
+ /** Unsubscribe a wildcard subscription by ID. */
66
+ offAny(subscriptionId: number): Promise<void>;
67
+ /** Check if a pattern matches an event name (wildcard matching via Rust). */
68
+ matchesPattern(pattern: string, eventName: string): boolean;
69
+ /**
70
+ * Send a request event and await a response.
71
+ *
72
+ * const user = await emitter.request('query:user.find', { id: 1 })
73
+ */
74
+ request<T = unknown>(name: string, data: unknown, timeoutMs?: number): Promise<T>;
75
+ /**
76
+ * Register a request handler.
77
+ *
78
+ * emitter.onRequest('query:user.find', (params, reply) => {
79
+ * const user = db.find(params.id)
80
+ * reply(JSON.stringify(user))
81
+ * })
82
+ */
83
+ onRequest(name: string, handler: (eventJson: string, reply: (response: string) => void) => void): void;
84
+ /** Current correlation ID for event chain tracing. */
85
+ private _correlationId?;
86
+ /** Set the correlation ID for subsequent events (typically from HTTP request context). */
87
+ setCorrelationId(id: string): void;
88
+ /** Get the current correlation ID. */
89
+ getCorrelationId(): string | undefined;
90
+ /**
91
+ * Check if any listeners are registered for an event.
92
+ */
93
+ hasListeners(event: EventConstructor | string): boolean;
94
+ /** Get the number of Rust-side subscriptions. */
95
+ subscriptionCount(): Promise<number>;
96
+ }
97
+ /**
98
+ * BaseEvent — extend to create typed event classes.
99
+ *
100
+ * Usage:
101
+ * class TaskDeclared extends BaseEvent {
102
+ * constructor(public task: Task) { super() }
103
+ * }
104
+ *
105
+ * // In controller:
106
+ * await new TaskDeclared(task).emit()
107
+ *
108
+ * // In events.ts:
109
+ * emitter.on(TaskDeclared, LogTaskEvent)
110
+ */
111
+ export declare class BaseEvent {
112
+ static eventName?: string;
113
+ private static _emitter;
114
+ /** @internal Wire the emitter (called by EventsProvider). */
115
+ static useEmitter(emitter: Emitter): void;
116
+ static resetEmitter(): void;
117
+ /**
118
+ * Dispatch this event instance via the wired emitter.
119
+ * No-op if no emitter is wired (test/standalone mode).
120
+ */
121
+ emit(): Promise<void>;
122
+ }
123
+ export {};
124
+ //# sourceMappingURL=Emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Emitter.d.ts","sourceRoot":"","sources":["../../src/events/Emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Emitter — AdonisJS-compatible typed event system backed by EventBus.
3
+ *
4
+ * Class-based events:
5
+ * emitter.on(TaskDeclared, SendNotification)
6
+ * await new TaskDeclared(task).emit()
7
+ *
8
+ * String-based events:
9
+ * emitter.on('user:registered', (user) => { ... })
10
+ * emitter.emit('user:registered', user)
11
+ *
12
+ * Listeners support @inject() for DI when a container resolver is provided.
13
+ */
14
+ export class Emitter {
15
+ bus;
16
+ resolver;
17
+ classListeners = new Map();
18
+ stringListeners = new Map();
19
+ constructor(bus, resolver) {
20
+ this.bus = bus;
21
+ this.resolver = resolver;
22
+ }
23
+ on(event, listener) {
24
+ if (typeof event === 'string') {
25
+ const list = this.stringListeners.get(event) ?? [];
26
+ list.push(listener);
27
+ this.stringListeners.set(event, list);
28
+ }
29
+ else {
30
+ const list = this.classListeners.get(event) ?? [];
31
+ list.push(listener);
32
+ this.classListeners.set(event, list);
33
+ }
34
+ }
35
+ // ─── Emit ─────────────────────────────────────────────────
36
+ /**
37
+ * Emit a string-based event.
38
+ */
39
+ emit(event, data) {
40
+ // Dispatch to string listeners
41
+ const listeners = this.stringListeners.get(event);
42
+ if (listeners) {
43
+ for (const fn of listeners) {
44
+ Promise.resolve(fn(data)).catch((err) => {
45
+ // Surface listener errors instead of swallowing them
46
+ this.emitError(event, err);
47
+ });
48
+ }
49
+ }
50
+ // Also push through EventBus for cross-service / Rust subscribers.
51
+ // `#wrapForBus` prepends the correlation envelope when set so the ID
52
+ // reaches the other side; without it `setCorrelationId()` was a no-op.
53
+ void this.bus.emit(event, JSON.stringify(this.#wrapForBus(data))).catch((err) => {
54
+ this.emitError(event, err);
55
+ });
56
+ }
57
+ /** Emit an error event for listener failures. */
58
+ emitError(event, error) {
59
+ const errorListeners = this.stringListeners.get('emitter:error');
60
+ if (errorListeners && errorListeners.length > 0) {
61
+ for (const fn of errorListeners) {
62
+ try {
63
+ fn({ event, error });
64
+ }
65
+ catch {
66
+ /* prevent infinite loop */
67
+ }
68
+ }
69
+ }
70
+ else {
71
+ // No error listener — log to stderr as last resort
72
+ process.stderr.write(`[events] Listener error for '${event}': ${error}\n`);
73
+ }
74
+ }
75
+ /**
76
+ * Dispatch a class-based event. Called by BaseEvent#emit().
77
+ */
78
+ async dispatchEvent(event) {
79
+ const EventClass = event.constructor;
80
+ const listeners = this.classListeners.get(EventClass) ?? [];
81
+ const name = EventClass.eventName ?? classToEventName(EventClass);
82
+ // Per-listener error isolation — mirrors the string `emit()` contract.
83
+ // A side-effect listener that throws (SMTP down, etc.) MUST NOT abort
84
+ // the sibling listeners NOR suppress the cross-service `bus.emit` below:
85
+ // the domain event already happened, so distributed subscribers must
86
+ // still receive it. Failures surface on the `emitter:error` channel.
87
+ for (const listener of listeners) {
88
+ try {
89
+ if (isListenerClass(listener)) {
90
+ // Listener class — resolve via container for @inject() support
91
+ const instance = this.resolver
92
+ ? this.resolver.make(listener)
93
+ : new listener();
94
+ await instance.handle(event);
95
+ }
96
+ else {
97
+ await listener(event);
98
+ }
99
+ }
100
+ catch (err) {
101
+ this.emitError(name, err);
102
+ }
103
+ }
104
+ // Also push through EventBus — same correlation-envelope wrapping as
105
+ // the string-event path so distributed tracing covers class events too.
106
+ // Reached unconditionally: a listener failure above no longer skips it.
107
+ await this.bus.emit(name, JSON.stringify(this.#wrapForBus(event)));
108
+ }
109
+ // ─── Wildcard subscriptions (via Rust NAPI) ───────────────
110
+ /**
111
+ * Subscribe to events matching a wildcard pattern.
112
+ * Uses Rust wildcard engine via NAPI for pattern matching.
113
+ *
114
+ * emitter.onAny('order.*', (name, data) => { ... }) // single segment
115
+ * emitter.onAny('order.**', (name, data) => { ... }) // deep match
116
+ */
117
+ async onAny(pattern, listener) {
118
+ return this.bus.subscribe(pattern, (eventJson) => {
119
+ try {
120
+ const event = JSON.parse(eventJson);
121
+ // The bus delivers a Rust `Event` envelope whose `correlationId`
122
+ // sits at the top of the parsed JSON. Propagate it onto the
123
+ // emitter so nested emits inside the listener body inherit the
124
+ // trace context — that's the whole point of the API. `data` is
125
+ // the raw user payload string (still JSON-encoded if the
126
+ // emitter serialized an object), kept as-is for back-compat.
127
+ if (event !== null &&
128
+ typeof event === 'object' &&
129
+ typeof event.correlationId === 'string') {
130
+ this.setCorrelationId(event.correlationId);
131
+ }
132
+ listener(event.name ?? pattern, event.data ?? event);
133
+ }
134
+ catch {
135
+ listener(pattern, eventJson);
136
+ }
137
+ });
138
+ }
139
+ /** Unsubscribe a wildcard subscription by ID. */
140
+ async offAny(subscriptionId) {
141
+ await this.bus.unsubscribe(subscriptionId);
142
+ }
143
+ /** Check if a pattern matches an event name (wildcard matching via Rust). */
144
+ matchesPattern(pattern, eventName) {
145
+ return this.bus.matchesWildcard(pattern, eventName);
146
+ }
147
+ // ─── Request / Reply ──────────────────────────────────────
148
+ /**
149
+ * Send a request event and await a response.
150
+ *
151
+ * const user = await emitter.request('query:user.find', { id: 1 })
152
+ */
153
+ async request(name, data, timeoutMs = 5000) {
154
+ // Same correlation injection as `emit()` so a `setCorrelationId`
155
+ // preceding a request actually reaches the responder via the
156
+ // top-level `correlationId` field on the parsed payload.
157
+ const result = await this.bus.request(name, JSON.stringify(this.#wrapForBus(data)), timeoutMs);
158
+ try {
159
+ return JSON.parse(result);
160
+ }
161
+ catch {
162
+ return result;
163
+ }
164
+ }
165
+ /**
166
+ * Register a request handler.
167
+ *
168
+ * emitter.onRequest('query:user.find', (params, reply) => {
169
+ * const user = db.find(params.id)
170
+ * reply(JSON.stringify(user))
171
+ * })
172
+ */
173
+ onRequest(name, handler) {
174
+ this.bus.onRequest(name, handler);
175
+ }
176
+ // ─── Correlation context ──────────────────────────────────
177
+ /** Current correlation ID for event chain tracing. */
178
+ _correlationId;
179
+ /** Set the correlation ID for subsequent events (typically from HTTP request context). */
180
+ setCorrelationId(id) {
181
+ this._correlationId = id;
182
+ }
183
+ /** Get the current correlation ID. */
184
+ getCorrelationId() {
185
+ return this._correlationId;
186
+ }
187
+ /**
188
+ * Inject the active correlation ID at the top level of the payload so
189
+ * the bus's Event envelope (`{ id, name, data, correlationId, ... }`)
190
+ * surfaces it on the subscriber side — both the Rust `ream-events`
191
+ * envelope serde and `FakeBus.parseEmitData()` already read
192
+ * `correlationId` from the parsed `data` string. Without this injection
193
+ * `setCorrelationId()` was a no-op functional API. Returns `data`
194
+ * unchanged when no correlation ID is set OR when `data` is not a plain
195
+ * object (primitives / arrays / null can't carry a sibling field).
196
+ */
197
+ #wrapForBus(data) {
198
+ if (this._correlationId === undefined)
199
+ return data;
200
+ if (data === null || typeof data !== 'object' || Array.isArray(data)) {
201
+ return data;
202
+ }
203
+ const obj = data;
204
+ // User-supplied correlationId wins — don't clobber an explicit value.
205
+ if (typeof obj.correlationId === 'string')
206
+ return data;
207
+ return { ...obj, correlationId: this._correlationId };
208
+ }
209
+ // ─── Introspection ────────────────────────────────────────
210
+ /**
211
+ * Check if any listeners are registered for an event.
212
+ */
213
+ hasListeners(event) {
214
+ if (typeof event === 'string') {
215
+ return (this.stringListeners.get(event)?.length ?? 0) > 0;
216
+ }
217
+ return (this.classListeners.get(event)?.length ?? 0) > 0;
218
+ }
219
+ /** Get the number of Rust-side subscriptions. */
220
+ async subscriptionCount() {
221
+ return this.bus.subscriptionCount();
222
+ }
223
+ }
224
+ /**
225
+ * BaseEvent — extend to create typed event classes.
226
+ *
227
+ * Usage:
228
+ * class TaskDeclared extends BaseEvent {
229
+ * constructor(public task: Task) { super() }
230
+ * }
231
+ *
232
+ * // In controller:
233
+ * await new TaskDeclared(task).emit()
234
+ *
235
+ * // In events.ts:
236
+ * emitter.on(TaskDeclared, LogTaskEvent)
237
+ */
238
+ export class BaseEvent {
239
+ static eventName;
240
+ static _emitter;
241
+ /** @internal Wire the emitter (called by EventsProvider). */
242
+ static useEmitter(emitter) {
243
+ BaseEvent._emitter = emitter;
244
+ }
245
+ static resetEmitter() {
246
+ BaseEvent._emitter = undefined;
247
+ }
248
+ /**
249
+ * Dispatch this event instance via the wired emitter.
250
+ * No-op if no emitter is wired (test/standalone mode).
251
+ */
252
+ async emit() {
253
+ if (!BaseEvent._emitter)
254
+ return;
255
+ try {
256
+ await BaseEvent._emitter.dispatchEvent(this);
257
+ }
258
+ catch (err) {
259
+ process.stderr.write(`[events] dispatch error for ${this.constructor.name}: ${err}\n`);
260
+ }
261
+ }
262
+ }
263
+ /** Convert PascalCase class name to dot.separated event name. */
264
+ function classToEventName(cls) {
265
+ return cls.name.replace(/([a-z])([A-Z])/g, '$1.$2').toLowerCase();
266
+ }
267
+ /** Check if a listener entry is a class (has prototype.handle) vs a function. */
268
+ function isListenerClass(listener) {
269
+ return typeof listener === 'function' && typeof listener.prototype?.handle === 'function';
270
+ }
271
+ //# sourceMappingURL=Emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Emitter.js","sourceRoot":"","sources":["../../src/events/Emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Host context for the events provider. The container is referenced
3
+ * structurally (not via a concrete import) so the provider stays a thin
4
+ * seam over ream's IoC container.
5
+ *
6
+ * `make()` is the listener-class resolver Emitter needs. When the host
7
+ * doesn't expose it, listener CLASSES can't be instantiated — only inline
8
+ * function listeners work. The optional `make` field mirrors Emitter's
9
+ * `ContainerResolver` interface so the assignment type-checks without a
10
+ * load-bearing cast.
11
+ */
12
+ interface EventsContainer {
13
+ singleton(token: unknown, factory: () => unknown): void;
14
+ resolve<T = unknown>(token: unknown): T;
15
+ make?<T>(target: new (...args: never[]) => T): T;
16
+ }
17
+ export interface EventsAppContext {
18
+ container: EventsContainer;
19
+ }
20
+ export default class EventsProvider {
21
+ protected app: EventsAppContext;
22
+ constructor(app: EventsAppContext);
23
+ register(): void;
24
+ boot(): Promise<void>;
25
+ shutdown(): Promise<void>;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=EventsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventsProvider.d.ts","sourceRoot":"","sources":["../../src/events/EventsProvider.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,UAAU,eAAe;IACvB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI,CAAA;IACvD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAA;IACvC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;CACjD;AACD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,eAAe,CAAA;CAC3B;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IACrB,SAAS,CAAC,GAAG,EAAE,gBAAgB;gBAArB,GAAG,EAAE,gBAAgB;IAE3C,QAAQ;IAqBF,IAAI;IAMJ,QAAQ;CAGf"}
@@ -0,0 +1,36 @@
1
+ import { BaseEvent, Emitter } from './Emitter.js';
2
+ import { EventBus } from './native.js';
3
+ import { setEmitter } from './services/main.js';
4
+ export default class EventsProvider {
5
+ app;
6
+ constructor(app) {
7
+ this.app = app;
8
+ }
9
+ register() {
10
+ this.app.container.singleton(EventBus, () => new EventBus());
11
+ this.app.container.singleton('bus', () => this.app.container.resolve(EventBus));
12
+ this.app.container.singleton(Emitter, () => {
13
+ const bus = this.app.container.resolve(EventBus);
14
+ // Forward `make` only when the host actually exposes it.
15
+ // Emitter falls back to direct `new Listener()` instantiation
16
+ // otherwise, which keeps zero-arg listener classes working
17
+ // without a full IoC container.
18
+ const resolver = typeof this.app.container.make === 'function'
19
+ ? { make: this.app.container.make.bind(this.app.container) }
20
+ : undefined;
21
+ return new Emitter(bus, resolver);
22
+ });
23
+ this.app.container.singleton('emitter', () => this.app.container.resolve(Emitter));
24
+ // Primary public token — `ctx.events` and `container.resolve('events')`.
25
+ this.app.container.singleton('events', () => this.app.container.resolve(Emitter));
26
+ }
27
+ async boot() {
28
+ const emitter = this.app.container.resolve(Emitter);
29
+ BaseEvent.useEmitter(emitter);
30
+ setEmitter(emitter);
31
+ }
32
+ async shutdown() {
33
+ BaseEvent.resetEmitter();
34
+ }
35
+ }
36
+ //# sourceMappingURL=EventsProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventsProvider.js","sourceRoot":"","sources":["../../src/events/EventsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAsB/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACX;IAAtB,YAAsB,GAAqB;QAArB,QAAG,GAAH,GAAG,CAAkB;IAAG,CAAC;IAE/C,QAAQ;QACN,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAA;QAC5D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAW,QAAQ,CAAC,CAAC,CAAA;QAEzF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAW,QAAQ,CAAC,CAAA;YAC1D,yDAAyD;YACzD,8DAA8D;YAC9D,2DAA2D;YAC3D,gCAAgC;YAChC,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU;gBAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAC5D,CAAC,CAAC,SAAS,CAAA;YACf,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAU,OAAO,CAAC,CAAC,CAAA;QAC3F,yEAAyE;QACzE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAU,OAAO,CAAC,CAAC,CAAA;IAC5F,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAU,OAAO,CAAC,CAAA;QAC5D,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC7B,UAAU,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,SAAS,CAAC,YAAY,EAAE,CAAA;IAC1B,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export interface EventsConfig {
2
+ /** Event store backend. Default in-memory; `"redis"` needs the `redis-store` build. */
3
+ store?: string;
4
+ /** Max delivery retries for durable subscribers. */
5
+ retries?: number;
6
+ }
7
+ export declare function defineConfig(config: EventsConfig): EventsConfig;
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/events/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAE/D"}
@@ -0,0 +1,4 @@
1
+ export function defineConfig(config) {
2
+ return config;
3
+ }
4
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/events/config.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,10 @@
1
+ interface Codemods {
2
+ addProvider(importPath: string): Promise<void>;
3
+ addEnvVars(vars: Record<string, string>): Promise<void>;
4
+ writeFile(filePath: string, content: string, options?: {
5
+ force?: boolean;
6
+ }): Promise<void>;
7
+ }
8
+ export declare function configure(codemods: Codemods): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=configure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../src/events/configure.ts"],"names":[],"mappings":"AAAA,UAAU,QAAQ;IAChB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3F;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjE"}
@@ -0,0 +1,11 @@
1
+ export async function configure(codemods) {
2
+ await codemods.addProvider('@c9up/ream/events/provider');
3
+ await codemods.writeFile('config/events.ts', `import { defineConfig } from '@c9up/ream/events/config'
4
+
5
+ export default defineConfig({
6
+ store: 'memory',
7
+ retries: 3,
8
+ })
9
+ `);
10
+ }
11
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/events/configure.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAkB;IAChD,MAAM,QAAQ,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAA;IACxD,MAAM,QAAQ,CAAC,SAAS,CACtB,kBAAkB,EAClB;;;;;;CAMH,CACE,CAAA;AACH,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Helix bus testing helpers — collect, fake, assertEmitted, assertNotEmitted,
3
+ * waitForEvent, waitForChain.
4
+ *
5
+ * Public testing API for asserting on events emitted through EventBus.
6
+ *
7
+ * @implements FR64, FR65, FR66, FR67, FR68 (Story 11.1)
8
+ */
9
+ export interface CollectedEvent {
10
+ name: string;
11
+ data: unknown;
12
+ correlationId?: string;
13
+ causationId?: string;
14
+ [key: string]: unknown;
15
+ }
16
+ export interface CollectResult {
17
+ events: CollectedEvent[];
18
+ subId: number;
19
+ }
20
+ interface BusLike {
21
+ subscribe(pattern: string, callback: (eventJson: string) => void): number;
22
+ }
23
+ /**
24
+ * Collect events matching a pattern into an array.
25
+ *
26
+ * const { events } = collect(bus, 'order.created')
27
+ * bus.emit('order.created', '{"id":"1"}')
28
+ * // events[0].name === 'order.created'
29
+ */
30
+ export declare function collect(bus: BusLike, pattern: string): CollectResult;
31
+ /**
32
+ * Fake (intercept) events matching a pattern.
33
+ *
34
+ * Currently captures events like collect() — true interception that suppresses
35
+ * other subscribers requires bus-level support and is not yet implemented.
36
+ */
37
+ export declare function fake(bus: BusLike, pattern: string): CollectResult;
38
+ /**
39
+ * Assert that an event was emitted, optionally matching a partial payload.
40
+ */
41
+ export declare function assertEmitted(events: CollectedEvent[], name: string, payload?: unknown): void;
42
+ /** Assert that an event was NOT emitted. */
43
+ export declare function assertNotEmitted(events: CollectedEvent[], name: string): void;
44
+ export interface WaitForEventOptions {
45
+ timeout?: number;
46
+ interval?: number;
47
+ payload?: unknown;
48
+ }
49
+ /** Wait for a specific event to appear in the collected events, with timeout. */
50
+ export declare function waitForEvent(events: CollectedEvent[], name: string, options?: WaitForEventOptions): Promise<CollectedEvent>;
51
+ export interface WaitForChainOptions {
52
+ timeout?: number;
53
+ interval?: number;
54
+ }
55
+ /**
56
+ * Wait for an entire event chain to complete (tracked via correlationId).
57
+ *
58
+ * @implements FR68
59
+ */
60
+ export declare function waitForChain(events: CollectedEvent[], correlationId: string, expectedNames: string[], options?: WaitForChainOptions): Promise<CollectedEvent[]>;
61
+ export {};
62
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/events/helix/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,OAAO;IACf,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAA;CAC1E;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAepE;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAEjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAgC7F;AAED,4CAA4C;AAC5C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAO7E;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EAAE,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,cAAc,CAAC,CA0CzB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EAAE,EACxB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,cAAc,EAAE,CAAC,CA4C3B"}