@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,552 @@
1
+ /**
2
+ * Fluent Router — AdonisJS v6 compatible routing with controllers, resources, and groups.
3
+ *
4
+ * @implements FR24, FR25, FR26, FR27, FR28
5
+ */
6
+ import { resolveMiddlewareEntry } from '../server/Server.js';
7
+ // ─── Matchers ───────────────────────────────────────────────
8
+ export const matchers = {
9
+ /** Match numeric params only. */
10
+ number() {
11
+ return { pattern: /^\d+$/ };
12
+ },
13
+ /** Match UUID v4 params only. */
14
+ uuid() {
15
+ return { pattern: /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i };
16
+ },
17
+ /** Match slug params only (lowercase alphanumeric + hyphens). */
18
+ slug() {
19
+ return { pattern: /^[a-z0-9]+(?:-[a-z0-9]+)*$/ };
20
+ },
21
+ };
22
+ // ─── RouteBuilder ───────────────────────────────────────────
23
+ /** Fluent route builder — mutates the already-registered route definition. */
24
+ export class RouteBuilder {
25
+ #route;
26
+ constructor(route) {
27
+ this.#route = route;
28
+ }
29
+ /** Name this route (for URL generation and redirects). */
30
+ as(name) {
31
+ this.#route.name = name;
32
+ return this;
33
+ }
34
+ /** Add named middleware. */
35
+ middleware(...names) {
36
+ this.#route.middleware.push(...names);
37
+ return this;
38
+ }
39
+ /** Add inline middleware functions. */
40
+ use(...mw) {
41
+ this.#route.inlineMiddleware.push(...mw);
42
+ return this;
43
+ }
44
+ /** Add authentication guards. */
45
+ guard(...guards) {
46
+ this.#route.guards.push(...guards);
47
+ return this;
48
+ }
49
+ /** Require specific roles. */
50
+ role(...roles) {
51
+ this.#route.roles.push(...roles);
52
+ return this;
53
+ }
54
+ /** Require specific permissions. */
55
+ permission(...permissions) {
56
+ this.#route.permissions.push(...permissions);
57
+ return this;
58
+ }
59
+ /** Add a param constraint. */
60
+ where(param, matcher) {
61
+ this.#route.matchers[param] = matcher instanceof RegExp ? { pattern: matcher } : matcher;
62
+ return this;
63
+ }
64
+ /** Attach a validator. */
65
+ validate(validator) {
66
+ this.#route.validators.push(validator);
67
+ return this;
68
+ }
69
+ /** Set API version. */
70
+ version(v) {
71
+ this.#route.version = v;
72
+ return this;
73
+ }
74
+ /** Restrict to a specific domain. */
75
+ domain(d) {
76
+ this.#route.domain = d;
77
+ return this;
78
+ }
79
+ /** Mark as deprecated. */
80
+ deprecates(version, options) {
81
+ this.#route.deprecates = { version, sunset: options?.sunset };
82
+ return this;
83
+ }
84
+ /** @internal Get the underlying definition. */
85
+ getDefinition() {
86
+ return this.#route;
87
+ }
88
+ }
89
+ // ─── GroupBuilder ───────────────────────────────────────────
90
+ /** Fluent group builder — returned by router.group(callback). */
91
+ export class GroupBuilder {
92
+ #routes;
93
+ constructor(routes) {
94
+ this.#routes = routes;
95
+ }
96
+ /** Set URL prefix for all routes in the group. */
97
+ prefix(p) {
98
+ for (const route of this.#routes) {
99
+ route.path = p + route.path;
100
+ }
101
+ return this;
102
+ }
103
+ /** Add middleware to all routes in the group. */
104
+ middleware(...names) {
105
+ for (const route of this.#routes) {
106
+ route.middleware = [...names, ...route.middleware];
107
+ }
108
+ return this;
109
+ }
110
+ /** Add inline middleware to all routes in the group. */
111
+ use(...mw) {
112
+ for (const route of this.#routes) {
113
+ route.inlineMiddleware = [...mw, ...route.inlineMiddleware];
114
+ }
115
+ return this;
116
+ }
117
+ /** Add guards to all routes in the group. */
118
+ guard(...guards) {
119
+ for (const route of this.#routes) {
120
+ route.guards = [...guards, ...route.guards];
121
+ }
122
+ return this;
123
+ }
124
+ /** Prefix route names for all routes in the group. */
125
+ as(namePrefix) {
126
+ for (const route of this.#routes) {
127
+ if (route.name) {
128
+ route.name = `${namePrefix}.${route.name}`;
129
+ }
130
+ }
131
+ return this;
132
+ }
133
+ /** Set domain for all routes in the group. */
134
+ domain(d) {
135
+ for (const route of this.#routes) {
136
+ route.domain = d;
137
+ }
138
+ return this;
139
+ }
140
+ /** Add param matcher to all routes in the group. */
141
+ where(param, matcher) {
142
+ const m = matcher instanceof RegExp ? { pattern: matcher } : matcher;
143
+ for (const route of this.#routes) {
144
+ if (!(param in route.matchers)) {
145
+ route.matchers[param] = m;
146
+ }
147
+ }
148
+ return this;
149
+ }
150
+ }
151
+ function isViewEngine(value) {
152
+ return (value !== null &&
153
+ typeof value === 'object' &&
154
+ 'render' in value &&
155
+ typeof value.render === 'function');
156
+ }
157
+ // ─── OnRouteBuilder ─────────────────────────────────────────
158
+ /** Builder for on(path).render(view) and on(path).redirect(target). */
159
+ export class OnRouteBuilder {
160
+ #router;
161
+ #path;
162
+ constructor(router, path) {
163
+ this.#router = router;
164
+ this.#path = path;
165
+ }
166
+ /** Render a view (requires Photon/view provider). */
167
+ render(view, data) {
168
+ return this.#router.get(this.#path, async (ctx) => {
169
+ const raw = ctx.store.get('view');
170
+ if (!isViewEngine(raw)) {
171
+ throw new Error('View engine not configured. Register a view provider (Photon) first.');
172
+ }
173
+ const viewEngine = raw;
174
+ const html = await viewEngine.render(view, data);
175
+ ctx.response.type('text/html; charset=utf-8').send(html);
176
+ });
177
+ }
178
+ /** Redirect to a path. */
179
+ redirect(target, status = 302) {
180
+ return this.#router.get(this.#path, async (ctx) => {
181
+ ctx.response.redirect().status(status).toPath(target);
182
+ });
183
+ }
184
+ /** Redirect to a named route. */
185
+ redirectToRoute(name, params, status = 302) {
186
+ return this.#router.get(this.#path, async (ctx) => {
187
+ ctx.response.redirect().status(status).toRoute(name, params);
188
+ });
189
+ }
190
+ }
191
+ // ─── Router ─────────────────────────────────────────────────
192
+ /** Main Router. */
193
+ export class Router {
194
+ #routes = [];
195
+ #globalMatchers = {};
196
+ #routerMiddleware = [];
197
+ #namedMiddleware = new Map();
198
+ /** Index: static routes by "METHOD:path" for O(1) exact match. */
199
+ #staticIndex = new Map();
200
+ /** Index: parametric routes grouped by method. */
201
+ #paramIndex = new Map();
202
+ /** Index: named routes for O(1) URL generation. */
203
+ #nameIndex = new Map();
204
+ /** Whether the index needs rebuilding. */
205
+ #indexDirty = true;
206
+ /** Predefined param matchers. */
207
+ matchers = matchers;
208
+ // ─── Router-level middleware (like AdonisJS) ──────────────
209
+ /**
210
+ * Register router-level middleware (runs on requests with a matched route).
211
+ * router.use([() => import('#middleware/auth_middleware')])
212
+ */
213
+ use(middleware) {
214
+ for (const mw of middleware) {
215
+ this.#routerMiddleware.push(resolveMiddlewareEntry(mw));
216
+ }
217
+ return this;
218
+ }
219
+ /**
220
+ * Register named middleware collection.
221
+ * export const middleware = router.named({
222
+ * auth: () => import('#middleware/auth_middleware'),
223
+ * })
224
+ */
225
+ named(collection) {
226
+ const resolved = {};
227
+ for (const [name, mw] of Object.entries(collection)) {
228
+ const fn = resolveMiddlewareEntry(mw);
229
+ this.#namedMiddleware.set(name, fn);
230
+ resolved[name] = fn;
231
+ }
232
+ return resolved;
233
+ }
234
+ /** Get the router-level middleware stack. */
235
+ getRouterMiddleware() {
236
+ return [...this.#routerMiddleware];
237
+ }
238
+ /** Get a named middleware by name. */
239
+ getNamedMiddleware(name) {
240
+ return this.#namedMiddleware.get(name);
241
+ }
242
+ // ─── Route registration ───────────────────────────────────
243
+ /** Register a route with any HTTP method. */
244
+ route(method, path, handler) {
245
+ const def = this.#createDefinition(method, path, handler);
246
+ this.#routes.push(def);
247
+ this.#indexDirty = true;
248
+ return new RouteBuilder(def);
249
+ }
250
+ get(path, handler) {
251
+ return this.route('GET', path, handler);
252
+ }
253
+ post(path, handler) {
254
+ return this.route('POST', path, handler);
255
+ }
256
+ put(path, handler) {
257
+ return this.route('PUT', path, handler);
258
+ }
259
+ patch(path, handler) {
260
+ return this.route('PATCH', path, handler);
261
+ }
262
+ delete(path, handler) {
263
+ return this.route('DELETE', path, handler);
264
+ }
265
+ head(path, handler) {
266
+ return this.route('HEAD', path, handler);
267
+ }
268
+ options(path, handler) {
269
+ return this.route('OPTIONS', path, handler);
270
+ }
271
+ /** Register a route for all HTTP methods. */
272
+ any(path, handler) {
273
+ return this.route('*', path, handler);
274
+ }
275
+ // ─── Resource routes ──────────────────────────────────────
276
+ /**
277
+ * Register resourceful routes for a controller.
278
+ * Generates: index, store, show, update, destroy
279
+ *
280
+ * Usage:
281
+ * router.resource('posts', PostsController)
282
+ * // GET /posts → PostsController.index
283
+ * // POST /posts → PostsController.store
284
+ * // GET /posts/:id → PostsController.show
285
+ * // PUT /posts/:id → PostsController.update
286
+ * // DELETE /posts/:id → PostsController.destroy
287
+ */
288
+ // biome-ignore lint/suspicious/noExplicitAny: see ControllerAction
289
+ resource(path, controller) {
290
+ const baseName = path.replace(/\//g, '.');
291
+ const routes = [];
292
+ const actions = [
293
+ { method: 'GET', suffix: '', action: 'index', nameSuffix: 'index' },
294
+ { method: 'POST', suffix: '', action: 'store', nameSuffix: 'store' },
295
+ { method: 'GET', suffix: '/:id', action: 'show', nameSuffix: 'show' },
296
+ { method: 'PUT', suffix: '/:id', action: 'update', nameSuffix: 'update' },
297
+ { method: 'PATCH', suffix: '/:id', action: 'update', nameSuffix: 'update' },
298
+ { method: 'DELETE', suffix: '/:id', action: 'destroy', nameSuffix: 'destroy' },
299
+ ];
300
+ for (const { method, suffix, action, nameSuffix } of actions) {
301
+ const def = this.#createDefinition(method, `/${path}${suffix}`, [controller, action]);
302
+ def.name = `${baseName}.${nameSuffix}`;
303
+ routes.push(def);
304
+ this.#routes.push(def);
305
+ }
306
+ this.#indexDirty = true;
307
+ return new GroupBuilder(routes);
308
+ }
309
+ group(callbackOrConfig, legacyCallback) {
310
+ if (typeof callbackOrConfig === 'function') {
311
+ // AdonisJS-style: group(() => { ... }).prefix().middleware()
312
+ const snapshot = this.#routes.length;
313
+ callbackOrConfig();
314
+ const newRoutes = this.#routes.slice(snapshot);
315
+ return new GroupBuilder(newRoutes);
316
+ }
317
+ // Legacy-style: group({ prefix, guards }, (r) => { ... })
318
+ const config = callbackOrConfig;
319
+ const childRouter = new Router();
320
+ legacyCallback?.(childRouter);
321
+ for (const route of childRouter.#routes) {
322
+ this.#routes.push({
323
+ ...route,
324
+ path: (config.prefix ?? '') + route.path,
325
+ middleware: [...(config.middleware ?? []), ...route.middleware],
326
+ guards: [...(config.guards ?? []), ...route.guards],
327
+ roles: [...(config.roles ?? []), ...route.roles],
328
+ permissions: [...(config.permissions ?? []), ...route.permissions],
329
+ });
330
+ }
331
+ this.#indexDirty = true;
332
+ }
333
+ // ─── On (view/redirect shortcuts) ─────────────────────────
334
+ /** Create a view/redirect route shortcut. */
335
+ on(path) {
336
+ return new OnRouteBuilder(this, path);
337
+ }
338
+ // ─── Global matchers ──────────────────────────────────────
339
+ /** Set a global param matcher (applied to all routes). */
340
+ where(param, matcher) {
341
+ this.#globalMatchers[param] = matcher instanceof RegExp ? { pattern: matcher } : matcher;
342
+ return this;
343
+ }
344
+ // ─── Route matching ───────────────────────────────────────
345
+ /** Build route indexes for fast matching. Called lazily on first match. */
346
+ #buildIndex() {
347
+ this.#staticIndex.clear();
348
+ this.#paramIndex.clear();
349
+ this.#nameIndex.clear();
350
+ for (const route of this.#routes) {
351
+ // Named route index
352
+ if (route.name) {
353
+ this.#nameIndex.set(route.name, route);
354
+ }
355
+ const isParam = route.path.includes(':') || route.path.includes('*');
356
+ if (!isParam && !route.domain) {
357
+ // Static route — O(1) exact match
358
+ const key = route.method === '*' ? `*:${route.path}` : `${route.method}:${route.path}`;
359
+ this.#staticIndex.set(key, route);
360
+ }
361
+ else {
362
+ // Parametric route — indexed by method
363
+ const methods = route.method === '*'
364
+ ? ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']
365
+ : [route.method];
366
+ for (const m of methods) {
367
+ if (!this.#paramIndex.has(m))
368
+ this.#paramIndex.set(m, []);
369
+ this.#paramIndex.get(m)?.push(route);
370
+ }
371
+ }
372
+ }
373
+ this.#indexDirty = false;
374
+ }
375
+ /** Find a matching route, extracting :param values and validating matchers. */
376
+ match(method, path, host) {
377
+ if (this.#indexDirty)
378
+ this.#buildIndex();
379
+ const candidates = [path];
380
+ // Trailing-slash normalisation: `/users/` should match `/users`. Done as
381
+ // a fallback (not a primary rewrite) so a route declared as `/users/`
382
+ // still wins its exact match before we try the trimmed form.
383
+ if (path.length > 1 && path.endsWith('/')) {
384
+ candidates.push(path.slice(0, -1));
385
+ }
386
+ for (const candidatePath of candidates) {
387
+ // 1. Try static exact match (O(1))
388
+ const staticRoute = this.#staticIndex.get(`${method}:${candidatePath}`) ??
389
+ this.#staticIndex.get(`*:${candidatePath}`);
390
+ if (staticRoute) {
391
+ if (!staticRoute.domain || !host || matchDomain(staticRoute.domain, host)) {
392
+ return { route: staticRoute, params: {} };
393
+ }
394
+ }
395
+ // 2. Try parametric routes (only same-method candidates)
396
+ const paramCandidates = this.#paramIndex.get(method) ?? [];
397
+ for (const route of paramCandidates) {
398
+ if (route.domain && host && !matchDomain(route.domain, host))
399
+ continue;
400
+ const params = matchPath(route.path, candidatePath);
401
+ if (params === null)
402
+ continue;
403
+ if (!this.#validateMatchers(params, route.matchers))
404
+ continue;
405
+ if (!this.#validateMatchers(params, this.#globalMatchers))
406
+ continue;
407
+ return { route, params };
408
+ }
409
+ }
410
+ return undefined;
411
+ }
412
+ // ─── URL generation ───────────────────────────────────────
413
+ /** Generate a URL from a named route. */
414
+ makeUrl(name, params) {
415
+ if (this.#indexDirty)
416
+ this.#buildIndex();
417
+ const route = this.#nameIndex.get(name);
418
+ if (!route) {
419
+ throw new Error(`Route '${name}' not found. Available: ${this.#routes
420
+ .filter((r) => r.name)
421
+ .map((r) => r.name)
422
+ .join(', ')}`);
423
+ }
424
+ let url = route.path;
425
+ if (params) {
426
+ for (const [key, value] of Object.entries(params)) {
427
+ url = url
428
+ .replace(`:${key}?`, encodeURIComponent(value))
429
+ .replace(`:${key}`, encodeURIComponent(value));
430
+ }
431
+ }
432
+ // Strip remaining optional placeholders (`:name?` segments not provided).
433
+ url = url.replace(/\/:[A-Za-z_][\w]*\?/g, '');
434
+ // Any remaining `:foo` is a required param the caller forgot. Surface it
435
+ // as a configuration error rather than emitting a broken URL.
436
+ const missing = url.match(/:[A-Za-z_][\w]*/g);
437
+ if (missing && missing.length > 0) {
438
+ throw new Error(`Cannot generate URL for route '${name}': missing params ${missing.join(', ')}`);
439
+ }
440
+ return url;
441
+ }
442
+ // ─── Accessors ────────────────────────────────────────────
443
+ /** Get all registered routes (for OpenAPI generation, introspection). */
444
+ getRoutes() {
445
+ return [...this.#routes];
446
+ }
447
+ /** Clear all registered routes (used by hot-reload). */
448
+ clear() {
449
+ this.#routes = [];
450
+ this.#indexDirty = true;
451
+ }
452
+ get routeCount() {
453
+ return this.#routes.length;
454
+ }
455
+ // ─── Internals ────────────────────────────────────────────
456
+ #createDefinition(method, path, handler) {
457
+ const def = {
458
+ method: method.toUpperCase(),
459
+ path,
460
+ handler: null,
461
+ middleware: [],
462
+ inlineMiddleware: [],
463
+ guards: [],
464
+ roles: [],
465
+ permissions: [],
466
+ validators: [],
467
+ matchers: {},
468
+ };
469
+ if (Array.isArray(handler)) {
470
+ def.controller = { target: handler[0], method: handler[1] };
471
+ }
472
+ else {
473
+ def.handler = handler;
474
+ }
475
+ return def;
476
+ }
477
+ #validateMatchers(params, matcherMap) {
478
+ for (const [param, value] of Object.entries(params)) {
479
+ const matcher = matcherMap[param];
480
+ if (!matcher)
481
+ continue;
482
+ const regex = matcher instanceof RegExp ? matcher : matcher.pattern;
483
+ if (!regex.test(value))
484
+ return false;
485
+ }
486
+ return true;
487
+ }
488
+ }
489
+ // ─── Path matching ──────────────────────────────────────────
490
+ /** Match path pattern against actual path, extracting params. Returns null on no match. */
491
+ function matchPath(pattern, actual) {
492
+ const patternParts = pattern.split('/');
493
+ const actualParts = actual.split('/');
494
+ // Catch-all wildcard: `/assets/*` greedily swallows the remainder of the
495
+ // path into a `*` param. The wildcard must be the final segment — any
496
+ // pattern after it would never match.
497
+ const wildcardIdx = patternParts.indexOf('*');
498
+ if (wildcardIdx !== -1) {
499
+ if (wildcardIdx !== patternParts.length - 1)
500
+ return null;
501
+ if (actualParts.length < wildcardIdx + 1)
502
+ return null;
503
+ const params = {};
504
+ for (let i = 0; i < wildcardIdx; i++) {
505
+ const part = patternParts[i];
506
+ if (part.startsWith(':')) {
507
+ params[part.substring(1)] = actualParts[i];
508
+ }
509
+ else if (part !== actualParts[i]) {
510
+ return null;
511
+ }
512
+ }
513
+ params['*'] = actualParts.slice(wildcardIdx).join('/');
514
+ return params;
515
+ }
516
+ // Count required (non-optional) pattern parts
517
+ const requiredCount = patternParts.filter((p) => !p.endsWith('?')).length;
518
+ const maxCount = patternParts.length;
519
+ if (actualParts.length < requiredCount || actualParts.length > maxCount)
520
+ return null;
521
+ const params = {};
522
+ for (let i = 0; i < patternParts.length; i++) {
523
+ const part = patternParts[i];
524
+ const isOptional = part.endsWith('?');
525
+ if (part.startsWith(':')) {
526
+ const paramName = isOptional ? part.slice(1, -1) : part.substring(1);
527
+ if (i < actualParts.length) {
528
+ params[paramName] = actualParts[i];
529
+ }
530
+ // Optional param with no actual part — skip (param not set)
531
+ }
532
+ else if (i < actualParts.length && part !== actualParts[i]) {
533
+ return null;
534
+ }
535
+ else if (i >= actualParts.length && !isOptional) {
536
+ return null;
537
+ }
538
+ }
539
+ return params;
540
+ }
541
+ /** Match domain pattern against actual host. Supports wildcards like *.example.com */
542
+ function matchDomain(pattern, host) {
543
+ const actualHost = host.split(':')[0]; // strip port
544
+ if (pattern === actualHost)
545
+ return true;
546
+ if (pattern.startsWith('*.')) {
547
+ const suffix = pattern.slice(1); // ".example.com"
548
+ return actualHost.endsWith(suffix) && actualHost.length > suffix.length;
549
+ }
550
+ return false;
551
+ }
552
+ //# sourceMappingURL=Router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.js","sourceRoot":"","sources":["../../src/router/Router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `RpcProvider` — wires a JSON-RPC 2.0 endpoint into the Ream pipeline.
3
+ *
4
+ * - `register()` — bind a shared `RpcRouter` (with the IoC container, so
5
+ * `namespace()` controllers are DI-resolved) under the token `'rpc'`. Apps
6
+ * register methods by resolving it:
7
+ *
8
+ * const rpc = app.container.make<RpcRouter>('rpc')
9
+ * rpc.method('task.validate', handler).guard('jwt')
10
+ * rpc.namespace('user', UserController)
11
+ *
12
+ * - `boot()` — mount `POST <config.rpc.path ?? '/rpc'>` on the core router,
13
+ * dispatching every request body (single or batch) to `RpcRouter.handle()`.
14
+ *
15
+ * @implements Story 24.1, 24.2
16
+ */
17
+ import type { AppContext } from '../Provider.js';
18
+ import { Provider } from '../Provider.js';
19
+ import { RpcRouter } from './RpcRouter.js';
20
+ export interface RpcProviderOptions {
21
+ /** Override the `RpcRouter` instance — used by tests. */
22
+ router?: RpcRouter;
23
+ }
24
+ export interface RpcConfig {
25
+ /** HTTP path the JSON-RPC endpoint is mounted at. Default `/rpc`. */
26
+ path?: string;
27
+ }
28
+ export declare class RpcProvider extends Provider {
29
+ readonly rpc: RpcRouter;
30
+ constructor(app: AppContext, options?: RpcProviderOptions);
31
+ register(): void;
32
+ boot(): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=RpcProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RpcProvider.d.ts","sourceRoot":"","sources":["../../src/rpc/RpcProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,WAAY,SAAQ,QAAQ;IACvC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;gBAEX,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,kBAAuB;IAKpD,QAAQ,IAAI,IAAI;IAKV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAOrC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `RpcProvider` — wires a JSON-RPC 2.0 endpoint into the Ream pipeline.
3
+ *
4
+ * - `register()` — bind a shared `RpcRouter` (with the IoC container, so
5
+ * `namespace()` controllers are DI-resolved) under the token `'rpc'`. Apps
6
+ * register methods by resolving it:
7
+ *
8
+ * const rpc = app.container.make<RpcRouter>('rpc')
9
+ * rpc.method('task.validate', handler).guard('jwt')
10
+ * rpc.namespace('user', UserController)
11
+ *
12
+ * - `boot()` — mount `POST <config.rpc.path ?? '/rpc'>` on the core router,
13
+ * dispatching every request body (single or batch) to `RpcRouter.handle()`.
14
+ *
15
+ * @implements Story 24.1, 24.2
16
+ */
17
+ import { Provider } from '../Provider.js';
18
+ import { RpcRouter } from './RpcRouter.js';
19
+ export class RpcProvider extends Provider {
20
+ rpc;
21
+ constructor(app, options = {}) {
22
+ super(app);
23
+ this.rpc = options.router ?? new RpcRouter();
24
+ }
25
+ register() {
26
+ this.rpc.useContainer(this.app.container);
27
+ this.app.container.singleton('rpc', () => this.rpc);
28
+ }
29
+ async boot() {
30
+ const path = this.app.config.get('rpc')?.path ?? '/rpc';
31
+ const router = this.app.container.make('router');
32
+ // RpcRouter.handle() reads the registered methods at request time, so the
33
+ // mount can happen before apps finish registering methods.
34
+ router.post(path, (ctx) => this.rpc.handle(ctx));
35
+ }
36
+ }
37
+ //# sourceMappingURL=RpcProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RpcProvider.js","sourceRoot":"","sources":["../../src/rpc/RpcProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAY1C,MAAM,OAAO,WAAY,SAAQ,QAAQ;IAC9B,GAAG,CAAW;IAEvB,YAAY,GAAe,EAAE,UAA8B,EAAE;QAC3D,KAAK,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,SAAS,EAAE,CAAA;IAC9C,CAAC;IAEQ,QAAQ;QACf,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrD,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAY,KAAK,CAAC,EAAE,IAAI,IAAI,MAAM,CAAA;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAS,QAAQ,CAAC,CAAA;QACxD,0EAA0E;QAC1E,2DAA2D;QAC3D,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/D,CAAC;CACF"}