@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
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json ADDED
@@ -0,0 +1,106 @@
1
+ {
2
+ "name": "@c9up/ream",
3
+ "version": "0.1.3",
4
+ "description": "Ream — Rust-powered Node.js application framework",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ },
14
+ "./services/app": {
15
+ "types": "./dist/services/app.d.ts",
16
+ "import": "./dist/services/app.js"
17
+ },
18
+ "./services/router": {
19
+ "types": "./dist/services/router.d.ts",
20
+ "import": "./dist/services/router.js"
21
+ },
22
+ "./services/server": {
23
+ "types": "./dist/services/server.d.ts",
24
+ "import": "./dist/services/server.js"
25
+ },
26
+ "./bodyparser": {
27
+ "types": "./dist/bodyparser/BodyParserMiddleware.d.ts",
28
+ "import": "./dist/bodyparser/BodyParserMiddleware.js"
29
+ },
30
+ "./session": {
31
+ "types": "./dist/session/SessionMiddleware.d.ts",
32
+ "import": "./dist/session/SessionMiddleware.js"
33
+ },
34
+ "./helpers": {
35
+ "types": "./dist/helpers/index.d.ts",
36
+ "import": "./dist/helpers/index.js"
37
+ },
38
+ "./helpers/string": {
39
+ "types": "./dist/helpers/string.d.ts",
40
+ "import": "./dist/helpers/string.js"
41
+ },
42
+ "./helpers/is": {
43
+ "types": "./dist/helpers/is.d.ts",
44
+ "import": "./dist/helpers/is.js"
45
+ },
46
+ "./helpers/base64": {
47
+ "types": "./dist/helpers/base64.d.ts",
48
+ "import": "./dist/helpers/base64.js"
49
+ },
50
+ "./helpers/types": {
51
+ "types": "./dist/helpers/types.d.ts",
52
+ "import": "./dist/helpers/types.js"
53
+ },
54
+ "./testing": {
55
+ "types": "./dist/testing/TestClient.d.ts",
56
+ "import": "./dist/testing/TestClient.js"
57
+ },
58
+ "./bootstrap": {
59
+ "types": "./dist/bootstrap/hyper-server.d.ts",
60
+ "import": "./dist/bootstrap/hyper-server.js"
61
+ },
62
+ "./tsconfig.app.json": "./tsconfig.app.json",
63
+ "./swcrc.app.json": "./swcrc.app.json"
64
+ },
65
+ "files": [
66
+ "LICENSE",
67
+ "README.md",
68
+ "dist",
69
+ "index.*.node",
70
+ "scheduler.*.node",
71
+ "events.*.node",
72
+ "scripts",
73
+ "src",
74
+ "swcrc.app.json",
75
+ "tsconfig.app.json"
76
+ ],
77
+ "dependencies": {
78
+ "reflect-metadata": "^0.2"
79
+ },
80
+ "devDependencies": {
81
+ "@biomejs/biome": "^2.4.10",
82
+ "@types/node": "^22.19.15",
83
+ "typescript": "^6.0.2",
84
+ "vitest": "^4.1.2"
85
+ },
86
+ "engines": {
87
+ "node": ">=22.0.0"
88
+ },
89
+ "publishConfig": {
90
+ "access": "public"
91
+ },
92
+ "repository": {
93
+ "type": "git",
94
+ "url": "git+https://github.com/C9up/ream.git"
95
+ },
96
+ "scripts": {
97
+ "build": "tsc -p tsconfig.build.json",
98
+ "build:rust": "cargo build --release -p ream-http-napi -p ream-scheduler-napi -p ream-events-napi",
99
+ "build:napi": "pnpm build:rust && node scripts/copy-napi.mjs",
100
+ "test": "vitest run",
101
+ "test:rust": "cargo test --all",
102
+ "lint": "biome check src/",
103
+ "test:coverage": "vitest run --coverage",
104
+ "typecheck": "tsc --noEmit"
105
+ }
106
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,113 @@
1
+ // Copy every freshly-built Ream NAPI cdylib out of cargo's target
2
+ // directory and into the package root with the platform-suffix naming
3
+ // convention used by `napi-loader.ts`:
4
+ //
5
+ // packages/ream/index.linux-x64-gnu.node (ream-http-napi)
6
+ // packages/ream/scheduler.linux-x64-gnu.node (ream-scheduler-napi)
7
+ // packages/ream/index.darwin-arm64.node
8
+ // ...
9
+ //
10
+ // The TS loader walks two upper directories from each `loadNapi` caller
11
+ // to find these files, so the binaries MUST live at the package root
12
+ // (not under target/) to be discovered at runtime.
13
+ //
14
+ // Usage:
15
+ //
16
+ // pnpm --filter @c9up/ream build:rust # cargo build --release
17
+ // pnpm --filter @c9up/ream build:napi # build:rust + this script
18
+ //
19
+ // The package.json script chains both steps. CI / npm publish runs
20
+ // `build:napi` once per platform during the matrix build — every
21
+ // crate listed in `NAPI_CRATES` ships in the tarball.
22
+
23
+ import { copyFileSync, existsSync } from 'node:fs'
24
+ import { dirname, join } from 'node:path'
25
+ import { arch, env, platform } from 'node:process'
26
+ import { fileURLToPath } from 'node:url'
27
+
28
+ const here = dirname(fileURLToPath(import.meta.url))
29
+ const root = join(here, '..')
30
+
31
+ // Rust target triple -> { suffix, os }. Set CARGO_BUILD_TARGET to cross-compile
32
+ // (e.g. build the x86_64-apple-darwin binary on an arm64 macOS runner so we
33
+ // don't depend on the scarce macos-13 Intel runners). When unset we fall back
34
+ // to the host platform/arch and the default target/release dir.
35
+ const TRIPLE_MAP = {
36
+ 'x86_64-unknown-linux-gnu': { suffix: 'linux-x64-gnu', os: 'linux' },
37
+ 'aarch64-unknown-linux-gnu': { suffix: 'linux-arm64-gnu', os: 'linux' },
38
+ 'x86_64-apple-darwin': { suffix: 'darwin-x64', os: 'darwin' },
39
+ 'aarch64-apple-darwin': { suffix: 'darwin-arm64', os: 'darwin' },
40
+ 'x86_64-pc-windows-msvc': { suffix: 'win32-x64-msvc', os: 'win32' },
41
+ }
42
+
43
+ const HOST_SUFFIX_MAP = {
44
+ 'linux-x64': 'linux-x64-gnu',
45
+ 'linux-arm64': 'linux-arm64-gnu',
46
+ 'darwin-x64': 'darwin-x64',
47
+ 'darwin-arm64': 'darwin-arm64',
48
+ 'win32-x64': 'win32-x64-msvc',
49
+ }
50
+
51
+ const triple = env.CARGO_BUILD_TARGET ?? ''
52
+ let suffix
53
+ let os
54
+ let releaseDir
55
+ if (triple) {
56
+ const entry = TRIPLE_MAP[triple]
57
+ if (!entry) {
58
+ throw new Error(`[ream:napi] unsupported CARGO_BUILD_TARGET: ${triple}`)
59
+ }
60
+ suffix = entry.suffix
61
+ os = entry.os
62
+ releaseDir = join(root, 'target', triple, 'release')
63
+ } else {
64
+ suffix = HOST_SUFFIX_MAP[`${platform}-${arch}`]
65
+ os = platform
66
+ releaseDir = join(root, 'target', 'release')
67
+ if (!suffix) {
68
+ throw new Error(`[ream:napi] unsupported platform/arch: ${platform}-${arch}`)
69
+ }
70
+ }
71
+
72
+ // Every NAPI crate shipped from the @c9up/ream package. `crateLib` is the
73
+ // underscore-suffixed name cargo produces under `target/release/`;
74
+ // `targetName` is what `loadNapi({ binaryName })` expects at the package
75
+ // root (see `napi-loader.ts` — the binary lookup prefix matches the
76
+ // `binaryName` option passed by each TS consumer).
77
+ const NAPI_CRATES = [
78
+ { crateLib: 'ream_http_napi', targetName: 'index' },
79
+ { crateLib: 'ream_scheduler_napi', targetName: 'scheduler' },
80
+ { crateLib: 'ream_events_napi', targetName: 'events' },
81
+ ]
82
+
83
+ // `crate-type = ["cdylib"]` settles on the platform-conventional file
84
+ // name. Linux + macOS prepend `lib`; Windows drops the prefix and uses
85
+ // `.dll`. Check both Windows shapes so we degrade gracefully if upstream
86
+ // cargo ever switches naming.
87
+ function buildCandidates(crateLib) {
88
+ if (os === 'win32') {
89
+ return [
90
+ join(releaseDir, `${crateLib}.dll`),
91
+ join(releaseDir, `lib${crateLib}.dll`),
92
+ ]
93
+ }
94
+ if (os === 'darwin') {
95
+ return [join(releaseDir, `lib${crateLib}.dylib`)]
96
+ }
97
+ return [join(releaseDir, `lib${crateLib}.so`)]
98
+ }
99
+
100
+ for (const { crateLib, targetName } of NAPI_CRATES) {
101
+ const candidates = buildCandidates(crateLib)
102
+ const source = candidates.find((candidate) => existsSync(candidate))
103
+ if (!source) {
104
+ throw new Error(
105
+ `[ream:napi] native library for '${crateLib}' not found. Looked for:\n${candidates
106
+ .map((p) => `- ${p}`)
107
+ .join('\n')}\nRun 'pnpm --filter @c9up/ream build:rust' first.`,
108
+ )
109
+ }
110
+ const target = join(root, `${targetName}.${suffix}.node`)
111
+ copyFileSync(source, target)
112
+ console.log(`[ream:napi] copied ${source} -> ${target}`)
113
+ }
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Application — manages providers, config, lifecycle, and signal handling.
3
+ *
4
+ * Like AdonisJS Application:
5
+ * - app.booting(callback) — register hooks that run during boot
6
+ * - app.booted(callback) — register hooks that run after boot completes
7
+ * - app.listen(signal, callback) — listen for process signals
8
+ * - app.listenIf(condition, signal, callback) — conditional signal listener
9
+ * - app.terminate() — graceful shutdown
10
+ * - app.managedByPm2 — PM2 detection
11
+ * - app.inProduction / app.inDev / app.inTest
12
+ *
13
+ * @implements FR17, FR20
14
+ */
15
+
16
+ import { ConfigStore } from './ConfigLoader.js'
17
+ import { Container } from './container/Container.js'
18
+ import type { AppContext, ProviderContract } from './Provider.js'
19
+ import { callProviderPhase } from './Provider.js'
20
+
21
+ export class Application implements AppContext {
22
+ readonly container: Container
23
+ readonly config: ConfigStore
24
+ private providers: ProviderContract[] = []
25
+ private _booted = false
26
+ private _bootingHooks: Array<() => Promise<void> | void> = []
27
+ private _bootedHooks: Array<() => Promise<void> | void> = []
28
+ private _shutdownHooks: Array<() => Promise<void> | void> = []
29
+
30
+ constructor() {
31
+ this.container = new Container()
32
+ this.config = new ConfigStore()
33
+ }
34
+
35
+ // ─── Environment ──────────────────────────────────────────
36
+
37
+ /** Check if running in production. */
38
+ get inProduction(): boolean {
39
+ return process.env.NODE_ENV === 'production'
40
+ }
41
+
42
+ /** Check if running in development. */
43
+ get inDev(): boolean {
44
+ const env = process.env.NODE_ENV
45
+ return env !== 'production' && env !== 'test'
46
+ }
47
+
48
+ /** Check if running in test mode. */
49
+ get inTest(): boolean {
50
+ return process.env.NODE_ENV === 'test'
51
+ }
52
+
53
+ /** Check if managed by PM2. */
54
+ get managedByPm2(): boolean {
55
+ return 'PM2_HOME' in process.env || 'pm_id' in process.env
56
+ }
57
+
58
+ // ─── Lifecycle hooks ──────────────────────────────────────
59
+
60
+ /**
61
+ * Register a callback that runs during the boot phase (before providers boot).
62
+ * Like AdonisJS app.booting().
63
+ */
64
+ booting(callback: () => Promise<void> | void): void {
65
+ this._bootingHooks.push(callback)
66
+ }
67
+
68
+ /**
69
+ * Register a callback that runs after boot completes.
70
+ * Like AdonisJS app.booted().
71
+ */
72
+ booted(callback: () => Promise<void> | void): void {
73
+ if (this._booted) {
74
+ // Already booted — run immediately. Invoke callback() INSIDE the
75
+ // promise chain (not as `Promise.resolve(callback())`, which
76
+ // evaluates callback() eagerly and lets a synchronous throw
77
+ // escape to the caller) so both sync throws and async rejections
78
+ // are funnelled to the logger.
79
+ Promise.resolve()
80
+ .then(() => callback())
81
+ .catch((err) => {
82
+ process.stderr.write(`[Ream] booted() callback error: ${err}\n`)
83
+ })
84
+ return
85
+ }
86
+ this._bootedHooks.push(callback)
87
+ }
88
+
89
+ // ─── Signal handling ──────────────────────────────────────
90
+
91
+ /**
92
+ * Listen for a process signal.
93
+ * Like AdonisJS app.listen('SIGTERM', () => app.terminate()).
94
+ */
95
+ listen(signal: NodeJS.Signals, callback: () => void): void {
96
+ process.on(signal, callback)
97
+ }
98
+
99
+ /**
100
+ * Conditionally listen for a process signal.
101
+ * Like AdonisJS app.listenIf(app.managedByPm2, 'SIGINT', ...).
102
+ */
103
+ listenIf(condition: boolean, signal: NodeJS.Signals, callback: () => void): void {
104
+ if (condition) {
105
+ process.on(signal, callback)
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Graceful shutdown — stop all providers and exit.
111
+ * Like AdonisJS app.terminate().
112
+ */
113
+ async terminate(): Promise<void> {
114
+ await this.shutdown()
115
+ process.exit(0)
116
+ }
117
+
118
+ // ─── Provider lifecycle ───────────────────────────────────
119
+
120
+ /** Register a provider instance. */
121
+ register(provider: ProviderContract): void {
122
+ this.providers.push(provider)
123
+ if (typeof provider.register === 'function') {
124
+ provider.register()
125
+ }
126
+ }
127
+
128
+ /** Boot all registered providers. Runs booting/booted hooks. */
129
+ async boot(): Promise<void> {
130
+ if (this._booted) return
131
+
132
+ // Run booting hooks
133
+ for (const hook of this._bootingHooks) {
134
+ await hook()
135
+ }
136
+
137
+ // Boot providers. `callProviderPhase` skips providers that don't
138
+ // declare the phase — duck-typed packages (spectrum, warden, etc.)
139
+ // implement only what they need.
140
+ for (const provider of this.providers) {
141
+ await callProviderPhase(provider, 'boot')
142
+ }
143
+
144
+ this._booted = true
145
+
146
+ // Run booted hooks
147
+ for (const hook of this._bootedHooks) {
148
+ await hook()
149
+ }
150
+ }
151
+
152
+ /** Shutdown all providers in reverse order. */
153
+ async shutdown(): Promise<void> {
154
+ // Run shutdown hooks
155
+ for (const hook of this._shutdownHooks) {
156
+ await hook()
157
+ }
158
+
159
+ for (const provider of [...this.providers].reverse()) {
160
+ await callProviderPhase(provider, 'shutdown')
161
+ }
162
+ this._booted = false
163
+ }
164
+
165
+ /** Register a shutdown hook. */
166
+ onShutdown(callback: () => Promise<void> | void): void {
167
+ this._shutdownHooks.push(callback)
168
+ }
169
+
170
+ get isBooted(): boolean {
171
+ return this._booted
172
+ }
173
+
174
+ get providerCount(): number {
175
+ return this.providers.length
176
+ }
177
+ }