@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,24 @@
1
+ /**
2
+ * OpenApiMiddleware — serves the OpenAPI spec and Swagger UI.
3
+ *
4
+ * GET /api-docs → JSON spec
5
+ * GET /docs → Swagger UI (HTML)
6
+ */
7
+ import type { HttpContext } from '../http/HttpContext.js';
8
+ export interface OpenApiMiddlewareConfig {
9
+ specPath?: string;
10
+ docsPath?: string;
11
+ /**
12
+ * The OpenAPI spec, or a factory that builds it lazily on first request.
13
+ * Pass a factory when the spec depends on routes registered AFTER this
14
+ * middleware is mounted (the common case — `OpenApiProvider` passes
15
+ * `() => generator.generate()`). The result is memoised after the first hit.
16
+ */
17
+ spec: Record<string, unknown> | (() => Record<string, unknown>);
18
+ }
19
+ export declare class OpenApiMiddleware {
20
+ #private;
21
+ constructor(config: OpenApiMiddlewareConfig);
22
+ handle(ctx: HttpContext, next: () => Promise<void>): Promise<void>;
23
+ }
24
+ //# sourceMappingURL=OpenApiMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenApiMiddleware.d.ts","sourceRoot":"","sources":["../../src/openapi/OpenApiMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEzD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAChE;AAUD,qBAAa,iBAAiB;;gBAQhB,MAAM,EAAE,uBAAuB;IAsBrC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAyCzE"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * OpenApiMiddleware — serves the OpenAPI spec and Swagger UI.
3
+ *
4
+ * GET /api-docs → JSON spec
5
+ * GET /docs → Swagger UI (HTML)
6
+ */
7
+ function escapeHtml(s) {
8
+ return s
9
+ .replace(/&/g, '&amp;')
10
+ .replace(/</g, '&lt;')
11
+ .replace(/>/g, '&gt;')
12
+ .replace(/"/g, '&quot;');
13
+ }
14
+ export class OpenApiMiddleware {
15
+ #specPath;
16
+ #docsPath;
17
+ #specSource;
18
+ #specJson;
19
+ #safeTitle;
20
+ #safeSpecPathJs;
21
+ constructor(config) {
22
+ this.#specPath = config.specPath ?? '/api-docs';
23
+ this.#docsPath = config.docsPath ?? '/docs';
24
+ this.#specSource = config.spec;
25
+ this.#safeSpecPathJs = JSON.stringify(this.#specPath); // JS string literal — safe in <script>
26
+ }
27
+ /** Resolve (and memoise) the spec JSON + escaped title on first use. */
28
+ #resolveSpec() {
29
+ if (this.#specJson === undefined || this.#safeTitle === undefined) {
30
+ const spec = typeof this.#specSource === 'function' ? this.#specSource() : this.#specSource;
31
+ this.#specJson = JSON.stringify(spec);
32
+ const specInfo = spec.info;
33
+ const rawTitle = typeof specInfo === 'object' && specInfo !== null && 'title' in specInfo
34
+ ? specInfo.title
35
+ : undefined;
36
+ this.#safeTitle = escapeHtml(typeof rawTitle === 'string' ? rawTitle : 'API Docs');
37
+ }
38
+ return { json: this.#specJson, safeTitle: this.#safeTitle };
39
+ }
40
+ async handle(ctx, next) {
41
+ const path = ctx.request.path();
42
+ if (path === this.#specPath && ctx.request.method() === 'GET') {
43
+ ctx.response.header('Content-Type', 'application/json');
44
+ ctx.response.status(200).send(this.#resolveSpec().json);
45
+ return;
46
+ }
47
+ if (path === this.#docsPath && ctx.request.method() === 'GET') {
48
+ ctx.response.header('Content-Type', 'text/html');
49
+ ctx.response.status(200).send(this.#renderSwaggerUi());
50
+ return;
51
+ }
52
+ return next();
53
+ }
54
+ #renderSwaggerUi() {
55
+ const { safeTitle } = this.#resolveSpec();
56
+ return `<!DOCTYPE html>
57
+ <html lang="en">
58
+ <head>
59
+ <meta charset="UTF-8">
60
+ <title>${safeTitle}</title>
61
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css">
62
+ </head>
63
+ <body>
64
+ <div id="swagger-ui"></div>
65
+ <script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js"></script>
66
+ <script>
67
+ SwaggerUIBundle({
68
+ url: ${this.#safeSpecPathJs},
69
+ dom_id: '#swagger-ui',
70
+ presets: [SwaggerUIBundle.presets.apis, SwaggerUIBundle.SwaggerUIStandalonePreset],
71
+ layout: 'BaseLayout',
72
+ })
73
+ </script>
74
+ </body>
75
+ </html>`;
76
+ }
77
+ }
78
+ //# sourceMappingURL=OpenApiMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenApiMiddleware.js","sourceRoot":"","sources":["../../src/openapi/OpenApiMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `OpenApiProvider` — serves an auto-generated OpenAPI 3.1 spec + Swagger UI.
3
+ *
4
+ * `boot()` mounts a global middleware that, on the first GET to `/api-docs`
5
+ * (JSON) or `/docs` (Swagger UI), lazily generates the spec from the router's
6
+ * registered routes — so every route registered during boot/start is included
7
+ * (the spec must NOT be generated eagerly at boot, before other providers have
8
+ * registered their routes). Opt-out via `config.openapi.enabled = false`.
9
+ *
10
+ * @implements Story 24.4
11
+ */
12
+ import type { AppContext } from '../Provider.js';
13
+ import { Provider } from '../Provider.js';
14
+ import { OpenApiGenerator } from './OpenApiGenerator.js';
15
+ export interface OpenApiDocsConfig {
16
+ /** Disable the docs endpoints entirely. Default: enabled. */
17
+ enabled?: boolean;
18
+ /** Spec `info.title`. Default `'API'`. */
19
+ title?: string;
20
+ /** Spec `info.version`. Default `'1.0.0'`. */
21
+ version?: string;
22
+ /** Path serving the JSON spec. Default `/api-docs`. */
23
+ specPath?: string;
24
+ /** Path serving the Swagger UI. Default `/docs`. */
25
+ docsPath?: string;
26
+ }
27
+ export interface OpenApiProviderOptions {
28
+ /** Override the generator — used by tests. */
29
+ generator?: OpenApiGenerator;
30
+ }
31
+ export declare class OpenApiProvider extends Provider {
32
+ #private;
33
+ constructor(app: AppContext, options?: OpenApiProviderOptions);
34
+ boot(): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=OpenApiProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenApiProvider.d.ts","sourceRoot":"","sources":["../../src/openapi/OpenApiProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,gBAAgB,CAAA;CAC7B;AAED,qBAAa,eAAgB,SAAQ,QAAQ;;gBAG/B,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,sBAA2B;IAKlD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAqBrC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * `OpenApiProvider` — serves an auto-generated OpenAPI 3.1 spec + Swagger UI.
3
+ *
4
+ * `boot()` mounts a global middleware that, on the first GET to `/api-docs`
5
+ * (JSON) or `/docs` (Swagger UI), lazily generates the spec from the router's
6
+ * registered routes — so every route registered during boot/start is included
7
+ * (the spec must NOT be generated eagerly at boot, before other providers have
8
+ * registered their routes). Opt-out via `config.openapi.enabled = false`.
9
+ *
10
+ * @implements Story 24.4
11
+ */
12
+ import { Provider } from '../Provider.js';
13
+ import { OpenApiGenerator } from './OpenApiGenerator.js';
14
+ import { OpenApiMiddleware } from './OpenApiMiddleware.js';
15
+ export class OpenApiProvider extends Provider {
16
+ #override;
17
+ constructor(app, options = {}) {
18
+ super(app);
19
+ this.#override = options.generator;
20
+ }
21
+ async boot() {
22
+ const config = this.app.config.get('openapi') ?? {};
23
+ if (config.enabled === false)
24
+ return;
25
+ const generator = this.#override ?? this.#buildGenerator(config);
26
+ const server = this.app.container.make('server');
27
+ const middleware = new OpenApiMiddleware({
28
+ specPath: config.specPath,
29
+ docsPath: config.docsPath,
30
+ spec: () => generator.generate(),
31
+ });
32
+ server.use([(ctx, next) => middleware.handle(ctx, next)]);
33
+ }
34
+ #buildGenerator(config) {
35
+ const router = this.app.container.make('router');
36
+ return new OpenApiGenerator(router, {
37
+ title: config.title ?? 'API',
38
+ version: config.version ?? '1.0.0',
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=OpenApiProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenApiProvider.js","sourceRoot":"","sources":["../../src/openapi/OpenApiProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAoB1D,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAClC,SAAS,CAAmB;IAErC,YAAY,GAAe,EAAE,UAAkC,EAAE;QAC/D,KAAK,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACpC,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAoB,SAAS,CAAC,IAAI,EAAE,CAAA;QACtE,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;YAAE,OAAM;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAS,QAAQ,CAAC,CAAA;QACxD,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;YACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;SACjC,CAAC,CAAA;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,eAAe,CAAC,MAAyB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAS,QAAQ,CAAC,CAAA;QACxD,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE;YAClC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;YAC5B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;SACnC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ApiResource — transform entities into API responses.
3
+ *
4
+ * Controls which fields are exposed, how relationships are serialized,
5
+ * and provides pagination metadata.
6
+ *
7
+ * Usage:
8
+ * class UserResource extends ApiResource<User> {
9
+ * serialize(user: User) {
10
+ * return { id: user.id, email: user.email, name: user.name }
11
+ * }
12
+ * }
13
+ *
14
+ * ctx.response.json(new UserResource().item(user))
15
+ * ctx.response.json(new UserResource().collection(users, { page: 1, perPage: 20, total: 100 }))
16
+ *
17
+ * @implements MISS-23
18
+ */
19
+ export interface PaginationMeta {
20
+ page: number;
21
+ perPage: number;
22
+ total: number;
23
+ lastPage: number;
24
+ hasMore: boolean;
25
+ }
26
+ export declare abstract class ApiResource<T> {
27
+ /** Transform a single entity into its API representation. */
28
+ abstract serialize(item: T): Record<string, unknown>;
29
+ /** Transform a single item with wrapper. */
30
+ item(entity: T): {
31
+ data: Record<string, unknown>;
32
+ };
33
+ /** Transform a collection with optional pagination. */
34
+ collection(entities: T[], pagination?: {
35
+ page: number;
36
+ perPage: number;
37
+ total: number;
38
+ }): {
39
+ data: Record<string, unknown>[];
40
+ meta?: PaginationMeta;
41
+ };
42
+ /** Transform with relationships loaded via a callback. */
43
+ with<R>(entity: T, relation: string, resourceClass: new () => ApiResource<R>, related: R | R[] | null): Record<string, unknown>;
44
+ }
45
+ //# sourceMappingURL=ApiResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiResource.d.ts","sourceRoot":"","sources":["../../src/resources/ApiResource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,8BAAsB,WAAW,CAAC,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEpD,4CAA4C;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;IAIlD,uDAAuD;IACvD,UAAU,CACR,QAAQ,EAAE,CAAC,EAAE,EACb,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC5D;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,cAAc,CAAA;KAAE;IAoB7D,0DAA0D;IAC1D,IAAI,CAAC,CAAC,EACJ,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,UAAU,WAAW,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAY3B"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * ApiResource — transform entities into API responses.
3
+ *
4
+ * Controls which fields are exposed, how relationships are serialized,
5
+ * and provides pagination metadata.
6
+ *
7
+ * Usage:
8
+ * class UserResource extends ApiResource<User> {
9
+ * serialize(user: User) {
10
+ * return { id: user.id, email: user.email, name: user.name }
11
+ * }
12
+ * }
13
+ *
14
+ * ctx.response.json(new UserResource().item(user))
15
+ * ctx.response.json(new UserResource().collection(users, { page: 1, perPage: 20, total: 100 }))
16
+ *
17
+ * @implements MISS-23
18
+ */
19
+ export class ApiResource {
20
+ /** Transform a single item with wrapper. */
21
+ item(entity) {
22
+ return { data: this.serialize(entity) };
23
+ }
24
+ /** Transform a collection with optional pagination. */
25
+ collection(entities, pagination) {
26
+ const data = entities.map((e) => this.serialize(e));
27
+ if (pagination) {
28
+ const lastPage = Math.ceil(pagination.total / pagination.perPage);
29
+ return {
30
+ data,
31
+ meta: {
32
+ page: pagination.page,
33
+ perPage: pagination.perPage,
34
+ total: pagination.total,
35
+ lastPage,
36
+ hasMore: pagination.page < lastPage,
37
+ },
38
+ };
39
+ }
40
+ return { data };
41
+ }
42
+ /** Transform with relationships loaded via a callback. */
43
+ with(entity, relation, resourceClass, related) {
44
+ const base = this.serialize(entity);
45
+ if (related === null) {
46
+ base[relation] = null;
47
+ }
48
+ else if (Array.isArray(related)) {
49
+ const res = new resourceClass();
50
+ base[relation] = related.map((r) => res.serialize(r));
51
+ }
52
+ else {
53
+ base[relation] = new resourceClass().serialize(related);
54
+ }
55
+ return base;
56
+ }
57
+ }
58
+ //# sourceMappingURL=ApiResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiResource.js","sourceRoot":"","sources":["../../src/resources/ApiResource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,MAAM,OAAgB,WAAW;IAI/B,4CAA4C;IAC5C,IAAI,CAAC,MAAS;QACZ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAA;IACzC,CAAC;IAED,uDAAuD;IACvD,UAAU,CACR,QAAa,EACb,UAA6D;QAE7D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QAEnD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;YACjE,OAAO;gBACL,IAAI;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,QAAQ;oBACR,OAAO,EAAE,UAAU,CAAC,IAAI,GAAG,QAAQ;iBACpC;aACF,CAAA;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,CAAA;IACjB,CAAC;IAED,0DAA0D;IAC1D,IAAI,CACF,MAAS,EACT,QAAgB,EAChB,aAAuC,EACvC,OAAuB;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,IAAI,aAAa,EAAE,CAAA;YAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QACvD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,aAAa,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Fluent Router — AdonisJS v6 compatible routing with controllers, resources, and groups.
3
+ *
4
+ * @implements FR24, FR25, FR26, FR27, FR28
5
+ */
6
+ import type { HttpContext } from '../http/HttpContext.js';
7
+ import type { MiddlewareFunction } from '../middleware/Pipeline.js';
8
+ import type { MiddlewareEntry } from '../server/Server.js';
9
+ export type RouteHandlerFunction = (ctx: HttpContext) => Promise<void> | void;
10
+ /**
11
+ * Controller tuple: [ControllerClass, 'methodName'].
12
+ * Constructor params are resolved by the IoC container, not by TypeScript —
13
+ * same pattern as AdonisJS (@poppinss/utils Constructor type).
14
+ */
15
+ export type ControllerAction = [target: new (...args: any[]) => any, method: string];
16
+ /** A route handler is either a closure or a controller tuple. */
17
+ export type RouteHandler = RouteHandlerFunction | ControllerAction;
18
+ /** Param matcher — regex or predefined matcher. */
19
+ export type ParamMatcher = RegExp | {
20
+ pattern: RegExp;
21
+ };
22
+ export interface RouteDefinition {
23
+ method: string;
24
+ path: string;
25
+ handler: RouteHandlerFunction | null;
26
+ controller?: {
27
+ target: new (...args: any[]) => any;
28
+ method: string;
29
+ };
30
+ middleware: string[];
31
+ inlineMiddleware: MiddlewareFunction[];
32
+ guards: string[];
33
+ roles: string[];
34
+ permissions: string[];
35
+ validators: string[];
36
+ name?: string;
37
+ version?: string;
38
+ domain?: string;
39
+ matchers: Record<string, ParamMatcher>;
40
+ deprecates?: {
41
+ version: string;
42
+ sunset?: string;
43
+ };
44
+ }
45
+ export interface MatchResult {
46
+ route: RouteDefinition;
47
+ params: Record<string, string>;
48
+ }
49
+ export declare const matchers: {
50
+ /** Match numeric params only. */
51
+ number(): ParamMatcher;
52
+ /** Match UUID v4 params only. */
53
+ uuid(): ParamMatcher;
54
+ /** Match slug params only (lowercase alphanumeric + hyphens). */
55
+ slug(): ParamMatcher;
56
+ };
57
+ /** Fluent route builder — mutates the already-registered route definition. */
58
+ export declare class RouteBuilder {
59
+ #private;
60
+ constructor(route: RouteDefinition);
61
+ /** Name this route (for URL generation and redirects). */
62
+ as(name: string): this;
63
+ /** Add named middleware. */
64
+ middleware(...names: string[]): this;
65
+ /** Add inline middleware functions. */
66
+ use(...mw: MiddlewareFunction[]): this;
67
+ /** Add authentication guards. */
68
+ guard(...guards: string[]): this;
69
+ /** Require specific roles. */
70
+ role(...roles: string[]): this;
71
+ /** Require specific permissions. */
72
+ permission(...permissions: string[]): this;
73
+ /** Add a param constraint. */
74
+ where(param: string, matcher: ParamMatcher | RegExp): this;
75
+ /** Attach a validator. */
76
+ validate(validator: string): this;
77
+ /** Set API version. */
78
+ version(v: string): this;
79
+ /** Restrict to a specific domain. */
80
+ domain(d: string): this;
81
+ /** Mark as deprecated. */
82
+ deprecates(version: string, options?: {
83
+ sunset?: string;
84
+ }): this;
85
+ /** @internal Get the underlying definition. */
86
+ getDefinition(): RouteDefinition;
87
+ }
88
+ /** Fluent group builder — returned by router.group(callback). */
89
+ export declare class GroupBuilder {
90
+ #private;
91
+ constructor(routes: RouteDefinition[]);
92
+ /** Set URL prefix for all routes in the group. */
93
+ prefix(p: string): this;
94
+ /** Add middleware to all routes in the group. */
95
+ middleware(...names: string[]): this;
96
+ /** Add inline middleware to all routes in the group. */
97
+ use(...mw: MiddlewareFunction[]): this;
98
+ /** Add guards to all routes in the group. */
99
+ guard(...guards: string[]): this;
100
+ /** Prefix route names for all routes in the group. */
101
+ as(namePrefix: string): this;
102
+ /** Set domain for all routes in the group. */
103
+ domain(d: string): this;
104
+ /** Add param matcher to all routes in the group. */
105
+ where(param: string, matcher: ParamMatcher | RegExp): this;
106
+ }
107
+ /** Builder for on(path).render(view) and on(path).redirect(target). */
108
+ export declare class OnRouteBuilder {
109
+ #private;
110
+ constructor(router: Router, path: string);
111
+ /** Render a view (requires Photon/view provider). */
112
+ render(view: string, data?: Record<string, unknown>): RouteBuilder;
113
+ /** Redirect to a path. */
114
+ redirect(target: string, status?: number): RouteBuilder;
115
+ /** Redirect to a named route. */
116
+ redirectToRoute(name: string, params?: Record<string, string>, status?: number): RouteBuilder;
117
+ }
118
+ /** Main Router. */
119
+ export declare class Router {
120
+ #private;
121
+ /** Predefined param matchers. */
122
+ readonly matchers: {
123
+ /** Match numeric params only. */
124
+ number(): ParamMatcher;
125
+ /** Match UUID v4 params only. */
126
+ uuid(): ParamMatcher;
127
+ /** Match slug params only (lowercase alphanumeric + hyphens). */
128
+ slug(): ParamMatcher;
129
+ };
130
+ /**
131
+ * Register router-level middleware (runs on requests with a matched route).
132
+ * router.use([() => import('#middleware/auth_middleware')])
133
+ */
134
+ use(middleware: MiddlewareEntry[]): this;
135
+ /**
136
+ * Register named middleware collection.
137
+ * export const middleware = router.named({
138
+ * auth: () => import('#middleware/auth_middleware'),
139
+ * })
140
+ */
141
+ named(collection: Record<string, MiddlewareEntry>): Record<string, MiddlewareFunction>;
142
+ /** Get the router-level middleware stack. */
143
+ getRouterMiddleware(): MiddlewareFunction[];
144
+ /** Get a named middleware by name. */
145
+ getNamedMiddleware(name: string): MiddlewareFunction | undefined;
146
+ /** Register a route with any HTTP method. */
147
+ route(method: string, path: string, handler: RouteHandler): RouteBuilder;
148
+ get(path: string, handler: RouteHandler): RouteBuilder;
149
+ post(path: string, handler: RouteHandler): RouteBuilder;
150
+ put(path: string, handler: RouteHandler): RouteBuilder;
151
+ patch(path: string, handler: RouteHandler): RouteBuilder;
152
+ delete(path: string, handler: RouteHandler): RouteBuilder;
153
+ head(path: string, handler: RouteHandler): RouteBuilder;
154
+ options(path: string, handler: RouteHandler): RouteBuilder;
155
+ /** Register a route for all HTTP methods. */
156
+ any(path: string, handler: RouteHandler): RouteBuilder;
157
+ /**
158
+ * Register resourceful routes for a controller.
159
+ * Generates: index, store, show, update, destroy
160
+ *
161
+ * Usage:
162
+ * router.resource('posts', PostsController)
163
+ * // GET /posts → PostsController.index
164
+ * // POST /posts → PostsController.store
165
+ * // GET /posts/:id → PostsController.show
166
+ * // PUT /posts/:id → PostsController.update
167
+ * // DELETE /posts/:id → PostsController.destroy
168
+ */
169
+ resource(path: string, controller: new (...args: any[]) => any): GroupBuilder;
170
+ /**
171
+ * Create a route group with shared configuration.
172
+ *
173
+ * AdonisJS-style (chainable):
174
+ * router.group(() => {
175
+ * router.get('/users', [UsersController, 'index'])
176
+ * }).prefix('/api').middleware('auth')
177
+ *
178
+ * Legacy-style (config object):
179
+ * router.group({ prefix: '/api', guards: ['jwt'] }, (r) => {
180
+ * r.get('/users', handler)
181
+ * })
182
+ */
183
+ group(callback: () => void): GroupBuilder;
184
+ group(config: {
185
+ prefix?: string;
186
+ middleware?: string[];
187
+ guards?: string[];
188
+ roles?: string[];
189
+ permissions?: string[];
190
+ }, callback: (router: Router) => void): void;
191
+ /** Create a view/redirect route shortcut. */
192
+ on(path: string): OnRouteBuilder;
193
+ /** Set a global param matcher (applied to all routes). */
194
+ where(param: string, matcher: ParamMatcher | RegExp): this;
195
+ /** Find a matching route, extracting :param values and validating matchers. */
196
+ match(method: string, path: string, host?: string): MatchResult | undefined;
197
+ /** Generate a URL from a named route. */
198
+ makeUrl(name: string, params?: Record<string, string>): string;
199
+ /** Get all registered routes (for OpenAPI generation, introspection). */
200
+ getRoutes(): RouteDefinition[];
201
+ /** Clear all registered routes (used by hot-reload). */
202
+ clear(): void;
203
+ get routeCount(): number;
204
+ }
205
+ //# sourceMappingURL=Router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/router/Router.ts"],"names":[],"mappings":"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"}