@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,10 @@
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
+
8
+ export function defineConfig(config: EventsConfig): EventsConfig {
9
+ return config
10
+ }
@@ -0,0 +1,19 @@
1
+ interface Codemods {
2
+ addProvider(importPath: string): Promise<void>
3
+ addEnvVars(vars: Record<string, string>): Promise<void>
4
+ writeFile(filePath: string, content: string, options?: { force?: boolean }): Promise<void>
5
+ }
6
+
7
+ export async function configure(codemods: Codemods): Promise<void> {
8
+ await codemods.addProvider('@c9up/ream/events/provider')
9
+ await codemods.writeFile(
10
+ 'config/events.ts',
11
+ `import { defineConfig } from '@c9up/ream/events/config'
12
+
13
+ export default defineConfig({
14
+ store: 'memory',
15
+ retries: 3,
16
+ })
17
+ `,
18
+ )
19
+ }
@@ -0,0 +1,260 @@
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
+
10
+ export interface CollectedEvent {
11
+ name: string
12
+ data: unknown
13
+ correlationId?: string
14
+ causationId?: string
15
+ [key: string]: unknown
16
+ }
17
+
18
+ export interface CollectResult {
19
+ events: CollectedEvent[]
20
+ subId: number
21
+ }
22
+
23
+ interface BusLike {
24
+ subscribe(pattern: string, callback: (eventJson: string) => void): number
25
+ }
26
+
27
+ /**
28
+ * Collect events matching a pattern into an array.
29
+ *
30
+ * const { events } = collect(bus, 'order.created')
31
+ * bus.emit('order.created', '{"id":"1"}')
32
+ * // events[0].name === 'order.created'
33
+ */
34
+ export function collect(bus: BusLike, pattern: string): CollectResult {
35
+ const events: CollectedEvent[] = []
36
+ const subId = bus.subscribe(pattern, (eventJson: string) => {
37
+ try {
38
+ events.push(JSON.parse(eventJson) as CollectedEvent)
39
+ } catch {
40
+ events.push({
41
+ _raw: eventJson,
42
+ _parseError: true,
43
+ name: '',
44
+ data: undefined,
45
+ } as CollectedEvent)
46
+ }
47
+ })
48
+ return { events, subId }
49
+ }
50
+
51
+ /**
52
+ * Fake (intercept) events matching a pattern.
53
+ *
54
+ * Currently captures events like collect() — true interception that suppresses
55
+ * other subscribers requires bus-level support and is not yet implemented.
56
+ */
57
+ export function fake(bus: BusLike, pattern: string): CollectResult {
58
+ return collect(bus, pattern)
59
+ }
60
+
61
+ /**
62
+ * Assert that an event was emitted, optionally matching a partial payload.
63
+ */
64
+ export function assertEmitted(events: CollectedEvent[], name: string, payload?: unknown): void {
65
+ const matching = events.filter((e) => e.name === name)
66
+
67
+ if (matching.length === 0) {
68
+ const emittedNames = [...new Set(events.map((e) => e.name))].join(', ')
69
+ throw new Error(
70
+ `[HELIX_ASSERT_EMITTED] Expected event '${name}' to be emitted, but it was not.\n` +
71
+ ` Emitted events: ${emittedNames || '(none)'}`,
72
+ )
73
+ }
74
+
75
+ if (payload !== undefined && payload !== null) {
76
+ const payloadMatch = matching.find((e) => {
77
+ const data = typeof e.data === 'string' ? safeJson(e.data) : e.data
78
+ return partialMatch(data, payload)
79
+ })
80
+
81
+ if (!payloadMatch) {
82
+ const actualPayloads = matching
83
+ .map((e) => {
84
+ const data = typeof e.data === 'string' ? safeJson(e.data) : e.data
85
+ return JSON.stringify(data)
86
+ })
87
+ .join('\n ')
88
+
89
+ throw new Error(
90
+ `[HELIX_ASSERT_EMITTED] Event '${name}' was emitted but no payload matched.\n` +
91
+ ` Expected (partial): ${JSON.stringify(payload)}\n` +
92
+ ` Actual payloads:\n ${actualPayloads}`,
93
+ )
94
+ }
95
+ }
96
+ }
97
+
98
+ /** Assert that an event was NOT emitted. */
99
+ export function assertNotEmitted(events: CollectedEvent[], name: string): void {
100
+ const matching = events.filter((e) => e.name === name)
101
+ if (matching.length > 0) {
102
+ throw new Error(
103
+ `[HELIX_ASSERT_NOT_EMITTED] Expected event '${name}' to NOT be emitted, but it was emitted ${matching.length} time(s).`,
104
+ )
105
+ }
106
+ }
107
+
108
+ export interface WaitForEventOptions {
109
+ timeout?: number
110
+ interval?: number
111
+ payload?: unknown
112
+ }
113
+
114
+ /** Wait for a specific event to appear in the collected events, with timeout. */
115
+ export function waitForEvent(
116
+ events: CollectedEvent[],
117
+ name: string,
118
+ options: WaitForEventOptions = {},
119
+ ): Promise<CollectedEvent> {
120
+ const timeout = options.timeout ?? 5000
121
+ const interval = options.interval ?? 10
122
+ const payload = options.payload
123
+
124
+ return new Promise((resolve, reject) => {
125
+ const start = Date.now()
126
+ let settled = false
127
+
128
+ const check = () => {
129
+ if (settled) return
130
+
131
+ const match = events.find((e) => {
132
+ if (e.name !== name) return false
133
+ if (payload === undefined) return true
134
+ const data = typeof e.data === 'string' ? safeJson(e.data) : e.data
135
+ return partialMatch(data, payload)
136
+ })
137
+
138
+ if (match) {
139
+ settled = true
140
+ resolve(match)
141
+ return
142
+ }
143
+
144
+ if (Date.now() - start >= timeout) {
145
+ settled = true
146
+ const received = events.map((e) => e.name).join(', ')
147
+ reject(
148
+ new Error(
149
+ `[HELIX_TIMEOUT] Timed out waiting for event '${name}' after ${timeout}ms.\n` +
150
+ ` Events received so far: ${received || '(none)'}`,
151
+ ),
152
+ )
153
+ return
154
+ }
155
+
156
+ setTimeout(check, interval)
157
+ }
158
+
159
+ check()
160
+ })
161
+ }
162
+
163
+ export interface WaitForChainOptions {
164
+ timeout?: number
165
+ interval?: number
166
+ }
167
+
168
+ /**
169
+ * Wait for an entire event chain to complete (tracked via correlationId).
170
+ *
171
+ * @implements FR68
172
+ */
173
+ export function waitForChain(
174
+ events: CollectedEvent[],
175
+ correlationId: string,
176
+ expectedNames: string[],
177
+ options: WaitForChainOptions = {},
178
+ ): Promise<CollectedEvent[]> {
179
+ if (!expectedNames || expectedNames.length === 0) {
180
+ return Promise.reject(new Error('[HELIX_CHAIN] expectedNames must be a non-empty array'))
181
+ }
182
+ const timeout = options.timeout ?? 5000
183
+ const interval = options.interval ?? 10
184
+
185
+ return new Promise((resolve, reject) => {
186
+ const start = Date.now()
187
+ let settled = false
188
+
189
+ const check = () => {
190
+ if (settled) return
191
+
192
+ const chainEvents = events.filter((e) => e.correlationId === correlationId)
193
+ const chainNames = chainEvents.map((e) => e.name)
194
+ const allPresent = expectedNames.every((name) => chainNames.includes(name))
195
+
196
+ if (allPresent) {
197
+ settled = true
198
+ resolve(chainEvents)
199
+ return
200
+ }
201
+
202
+ if (Date.now() - start >= timeout) {
203
+ settled = true
204
+ const completed = expectedNames.filter((n) => chainNames.includes(n))
205
+ const pending = expectedNames.filter((n) => !chainNames.includes(n))
206
+ reject(
207
+ new Error(
208
+ `[HELIX_CHAIN_TIMEOUT] Event chain timed out after ${timeout}ms.\n` +
209
+ ` Correlation ID: ${correlationId}\n` +
210
+ ` Completed: ${completed.join(', ') || '(none)'}\n` +
211
+ ` Pending: ${pending.join(', ')}`,
212
+ ),
213
+ )
214
+ return
215
+ }
216
+
217
+ setTimeout(check, interval)
218
+ }
219
+
220
+ check()
221
+ })
222
+ }
223
+
224
+ /**
225
+ * Check if `actual` contains all key-value pairs from `expected` (deep partial match).
226
+ * Arrays are matched element-by-element.
227
+ */
228
+ function partialMatch(actual: unknown, expected: unknown): boolean {
229
+ if (actual === expected) return true
230
+ if (expected === null || expected === undefined) return actual === expected
231
+ if (typeof expected !== 'object') return actual === expected
232
+ if (typeof actual !== 'object' || actual === null) return false
233
+
234
+ if (Array.isArray(expected)) {
235
+ if (!Array.isArray(actual)) return false
236
+ return expected.every(
237
+ (item, i) => i < (actual as unknown[]).length && partialMatch((actual as unknown[])[i], item),
238
+ )
239
+ }
240
+
241
+ for (const key of Object.keys(expected as object)) {
242
+ if (!(key in (actual as object))) return false
243
+ if (
244
+ !partialMatch(
245
+ (actual as Record<string, unknown>)[key],
246
+ (expected as Record<string, unknown>)[key],
247
+ )
248
+ )
249
+ return false
250
+ }
251
+ return true
252
+ }
253
+
254
+ function safeJson(value: string): unknown {
255
+ try {
256
+ return JSON.parse(value)
257
+ } catch {
258
+ return value
259
+ }
260
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `@c9up/ream/events` — the event bus, part of ream core. A basic
3
+ * in-process emitter works with zero external
4
+ * infrastructure; the Redis store is an opt-in `redis-store` build feature.
5
+ *
6
+ * App-facing surface: `Emitter` (string + class events, wildcard, request/
7
+ * reply), `BaseEvent` (typed event classes), and `EventsProvider` (wires the
8
+ * `events`/`emitter` container tokens). The Rust-backed `EventBus` is the
9
+ * low-level native binding, exposed for advanced use.
10
+ */
11
+
12
+ export type { EventsConfig } from './config.js'
13
+ export { defineConfig } from './config.js'
14
+ export {
15
+ BaseEvent,
16
+ type ContainerResolver,
17
+ Emitter,
18
+ type ListenerClass,
19
+ } from './Emitter.js'
20
+ export type { EventsAppContext } from './EventsProvider.js'
21
+ export { default as EventsProvider } from './EventsProvider.js'
22
+ export { EventBus } from './native.js'
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Native event-bus loader. Resolves the Rust-backed `events.<platform>.node`
3
+ * binary (built from the `ream-events-napi` crate) via the shared
4
+ * `loadNapi` helper and re-exports the `EventBus` class it provides.
5
+ *
6
+ * The bus is part of ream core: a basic in-process
7
+ * emitter works with zero external infrastructure; the Redis store is an
8
+ * opt-in `redis-store` cargo feature for durable/distributed production use.
9
+ */
10
+
11
+ import { loadNapi } from '../helpers/napi-loader.js'
12
+
13
+ /** Rust-backed bus surface (mirrors the napi `#[napi] EventBus` exports). */
14
+ export interface EventBus {
15
+ emit(name: string, data: string): Promise<string>
16
+ subscribe(pattern: string, callback: (eventJson: string) => void): number
17
+ unsubscribe(subscriptionId: number): Promise<void>
18
+ onRequest(
19
+ name: string,
20
+ callback: (eventJson: string, reply: (response: string) => void) => void,
21
+ ): void
22
+ request(name: string, data: string, timeoutMs?: number): Promise<string>
23
+ matchesWildcard(pattern: string, eventName: string): boolean
24
+ subscriptionCount(): Promise<number>
25
+ }
26
+
27
+ interface EventsNative {
28
+ EventBus: new (requestHandlerTimeoutMs?: number) => EventBus
29
+ }
30
+
31
+ const native = loadNapi<EventsNative>({
32
+ binaryName: 'events',
33
+ callerMetaUrl: import.meta.url,
34
+ errorCodePrefix: 'EVENTS',
35
+ })
36
+
37
+ export const EventBus = native.EventBus
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Default `Emitter` singleton — mirror of Adonis's
3
+ * `import emitter from '@adonisjs/core/services/emitter'` shape.
4
+ *
5
+ * import emitter from '@c9up/ream/events/services/main'
6
+ *
7
+ * emitter.on(TaskAssigned, (e) => sendEmail(e.assigneeId))
8
+ *
9
+ * Populated by `EventsProvider.boot()`.
10
+ */
11
+
12
+ import type { Emitter } from '../Emitter.js'
13
+
14
+ let instance: Emitter | undefined
15
+
16
+ /** @internal Bind the singleton (called by EventsProvider). */
17
+ export function setEmitter(instance: Emitter): void {
18
+ instance = instance
19
+ }
20
+
21
+ /** @internal Read the singleton (or `undefined` pre-boot). */
22
+ export function getEmitter(): Emitter | undefined {
23
+ return instance
24
+ }
25
+
26
+ const emitter: Emitter = new Proxy({} as Emitter, {
27
+ get(_target, prop) {
28
+ if (!instance) {
29
+ throw new Error(
30
+ '[ream:events] Emitter singleton accessed before EventsProvider.boot() ran. ' +
31
+ 'Check that `@c9up/ream/events/provider` is listed in your reamrc.ts providers.',
32
+ )
33
+ }
34
+ const value = Reflect.get(instance, prop, instance)
35
+ return typeof value === 'function' ? value.bind(instance) : value
36
+ },
37
+ })
38
+
39
+ export default emitter