@relkit/runtime-hono 0.5.4 → 0.5.6

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 (701) hide show
  1. package/dist/agent-active-execution.d.ts +5 -11
  2. package/dist/agent-active-execution.d.ts.map +1 -1
  3. package/dist/agent-active-execution.js +3 -0
  4. package/dist/agent-active-execution.js.map +1 -1
  5. package/dist/agent-active-execution.types.d.ts +14 -0
  6. package/dist/agent-active-execution.types.d.ts.map +1 -0
  7. package/dist/agent-active-execution.types.js +2 -0
  8. package/dist/agent-active-execution.types.js.map +1 -0
  9. package/dist/agent-approval-coordinator.d.ts +17 -6
  10. package/dist/agent-approval-coordinator.d.ts.map +1 -1
  11. package/dist/agent-approval-coordinator.js +56 -53
  12. package/dist/agent-approval-coordinator.js.map +1 -1
  13. package/dist/agent-approval-coordinator.types.d.ts +14 -0
  14. package/dist/agent-approval-coordinator.types.d.ts.map +1 -0
  15. package/dist/agent-approval-coordinator.types.js +2 -0
  16. package/dist/agent-approval-coordinator.types.js.map +1 -0
  17. package/dist/agent-approval-support.d.ts +26 -0
  18. package/dist/agent-approval-support.d.ts.map +1 -0
  19. package/dist/agent-approval-support.js +47 -0
  20. package/dist/agent-approval-support.js.map +1 -0
  21. package/dist/agent-capability-negotiation.d.ts +4 -0
  22. package/dist/agent-capability-negotiation.d.ts.map +1 -1
  23. package/dist/agent-capability-negotiation.js +4 -0
  24. package/dist/agent-capability-negotiation.js.map +1 -1
  25. package/dist/agent-command-validation.d.ts +22 -0
  26. package/dist/agent-command-validation.d.ts.map +1 -0
  27. package/dist/agent-command-validation.js +35 -0
  28. package/dist/agent-command-validation.js.map +1 -0
  29. package/dist/agent-compatibility.d.ts +14 -0
  30. package/dist/agent-compatibility.d.ts.map +1 -1
  31. package/dist/agent-compatibility.js +18 -0
  32. package/dist/agent-compatibility.js.map +1 -1
  33. package/dist/agent-content-sink.d.ts +68 -7
  34. package/dist/agent-content-sink.d.ts.map +1 -1
  35. package/dist/agent-content-sink.js +136 -123
  36. package/dist/agent-content-sink.js.map +1 -1
  37. package/dist/agent-content-sink.types.d.ts +10 -0
  38. package/dist/agent-content-sink.types.d.ts.map +1 -0
  39. package/dist/agent-content-sink.types.js +2 -0
  40. package/dist/agent-content-sink.types.js.map +1 -0
  41. package/dist/agent-control-admission.d.ts +13 -0
  42. package/dist/agent-control-admission.d.ts.map +1 -0
  43. package/dist/agent-control-admission.js +70 -0
  44. package/dist/agent-control-admission.js.map +1 -0
  45. package/dist/agent-control-application.d.ts +32 -0
  46. package/dist/agent-control-application.d.ts.map +1 -0
  47. package/dist/agent-control-application.js +114 -0
  48. package/dist/agent-control-application.js.map +1 -0
  49. package/dist/agent-control-worker.d.ts +43 -2
  50. package/dist/agent-control-worker.d.ts.map +1 -1
  51. package/dist/agent-control-worker.js +39 -104
  52. package/dist/agent-control-worker.js.map +1 -1
  53. package/dist/agent-control-worker.types.d.ts +4 -0
  54. package/dist/agent-control-worker.types.d.ts.map +1 -0
  55. package/dist/agent-control-worker.types.js +2 -0
  56. package/dist/agent-control-worker.types.js.map +1 -0
  57. package/dist/agent-conversation.d.ts +18 -0
  58. package/dist/agent-conversation.d.ts.map +1 -0
  59. package/dist/agent-conversation.js +33 -0
  60. package/dist/agent-conversation.js.map +1 -0
  61. package/dist/agent-follow-up.d.ts +43 -7
  62. package/dist/agent-follow-up.d.ts.map +1 -1
  63. package/dist/agent-follow-up.js +59 -25
  64. package/dist/agent-follow-up.js.map +1 -1
  65. package/dist/agent-follow-up.types.d.ts +10 -0
  66. package/dist/agent-follow-up.types.d.ts.map +1 -0
  67. package/dist/agent-follow-up.types.js +2 -0
  68. package/dist/agent-follow-up.types.js.map +1 -0
  69. package/dist/agent-inspector-projection.d.ts +23 -0
  70. package/dist/agent-inspector-projection.d.ts.map +1 -1
  71. package/dist/agent-inspector-projection.js +39 -0
  72. package/dist/agent-inspector-projection.js.map +1 -1
  73. package/dist/agent-inspector.d.ts +6 -0
  74. package/dist/agent-inspector.d.ts.map +1 -1
  75. package/dist/agent-inspector.js +28 -0
  76. package/dist/agent-inspector.js.map +1 -1
  77. package/dist/agent-journal.d.ts +118 -0
  78. package/dist/agent-journal.d.ts.map +1 -0
  79. package/dist/agent-journal.js +138 -0
  80. package/dist/agent-journal.js.map +1 -0
  81. package/dist/agent-observation.d.ts +32 -0
  82. package/dist/agent-observation.d.ts.map +1 -0
  83. package/dist/agent-observation.js +96 -0
  84. package/dist/agent-observation.js.map +1 -0
  85. package/dist/agent-observation.types.d.ts +16 -0
  86. package/dist/agent-observation.types.d.ts.map +1 -0
  87. package/dist/agent-observation.types.js +2 -0
  88. package/dist/agent-observation.types.js.map +1 -0
  89. package/dist/agent-progress-sink.d.ts +37 -2
  90. package/dist/agent-progress-sink.d.ts.map +1 -1
  91. package/dist/agent-progress-sink.js +81 -46
  92. package/dist/agent-progress-sink.js.map +1 -1
  93. package/dist/agent-progress-sink.types.d.ts +4 -0
  94. package/dist/agent-progress-sink.types.d.ts.map +1 -0
  95. package/dist/agent-progress-sink.types.js +2 -0
  96. package/dist/agent-progress-sink.types.js.map +1 -0
  97. package/dist/agent-protocol-encoding.d.ts +4 -0
  98. package/dist/agent-protocol-encoding.d.ts.map +1 -1
  99. package/dist/agent-protocol-encoding.js +24 -0
  100. package/dist/agent-protocol-encoding.js.map +1 -1
  101. package/dist/agent-protocol-encoding.types.d.ts +6 -0
  102. package/dist/agent-protocol-encoding.types.d.ts.map +1 -0
  103. package/dist/agent-protocol-encoding.types.js +2 -0
  104. package/dist/agent-protocol-encoding.types.js.map +1 -0
  105. package/dist/agent-protocol-frame-state.d.ts +34 -0
  106. package/dist/agent-protocol-frame-state.d.ts.map +1 -1
  107. package/dist/agent-protocol-frame-state.js +51 -0
  108. package/dist/agent-protocol-frame-state.js.map +1 -1
  109. package/dist/agent-protocol-progress.d.ts +7 -5
  110. package/dist/agent-protocol-progress.d.ts.map +1 -1
  111. package/dist/agent-protocol-progress.js +6 -0
  112. package/dist/agent-protocol-progress.js.map +1 -1
  113. package/dist/agent-protocol-progress.types.d.ts +6 -0
  114. package/dist/agent-protocol-progress.types.d.ts.map +1 -0
  115. package/dist/agent-protocol-progress.types.js +2 -0
  116. package/dist/agent-protocol-progress.types.js.map +1 -0
  117. package/dist/agent-protocol-stream.d.ts +13 -50
  118. package/dist/agent-protocol-stream.d.ts.map +1 -1
  119. package/dist/agent-protocol-stream.js +22 -0
  120. package/dist/agent-protocol-stream.js.map +1 -1
  121. package/dist/agent-protocol-stream.types.d.ts +53 -0
  122. package/dist/agent-protocol-stream.types.d.ts.map +1 -0
  123. package/dist/agent-protocol-stream.types.js +2 -0
  124. package/dist/agent-protocol-stream.types.js.map +1 -0
  125. package/dist/agent-protocol-support.d.ts +52 -4
  126. package/dist/agent-protocol-support.d.ts.map +1 -1
  127. package/dist/agent-protocol-support.js +58 -0
  128. package/dist/agent-protocol-support.js.map +1 -1
  129. package/dist/agent-protocol-support.types.d.ts +6 -0
  130. package/dist/agent-protocol-support.types.d.ts.map +1 -0
  131. package/dist/agent-protocol-support.types.js +2 -0
  132. package/dist/agent-protocol-support.types.js.map +1 -0
  133. package/dist/agent-protocol-tool.d.ts +17 -9
  134. package/dist/agent-protocol-tool.d.ts.map +1 -1
  135. package/dist/agent-protocol-tool.js +15 -0
  136. package/dist/agent-protocol-tool.js.map +1 -1
  137. package/dist/agent-protocol-tool.types.d.ts +11 -0
  138. package/dist/agent-protocol-tool.types.d.ts.map +1 -0
  139. package/dist/agent-protocol-tool.types.js +2 -0
  140. package/dist/agent-protocol-tool.types.js.map +1 -0
  141. package/dist/agent-protocol.d.ts +5 -0
  142. package/dist/agent-protocol.d.ts.map +1 -1
  143. package/dist/agent-protocol.js +30 -0
  144. package/dist/agent-protocol.js.map +1 -1
  145. package/dist/agent-reads.d.ts +64 -0
  146. package/dist/agent-reads.d.ts.map +1 -0
  147. package/dist/agent-reads.js +119 -0
  148. package/dist/agent-reads.js.map +1 -0
  149. package/dist/agent-request-validation.d.ts +50 -0
  150. package/dist/agent-request-validation.d.ts.map +1 -0
  151. package/dist/agent-request-validation.js +87 -0
  152. package/dist/agent-request-validation.js.map +1 -0
  153. package/dist/agent-rpc-errors.d.ts +14 -0
  154. package/dist/agent-rpc-errors.d.ts.map +1 -1
  155. package/dist/agent-rpc-errors.js +22 -0
  156. package/dist/agent-rpc-errors.js.map +1 -1
  157. package/dist/agent-rpc-read.d.ts +26 -16
  158. package/dist/agent-rpc-read.d.ts.map +1 -1
  159. package/dist/agent-rpc-read.js +50 -122
  160. package/dist/agent-rpc-read.js.map +1 -1
  161. package/dist/agent-rpc-resume.d.ts +49 -2
  162. package/dist/agent-rpc-resume.d.ts.map +1 -1
  163. package/dist/agent-rpc-resume.js +57 -23
  164. package/dist/agent-rpc-resume.js.map +1 -1
  165. package/dist/agent-rpc-resume.types.d.ts +4 -0
  166. package/dist/agent-rpc-resume.types.d.ts.map +1 -0
  167. package/dist/agent-rpc-resume.types.js +2 -0
  168. package/dist/agent-rpc-resume.types.js.map +1 -0
  169. package/dist/agent-rpc-support.d.ts +60 -23
  170. package/dist/agent-rpc-support.d.ts.map +1 -1
  171. package/dist/agent-rpc-support.js +75 -65
  172. package/dist/agent-rpc-support.js.map +1 -1
  173. package/dist/agent-rpc-support.schemas.d.ts +4 -0
  174. package/dist/agent-rpc-support.schemas.d.ts.map +1 -0
  175. package/dist/agent-rpc-support.schemas.js +4 -0
  176. package/dist/agent-rpc-support.schemas.js.map +1 -0
  177. package/dist/agent-rpc-support.types.d.ts +18 -0
  178. package/dist/agent-rpc-support.types.d.ts.map +1 -0
  179. package/dist/agent-rpc-support.types.js +2 -0
  180. package/dist/agent-rpc-support.types.js.map +1 -0
  181. package/dist/agent-rpc-worker.d.ts +43 -2
  182. package/dist/agent-rpc-worker.d.ts.map +1 -1
  183. package/dist/agent-rpc-worker.js +120 -117
  184. package/dist/agent-rpc-worker.js.map +1 -1
  185. package/dist/agent-rpc-worker.types.d.ts +4 -0
  186. package/dist/agent-rpc-worker.types.d.ts.map +1 -0
  187. package/dist/agent-rpc-worker.types.js +2 -0
  188. package/dist/agent-rpc-worker.types.js.map +1 -0
  189. package/dist/agent-rpc-write.d.ts +25 -0
  190. package/dist/agent-rpc-write.d.ts.map +1 -1
  191. package/dist/agent-rpc-write.js +34 -105
  192. package/dist/agent-rpc-write.js.map +1 -1
  193. package/dist/agent-rpc.d.ts +4 -0
  194. package/dist/agent-rpc.d.ts.map +1 -1
  195. package/dist/agent-rpc.js +10 -0
  196. package/dist/agent-rpc.js.map +1 -1
  197. package/dist/agent-run-admission.d.ts +13 -0
  198. package/dist/agent-run-admission.d.ts.map +1 -0
  199. package/dist/agent-run-admission.js +60 -0
  200. package/dist/agent-run-admission.js.map +1 -0
  201. package/dist/agent-run-journal.d.ts +41 -3
  202. package/dist/agent-run-journal.d.ts.map +1 -1
  203. package/dist/agent-run-journal.js +63 -81
  204. package/dist/agent-run-journal.js.map +1 -1
  205. package/dist/agent-run-journal.types.d.ts +4 -0
  206. package/dist/agent-run-journal.types.d.ts.map +1 -0
  207. package/dist/agent-run-journal.types.js +2 -0
  208. package/dist/agent-run-journal.types.js.map +1 -0
  209. package/dist/agent-run-supervision.d.ts +20 -0
  210. package/dist/agent-run-supervision.d.ts.map +1 -0
  211. package/dist/agent-run-supervision.js +42 -0
  212. package/dist/agent-run-supervision.js.map +1 -0
  213. package/dist/agent-run-supervision.types.d.ts +7 -0
  214. package/dist/agent-run-supervision.types.d.ts.map +1 -0
  215. package/dist/agent-run-supervision.types.js +2 -0
  216. package/dist/agent-run-supervision.types.js.map +1 -0
  217. package/dist/agent-run-tasks.d.ts +35 -1
  218. package/dist/agent-run-tasks.d.ts.map +1 -1
  219. package/dist/agent-run-tasks.js +72 -4
  220. package/dist/agent-run-tasks.js.map +1 -1
  221. package/dist/agent-run-tasks.types.d.ts +5 -0
  222. package/dist/agent-run-tasks.types.d.ts.map +1 -0
  223. package/dist/agent-run-tasks.types.js +2 -0
  224. package/dist/agent-run-tasks.types.js.map +1 -0
  225. package/dist/agent-runtime.d.ts +1 -16
  226. package/dist/agent-runtime.d.ts.map +1 -1
  227. package/dist/agent-runtime.types.d.ts +18 -0
  228. package/dist/agent-runtime.types.d.ts.map +1 -0
  229. package/dist/agent-runtime.types.js +2 -0
  230. package/dist/agent-runtime.types.js.map +1 -0
  231. package/dist/agent-tool-content.d.ts +17 -0
  232. package/dist/agent-tool-content.d.ts.map +1 -0
  233. package/dist/agent-tool-content.js +61 -0
  234. package/dist/agent-tool-content.js.map +1 -0
  235. package/dist/api-docs.d.ts +8 -13
  236. package/dist/api-docs.d.ts.map +1 -1
  237. package/dist/api-docs.js +38 -2
  238. package/dist/api-docs.js.map +1 -1
  239. package/dist/api-docs.types.d.ts +14 -0
  240. package/dist/api-docs.types.d.ts.map +1 -0
  241. package/dist/api-docs.types.js +2 -0
  242. package/dist/api-docs.types.js.map +1 -0
  243. package/dist/auth.d.ts +26 -15
  244. package/dist/auth.d.ts.map +1 -1
  245. package/dist/auth.js +46 -4
  246. package/dist/auth.js.map +1 -1
  247. package/dist/auth.types.d.ts +20 -0
  248. package/dist/auth.types.d.ts.map +1 -0
  249. package/dist/auth.types.js +2 -0
  250. package/dist/auth.types.js.map +1 -0
  251. package/dist/client-authorization.d.ts +22 -0
  252. package/dist/client-authorization.d.ts.map +1 -1
  253. package/dist/client-authorization.js +26 -12
  254. package/dist/client-authorization.js.map +1 -1
  255. package/dist/client-contract.d.ts +8 -4
  256. package/dist/client-contract.d.ts.map +1 -1
  257. package/dist/client-contract.js +6 -0
  258. package/dist/client-contract.js.map +1 -1
  259. package/dist/client-contract.types.d.ts +8 -0
  260. package/dist/client-contract.types.d.ts.map +1 -0
  261. package/dist/client-contract.types.js +2 -0
  262. package/dist/client-contract.types.js.map +1 -0
  263. package/dist/client-identity.d.ts +39 -15
  264. package/dist/client-identity.d.ts.map +1 -1
  265. package/dist/client-identity.js +50 -4
  266. package/dist/client-identity.js.map +1 -1
  267. package/dist/client-identity.types.d.ts +19 -0
  268. package/dist/client-identity.types.d.ts.map +1 -0
  269. package/dist/client-identity.types.js +2 -0
  270. package/dist/client-identity.types.js.map +1 -0
  271. package/dist/control-plane.d.ts +4 -0
  272. package/dist/control-plane.d.ts.map +1 -1
  273. package/dist/control-plane.js +4 -0
  274. package/dist/control-plane.js.map +1 -1
  275. package/dist/create-app.d.ts +11 -20
  276. package/dist/create-app.d.ts.map +1 -1
  277. package/dist/create-app.js +25 -8
  278. package/dist/create-app.js.map +1 -1
  279. package/dist/create-app.types.d.ts +21 -0
  280. package/dist/create-app.types.d.ts.map +1 -0
  281. package/dist/create-app.types.js +2 -0
  282. package/dist/create-app.types.js.map +1 -0
  283. package/dist/http-effect.d.ts +43 -0
  284. package/dist/http-effect.d.ts.map +1 -0
  285. package/dist/http-effect.js +67 -0
  286. package/dist/http-effect.js.map +1 -0
  287. package/dist/http-invocation.d.ts +22 -0
  288. package/dist/http-invocation.d.ts.map +1 -0
  289. package/dist/http-invocation.js +44 -0
  290. package/dist/http-invocation.js.map +1 -0
  291. package/dist/http-logging.d.ts +23 -0
  292. package/dist/http-logging.d.ts.map +1 -0
  293. package/dist/http-logging.js +69 -0
  294. package/dist/http-logging.js.map +1 -0
  295. package/dist/http-logging.types.d.ts +8 -0
  296. package/dist/http-logging.types.d.ts.map +1 -0
  297. package/dist/http-logging.types.js +2 -0
  298. package/dist/http-logging.types.js.map +1 -0
  299. package/dist/http-response.d.ts +22 -0
  300. package/dist/http-response.d.ts.map +1 -1
  301. package/dist/http-response.js +55 -8
  302. package/dist/http-response.js.map +1 -1
  303. package/dist/http-span-record.d.ts +5 -0
  304. package/dist/http-span-record.d.ts.map +1 -1
  305. package/dist/http-span-record.js +5 -0
  306. package/dist/http-span-record.js.map +1 -1
  307. package/dist/http-span.d.ts +18 -0
  308. package/dist/http-span.d.ts.map +1 -1
  309. package/dist/http-span.js +37 -3
  310. package/dist/http-span.js.map +1 -1
  311. package/dist/http-stream-observation.d.ts +13 -0
  312. package/dist/http-stream-observation.d.ts.map +1 -0
  313. package/dist/http-stream-observation.js +15 -0
  314. package/dist/http-stream-observation.js.map +1 -0
  315. package/dist/http-validation.d.ts +12 -0
  316. package/dist/http-validation.d.ts.map +1 -0
  317. package/dist/http-validation.js +17 -0
  318. package/dist/http-validation.js.map +1 -0
  319. package/dist/internal-endpoint-paths.d.ts +3 -0
  320. package/dist/internal-endpoint-paths.d.ts.map +1 -1
  321. package/dist/internal-endpoint-paths.js +3 -0
  322. package/dist/internal-endpoint-paths.js.map +1 -1
  323. package/dist/internal-endpoint-query.d.ts +18 -0
  324. package/dist/internal-endpoint-query.d.ts.map +1 -0
  325. package/dist/internal-endpoint-query.js +88 -0
  326. package/dist/internal-endpoint-query.js.map +1 -0
  327. package/dist/internal-endpoints-utils.d.ts +39 -4
  328. package/dist/internal-endpoints-utils.d.ts.map +1 -1
  329. package/dist/internal-endpoints-utils.js +48 -52
  330. package/dist/internal-endpoints-utils.js.map +1 -1
  331. package/dist/internal-endpoints.d.ts +11 -46
  332. package/dist/internal-endpoints.d.ts.map +1 -1
  333. package/dist/internal-endpoints.js +25 -2
  334. package/dist/internal-endpoints.js.map +1 -1
  335. package/dist/internal-endpoints.types.d.ts +57 -0
  336. package/dist/internal-endpoints.types.d.ts.map +1 -0
  337. package/dist/internal-endpoints.types.js +2 -0
  338. package/dist/internal-endpoints.types.js.map +1 -0
  339. package/dist/jobs/authorization.d.ts +22 -8
  340. package/dist/jobs/authorization.d.ts.map +1 -1
  341. package/dist/jobs/authorization.js +29 -16
  342. package/dist/jobs/authorization.js.map +1 -1
  343. package/dist/jobs/authorization.types.d.ts +9 -0
  344. package/dist/jobs/authorization.types.d.ts.map +1 -0
  345. package/dist/jobs/authorization.types.js +2 -0
  346. package/dist/jobs/authorization.types.js.map +1 -0
  347. package/dist/jobs/common.d.ts +54 -3
  348. package/dist/jobs/common.d.ts.map +1 -1
  349. package/dist/jobs/common.js +63 -23
  350. package/dist/jobs/common.js.map +1 -1
  351. package/dist/jobs/common.schemas.d.ts +6 -0
  352. package/dist/jobs/common.schemas.d.ts.map +1 -0
  353. package/dist/jobs/common.schemas.js +41 -0
  354. package/dist/jobs/common.schemas.js.map +1 -0
  355. package/dist/jobs/cursors.d.ts +38 -0
  356. package/dist/jobs/cursors.d.ts.map +1 -1
  357. package/dist/jobs/cursors.js +50 -0
  358. package/dist/jobs/cursors.js.map +1 -1
  359. package/dist/jobs/handlers-mutations-cancel.d.ts +15 -0
  360. package/dist/jobs/handlers-mutations-cancel.d.ts.map +1 -0
  361. package/dist/jobs/handlers-mutations-cancel.js +49 -0
  362. package/dist/jobs/handlers-mutations-cancel.js.map +1 -0
  363. package/dist/jobs/handlers-mutations-retry.d.ts +14 -0
  364. package/dist/jobs/handlers-mutations-retry.d.ts.map +1 -0
  365. package/dist/jobs/handlers-mutations-retry.js +37 -0
  366. package/dist/jobs/handlers-mutations-retry.js.map +1 -0
  367. package/dist/jobs/handlers-mutations-trigger.d.ts +14 -0
  368. package/dist/jobs/handlers-mutations-trigger.d.ts.map +1 -0
  369. package/dist/jobs/handlers-mutations-trigger.js +33 -0
  370. package/dist/jobs/handlers-mutations-trigger.js.map +1 -0
  371. package/dist/jobs/handlers-mutations.d.ts +33 -0
  372. package/dist/jobs/handlers-mutations.d.ts.map +1 -1
  373. package/dist/jobs/handlers-mutations.js +53 -69
  374. package/dist/jobs/handlers-mutations.js.map +1 -1
  375. package/dist/jobs/handlers-mutations.types.d.ts +10 -0
  376. package/dist/jobs/handlers-mutations.types.d.ts.map +1 -0
  377. package/dist/jobs/handlers-mutations.types.js +2 -0
  378. package/dist/jobs/handlers-mutations.types.js.map +1 -0
  379. package/dist/jobs/handlers-read-get.d.ts +14 -0
  380. package/dist/jobs/handlers-read-get.d.ts.map +1 -0
  381. package/dist/jobs/handlers-read-get.js +33 -0
  382. package/dist/jobs/handlers-read-get.js.map +1 -0
  383. package/dist/jobs/handlers-read-list.d.ts +14 -0
  384. package/dist/jobs/handlers-read-list.d.ts.map +1 -0
  385. package/dist/jobs/handlers-read-list.js +42 -0
  386. package/dist/jobs/handlers-read-list.js.map +1 -0
  387. package/dist/jobs/handlers-read-watch.d.ts +15 -0
  388. package/dist/jobs/handlers-read-watch.d.ts.map +1 -0
  389. package/dist/jobs/handlers-read-watch.js +39 -0
  390. package/dist/jobs/handlers-read-watch.js.map +1 -0
  391. package/dist/jobs/handlers-read.d.ts +33 -0
  392. package/dist/jobs/handlers-read.d.ts.map +1 -1
  393. package/dist/jobs/handlers-read.js +53 -66
  394. package/dist/jobs/handlers-read.js.map +1 -1
  395. package/dist/jobs/handlers-read.types.d.ts +10 -0
  396. package/dist/jobs/handlers-read.types.d.ts.map +1 -0
  397. package/dist/jobs/handlers-read.types.js +2 -0
  398. package/dist/jobs/handlers-read.types.js.map +1 -0
  399. package/dist/jobs/handlers-stream.d.ts +28 -0
  400. package/dist/jobs/handlers-stream.d.ts.map +1 -1
  401. package/dist/jobs/handlers-stream.js +77 -31
  402. package/dist/jobs/handlers-stream.js.map +1 -1
  403. package/dist/jobs/handlers-validation.d.ts +16 -0
  404. package/dist/jobs/handlers-validation.d.ts.map +1 -1
  405. package/dist/jobs/handlers-validation.js +21 -0
  406. package/dist/jobs/handlers-validation.js.map +1 -1
  407. package/dist/jobs/projection-stream.d.ts +11 -0
  408. package/dist/jobs/projection-stream.d.ts.map +1 -1
  409. package/dist/jobs/projection-stream.js +37 -0
  410. package/dist/jobs/projection-stream.js.map +1 -1
  411. package/dist/jobs/projection-validation.d.ts +12 -0
  412. package/dist/jobs/projection-validation.d.ts.map +1 -1
  413. package/dist/jobs/projection-validation.js +51 -1
  414. package/dist/jobs/projection-validation.js.map +1 -1
  415. package/dist/jobs/projection.d.ts +29 -0
  416. package/dist/jobs/projection.d.ts.map +1 -1
  417. package/dist/jobs/projection.js +34 -1
  418. package/dist/jobs/projection.js.map +1 -1
  419. package/dist/jobs/rpc.d.ts +4 -0
  420. package/dist/jobs/rpc.d.ts.map +1 -1
  421. package/dist/jobs/rpc.js +51 -1
  422. package/dist/jobs/rpc.js.map +1 -1
  423. package/dist/jobs/runtime.types.d.ts +49 -0
  424. package/dist/jobs/runtime.types.d.ts.map +1 -0
  425. package/dist/jobs/runtime.types.js +2 -0
  426. package/dist/jobs/runtime.types.js.map +1 -0
  427. package/dist/jobs/support-lookups.d.ts +20 -0
  428. package/dist/jobs/support-lookups.d.ts.map +1 -0
  429. package/dist/jobs/support-lookups.js +34 -0
  430. package/dist/jobs/support-lookups.js.map +1 -0
  431. package/dist/jobs/support.d.ts +56 -1
  432. package/dist/jobs/support.d.ts.map +1 -1
  433. package/dist/jobs/support.js +61 -20
  434. package/dist/jobs/support.js.map +1 -1
  435. package/dist/jobs/types.d.ts +17 -42
  436. package/dist/jobs/types.d.ts.map +1 -1
  437. package/dist/jobs/types.js +20 -0
  438. package/dist/jobs/types.js.map +1 -1
  439. package/dist/manifest-validation.d.ts +12 -1
  440. package/dist/manifest-validation.d.ts.map +1 -1
  441. package/dist/manifest-validation.js +17 -0
  442. package/dist/manifest-validation.js.map +1 -1
  443. package/dist/manifest-validation.types.d.ts +3 -0
  444. package/dist/manifest-validation.types.d.ts.map +1 -0
  445. package/dist/manifest-validation.types.js +2 -0
  446. package/dist/manifest-validation.types.js.map +1 -0
  447. package/dist/materialize-routes-utils.d.ts +41 -1
  448. package/dist/materialize-routes-utils.d.ts.map +1 -1
  449. package/dist/materialize-routes-utils.js +80 -22
  450. package/dist/materialize-routes-utils.js.map +1 -1
  451. package/dist/materialize-routes-validation.d.ts +4 -0
  452. package/dist/materialize-routes-validation.d.ts.map +1 -1
  453. package/dist/materialize-routes-validation.js +5 -1
  454. package/dist/materialize-routes-validation.js.map +1 -1
  455. package/dist/materialize-routes.d.ts +9 -100
  456. package/dist/materialize-routes.d.ts.map +1 -1
  457. package/dist/materialize-routes.js +24 -9
  458. package/dist/materialize-routes.js.map +1 -1
  459. package/dist/materialize-routes.types.d.ts +110 -0
  460. package/dist/materialize-routes.types.d.ts.map +1 -0
  461. package/dist/materialize-routes.types.js +2 -0
  462. package/dist/materialize-routes.types.js.map +1 -0
  463. package/dist/mcp.d.ts +39 -4
  464. package/dist/mcp.d.ts.map +1 -1
  465. package/dist/mcp.js +56 -10
  466. package/dist/mcp.js.map +1 -1
  467. package/dist/mcp.types.d.ts +15 -0
  468. package/dist/mcp.types.d.ts.map +1 -0
  469. package/dist/mcp.types.js +2 -0
  470. package/dist/mcp.types.js.map +1 -0
  471. package/dist/middleware-limits.d.ts +4 -0
  472. package/dist/middleware-limits.d.ts.map +1 -1
  473. package/dist/middleware-limits.js +16 -7
  474. package/dist/middleware-limits.js.map +1 -1
  475. package/dist/middleware-utils.d.ts +62 -53
  476. package/dist/middleware-utils.d.ts.map +1 -1
  477. package/dist/middleware-utils.js +72 -1
  478. package/dist/middleware-utils.js.map +1 -1
  479. package/dist/middleware-utils.types.d.ts +59 -0
  480. package/dist/middleware-utils.types.d.ts.map +1 -0
  481. package/dist/middleware-utils.types.js +2 -0
  482. package/dist/middleware-utils.types.js.map +1 -0
  483. package/dist/middleware.d.ts +19 -7
  484. package/dist/middleware.d.ts.map +1 -1
  485. package/dist/middleware.js +28 -6
  486. package/dist/middleware.js.map +1 -1
  487. package/dist/middleware.types.d.ts +10 -0
  488. package/dist/middleware.types.d.ts.map +1 -0
  489. package/dist/middleware.types.js +2 -0
  490. package/dist/middleware.types.js.map +1 -0
  491. package/dist/native-stream.d.ts +18 -1
  492. package/dist/native-stream.d.ts.map +1 -1
  493. package/dist/native-stream.js +55 -4
  494. package/dist/native-stream.js.map +1 -1
  495. package/dist/native-stream.schemas.d.ts +6 -0
  496. package/dist/native-stream.schemas.d.ts.map +1 -0
  497. package/dist/native-stream.schemas.js +6 -0
  498. package/dist/native-stream.schemas.js.map +1 -0
  499. package/dist/native-stream.types.d.ts +4 -0
  500. package/dist/native-stream.types.d.ts.map +1 -0
  501. package/dist/native-stream.types.js +2 -0
  502. package/dist/native-stream.types.js.map +1 -0
  503. package/dist/rate-limit-store.d.ts +37 -11
  504. package/dist/rate-limit-store.d.ts.map +1 -1
  505. package/dist/rate-limit-store.js +108 -43
  506. package/dist/rate-limit-store.js.map +1 -1
  507. package/dist/rate-limit-store.types.d.ts +18 -0
  508. package/dist/rate-limit-store.types.d.ts.map +1 -0
  509. package/dist/rate-limit-store.types.js +2 -0
  510. package/dist/rate-limit-store.types.js.map +1 -0
  511. package/dist/rate-limit-telemetry.d.ts +9 -0
  512. package/dist/rate-limit-telemetry.d.ts.map +1 -1
  513. package/dist/rate-limit-telemetry.js +9 -0
  514. package/dist/rate-limit-telemetry.js.map +1 -1
  515. package/dist/rate-limit.d.ts +8 -7
  516. package/dist/rate-limit.d.ts.map +1 -1
  517. package/dist/rate-limit.js +42 -0
  518. package/dist/rate-limit.js.map +1 -1
  519. package/dist/rate-limit.types.d.ts +9 -0
  520. package/dist/rate-limit.types.d.ts.map +1 -0
  521. package/dist/rate-limit.types.js +2 -0
  522. package/dist/rate-limit.types.js.map +1 -0
  523. package/dist/realtime-observation.d.ts +40 -0
  524. package/dist/realtime-observation.d.ts.map +1 -0
  525. package/dist/realtime-observation.js +147 -0
  526. package/dist/realtime-observation.js.map +1 -0
  527. package/dist/realtime-observation.types.d.ts +20 -0
  528. package/dist/realtime-observation.types.d.ts.map +1 -0
  529. package/dist/realtime-observation.types.js +2 -0
  530. package/dist/realtime-observation.types.js.map +1 -0
  531. package/dist/realtime-presence.d.ts +13 -0
  532. package/dist/realtime-presence.d.ts.map +1 -0
  533. package/dist/realtime-presence.js +24 -0
  534. package/dist/realtime-presence.js.map +1 -0
  535. package/dist/realtime-rpc-support.d.ts +15 -8
  536. package/dist/realtime-rpc-support.d.ts.map +1 -1
  537. package/dist/realtime-rpc-support.js +25 -5
  538. package/dist/realtime-rpc-support.js.map +1 -1
  539. package/dist/realtime-rpc-support.types.d.ts +9 -0
  540. package/dist/realtime-rpc-support.types.d.ts.map +1 -0
  541. package/dist/realtime-rpc-support.types.js +2 -0
  542. package/dist/realtime-rpc-support.types.js.map +1 -0
  543. package/dist/realtime-rpc.d.ts +4 -0
  544. package/dist/realtime-rpc.d.ts.map +1 -1
  545. package/dist/realtime-rpc.js +9 -124
  546. package/dist/realtime-rpc.js.map +1 -1
  547. package/dist/realtime-runtime.d.ts +1 -12
  548. package/dist/realtime-runtime.d.ts.map +1 -1
  549. package/dist/realtime-runtime.types.d.ts +14 -0
  550. package/dist/realtime-runtime.types.d.ts.map +1 -0
  551. package/dist/realtime-runtime.types.js +2 -0
  552. package/dist/realtime-runtime.types.js.map +1 -0
  553. package/dist/request-body-service.d.ts +23 -0
  554. package/dist/request-body-service.d.ts.map +1 -0
  555. package/dist/request-body-service.js +80 -0
  556. package/dist/request-body-service.js.map +1 -0
  557. package/dist/request-body-service.types.d.ts +7 -0
  558. package/dist/request-body-service.types.d.ts.map +1 -0
  559. package/dist/request-body-service.types.js +2 -0
  560. package/dist/request-body-service.types.js.map +1 -0
  561. package/dist/request-context.d.ts +5 -0
  562. package/dist/request-context.d.ts.map +1 -1
  563. package/dist/request-context.js +34 -0
  564. package/dist/request-context.js.map +1 -1
  565. package/dist/request-inference.d.ts +11 -0
  566. package/dist/request-inference.d.ts.map +1 -1
  567. package/dist/request-inference.js +33 -0
  568. package/dist/request-inference.js.map +1 -1
  569. package/dist/request-mapping-body.d.ts +10 -23
  570. package/dist/request-mapping-body.d.ts.map +1 -1
  571. package/dist/request-mapping-body.js +36 -30
  572. package/dist/request-mapping-body.js.map +1 -1
  573. package/dist/request-mapping-body.schemas.d.ts +9 -0
  574. package/dist/request-mapping-body.schemas.d.ts.map +1 -0
  575. package/dist/request-mapping-body.schemas.js +11 -0
  576. package/dist/request-mapping-body.schemas.js.map +1 -0
  577. package/dist/request-mapping-body.types.d.ts +31 -0
  578. package/dist/request-mapping-body.types.d.ts.map +1 -0
  579. package/dist/request-mapping-body.types.js +2 -0
  580. package/dist/request-mapping-body.types.js.map +1 -0
  581. package/dist/request-mapping-fields.d.ts +35 -0
  582. package/dist/request-mapping-fields.d.ts.map +1 -1
  583. package/dist/request-mapping-fields.js +48 -0
  584. package/dist/request-mapping-fields.js.map +1 -1
  585. package/dist/request-mapping-object.d.ts +22 -12
  586. package/dist/request-mapping-object.d.ts.map +1 -1
  587. package/dist/request-mapping-object.js +34 -4
  588. package/dist/request-mapping-object.js.map +1 -1
  589. package/dist/request-mapping-object.types.d.ts +19 -0
  590. package/dist/request-mapping-object.types.d.ts.map +1 -0
  591. package/dist/request-mapping-object.types.js +2 -0
  592. package/dist/request-mapping-object.types.js.map +1 -0
  593. package/dist/request-mapping-sources.d.ts +28 -1
  594. package/dist/request-mapping-sources.d.ts.map +1 -1
  595. package/dist/request-mapping-sources.js +27 -0
  596. package/dist/request-mapping-sources.js.map +1 -1
  597. package/dist/request-mapping-transform.d.ts +8 -0
  598. package/dist/request-mapping-transform.d.ts.map +1 -1
  599. package/dist/request-mapping-transform.js +20 -0
  600. package/dist/request-mapping-transform.js.map +1 -1
  601. package/dist/request-mapping.d.ts +31 -29
  602. package/dist/request-mapping.d.ts.map +1 -1
  603. package/dist/request-mapping.js +55 -15
  604. package/dist/request-mapping.js.map +1 -1
  605. package/dist/request-mapping.types.d.ts +38 -0
  606. package/dist/request-mapping.types.d.ts.map +1 -0
  607. package/dist/request-mapping.types.js +2 -0
  608. package/dist/request-mapping.types.js.map +1 -0
  609. package/dist/request-record-middleware.d.ts +14 -1
  610. package/dist/request-record-middleware.d.ts.map +1 -1
  611. package/dist/request-record-middleware.js +22 -0
  612. package/dist/request-record-middleware.js.map +1 -1
  613. package/dist/request-record-utils.d.ts +25 -2
  614. package/dist/request-record-utils.d.ts.map +1 -1
  615. package/dist/request-record-utils.js +27 -2
  616. package/dist/request-record-utils.js.map +1 -1
  617. package/dist/response-mapping-provider.d.ts +9 -0
  618. package/dist/response-mapping-provider.d.ts.map +1 -0
  619. package/dist/response-mapping-provider.js +15 -0
  620. package/dist/response-mapping-provider.js.map +1 -0
  621. package/dist/response-mapping-utils.d.ts +46 -2
  622. package/dist/response-mapping-utils.d.ts.map +1 -1
  623. package/dist/response-mapping-utils.js +56 -0
  624. package/dist/response-mapping-utils.js.map +1 -1
  625. package/dist/response-mapping-utils.types.d.ts +5 -0
  626. package/dist/response-mapping-utils.types.d.ts.map +1 -0
  627. package/dist/response-mapping-utils.types.js +2 -0
  628. package/dist/response-mapping-utils.types.js.map +1 -0
  629. package/dist/response-mapping-validation.d.ts +13 -0
  630. package/dist/response-mapping-validation.d.ts.map +1 -0
  631. package/dist/response-mapping-validation.js +20 -0
  632. package/dist/response-mapping-validation.js.map +1 -0
  633. package/dist/response-mapping.d.ts +57 -8
  634. package/dist/response-mapping.d.ts.map +1 -1
  635. package/dist/response-mapping.js +114 -72
  636. package/dist/response-mapping.js.map +1 -1
  637. package/dist/response-mapping.types.d.ts +11 -0
  638. package/dist/response-mapping.types.d.ts.map +1 -0
  639. package/dist/response-mapping.types.js +2 -0
  640. package/dist/response-mapping.types.js.map +1 -0
  641. package/dist/route-middleware.d.ts +5 -0
  642. package/dist/route-middleware.d.ts.map +1 -1
  643. package/dist/route-middleware.js +29 -5
  644. package/dist/route-middleware.js.map +1 -1
  645. package/dist/rpc-identity.d.ts +13 -6
  646. package/dist/rpc-identity.d.ts.map +1 -1
  647. package/dist/rpc-identity.js +11 -0
  648. package/dist/rpc-identity.js.map +1 -1
  649. package/dist/rpc-identity.types.d.ts +9 -0
  650. package/dist/rpc-identity.types.d.ts.map +1 -0
  651. package/dist/rpc-identity.types.js +2 -0
  652. package/dist/rpc-identity.types.js.map +1 -0
  653. package/dist/rpc-middleware-trace.d.ts +14 -0
  654. package/dist/rpc-middleware-trace.d.ts.map +1 -1
  655. package/dist/rpc-middleware-trace.js +20 -4
  656. package/dist/rpc-middleware-trace.js.map +1 -1
  657. package/dist/rpc-response.d.ts +12 -0
  658. package/dist/rpc-response.d.ts.map +1 -1
  659. package/dist/rpc-response.js +12 -0
  660. package/dist/rpc-response.js.map +1 -1
  661. package/dist/rpc-route-types.d.ts +26 -1
  662. package/dist/rpc-route-types.d.ts.map +1 -1
  663. package/dist/rpc-route-types.js +37 -0
  664. package/dist/rpc-route-types.js.map +1 -1
  665. package/dist/rpc-websocket.d.ts +6 -1
  666. package/dist/rpc-websocket.d.ts.map +1 -1
  667. package/dist/rpc-websocket.js +20 -1
  668. package/dist/rpc-websocket.js.map +1 -1
  669. package/dist/rpc.d.ts +11 -3
  670. package/dist/rpc.d.ts.map +1 -1
  671. package/dist/rpc.js +43 -6
  672. package/dist/rpc.js.map +1 -1
  673. package/dist/rpc.types.d.ts +5 -0
  674. package/dist/rpc.types.d.ts.map +1 -0
  675. package/dist/rpc.types.js +2 -0
  676. package/dist/rpc.types.js.map +1 -0
  677. package/dist/static-file-service.d.ts +22 -0
  678. package/dist/static-file-service.d.ts.map +1 -0
  679. package/dist/static-file-service.js +43 -0
  680. package/dist/static-file-service.js.map +1 -0
  681. package/dist/static-files.d.ts +7 -3
  682. package/dist/static-files.d.ts.map +1 -1
  683. package/dist/static-files.js +32 -19
  684. package/dist/static-files.js.map +1 -1
  685. package/dist/static-files.types.d.ts +5 -0
  686. package/dist/static-files.types.d.ts.map +1 -0
  687. package/dist/static-files.types.js +2 -0
  688. package/dist/static-files.types.js.map +1 -0
  689. package/dist/transport-security-errors.d.ts +10 -0
  690. package/dist/transport-security-errors.d.ts.map +1 -0
  691. package/dist/transport-security-errors.js +14 -0
  692. package/dist/transport-security-errors.js.map +1 -0
  693. package/dist/transport-security.d.ts +49 -13
  694. package/dist/transport-security.d.ts.map +1 -1
  695. package/dist/transport-security.js +86 -15
  696. package/dist/transport-security.js.map +1 -1
  697. package/dist/transport-security.types.d.ts +11 -0
  698. package/dist/transport-security.types.d.ts.map +1 -0
  699. package/dist/transport-security.types.js +2 -0
  700. package/dist/transport-security.types.js.map +1 -0
  701. package/package.json +19 -16
@@ -1,21 +1,49 @@
1
+ import { Context, Effect, Layer, Schema, Stream } from "effect";
2
+ import { httpIterable, observeHttp } from "./http-effect.js";
3
+ import { TextStreamItem } from "./native-stream.schemas.js";
4
+ /** Converts native application output into a scoped, backpressured byte stream.
5
+ * @see tests/request-services.test.ts for checked early-return iterator cleanup.
6
+ */
7
+ export class NativeStreams extends Context.Service()("@relkit/runtime-hono/NativeStreams") {
8
+ }
9
+ /** Scope closure returns the underlying application iterator exactly once. */
10
+ export const NativeStreamsLive = Layer.succeed(NativeStreams, {
11
+ encode: (source, format) => Stream.fromAsyncIterable(source, (error) => error).pipe(Stream.mapEffect(Effect.fn("NativeStreams.encodeItem")((value) => observeHttp("stream.encode", Effect.try({ try: () => encodeItem(value, format), catch: (error) => error })))), Stream.withSpan("NativeStreams.encode")),
12
+ });
13
+ /** Encodes native iterator output with backpressure and the established response headers.
14
+ * @param source - Native iterable or declared request-key source.
15
+ * @param format - Declared SSE, text or byte representation.
16
+ * @returns A Response whose body owns backpressure and source-iterator cleanup.
17
+ */
1
18
  export async function nativeStreamResponse(source, format) {
2
- const iterator = source[Symbol.asyncIterator]();
19
+ const stream = Stream.unwrap(Effect.gen(function* () {
20
+ return (yield* NativeStreams).encode(source, format);
21
+ })).pipe(Stream.provide(NativeStreamsLive));
22
+ const iterator = httpIterable(stream)[Symbol.asyncIterator]();
3
23
  const first = await iterator.next();
4
24
  const body = new ReadableStream({
25
+ /** Queues the already-read first stream item without reading ahead.
26
+ * @param controller - Native response-body controller used to emit and terminate chunks.
27
+ * @returns Nothing; the first chunk is queued or the body is completed.
28
+ */
5
29
  start(controller) {
6
30
  if (first.done) {
7
31
  complete(controller, format);
8
32
  return;
9
33
  }
10
- controller.enqueue(encodeItem(first.value, format));
34
+ controller.enqueue(first.value);
11
35
  },
36
+ /** Reads one downstream-requested chunk and finalizes the body at its terminal condition.
37
+ * @param controller - Native response-body controller used to emit and terminate chunks.
38
+ * @returns A Promise resolving after one chunk is queued or the terminal body state is applied.
39
+ */
12
40
  async pull(controller) {
13
41
  try {
14
42
  const item = await iterator.next();
15
43
  if (item.done)
16
44
  complete(controller, format);
17
45
  else
18
- controller.enqueue(encodeItem(item.value, format));
46
+ controller.enqueue(item.value);
19
47
  }
20
48
  catch (error) {
21
49
  if (format === "sse") {
@@ -30,22 +58,36 @@ export async function nativeStreamResponse(source, format) {
30
58
  }
31
59
  }
32
60
  },
61
+ /** Returns the source iterator so cancellation releases its owned resources.
62
+ * @param reason - Cancellation or interruption reason supplied by the owning boundary.
63
+ * @returns The source-return completion Promise, or undefined when return is unavailable.
64
+ */
33
65
  cancel(reason) {
34
66
  return iterator.return?.(reason).then(() => undefined);
35
67
  },
36
68
  });
37
69
  return new Response(body, { headers: headers(format) });
38
70
  }
71
+ /** Closes the response body and emits the SSE completion frame when required.
72
+ * @param controller - Native response-body controller used to emit and terminate chunks.
73
+ * @param format - Declared SSE, text or byte representation.
74
+ * @returns Nothing; the requested update is applied to the owned state.
75
+ */
39
76
  function complete(controller, format) {
40
77
  if (format === "sse")
41
78
  controller.enqueue(encodeSse("relkit-complete", { ok: true }));
42
79
  controller.close();
43
80
  }
81
+ /** Enforces the declared native stream item representation before encoding bytes.
82
+ * @param value - Value inspected, validated or projected by this operation.
83
+ * @param format - Declared SSE, text or byte representation.
84
+ * @returns Encoded SSE or text bytes, or the original validated byte chunk.
85
+ */
44
86
  function encodeItem(value, format) {
45
87
  if (format === "sse")
46
88
  return encodeSse("relkit-item", value);
47
89
  if (format === "text") {
48
- if (typeof value !== "string") {
90
+ if (!Schema.is(TextStreamItem)(value)) {
49
91
  throw new TypeError("Native text streams require string items.");
50
92
  }
51
93
  return new TextEncoder().encode(value);
@@ -55,9 +97,18 @@ function encodeItem(value, format) {
55
97
  }
56
98
  return value;
57
99
  }
100
+ /** Encodes one named SSE event with a JSON payload.
101
+ * @param event - Event or record being projected into the target protocol.
102
+ * @param data - Public payload encoded into the resulting protocol frame.
103
+ * @returns UTF-8 bytes for one named SSE event and its JSON data.
104
+ */
58
105
  function encodeSse(event, data) {
59
106
  return new TextEncoder().encode(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`);
60
107
  }
108
+ /** Builds the native stream content-type and cache-control headers.
109
+ * @param format - Declared SSE, text or byte representation.
110
+ * @returns Content-type, no-transform cache and nosniff headers for the selected format.
111
+ */
61
112
  function headers(format) {
62
113
  return {
63
114
  "cache-control": "no-cache, no-transform",
@@ -1 +1 @@
1
- {"version":3,"file":"native-stream.js","sourceRoot":"","sources":["../src/native-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-stream.js","sourceRoot":"","sources":["../src/native-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Schema } from "effect";
2
+ /** Supported native response encodings; each retains its established wire representation. */
3
+ export declare const NativeStreamFormat: Schema.Literals<readonly ["sse", "text", "bytes"]>;
4
+ /** Text stream elements require strings; no implicit object coercion is allowed. */
5
+ export declare const TextStreamItem: Schema.String;
6
+ //# sourceMappingURL=native-stream.schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-stream.schemas.d.ts","sourceRoot":"","sources":["../src/native-stream.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,oDAA4C,CAAC;AAE5E,oFAAoF;AACpF,eAAO,MAAM,cAAc,eAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Schema } from "effect";
2
+ /** Supported native response encodings; each retains its established wire representation. */
3
+ export const NativeStreamFormat = Schema.Literals(["sse", "text", "bytes"]);
4
+ /** Text stream elements require strings; no implicit object coercion is allowed. */
5
+ export const TextStreamItem = Schema.String;
6
+ //# sourceMappingURL=native-stream.schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-stream.schemas.js","sourceRoot":"","sources":["../src/native-stream.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,6FAA6F;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5E,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type * as Schemas from "./native-stream.schemas.js";
2
+ /** The wire representation selected by a native streaming route. */
3
+ export type NativeStreamFormat = typeof Schemas.NativeStreamFormat.Type;
4
+ //# sourceMappingURL=native-stream.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-stream.types.d.ts","sourceRoot":"","sources":["../src/native-stream.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,4BAA4B,CAAC;AAE3D,oEAAoE;AACpE,MAAM,MAAM,kBAAkB,GAAG,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=native-stream.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-stream.types.js","sourceRoot":"","sources":["../src/native-stream.types.ts"],"names":[],"mappings":""}
@@ -1,17 +1,43 @@
1
- import type { MaybePromise } from "@relkit/contracts";
2
- import type { Store } from "hono-rate-limiter";
3
- export interface RateLimitCounter {
4
- readonly get: (key: string) => MaybePromise<unknown | undefined>;
5
- readonly increment: (key: string, delta: number, options?: {
6
- readonly ttlMs?: number;
7
- }) => MaybePromise<unknown>;
8
- readonly delete: (key: string) => MaybePromise<void>;
9
- }
10
- export type RateLimitStoreResolver = (storeId: string) => MaybePromise<RateLimitCounter>;
1
+ import { Context, Effect } from "effect";
2
+ import type { ClientRateLimitInfo, Store } from "hono-rate-limiter";
3
+ import { HttpBoundaryError } from "./http-effect.js";
4
+ import type { RateLimitStoreResolver } from "./rate-limit-store.types.js";
5
+ export type { RateLimitCounter, RateLimitStoreResolver } from "./rate-limit-store.types.js";
11
6
  export declare class RateLimitStoreError extends Error {
12
7
  readonly code: "RELKIT_RATE_LIMIT_STORE_UNAVAILABLE";
13
8
  constructor(message: string);
14
9
  }
15
- /** Adapts a numeric RELKIT cache provider to hono-rate-limiter's fixed-window store contract. */
10
+ /** Adapts a numeric RELKIT cache provider to hono-rate-limiter's fixed-window store contract.
11
+ * @param routeId - Stable route identifier included in the counter namespace.
12
+ * @param storeId - Declared provider binding supplying the counter store.
13
+ * @param windowMs - Positive fixed-window duration in milliseconds.
14
+ * @param resolve - Lazy callback resolving the configured counter provider.
15
+ * @param now - Clock callback used to locate the fixed counter window.
16
+ * @returns A native fixed-window store backed by the configured atomic counter provider.
17
+ */
16
18
  export declare function createRateLimitStore(routeId: string, storeId: string, windowMs: number, resolve: RateLimitStoreResolver, now?: () => number): Store;
19
+ declare const RateLimitWindow_base: Context.ServiceClass<RateLimitWindow, "@relkit/runtime-hono/RateLimitWindow", {
20
+ readonly get: (key: string) => Effect.Effect<ClientRateLimitInfo | undefined, HttpBoundaryError>;
21
+ readonly increment: (key: string) => Effect.Effect<ClientRateLimitInfo, HttpBoundaryError>;
22
+ readonly decrement: (key: string) => Effect.Effect<void, HttpBoundaryError>;
23
+ readonly reset: (key: string) => Effect.Effect<void, HttpBoundaryError>;
24
+ }>;
25
+ /** Numeric fixed-window operations sharing one lazily resolved provider. */
26
+ export declare class RateLimitWindow extends RateLimitWindow_base {
27
+ }
28
+ /** Allocates shared cache state without resolving the provider until the first operation.
29
+ * @param routeId - Stable route identifier included in the counter namespace.
30
+ * @param storeId - Declared provider binding supplying the counter store.
31
+ * @param windowMs - Positive fixed-window duration in milliseconds.
32
+ * @param resolve - Lazy callback resolving the configured counter provider.
33
+ * @param now - Clock callback used to locate the fixed counter window.
34
+ * @returns A lazy effect constructing operations that share one cached provider resolution.
35
+ * @see tests/request-services.test.ts for checked provider sharing and fixed-window TTL.
36
+ */
37
+ export declare function makeRateLimitWindow(routeId: string, storeId: string, windowMs: number, resolve: RateLimitStoreResolver, now: () => number): Effect.Effect<{
38
+ readonly get: (key: string) => Effect.Effect<ClientRateLimitInfo | undefined, HttpBoundaryError>;
39
+ readonly increment: (key: string) => Effect.Effect<ClientRateLimitInfo, HttpBoundaryError>;
40
+ readonly decrement: (key: string) => Effect.Effect<void, HttpBoundaryError>;
41
+ readonly reset: (key: string) => Effect.Effect<void, HttpBoundaryError>;
42
+ }, never, never>;
17
43
  //# sourceMappingURL=rate-limit-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit-store.d.ts","sourceRoot":"","sources":["../src/rate-limit-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAuB,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,SAAS,EAAE,CAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAClC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAEzF,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAG,qCAAqC,CAAU;gBAEnD,OAAO,EAAE,MAAM;CAI5B;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,EAC/B,GAAG,GAAE,MAAM,MAAiB,GAC3B,KAAK,CAgDP"}
1
+ {"version":3,"file":"rate-limit-store.d.ts","sourceRoot":"","sources":["../src/rate-limit-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAS,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAgB,iBAAiB,EAAwB,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAoB,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC5F,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE5F,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAG,qCAAqC,CAAU;gBAEnD,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,EAC/B,GAAG,GAAE,MAAM,MAAiB,GAC3B,KAAK,CAuBP;;kBA6CiB,CACZ,GAAG,EAAE,MAAM,KACR,MAAM,CAAC,MAAM,CAAC,mBAAmB,GAAG,SAAS,EAAE,iBAAiB,CAAC;wBAClD,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;wBACtE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;oBAC3D,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;;AAT3E,4EAA4E;AAC5E,qBAAa,eAAgB,SAAQ,oBAUM;CAAG;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,EAC/B,GAAG,EAAE,MAAM,MAAM;kBAvBD,CACZ,GAAG,EAAE,MAAM,KACR,MAAM,CAAC,MAAM,CAAC,mBAAmB,GAAG,SAAS,EAAE,iBAAiB,CAAC;wBAClD,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;wBACtE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;oBAC3D,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;iBA0F1E"}
@@ -1,3 +1,5 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ import { httpBoundary, HttpBoundaryError, observeHttp, runHttp } from "./http-effect.js";
1
3
  export class RateLimitStoreError extends Error {
2
4
  code = "RELKIT_RATE_LIMIT_STORE_UNAVAILABLE";
3
5
  constructor(message) {
@@ -5,55 +7,35 @@ export class RateLimitStoreError extends Error {
5
7
  this.name = "RateLimitStoreError";
6
8
  }
7
9
  }
8
- /** Adapts a numeric RELKIT cache provider to hono-rate-limiter's fixed-window store contract. */
10
+ /** Adapts a numeric RELKIT cache provider to hono-rate-limiter's fixed-window store contract.
11
+ * @param routeId - Stable route identifier included in the counter namespace.
12
+ * @param storeId - Declared provider binding supplying the counter store.
13
+ * @param windowMs - Positive fixed-window duration in milliseconds.
14
+ * @param resolve - Lazy callback resolving the configured counter provider.
15
+ * @param now - Clock callback used to locate the fixed counter window.
16
+ * @returns A native fixed-window store backed by the configured atomic counter provider.
17
+ */
9
18
  export function createRateLimitStore(routeId, storeId, windowMs, resolve, now = Date.now) {
10
- let pending;
11
- const counter = async () => {
12
- pending ??= Promise.resolve(resolve(storeId)).then(assertCounter);
13
- return pending;
14
- };
15
- const location = async (key) => {
16
- const current = now();
17
- const resetAt = (Math.floor(current / windowMs) + 1) * windowMs;
18
- const digest = await sha256(key);
19
- return {
20
- key: `relkit:rate-limit:${routeId}:${Math.floor(current / windowMs)}:${digest}`,
21
- resetAt,
22
- ttlMs: Math.max(1, resetAt - current),
23
- };
24
- };
25
- const read = async (key) => {
26
- const target = await location(key);
27
- const value = await (await counter()).get(target.key);
28
- if (value === undefined)
29
- return undefined;
30
- return { totalHits: numeric(value), resetTime: new Date(target.resetAt) };
31
- };
19
+ const service = Effect.runSync(makeRateLimitWindow(routeId, storeId, windowMs, resolve, now));
20
+ /** Run a native limiter call against this store's shared fixed-window service.
21
+ * @typeParam A - Result expected by the limiter operation.
22
+ * @param operation - Window operation selected by the native limiter adapter.
23
+ * @returns A Promise preserving the counter result or public store error.
24
+ */
25
+ const execute = (operation) => runHttp(Effect.flatMap(RateLimitWindow, operation).pipe(Effect.provide(Layer.succeed(RateLimitWindow, service))));
32
26
  return {
33
27
  localKeys: false,
34
28
  prefix: `relkit:rate-limit:${routeId}:`,
35
- get: read,
36
- increment: async (key) => {
37
- const target = await location(key);
38
- const value = await (await counter()).increment(target.key, 1, {
39
- ttlMs: target.ttlMs,
40
- });
41
- return { totalHits: numeric(value), resetTime: new Date(target.resetAt) };
42
- },
43
- decrement: async (key) => {
44
- // ponytail: skip modes are disabled; add provider-side conditional decrement if enabled later.
45
- const current = await read(key);
46
- if (current === undefined || current.totalHits <= 0)
47
- return;
48
- const target = await location(key);
49
- await (await counter()).increment(target.key, -1, { ttlMs: target.ttlMs });
50
- },
51
- resetKey: async (key) => {
52
- const target = await location(key);
53
- await (await counter()).delete(target.key);
54
- },
29
+ get: (key) => execute((window) => window.get(key)),
30
+ increment: (key) => execute((window) => window.increment(key)),
31
+ decrement: (key) => execute((window) => window.decrement(key)),
32
+ resetKey: (key) => execute((window) => window.reset(key)),
55
33
  };
56
34
  }
35
+ /** Rejects provider values that cannot implement atomic counter operations.
36
+ * @param value - Value inspected, validated or projected by this operation.
37
+ * @returns The same provider after its required counter methods have been verified.
38
+ */
57
39
  function assertCounter(value) {
58
40
  if (value === null ||
59
41
  typeof value !== "object" ||
@@ -64,14 +46,97 @@ function assertCounter(value) {
64
46
  }
65
47
  return value;
66
48
  }
49
+ /** Validates a provider counter result without coercing arbitrary values.
50
+ * @param value - Value inspected, validated or projected by this operation.
51
+ * @returns The validated nonnegative safe integer; malformed counters throw RateLimitStoreError.
52
+ */
67
53
  function numeric(value) {
68
54
  if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) {
69
55
  throw new RateLimitStoreError("Rate-limit cache provider returned an invalid counter.");
70
56
  }
71
57
  return value;
72
58
  }
59
+ /** Hashes a request key before it is persisted in a rate-limit counter name.
60
+ * @param value - Value inspected, validated or projected by this operation.
61
+ * @returns A Promise for the lowercase hexadecimal SHA-256 digest of the request key.
62
+ */
73
63
  async function sha256(value) {
74
64
  const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(value));
75
65
  return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
76
66
  }
67
+ /** Numeric fixed-window operations sharing one lazily resolved provider. */
68
+ export class RateLimitWindow extends Context.Service()("@relkit/runtime-hono/RateLimitWindow") {
69
+ }
70
+ /** Allocates shared cache state without resolving the provider until the first operation.
71
+ * @param routeId - Stable route identifier included in the counter namespace.
72
+ * @param storeId - Declared provider binding supplying the counter store.
73
+ * @param windowMs - Positive fixed-window duration in milliseconds.
74
+ * @param resolve - Lazy callback resolving the configured counter provider.
75
+ * @param now - Clock callback used to locate the fixed counter window.
76
+ * @returns A lazy effect constructing operations that share one cached provider resolution.
77
+ * @see tests/request-services.test.ts for checked provider sharing and fixed-window TTL.
78
+ */
79
+ export function makeRateLimitWindow(routeId, storeId, windowMs, resolve, now) {
80
+ return Effect.gen(function* () {
81
+ const counter = yield* Effect.cached(httpBoundary("rateLimit.resolve", async () => assertCounter(await resolve(storeId))));
82
+ /** Locate the active fixed window without persisting the raw request key.
83
+ * @param key - Request-derived limiter key to hash into the counter namespace.
84
+ * @returns The hashed provider key, reset timestamp and remaining positive TTL.
85
+ */
86
+ const location = Effect.fn("RateLimitWindow.location")(function* (key) {
87
+ const current = now();
88
+ const resetAt = (Math.floor(current / windowMs) + 1) * windowMs;
89
+ const digest = yield* httpBoundary("rateLimit.digest", () => sha256(key));
90
+ return {
91
+ key: `relkit:rate-limit:${routeId}:${Math.floor(current / windowMs)}:${digest}`,
92
+ resetAt,
93
+ ttlMs: Math.max(1, resetAt - current),
94
+ };
95
+ });
96
+ /** Read and validate the current window's provider counter.
97
+ * @param key - Request-derived limiter key selecting this fixed window.
98
+ * @returns Current hit count/reset time, or undefined when no counter exists.
99
+ */
100
+ const read = Effect.fn("RateLimitWindow.get")(function* (key) {
101
+ const target = yield* location(key);
102
+ const provider = yield* counter;
103
+ const value = yield* httpBoundary("rateLimit.get", async () => provider.get(target.key));
104
+ if (value === undefined)
105
+ return undefined;
106
+ return { totalHits: yield* checkedCount(value), resetTime: new Date(target.resetAt) };
107
+ });
108
+ return RateLimitWindow.of({
109
+ get: (key) => observeHttp("rateLimit.get", read(key)),
110
+ increment: Effect.fn("RateLimitWindow.increment")((key) => observeHttp("rateLimit.increment", Effect.gen(function* () {
111
+ const target = yield* location(key);
112
+ const provider = yield* counter;
113
+ const value = yield* httpBoundary("rateLimit.increment", async () => provider.increment(target.key, 1, { ttlMs: target.ttlMs }));
114
+ return { totalHits: yield* checkedCount(value), resetTime: new Date(target.resetAt) };
115
+ }))),
116
+ decrement: Effect.fn("RateLimitWindow.decrement")((key) => observeHttp("rateLimit.decrement", Effect.gen(function* () {
117
+ const current = yield* read(key);
118
+ if (current === undefined || current.totalHits <= 0)
119
+ return;
120
+ const target = yield* location(key);
121
+ const provider = yield* counter;
122
+ yield* httpBoundary("rateLimit.decrement", async () => provider.increment(target.key, -1, { ttlMs: target.ttlMs }));
123
+ }))),
124
+ reset: Effect.fn("RateLimitWindow.reset")((key) => observeHttp("rateLimit.reset", Effect.gen(function* () {
125
+ const target = yield* location(key);
126
+ const provider = yield* counter;
127
+ yield* httpBoundary("rateLimit.delete", async () => provider.delete(target.key));
128
+ }))),
129
+ });
130
+ });
131
+ }
132
+ /** Checks a foreign provider value while preserving the public store error type.
133
+ * @param value - Value inspected, validated or projected by this operation.
134
+ * @returns An effect yielding the validated count or wrapping the public store error at the HTTP boundary.
135
+ */
136
+ function checkedCount(value) {
137
+ return Effect.try({
138
+ try: () => numeric(value),
139
+ catch: (cause) => new HttpBoundaryError({ operation: "rateLimit.counter", cause }),
140
+ });
141
+ }
77
142
  //# sourceMappingURL=rate-limit-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit-store.js","sourceRoot":"","sources":["../src/rate-limit-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limit-store.js","sourceRoot":"","sources":["../src/rate-limit-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { MaybePromise } from "@relkit/contracts";
2
+ /** Contract for rate limit counter used by rate limit store. */
3
+ export interface RateLimitCounter {
4
+ readonly get: (key: string) => MaybePromise<unknown | undefined>;
5
+ readonly increment: (key: string, delta: number, options?: {
6
+ readonly ttlMs?: number;
7
+ }) => MaybePromise<unknown>;
8
+ readonly delete: (key: string) => MaybePromise<void>;
9
+ }
10
+ /** Contract for rate limit store resolver used by rate limit store. */
11
+ export type RateLimitStoreResolver = (storeId: string) => MaybePromise<RateLimitCounter>;
12
+ /** Contract for window location used by rate limit store. */
13
+ export interface WindowLocation {
14
+ readonly key: string;
15
+ readonly resetAt: number;
16
+ readonly ttlMs: number;
17
+ }
18
+ //# sourceMappingURL=rate-limit-store.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-store.types.d.ts","sourceRoot":"","sources":["../src/rate-limit-store.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,SAAS,EAAE,CAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAClC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,uEAAuE;AACvE,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAEzF,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rate-limit-store.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-store.types.js","sourceRoot":"","sources":["../src/rate-limit-store.types.ts"],"names":[],"mappings":""}
@@ -1,4 +1,13 @@
1
1
  import type { HttpTriggerRegistration } from "@relkit/graph";
2
2
  import type { HttpRequestState } from "./middleware.js";
3
+ /** Records the limiter's duration, response status and blocked outcome.
4
+ * @param trigger - Registered route declaration with its target and transport contract.
5
+ * @param state - State owned by the current request or operation.
6
+ * @param startedAt - Operation start timestamp used for elapsed-time telemetry.
7
+ * @param status - HTTP status associated with the observed response or lifecycle event.
8
+ * @param blocked - Whether the limiter rejected the request.
9
+ * @param continued - Whether control reached the downstream handler.
10
+ * @returns Nothing; the requested update is applied to the owned state.
11
+ */
3
12
  export declare function recordRateLimitResult(trigger: HttpTriggerRegistration, state: HttpRequestState | undefined, startedAt: number, status: number, blocked: boolean, continued: boolean): void;
4
13
  //# sourceMappingURL=rate-limit-telemetry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit-telemetry.d.ts","sourceRoot":"","sources":["../src/rate-limit-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,GACjB,IAAI,CAcN"}
1
+ {"version":3,"file":"rate-limit-telemetry.d.ts","sourceRoot":"","sources":["../src/rate-limit-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,GACjB,IAAI,CAcN"}
@@ -1,3 +1,12 @@
1
+ /** Records the limiter's duration, response status and blocked outcome.
2
+ * @param trigger - Registered route declaration with its target and transport contract.
3
+ * @param state - State owned by the current request or operation.
4
+ * @param startedAt - Operation start timestamp used for elapsed-time telemetry.
5
+ * @param status - HTTP status associated with the observed response or lifecycle event.
6
+ * @param blocked - Whether the limiter rejected the request.
7
+ * @param continued - Whether control reached the downstream handler.
8
+ * @returns Nothing; the requested update is applied to the owned state.
9
+ */
1
10
  export function recordRateLimitResult(trigger, state, startedAt, status, blocked, continued) {
2
11
  const builder = state?.requestRecord;
3
12
  builder?.setRoute(trigger.id, trigger.targetFunctionId);
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit-telemetry.js","sourceRoot":"","sources":["../src/rate-limit-telemetry.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CACnC,OAAgC,EAChC,KAAmC,EACnC,SAAiB,EACjB,MAAc,EACd,OAAgB,EAChB,SAAkB;IAElB,MAAM,OAAO,GAAG,KAAK,EAAE,aAAa,CAAC;IACrC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxD,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,OAAO,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAChG,OAAO,EAAE,GAAG,CAAC;QACX,IAAI,EAAE,YAAY;QAClB,EAAE,EAAE,SAAS;QACb,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC/C,QAAQ,EAAE,mBAAmB;QAC7B,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;KAChD,CAAC,CAAC;IACH,IAAI,OAAO;QAAE,OAAO,EAAE,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"rate-limit-telemetry.js","sourceRoot":"","sources":["../src/rate-limit-telemetry.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAgC,EAChC,KAAmC,EACnC,SAAiB,EACjB,MAAc,EACd,OAAgB,EAChB,SAAkB;IAElB,MAAM,OAAO,GAAG,KAAK,EAAE,aAAa,CAAC;IACrC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxD,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,OAAO,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAChG,OAAO,EAAE,GAAG,CAAC;QACX,IAAI,EAAE,YAAY;QAClB,EAAE,EAAE,SAAS;QACb,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC/C,QAAQ,EAAE,mBAAmB;QAC7B,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;KAChD,CAAC,CAAC;IACH,IAAI,OAAO;QAAE,OAAO,EAAE,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACnE,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import type { HttpTriggerRegistration } from "@relkit/graph";
2
- import type { Context } from "hono";
3
2
  import type { RouteMaterializationOptions } from "./materialize-routes.js";
4
- import { type RateLimitStoreResolver } from "./rate-limit-store.js";
3
+ import type { RouteHandler } from "./rate-limit.types.js";
4
+ export type { RateLimitRuntimeOptions } from "./rate-limit.types.js";
5
5
  export declare const ROUTE_MIDDLEWARE_ORDER: readonly ["rate-limit", "declared-middleware", "request-mapping", "target"];
6
- export interface RateLimitRuntimeOptions {
7
- readonly resolveStore?: RateLimitStoreResolver;
8
- }
9
- type RouteHandler = (context: Context) => Promise<Response>;
6
+ /** Applies the declared fixed-window policy before invoking a route handler.
7
+ * @param trigger - Registered route declaration with its target and transport contract.
8
+ * @param options - Application dependencies and configuration for this domain.
9
+ * @param handler - Native handler executed within the configured boundary.
10
+ * @returns The original handler without a policy, or a handler enforcing the declared limit.
11
+ */
10
12
  export declare function withRateLimit(trigger: HttpTriggerRegistration, options: RouteMaterializationOptions, handler: RouteHandler): RouteHandler;
11
- export {};
12
13
  //# sourceMappingURL=rate-limit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG1F,eAAO,MAAM,sBAAsB,6EAKxB,CAAC;AAEZ,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;CAChD;AAED,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAG5D,wBAAgB,aAAa,CAC3B,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,YAAY,GACpB,YAAY,CA6Dd"}
1
+ {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAI7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAI3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,eAAO,MAAM,sBAAsB,6EAKxB,CAAC;AAGZ;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,YAAY,GACpB,YAAY,CA6Dd"}