raffel 1.0.6 → 1.0.7

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 (513) hide show
  1. package/README.md +80 -33
  2. package/dist/adapters/grpc.d.ts +2 -2
  3. package/dist/adapters/grpc.d.ts.map +1 -1
  4. package/dist/adapters/grpc.js +37 -7
  5. package/dist/adapters/grpc.js.map +1 -1
  6. package/dist/adapters/http.d.ts +2 -2
  7. package/dist/adapters/http.d.ts.map +1 -1
  8. package/dist/adapters/http.js +56 -2
  9. package/dist/adapters/http.js.map +1 -1
  10. package/dist/adapters/inbound/grpc.d.ts +9 -0
  11. package/dist/adapters/inbound/grpc.d.ts.map +1 -0
  12. package/dist/adapters/inbound/grpc.js +8 -0
  13. package/dist/adapters/inbound/grpc.js.map +1 -0
  14. package/dist/adapters/inbound/http.d.ts +9 -0
  15. package/dist/adapters/inbound/http.d.ts.map +1 -0
  16. package/dist/adapters/inbound/http.js +8 -0
  17. package/dist/adapters/inbound/http.js.map +1 -0
  18. package/dist/adapters/inbound/index.d.ts +22 -0
  19. package/dist/adapters/inbound/index.d.ts.map +1 -0
  20. package/dist/adapters/inbound/index.js +22 -0
  21. package/dist/adapters/inbound/index.js.map +1 -0
  22. package/dist/adapters/inbound/jsonrpc.d.ts +9 -0
  23. package/dist/adapters/inbound/jsonrpc.d.ts.map +1 -0
  24. package/dist/adapters/inbound/jsonrpc.js +8 -0
  25. package/dist/adapters/inbound/jsonrpc.js.map +1 -0
  26. package/dist/adapters/inbound/tcp.d.ts +9 -0
  27. package/dist/adapters/inbound/tcp.d.ts.map +1 -0
  28. package/dist/adapters/inbound/tcp.js +8 -0
  29. package/dist/adapters/inbound/tcp.js.map +1 -0
  30. package/dist/adapters/inbound/udp.d.ts +9 -0
  31. package/dist/adapters/inbound/udp.d.ts.map +1 -0
  32. package/dist/adapters/inbound/udp.js +8 -0
  33. package/dist/adapters/inbound/udp.js.map +1 -0
  34. package/dist/adapters/inbound/utils/connection-filter.d.ts +9 -0
  35. package/dist/adapters/inbound/utils/connection-filter.d.ts.map +1 -0
  36. package/dist/adapters/inbound/utils/connection-filter.js +8 -0
  37. package/dist/adapters/inbound/utils/connection-filter.js.map +1 -0
  38. package/dist/adapters/inbound/websocket.d.ts +9 -0
  39. package/dist/adapters/inbound/websocket.d.ts.map +1 -0
  40. package/dist/adapters/inbound/websocket.js +8 -0
  41. package/dist/adapters/inbound/websocket.js.map +1 -0
  42. package/dist/adapters/index.d.ts +12 -0
  43. package/dist/adapters/index.d.ts.map +1 -1
  44. package/dist/adapters/index.js +13 -0
  45. package/dist/adapters/index.js.map +1 -1
  46. package/dist/adapters/jsonrpc.d.ts.map +1 -1
  47. package/dist/adapters/jsonrpc.js +39 -5
  48. package/dist/adapters/jsonrpc.js.map +1 -1
  49. package/dist/adapters/outbound/cache/file.d.ts +6 -0
  50. package/dist/adapters/outbound/cache/file.d.ts.map +1 -0
  51. package/dist/adapters/outbound/cache/file.js +6 -0
  52. package/dist/adapters/outbound/cache/file.js.map +1 -0
  53. package/dist/adapters/outbound/cache/index.d.ts +9 -0
  54. package/dist/adapters/outbound/cache/index.d.ts.map +1 -0
  55. package/dist/adapters/outbound/cache/index.js +9 -0
  56. package/dist/adapters/outbound/cache/index.js.map +1 -0
  57. package/dist/adapters/outbound/cache/memory.d.ts +6 -0
  58. package/dist/adapters/outbound/cache/memory.d.ts.map +1 -0
  59. package/dist/adapters/outbound/cache/memory.js +6 -0
  60. package/dist/adapters/outbound/cache/memory.js.map +1 -0
  61. package/dist/adapters/outbound/cache/redis.d.ts +6 -0
  62. package/dist/adapters/outbound/cache/redis.d.ts.map +1 -0
  63. package/dist/adapters/outbound/cache/redis.js +6 -0
  64. package/dist/adapters/outbound/cache/redis.js.map +1 -0
  65. package/dist/adapters/outbound/index.d.ts +15 -0
  66. package/dist/adapters/outbound/index.d.ts.map +1 -0
  67. package/dist/adapters/outbound/index.js +17 -0
  68. package/dist/adapters/outbound/index.js.map +1 -0
  69. package/dist/adapters/outbound/logger/index.d.ts +7 -0
  70. package/dist/adapters/outbound/logger/index.d.ts.map +1 -0
  71. package/dist/adapters/outbound/logger/index.js +7 -0
  72. package/dist/adapters/outbound/logger/index.js.map +1 -0
  73. package/dist/adapters/outbound/logger/pino.d.ts +12 -0
  74. package/dist/adapters/outbound/logger/pino.d.ts.map +1 -0
  75. package/dist/adapters/outbound/logger/pino.js +58 -0
  76. package/dist/adapters/outbound/logger/pino.js.map +1 -0
  77. package/dist/adapters/outbound/rate-limit/filesystem.d.ts +6 -0
  78. package/dist/adapters/outbound/rate-limit/filesystem.d.ts.map +1 -0
  79. package/dist/adapters/outbound/rate-limit/filesystem.js +6 -0
  80. package/dist/adapters/outbound/rate-limit/filesystem.js.map +1 -0
  81. package/dist/adapters/outbound/rate-limit/index.d.ts +10 -0
  82. package/dist/adapters/outbound/rate-limit/index.d.ts.map +1 -0
  83. package/dist/adapters/outbound/rate-limit/index.js +10 -0
  84. package/dist/adapters/outbound/rate-limit/index.js.map +1 -0
  85. package/dist/adapters/outbound/rate-limit/memory.d.ts +8 -0
  86. package/dist/adapters/outbound/rate-limit/memory.d.ts.map +1 -0
  87. package/dist/adapters/outbound/rate-limit/memory.js +8 -0
  88. package/dist/adapters/outbound/rate-limit/memory.js.map +1 -0
  89. package/dist/adapters/outbound/rate-limit/redis.d.ts +6 -0
  90. package/dist/adapters/outbound/rate-limit/redis.d.ts.map +1 -0
  91. package/dist/adapters/outbound/rate-limit/redis.js +6 -0
  92. package/dist/adapters/outbound/rate-limit/redis.js.map +1 -0
  93. package/dist/adapters/outbound/rate-limit/s3db.d.ts +6 -0
  94. package/dist/adapters/outbound/rate-limit/s3db.d.ts.map +1 -0
  95. package/dist/adapters/outbound/rate-limit/s3db.js +6 -0
  96. package/dist/adapters/outbound/rate-limit/s3db.js.map +1 -0
  97. package/dist/adapters/outbound/session/index.d.ts +12 -0
  98. package/dist/adapters/outbound/session/index.d.ts.map +1 -0
  99. package/dist/adapters/outbound/session/index.js +9 -0
  100. package/dist/adapters/outbound/session/index.js.map +1 -0
  101. package/dist/adapters/outbound/session/memory.d.ts +9 -0
  102. package/dist/adapters/outbound/session/memory.d.ts.map +1 -0
  103. package/dist/adapters/outbound/session/memory.js +8 -0
  104. package/dist/adapters/outbound/session/memory.js.map +1 -0
  105. package/dist/adapters/outbound/session/redis.d.ts +9 -0
  106. package/dist/adapters/outbound/session/redis.d.ts.map +1 -0
  107. package/dist/adapters/outbound/session/redis.js +8 -0
  108. package/dist/adapters/outbound/session/redis.js.map +1 -0
  109. package/dist/adapters/outbound/session/s3db.d.ts +9 -0
  110. package/dist/adapters/outbound/session/s3db.d.ts.map +1 -0
  111. package/dist/adapters/outbound/session/s3db.js +8 -0
  112. package/dist/adapters/outbound/session/s3db.js.map +1 -0
  113. package/dist/adapters/tcp.d.ts +2 -2
  114. package/dist/adapters/tcp.d.ts.map +1 -1
  115. package/dist/adapters/tcp.js +16 -3
  116. package/dist/adapters/tcp.js.map +1 -1
  117. package/dist/adapters/udp.d.ts +2 -2
  118. package/dist/adapters/udp.d.ts.map +1 -1
  119. package/dist/adapters/udp.js +16 -4
  120. package/dist/adapters/udp.js.map +1 -1
  121. package/dist/adapters/websocket.d.ts +2 -2
  122. package/dist/adapters/websocket.d.ts.map +1 -1
  123. package/dist/adapters/websocket.js +33 -9
  124. package/dist/adapters/websocket.js.map +1 -1
  125. package/dist/application/config-preview.d.ts +147 -0
  126. package/dist/application/config-preview.d.ts.map +1 -0
  127. package/dist/application/config-preview.js +122 -0
  128. package/dist/application/config-preview.js.map +1 -0
  129. package/dist/application/index.d.ts +13 -0
  130. package/dist/application/index.d.ts.map +1 -0
  131. package/dist/application/index.js +13 -0
  132. package/dist/application/index.js.map +1 -0
  133. package/dist/application/registration.d.ts +71 -0
  134. package/dist/application/registration.d.ts.map +1 -0
  135. package/dist/application/registration.js +99 -0
  136. package/dist/application/registration.js.map +1 -0
  137. package/dist/application/runtime-preview.d.ts +67 -0
  138. package/dist/application/runtime-preview.d.ts.map +1 -0
  139. package/dist/application/runtime-preview.js +43 -0
  140. package/dist/application/runtime-preview.js.map +1 -0
  141. package/dist/bootstrap/config-normalization.d.ts +10 -0
  142. package/dist/bootstrap/config-normalization.d.ts.map +1 -0
  143. package/dist/bootstrap/config-normalization.js +14 -0
  144. package/dist/bootstrap/config-normalization.js.map +1 -0
  145. package/dist/bootstrap/create-server.d.ts +15 -0
  146. package/dist/bootstrap/create-server.d.ts.map +1 -0
  147. package/dist/bootstrap/create-server.js +17 -0
  148. package/dist/bootstrap/create-server.js.map +1 -0
  149. package/dist/bootstrap/index.d.ts +11 -0
  150. package/dist/bootstrap/index.d.ts.map +1 -0
  151. package/dist/bootstrap/index.js +13 -0
  152. package/dist/bootstrap/index.js.map +1 -0
  153. package/dist/bootstrap/protocol-wiring.d.ts +13 -0
  154. package/dist/bootstrap/protocol-wiring.d.ts.map +1 -0
  155. package/dist/bootstrap/protocol-wiring.js +11 -0
  156. package/dist/bootstrap/protocol-wiring.js.map +1 -0
  157. package/dist/channels/channel-manager.d.ts +2 -1
  158. package/dist/channels/channel-manager.d.ts.map +1 -1
  159. package/dist/channels/channel-manager.js +52 -19
  160. package/dist/channels/channel-manager.js.map +1 -1
  161. package/dist/core/registry.d.ts +4 -0
  162. package/dist/core/registry.d.ts.map +1 -1
  163. package/dist/core/registry.js +23 -3
  164. package/dist/core/registry.js.map +1 -1
  165. package/dist/core/router.d.ts.map +1 -1
  166. package/dist/core/router.js +61 -10
  167. package/dist/core/router.js.map +1 -1
  168. package/dist/docs/generators/code-samples.d.ts.map +1 -1
  169. package/dist/docs/generators/code-samples.js +7 -75
  170. package/dist/docs/generators/code-samples.js.map +1 -1
  171. package/dist/docs/generators/grpc-generator.js +2 -2
  172. package/dist/docs/generators/grpc-generator.js.map +1 -1
  173. package/dist/docs/generators/http-generator.js +3 -2
  174. package/dist/docs/generators/http-generator.js.map +1 -1
  175. package/dist/docs/generators/index.d.ts +1 -1
  176. package/dist/docs/generators/index.d.ts.map +1 -1
  177. package/dist/docs/generators/index.js +1 -1
  178. package/dist/docs/generators/index.js.map +1 -1
  179. package/dist/docs/generators/jsonrpc-generator.js +2 -2
  180. package/dist/docs/generators/jsonrpc-generator.js.map +1 -1
  181. package/dist/docs/generators/schema-converter.d.ts +3 -3
  182. package/dist/docs/generators/schema-converter.d.ts.map +1 -1
  183. package/dist/docs/generators/schema-converter.js +8 -60
  184. package/dist/docs/generators/schema-converter.js.map +1 -1
  185. package/dist/docs/generators/streams-generator.js +2 -2
  186. package/dist/docs/generators/streams-generator.js.map +1 -1
  187. package/dist/docs/generators/tcp-generator.js +2 -2
  188. package/dist/docs/generators/tcp-generator.js.map +1 -1
  189. package/dist/docs/generators/udp-generator.js +2 -2
  190. package/dist/docs/generators/udp-generator.js.map +1 -1
  191. package/dist/docs/generators/websocket-generator.js +3 -3
  192. package/dist/docs/generators/websocket-generator.js.map +1 -1
  193. package/dist/docs/index.d.ts +1 -1
  194. package/dist/docs/index.d.ts.map +1 -1
  195. package/dist/docs/index.js +1 -1
  196. package/dist/docs/index.js.map +1 -1
  197. package/dist/docs/openapi/generator.d.ts +2 -0
  198. package/dist/docs/openapi/generator.d.ts.map +1 -1
  199. package/dist/docs/openapi/generator.js +16 -51
  200. package/dist/docs/openapi/generator.js.map +1 -1
  201. package/dist/dx/index.d.ts +2 -0
  202. package/dist/dx/index.d.ts.map +1 -1
  203. package/dist/dx/index.js +1 -0
  204. package/dist/dx/index.js.map +1 -1
  205. package/dist/dx/scaffold/index.d.ts +32 -0
  206. package/dist/dx/scaffold/index.d.ts.map +1 -0
  207. package/dist/dx/scaffold/index.js +471 -0
  208. package/dist/dx/scaffold/index.js.map +1 -0
  209. package/dist/graphql/adapter.d.ts.map +1 -1
  210. package/dist/graphql/adapter.js +58 -6
  211. package/dist/graphql/adapter.js.map +1 -1
  212. package/dist/graphql/schema-generator.d.ts +2 -2
  213. package/dist/graphql/schema-generator.d.ts.map +1 -1
  214. package/dist/graphql/schema-generator.js +228 -215
  215. package/dist/graphql/schema-generator.js.map +1 -1
  216. package/dist/http/app.d.ts +9 -4
  217. package/dist/http/app.d.ts.map +1 -1
  218. package/dist/http/app.js +125 -50
  219. package/dist/http/app.js.map +1 -1
  220. package/dist/http/context.d.ts +8 -1
  221. package/dist/http/context.d.ts.map +1 -1
  222. package/dist/http/context.js +2 -1
  223. package/dist/http/context.js.map +1 -1
  224. package/dist/http/cookie.d.ts +2 -2
  225. package/dist/http/cookie.js +1 -1
  226. package/dist/http/cors.d.ts +1 -1
  227. package/dist/http/cors.js +1 -1
  228. package/dist/http/guards.d.ts.map +1 -1
  229. package/dist/http/guards.js +38 -28
  230. package/dist/http/guards.js.map +1 -1
  231. package/dist/http/index.d.ts +1 -1
  232. package/dist/http/index.js +2 -2
  233. package/dist/http/index.js.map +1 -1
  234. package/dist/http/stream-auth.d.ts +1 -1
  235. package/dist/http/stream-auth.d.ts.map +1 -1
  236. package/dist/http/stream-auth.js +6 -5
  237. package/dist/http/stream-auth.js.map +1 -1
  238. package/dist/index.d.ts +23 -7
  239. package/dist/index.d.ts.map +1 -1
  240. package/dist/index.js +22 -3
  241. package/dist/index.js.map +1 -1
  242. package/dist/inspect/contracts.d.ts +47 -0
  243. package/dist/inspect/contracts.d.ts.map +1 -0
  244. package/dist/inspect/contracts.js +237 -0
  245. package/dist/inspect/contracts.js.map +1 -0
  246. package/dist/inspect/format-utils.d.ts +18 -0
  247. package/dist/inspect/format-utils.d.ts.map +1 -0
  248. package/dist/inspect/format-utils.js +55 -0
  249. package/dist/inspect/format-utils.js.map +1 -0
  250. package/dist/inspect/index.d.ts +13 -0
  251. package/dist/inspect/index.d.ts.map +1 -0
  252. package/dist/inspect/index.js +8 -0
  253. package/dist/inspect/index.js.map +1 -0
  254. package/dist/inspect/loader.d.ts +13 -0
  255. package/dist/inspect/loader.d.ts.map +1 -0
  256. package/dist/inspect/loader.js +115 -0
  257. package/dist/inspect/loader.js.map +1 -0
  258. package/dist/inspect/playground-html.d.ts +8 -0
  259. package/dist/inspect/playground-html.d.ts.map +1 -0
  260. package/dist/inspect/playground-html.js +381 -0
  261. package/dist/inspect/playground-html.js.map +1 -0
  262. package/dist/inspect/playground-invokers.d.ts +37 -0
  263. package/dist/inspect/playground-invokers.d.ts.map +1 -0
  264. package/dist/inspect/playground-invokers.js +950 -0
  265. package/dist/inspect/playground-invokers.js.map +1 -0
  266. package/dist/inspect/playground.d.ts +97 -0
  267. package/dist/inspect/playground.d.ts.map +1 -0
  268. package/dist/inspect/playground.js +412 -0
  269. package/dist/inspect/playground.js.map +1 -0
  270. package/dist/inspect/reports.d.ts +52 -0
  271. package/dist/inspect/reports.d.ts.map +1 -0
  272. package/dist/inspect/reports.js +400 -0
  273. package/dist/inspect/reports.js.map +1 -0
  274. package/dist/inspect/runtime-graph.d.ts +52 -0
  275. package/dist/inspect/runtime-graph.d.ts.map +1 -0
  276. package/dist/inspect/runtime-graph.js +739 -0
  277. package/dist/inspect/runtime-graph.js.map +1 -0
  278. package/dist/inspect/schema-samples.d.ts +18 -0
  279. package/dist/inspect/schema-samples.d.ts.map +1 -0
  280. package/dist/inspect/schema-samples.js +137 -0
  281. package/dist/inspect/schema-samples.js.map +1 -0
  282. package/dist/inspect/types.d.ts +146 -0
  283. package/dist/inspect/types.d.ts.map +1 -0
  284. package/dist/inspect/types.js +2 -0
  285. package/dist/inspect/types.js.map +1 -0
  286. package/dist/mcp/cli.d.ts +11 -12
  287. package/dist/mcp/cli.d.ts.map +1 -1
  288. package/dist/mcp/cli.js +303 -65
  289. package/dist/mcp/cli.js.map +1 -1
  290. package/dist/mcp/docs/patterns.d.ts.map +1 -1
  291. package/dist/mcp/docs/patterns.js +82 -29
  292. package/dist/mcp/docs/patterns.js.map +1 -1
  293. package/dist/mcp/docs/quickstart.d.ts +1 -1
  294. package/dist/mcp/docs/quickstart.d.ts.map +1 -1
  295. package/dist/mcp/docs/quickstart.js +65 -25
  296. package/dist/mcp/docs/quickstart.js.map +1 -1
  297. package/dist/mcp/resources/index.d.ts.map +1 -1
  298. package/dist/mcp/resources/index.js +82 -5
  299. package/dist/mcp/resources/index.js.map +1 -1
  300. package/dist/mcp/tools/definitions.d.ts.map +1 -1
  301. package/dist/mcp/tools/definitions.js +36 -0
  302. package/dist/mcp/tools/definitions.js.map +1 -1
  303. package/dist/mcp/tools/handlers.d.ts.map +1 -1
  304. package/dist/mcp/tools/handlers.js +148 -12
  305. package/dist/mcp/tools/handlers.js.map +1 -1
  306. package/dist/middleware/auth.d.ts.map +1 -1
  307. package/dist/middleware/auth.js +3 -2
  308. package/dist/middleware/auth.js.map +1 -1
  309. package/dist/mock-server/cli.d.ts +14 -0
  310. package/dist/mock-server/cli.d.ts.map +1 -0
  311. package/dist/mock-server/cli.js +314 -0
  312. package/dist/mock-server/cli.js.map +1 -0
  313. package/dist/mock-server/fake-data.d.ts +14 -0
  314. package/dist/mock-server/fake-data.d.ts.map +1 -0
  315. package/dist/mock-server/fake-data.js +21 -0
  316. package/dist/mock-server/fake-data.js.map +1 -0
  317. package/dist/mock-server/index.d.ts +69 -0
  318. package/dist/mock-server/index.d.ts.map +1 -0
  319. package/dist/mock-server/index.js +400 -0
  320. package/dist/mock-server/index.js.map +1 -0
  321. package/dist/mock-server/route-extractor.d.ts +40 -0
  322. package/dist/mock-server/route-extractor.d.ts.map +1 -0
  323. package/dist/mock-server/route-extractor.js +211 -0
  324. package/dist/mock-server/route-extractor.js.map +1 -0
  325. package/dist/mock-server/types.d.ts +64 -0
  326. package/dist/mock-server/types.d.ts.map +1 -0
  327. package/dist/mock-server/types.js +5 -0
  328. package/dist/mock-server/types.js.map +1 -0
  329. package/dist/policy/runtime.d.ts +7 -0
  330. package/dist/policy/runtime.d.ts.map +1 -0
  331. package/dist/policy/runtime.js +82 -0
  332. package/dist/policy/runtime.js.map +1 -0
  333. package/dist/ports/index.d.ts +18 -0
  334. package/dist/ports/index.d.ts.map +1 -0
  335. package/dist/ports/index.js +11 -0
  336. package/dist/ports/index.js.map +1 -0
  337. package/dist/ports/outbound/cache-driver.d.ts +9 -0
  338. package/dist/ports/outbound/cache-driver.d.ts.map +1 -0
  339. package/dist/ports/outbound/cache-driver.js +9 -0
  340. package/dist/ports/outbound/cache-driver.js.map +1 -0
  341. package/dist/ports/outbound/cache-store.d.ts +8 -0
  342. package/dist/ports/outbound/cache-store.d.ts.map +1 -0
  343. package/dist/ports/outbound/cache-store.js +8 -0
  344. package/dist/ports/outbound/cache-store.js.map +1 -0
  345. package/dist/ports/outbound/channel-presence.d.ts +30 -0
  346. package/dist/ports/outbound/channel-presence.d.ts.map +1 -0
  347. package/dist/ports/outbound/channel-presence.js +9 -0
  348. package/dist/ports/outbound/channel-presence.js.map +1 -0
  349. package/dist/ports/outbound/event-store.d.ts +9 -0
  350. package/dist/ports/outbound/event-store.d.ts.map +1 -0
  351. package/dist/ports/outbound/event-store.js +9 -0
  352. package/dist/ports/outbound/event-store.js.map +1 -0
  353. package/dist/ports/outbound/logger.d.ts +31 -0
  354. package/dist/ports/outbound/logger.d.ts.map +1 -0
  355. package/dist/ports/outbound/logger.js +8 -0
  356. package/dist/ports/outbound/logger.js.map +1 -0
  357. package/dist/ports/outbound/rate-limit-driver.d.ts +9 -0
  358. package/dist/ports/outbound/rate-limit-driver.d.ts.map +1 -0
  359. package/dist/ports/outbound/rate-limit-driver.js +9 -0
  360. package/dist/ports/outbound/rate-limit-driver.js.map +1 -0
  361. package/dist/ports/outbound/session-store.d.ts +9 -0
  362. package/dist/ports/outbound/session-store.d.ts.map +1 -0
  363. package/dist/ports/outbound/session-store.js +9 -0
  364. package/dist/ports/outbound/session-store.js.map +1 -0
  365. package/dist/ports/outbound/validator.d.ts +9 -0
  366. package/dist/ports/outbound/validator.d.ts.map +1 -0
  367. package/dist/ports/outbound/validator.js +9 -0
  368. package/dist/ports/outbound/validator.js.map +1 -0
  369. package/dist/server/builder/config-preview.d.ts +2 -33
  370. package/dist/server/builder/config-preview.d.ts.map +1 -1
  371. package/dist/server/builder/config-preview.js +1 -94
  372. package/dist/server/builder/config-preview.js.map +1 -1
  373. package/dist/server/builder/lifecycle.d.ts +11 -1
  374. package/dist/server/builder/lifecycle.d.ts.map +1 -1
  375. package/dist/server/builder/lifecycle.js +117 -3
  376. package/dist/server/builder/lifecycle.js.map +1 -1
  377. package/dist/server/builder/single-port-utils.d.ts +11 -2
  378. package/dist/server/builder/single-port-utils.d.ts.map +1 -1
  379. package/dist/server/builder/single-port-utils.js +88 -16
  380. package/dist/server/builder/single-port-utils.js.map +1 -1
  381. package/dist/server/builder.d.ts.map +1 -1
  382. package/dist/server/builder.js +203 -78
  383. package/dist/server/builder.js.map +1 -1
  384. package/dist/server/discovery-utils.d.ts +5 -1
  385. package/dist/server/discovery-utils.d.ts.map +1 -1
  386. package/dist/server/discovery-utils.js +4 -1
  387. package/dist/server/discovery-utils.js.map +1 -1
  388. package/dist/server/front-door.d.ts +3 -1
  389. package/dist/server/front-door.d.ts.map +1 -1
  390. package/dist/server/front-door.js +80 -18
  391. package/dist/server/front-door.js.map +1 -1
  392. package/dist/server/fs-routes/middleware-processor.d.ts.map +1 -1
  393. package/dist/server/fs-routes/middleware-processor.js +9 -8
  394. package/dist/server/fs-routes/middleware-processor.js.map +1 -1
  395. package/dist/server/handler-builders.d.ts +2 -1
  396. package/dist/server/handler-builders.d.ts.map +1 -1
  397. package/dist/server/handler-builders.js +21 -0
  398. package/dist/server/handler-builders.js.map +1 -1
  399. package/dist/server/index.d.ts +4 -2
  400. package/dist/server/index.d.ts.map +1 -1
  401. package/dist/server/index.js +2 -1
  402. package/dist/server/index.js.map +1 -1
  403. package/dist/server/port-binding.d.ts +8 -2
  404. package/dist/server/port-binding.d.ts.map +1 -1
  405. package/dist/server/port-binding.js +11 -1
  406. package/dist/server/port-binding.js.map +1 -1
  407. package/dist/server/protocol-config.d.ts.map +1 -1
  408. package/dist/server/protocol-config.js +1 -0
  409. package/dist/server/protocol-config.js.map +1 -1
  410. package/dist/server/protocol-fusion-diagnostics.d.ts +20 -0
  411. package/dist/server/protocol-fusion-diagnostics.d.ts.map +1 -0
  412. package/dist/server/protocol-fusion-diagnostics.js +51 -0
  413. package/dist/server/protocol-fusion-diagnostics.js.map +1 -0
  414. package/dist/server/rest-middleware.d.ts +3 -3
  415. package/dist/server/rest-middleware.d.ts.map +1 -1
  416. package/dist/server/rest-middleware.js +37 -5
  417. package/dist/server/rest-middleware.js.map +1 -1
  418. package/dist/server/router-module.d.ts +3 -1
  419. package/dist/server/router-module.d.ts.map +1 -1
  420. package/dist/server/router-module.js +14 -0
  421. package/dist/server/router-module.js.map +1 -1
  422. package/dist/server/shared-context.d.ts +3 -3
  423. package/dist/server/shared-context.d.ts.map +1 -1
  424. package/dist/server/shared-context.js +7 -9
  425. package/dist/server/shared-context.js.map +1 -1
  426. package/dist/server/single-port/dispatcher.d.ts.map +1 -1
  427. package/dist/server/single-port/dispatcher.js +20 -13
  428. package/dist/server/single-port/dispatcher.js.map +1 -1
  429. package/dist/server/types.d.ts +104 -7
  430. package/dist/server/types.d.ts.map +1 -1
  431. package/dist/types/context.d.ts +167 -4
  432. package/dist/types/context.d.ts.map +1 -1
  433. package/dist/types/context.js +168 -2
  434. package/dist/types/context.js.map +1 -1
  435. package/dist/types/handlers.d.ts +3 -0
  436. package/dist/types/handlers.d.ts.map +1 -1
  437. package/dist/types/index.d.ts +4 -2
  438. package/dist/types/index.d.ts.map +1 -1
  439. package/dist/types/index.js +2 -1
  440. package/dist/types/index.js.map +1 -1
  441. package/dist/types/policies.d.ts +54 -0
  442. package/dist/types/policies.d.ts.map +1 -0
  443. package/dist/types/policies.js +109 -0
  444. package/dist/types/policies.js.map +1 -0
  445. package/dist/ui/core/registry.d.ts +4 -0
  446. package/dist/ui/core/registry.d.ts.map +1 -1
  447. package/dist/ui/core/router.d.ts.map +1 -1
  448. package/dist/ui/docs/generators/code-samples.d.ts.map +1 -1
  449. package/dist/ui/docs/generators/index.d.ts +1 -1
  450. package/dist/ui/docs/generators/index.d.ts.map +1 -1
  451. package/dist/ui/docs/generators/schema-converter.d.ts +3 -3
  452. package/dist/ui/docs/generators/schema-converter.d.ts.map +1 -1
  453. package/dist/ui/docs/index.d.ts +1 -1
  454. package/dist/ui/docs/index.d.ts.map +1 -1
  455. package/dist/ui/docs/openapi/generator.d.ts +2 -0
  456. package/dist/ui/docs/openapi/generator.d.ts.map +1 -1
  457. package/dist/ui/middleware/interceptors/rate-limit.d.ts +147 -0
  458. package/dist/ui/middleware/interceptors/rate-limit.d.ts.map +1 -0
  459. package/dist/ui/middleware/interceptors/timeout.d.ts +121 -0
  460. package/dist/ui/middleware/interceptors/timeout.d.ts.map +1 -0
  461. package/dist/ui/middleware/types.d.ts +396 -0
  462. package/dist/ui/middleware/types.d.ts.map +1 -0
  463. package/dist/ui/policy/runtime.d.ts +7 -0
  464. package/dist/ui/policy/runtime.d.ts.map +1 -0
  465. package/dist/ui/rate-limit/drivers/filesystem.d.ts +19 -0
  466. package/dist/ui/rate-limit/drivers/filesystem.d.ts.map +1 -0
  467. package/dist/ui/rate-limit/drivers/memory.d.ts +17 -0
  468. package/dist/ui/rate-limit/drivers/memory.d.ts.map +1 -0
  469. package/dist/ui/rate-limit/drivers/redis.d.ts +14 -0
  470. package/dist/ui/rate-limit/drivers/redis.d.ts.map +1 -0
  471. package/dist/ui/rate-limit/drivers/s3db.d.ts +31 -0
  472. package/dist/ui/rate-limit/drivers/s3db.d.ts.map +1 -0
  473. package/dist/ui/rate-limit/factory.d.ts +12 -0
  474. package/dist/ui/rate-limit/factory.d.ts.map +1 -0
  475. package/dist/ui/rate-limit/types.d.ts +81 -0
  476. package/dist/ui/rate-limit/types.d.ts.map +1 -0
  477. package/dist/ui/server/fs-routes/middleware-processor.d.ts.map +1 -1
  478. package/dist/ui/types/context.d.ts +167 -4
  479. package/dist/ui/types/context.d.ts.map +1 -1
  480. package/dist/ui/types/handlers.d.ts +3 -0
  481. package/dist/ui/types/handlers.d.ts.map +1 -1
  482. package/dist/ui/types/index.d.ts +4 -2
  483. package/dist/ui/types/index.d.ts.map +1 -1
  484. package/dist/ui/types/policies.d.ts +54 -0
  485. package/dist/ui/types/policies.d.ts.map +1 -0
  486. package/dist/ui/usd/spec/types.d.ts +3 -0
  487. package/dist/ui/usd/spec/types.d.ts.map +1 -1
  488. package/dist/ui/utils/schema-examples.d.ts +39 -0
  489. package/dist/ui/utils/schema-examples.d.ts.map +1 -0
  490. package/dist/ui/validation/descriptor.d.ts +26 -0
  491. package/dist/ui/validation/descriptor.d.ts.map +1 -0
  492. package/dist/ui/validation/index.d.ts +1 -0
  493. package/dist/ui/validation/index.d.ts.map +1 -1
  494. package/dist/usd/spec/types.d.ts +3 -0
  495. package/dist/usd/spec/types.d.ts.map +1 -1
  496. package/dist/usd/spec/types.js.map +1 -1
  497. package/dist/utils/context-utils.d.ts +3 -2
  498. package/dist/utils/context-utils.d.ts.map +1 -1
  499. package/dist/utils/context-utils.js +4 -0
  500. package/dist/utils/context-utils.js.map +1 -1
  501. package/dist/utils/schema-examples.d.ts +39 -0
  502. package/dist/utils/schema-examples.d.ts.map +1 -0
  503. package/dist/utils/schema-examples.js +240 -0
  504. package/dist/utils/schema-examples.js.map +1 -0
  505. package/dist/validation/descriptor.d.ts +26 -0
  506. package/dist/validation/descriptor.d.ts.map +1 -0
  507. package/dist/validation/descriptor.js +155 -0
  508. package/dist/validation/descriptor.js.map +1 -0
  509. package/dist/validation/index.d.ts +1 -0
  510. package/dist/validation/index.d.ts.map +1 -1
  511. package/dist/validation/index.js +1 -0
  512. package/dist/validation/index.js.map +1 -1
  513. package/package.json +11 -3
@@ -0,0 +1,396 @@
1
+ /**
2
+ * Middleware Types
3
+ *
4
+ * Configuration types for all Raffel middleware.
5
+ */
6
+ import type { Envelope, Context } from '../types/index.js';
7
+ import type { RateLimitDriver, RateLimitDriverConfig, RateLimitDriverType } from '../rate-limit/types.js';
8
+ /**
9
+ * Rate limit rule for path-based configuration
10
+ */
11
+ export interface RateLimitRule {
12
+ /** Rule identifier */
13
+ id: string;
14
+ /** Glob pattern to match (e.g., 'admin.*', 'users.**') */
15
+ pattern: string;
16
+ /** Window size in milliseconds */
17
+ windowMs?: number;
18
+ /** Maximum requests per window */
19
+ maxRequests?: number;
20
+ /** Key type: 'ip', 'user', 'apikey', or custom */
21
+ key?: 'ip' | 'user' | 'apikey' | string;
22
+ /** Custom key generator */
23
+ keyGenerator?: (envelope: Envelope, ctx: Context) => string;
24
+ }
25
+ /**
26
+ * Rate limit configuration
27
+ */
28
+ export interface RateLimitConfig {
29
+ /** Window size in milliseconds (default: 60000) */
30
+ windowMs?: number;
31
+ /** Maximum requests per window (default: 100) */
32
+ maxRequests?: number;
33
+ /** Maximum unique keys to track (default: 10000) */
34
+ maxUniqueKeys?: number;
35
+ /** Skip successful requests (useful for auth) */
36
+ skipSuccessfulRequests?: boolean;
37
+ /** Custom key generator */
38
+ keyGenerator?: (envelope: Envelope, ctx: Context) => string;
39
+ /** Rate limit driver configuration */
40
+ driver?: RateLimitDriverConfig | RateLimitDriverType | RateLimitDriver;
41
+ /** Path-specific rules */
42
+ rules?: RateLimitRule[];
43
+ }
44
+ /**
45
+ * Rate limit info returned when limit is exceeded
46
+ */
47
+ export interface RateLimitInfo {
48
+ /** Limit for the window */
49
+ limit: number;
50
+ /** Remaining requests */
51
+ remaining: number;
52
+ /** Reset timestamp (ms since epoch) */
53
+ resetAt: number;
54
+ /** Seconds until reset */
55
+ retryAfter: number;
56
+ }
57
+ /**
58
+ * Request ID configuration
59
+ */
60
+ export interface RequestIdConfig {
61
+ /** Custom ID generator (default: nanoid) */
62
+ generator?: () => string;
63
+ /** Whether to propagate from incoming metadata (default: true) */
64
+ propagate?: boolean;
65
+ /** Metadata key to read/write (default: 'x-request-id') */
66
+ metadataKey?: string;
67
+ }
68
+ /**
69
+ * Log level
70
+ */
71
+ export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
72
+ /**
73
+ * Logging filter context
74
+ */
75
+ export interface LogFilterContext {
76
+ envelope: Envelope;
77
+ ctx: Context;
78
+ duration: number;
79
+ error?: Error;
80
+ }
81
+ /**
82
+ * Logging configuration
83
+ */
84
+ export interface LoggingConfig {
85
+ /** Minimum log level (default: 'info') */
86
+ level?: LogLevel;
87
+ /** Log format: 'json' or 'pretty' (default: 'pretty' in dev) */
88
+ format?: 'json' | 'pretty';
89
+ /** Include request payload in logs (default: false) */
90
+ includePayload?: boolean;
91
+ /** Include response payload in logs (default: false) */
92
+ includeResponse?: boolean;
93
+ /**
94
+ * Include request metadata in logs (default: false)
95
+ * Sensitive headers are automatically redacted
96
+ */
97
+ includeMetadata?: boolean;
98
+ /**
99
+ * Headers to redact when logging metadata (case-insensitive)
100
+ * Default: authorization, cookie, set-cookie, x-api-key, x-auth-token,
101
+ * x-access-token, x-refresh-token, x-csrf-token, x-xsrf-token,
102
+ * proxy-authorization, www-authenticate
103
+ */
104
+ sensitiveHeaders?: string[];
105
+ /** Filter function to skip logging */
106
+ filter?: (ctx: LogFilterContext) => boolean;
107
+ /** Procedure patterns to exclude (e.g., ['health.*']) */
108
+ excludeProcedures?: string[];
109
+ /** Custom logger instance */
110
+ logger?: {
111
+ trace: (obj: object, msg?: string) => void;
112
+ debug: (obj: object, msg?: string) => void;
113
+ info: (obj: object, msg?: string) => void;
114
+ warn: (obj: object, msg?: string) => void;
115
+ error: (obj: object, msg?: string) => void;
116
+ };
117
+ }
118
+ /**
119
+ * Timeout configuration
120
+ */
121
+ export interface TimeoutConfig {
122
+ /** Default timeout in milliseconds (default: 30000) */
123
+ defaultMs?: number;
124
+ /** Per-procedure timeouts */
125
+ procedures?: Record<string, number>;
126
+ /** Pattern-based timeouts (e.g., { 'reports.*': 60000 }) */
127
+ patterns?: Record<string, number>;
128
+ }
129
+ /**
130
+ * Backoff strategy for retry delays
131
+ *
132
+ * - `linear`: delay = baseDelay * attempt (100, 200, 300...)
133
+ * - `exponential`: delay = baseDelay * 2^(attempt-1) (100, 200, 400...)
134
+ * - `decorrelated`: AWS-style jitter, random(baseDelay, prevDelay * 3)
135
+ */
136
+ export type BackoffStrategy = 'linear' | 'exponential' | 'decorrelated';
137
+ /**
138
+ * Retry event context passed to onRetry hook
139
+ */
140
+ export interface RetryEventContext {
141
+ /** Current attempt number (1-based) */
142
+ attempt: number;
143
+ /** Total max attempts configured */
144
+ maxAttempts: number;
145
+ /** The error that triggered the retry */
146
+ error: Error;
147
+ /** Delay before next attempt (ms) */
148
+ delayMs: number;
149
+ /** Procedure being retried */
150
+ procedure: string;
151
+ /** Request ID if available */
152
+ requestId?: string;
153
+ }
154
+ /**
155
+ * Retry configuration
156
+ */
157
+ export interface RetryConfig {
158
+ /** Maximum retry attempts (default: 3) */
159
+ maxAttempts?: number;
160
+ /** Initial delay in milliseconds (default: 100) */
161
+ initialDelayMs?: number;
162
+ /** Maximum delay in milliseconds (default: 10000) */
163
+ maxDelayMs?: number;
164
+ /** Backoff multiplier for exponential/linear (default: 2) */
165
+ backoffMultiplier?: number;
166
+ /**
167
+ * Backoff strategy (default: 'exponential')
168
+ *
169
+ * - `linear`: delay grows linearly
170
+ * - `exponential`: delay doubles each attempt
171
+ * - `decorrelated`: AWS-style randomized jitter (best for preventing thundering herd)
172
+ */
173
+ backoffStrategy?: BackoffStrategy;
174
+ /** Add jitter to delays - ±25% randomness (default: true) */
175
+ jitter?: boolean;
176
+ /** Error codes that should trigger retry */
177
+ retryableCodes?: string[];
178
+ /** Custom retry predicate */
179
+ shouldRetry?: (error: Error, attempt: number) => boolean;
180
+ /**
181
+ * Respect Retry-After header/field from errors (default: true)
182
+ * When enabled, uses the server-suggested delay if present
183
+ */
184
+ respectRetryAfter?: boolean;
185
+ /**
186
+ * Callback invoked before each retry attempt
187
+ * Useful for logging, metrics, or custom delay logic
188
+ */
189
+ onRetry?: (ctx: RetryEventContext) => void | Promise<void>;
190
+ }
191
+ /**
192
+ * Circuit breaker state
193
+ */
194
+ export type CircuitState = 'closed' | 'open' | 'half-open';
195
+ /**
196
+ * Circuit breaker configuration
197
+ */
198
+ export interface CircuitBreakerConfig {
199
+ /** Failure threshold to open circuit (default: 5) */
200
+ failureThreshold?: number;
201
+ /** Success threshold to close circuit (default: 3) */
202
+ successThreshold?: number;
203
+ /** Time in ms before attempting recovery (default: 30000) */
204
+ resetTimeoutMs?: number;
205
+ /** Time window for failure counting (default: 60000) */
206
+ windowMs?: number;
207
+ /** Error codes that count as failures */
208
+ failureCodes?: string[];
209
+ /** Callback when circuit state changes */
210
+ onStateChange?: (state: CircuitState, procedure: string) => void;
211
+ }
212
+ /**
213
+ * Cache configuration
214
+ */
215
+ export interface CacheConfig {
216
+ /** Default TTL in milliseconds (default: 60000) */
217
+ ttlMs?: number;
218
+ /** Maximum cache entries (default: 1000) */
219
+ maxEntries?: number;
220
+ /** Procedures to cache (patterns supported) */
221
+ procedures?: string[];
222
+ /** Custom cache key generator */
223
+ keyGenerator?: (envelope: Envelope) => string;
224
+ /** Stale-while-revalidate support */
225
+ staleWhileRevalidate?: boolean;
226
+ /** Custom cache store */
227
+ store?: CacheStore;
228
+ }
229
+ /**
230
+ * Cache store interface
231
+ */
232
+ export interface CacheStore {
233
+ get(key: string): Promise<{
234
+ value: unknown;
235
+ expiresAt: number;
236
+ } | undefined>;
237
+ set(key: string, value: unknown, ttlMs: number): Promise<void>;
238
+ delete(key: string): Promise<void>;
239
+ clear(): Promise<void>;
240
+ }
241
+ /**
242
+ * HSTS (HTTP Strict Transport Security) configuration
243
+ */
244
+ export interface HstsConfig {
245
+ /** Max age in seconds (default: 31536000 = 1 year) */
246
+ maxAge?: number;
247
+ /** Include subdomains (default: true) */
248
+ includeSubDomains?: boolean;
249
+ /** Enable preload (default: false) */
250
+ preload?: boolean;
251
+ }
252
+ /**
253
+ * Content Security Policy directive
254
+ */
255
+ export type CspDirective = 'default-src' | 'script-src' | 'style-src' | 'img-src' | 'font-src' | 'connect-src' | 'frame-src' | 'object-src' | 'media-src' | 'worker-src' | 'child-src' | 'form-action' | 'frame-ancestors' | 'base-uri' | 'report-uri' | 'report-to' | 'upgrade-insecure-requests' | 'block-all-mixed-content';
256
+ /**
257
+ * Content Security Policy configuration
258
+ */
259
+ export interface CspConfig {
260
+ /** Enable CSP (default: true) */
261
+ enabled?: boolean;
262
+ /** CSP directives */
263
+ directives?: Partial<Record<CspDirective, string | string[]>>;
264
+ /** Report-only mode (default: false) */
265
+ reportOnly?: boolean;
266
+ /** Report URI for violations */
267
+ reportUri?: string;
268
+ }
269
+ /**
270
+ * Permissions Policy configuration
271
+ */
272
+ export interface PermissionsPolicyConfig {
273
+ /** Feature policies (e.g., { 'geolocation': [], 'camera': ['self'] }) */
274
+ features?: Record<string, string[]>;
275
+ }
276
+ /**
277
+ * Security headers configuration
278
+ */
279
+ export interface SecurityConfig {
280
+ /** X-Content-Type-Options: nosniff (default: true) */
281
+ noSniff?: boolean;
282
+ /** X-Frame-Options (default: 'DENY') */
283
+ frameOptions?: 'DENY' | 'SAMEORIGIN' | false;
284
+ /** HSTS configuration */
285
+ hsts?: HstsConfig | false;
286
+ /** Referrer-Policy (default: 'strict-origin-when-cross-origin') */
287
+ referrerPolicy?: string | false;
288
+ /** X-DNS-Prefetch-Control (default: 'off') */
289
+ dnsPrefetchControl?: boolean;
290
+ /** X-XSS-Protection (default: '1; mode=block') */
291
+ xssProtection?: boolean | false;
292
+ /** Content Security Policy */
293
+ csp?: CspConfig | false;
294
+ /** Permissions Policy */
295
+ permissionsPolicy?: PermissionsPolicyConfig | false;
296
+ /** X-Permitted-Cross-Domain-Policies (default: 'none') */
297
+ crossDomainPolicy?: 'none' | 'master-only' | 'by-content-type' | 'all' | false;
298
+ }
299
+ /**
300
+ * Compression encoding
301
+ */
302
+ export type CompressionEncoding = 'gzip' | 'deflate' | 'br';
303
+ /**
304
+ * Compression configuration
305
+ */
306
+ export interface CompressionConfig {
307
+ /** Minimum size to compress in bytes (default: 1024) */
308
+ threshold?: number;
309
+ /** Preferred encoding order (default: ['br', 'gzip', 'deflate']) */
310
+ encodings?: CompressionEncoding[];
311
+ /** Content types to compress (default: text/*, application/json, etc.) */
312
+ contentTypes?: string[];
313
+ /** Compression level (1-9, default: 6) */
314
+ level?: number;
315
+ }
316
+ /**
317
+ * Enhanced CORS configuration
318
+ */
319
+ export interface EnhancedCorsConfig {
320
+ /** Allowed origins (string, array, or function) */
321
+ origin?: string | string[] | ((origin: string) => boolean | string);
322
+ /** Allowed methods (default: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS']) */
323
+ methods?: string[];
324
+ /** Allowed headers */
325
+ allowedHeaders?: string[];
326
+ /** Exposed headers */
327
+ exposedHeaders?: string[];
328
+ /** Allow credentials (default: false) */
329
+ credentials?: boolean;
330
+ /** Preflight cache max age in seconds (default: 86400) */
331
+ maxAge?: number;
332
+ /** Handle OPTIONS requests (default: true) */
333
+ preflightContinue?: boolean;
334
+ }
335
+ /**
336
+ * Bulkhead configuration for concurrency limiting
337
+ */
338
+ export interface BulkheadConfig {
339
+ /** Maximum concurrent executions (required) */
340
+ concurrency: number;
341
+ /** Maximum queue size. 0 = no queue, reject immediately (default: 0) */
342
+ maxQueueSize?: number;
343
+ /** Queue timeout in ms. 0 = no timeout (default: 0) */
344
+ queueTimeout?: number;
345
+ /** Callback when a request is rejected */
346
+ onReject?: (procedure: string) => void;
347
+ /** Callback when a request is queued */
348
+ onQueued?: () => void;
349
+ /** Callback when a request is dequeued */
350
+ onDequeued?: () => void;
351
+ }
352
+ /**
353
+ * Fallback configuration for graceful degradation
354
+ */
355
+ export interface FallbackConfig<TOutput = unknown> {
356
+ /** Static fallback response */
357
+ response?: TOutput;
358
+ /** Dynamic fallback handler */
359
+ handler?: (ctx: Context, error: Error) => TOutput | Promise<TOutput>;
360
+ /** Condition to apply fallback (default: always) */
361
+ when?: (error: Error) => boolean;
362
+ }
363
+ /**
364
+ * Response envelope configuration
365
+ *
366
+ * Wraps all responses in a standardized format:
367
+ * - Success: { success: true, data: ..., meta: { ... } }
368
+ * - Error: { success: false, error: { message, code, details }, meta: { ... } }
369
+ */
370
+ export interface EnvelopeConfig {
371
+ /** Include requestId in meta (default: true) */
372
+ includeRequestId?: boolean;
373
+ /** Include duration in meta (default: true) */
374
+ includeDuration?: boolean;
375
+ /** Include timestamp in meta (default: true) */
376
+ includeTimestamp?: boolean;
377
+ /** Include error details in error response (default: true) */
378
+ includeErrorDetails?: boolean;
379
+ /** Include stack trace in error response (default: true in development) */
380
+ includeErrorStack?: boolean;
381
+ /**
382
+ * Custom error code mapper
383
+ * Extracts an error code string from an error object.
384
+ * Default behavior checks error.code, error.status, and error.name.
385
+ */
386
+ errorCodeMapper?: (error: Error) => string;
387
+ }
388
+ /**
389
+ * Security preset level
390
+ */
391
+ export type SecurityPreset = 'strict' | 'recommended' | 'relaxed';
392
+ /**
393
+ * Performance preset level
394
+ */
395
+ export type PerformancePreset = 'aggressive' | 'balanced' | 'conservative';
396
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Runtime helpers for contract-bound policy metadata.
3
+ */
4
+ import type { Interceptor } from '../types/index.js';
5
+ import type { ContractPolicies } from '../types/policies.js';
6
+ export declare function createPolicyInterceptors(policies?: ContractPolicies): Interceptor[];
7
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/policy/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAqB,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,KAAK,EAEV,gBAAgB,EAEjB,MAAM,sBAAsB,CAAA;AAgE7B,wBAAgB,wBAAwB,CACtC,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,WAAW,EAAE,CA2Bf"}
@@ -0,0 +1,19 @@
1
+ import type { RateLimitDriver, RateLimitRecord, FilesystemRateLimitDriverOptions } from '../types.js';
2
+ export declare class FilesystemRateLimitDriver implements RateLimitDriver {
3
+ readonly name = "filesystem";
4
+ private readonly directory;
5
+ private readonly cleanupInterval;
6
+ private cleanupHandle;
7
+ constructor(options?: FilesystemRateLimitDriverOptions);
8
+ increment(key: string, windowMs: number): Promise<RateLimitRecord>;
9
+ get(key: string): Promise<RateLimitRecord | null>;
10
+ decrement(key: string): Promise<void>;
11
+ reset(key: string): Promise<void>;
12
+ clear(): Promise<void>;
13
+ shutdown(): Promise<void>;
14
+ private ensureDirectory;
15
+ private getFilePath;
16
+ private readRecord;
17
+ private cleanupExpired;
18
+ }
19
+ //# sourceMappingURL=filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../../src/rate-limit/drivers/filesystem.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,gCAAgC,EACjC,MAAM,aAAa,CAAA;AAEpB,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,QAAQ,CAAC,IAAI,gBAAe;IAE5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,aAAa,CAA8C;gBAEvD,OAAO,GAAE,gCAAqC;IAYpD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAelE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAcjD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,WAAW;YAKL,UAAU;YASV,cAAc;CAiB7B"}
@@ -0,0 +1,17 @@
1
+ import type { RateLimitDriver, RateLimitRecord, MemoryRateLimitDriverOptions } from '../types.js';
2
+ export declare class MemoryRateLimitDriver implements RateLimitDriver {
3
+ readonly name = "memory";
4
+ private readonly maxKeys;
5
+ private readonly cleanupInterval;
6
+ private readonly store;
7
+ private cleanupHandle;
8
+ constructor(options?: MemoryRateLimitDriverOptions);
9
+ increment(key: string, windowMs: number): Promise<RateLimitRecord>;
10
+ get(key: string): Promise<RateLimitRecord | null>;
11
+ decrement(key: string): Promise<void>;
12
+ reset(key: string): Promise<void>;
13
+ shutdown(): Promise<void>;
14
+ clear(): Promise<void>;
15
+ private cleanupExpired;
16
+ }
17
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/rate-limit/drivers/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAEjG,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,QAAQ,CAAC,IAAI,YAAW;IAExB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,aAAa,CAA8C;gBAEvD,OAAO,GAAE,4BAAiC;IAUhD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBlE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAgBjD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAOzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,cAAc;CAQvB"}
@@ -0,0 +1,14 @@
1
+ import type { RateLimitDriver, RateLimitRecord, RedisRateLimitDriverOptions } from '../types.js';
2
+ export declare class RedisRateLimitDriver implements RateLimitDriver {
3
+ readonly name = "redis";
4
+ private readonly client;
5
+ private readonly prefix;
6
+ constructor(options: RedisRateLimitDriverOptions);
7
+ increment(key: string, windowMs: number): Promise<RateLimitRecord>;
8
+ get(key: string): Promise<RateLimitRecord | null>;
9
+ decrement(key: string): Promise<void>;
10
+ reset(key: string): Promise<void>;
11
+ clear(): Promise<void>;
12
+ private getFullKey;
13
+ }
14
+ //# sourceMappingURL=redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/rate-limit/drivers/redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAEhG,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,QAAQ,CAAC,IAAI,WAAU;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,OAAO,EAAE,2BAA2B;IAS1C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAsBlE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA+BjD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * S3DB-like Rate Limit Driver
3
+ *
4
+ * Stores rate limit counters in a key/value S3DB-like resource.
5
+ * Useful for serverless/object storage scenarios where Redis/memory
6
+ * is not a good fit.
7
+ *
8
+ * Works with any resource adapter that exposes:
9
+ * - get(id)
10
+ * - upsert(id, data)
11
+ * - delete(id)
12
+ */
13
+ import type { RateLimitDriver, RateLimitRecord, S3dbRateLimitDriverOptions } from '../types.js';
14
+ export declare class S3dbRateLimitDriver implements RateLimitDriver {
15
+ readonly name = "s3db";
16
+ private readonly resource;
17
+ private readonly namespace;
18
+ private readonly countField;
19
+ private readonly resetAtField;
20
+ constructor(options: S3dbRateLimitDriverOptions);
21
+ increment(key: string, windowMs: number): Promise<RateLimitRecord>;
22
+ get(key: string): Promise<RateLimitRecord | null>;
23
+ decrement(key: string): Promise<void>;
24
+ reset(key: string): Promise<void>;
25
+ clear(): Promise<void>;
26
+ shutdown(): Promise<void>;
27
+ private makeKey;
28
+ private parseRateLimitRecord;
29
+ private writeRecord;
30
+ }
31
+ //# sourceMappingURL=s3db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3db.d.ts","sourceRoot":"","sources":["../../../../src/rate-limit/drivers/s3db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAM/F,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,IAAI,UAAS;IAEtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;gBAEzB,OAAO,EAAE,0BAA0B;IAczC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAwBlE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAkBjD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,oBAAoB;YAoBd,WAAW;CAM1B"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Rate Limit Driver Factory
3
+ *
4
+ * Creates rate-limit drivers with a cache-like configuration.
5
+ */
6
+ import type { RateLimitDriver, RateLimitDriverConfig, MemoryRateLimitDriverOptions, FilesystemRateLimitDriverOptions, RedisRateLimitDriverOptions, S3dbRateLimitDriverOptions } from './types.js';
7
+ export declare function createDriver(type: 'memory', options?: MemoryRateLimitDriverOptions): RateLimitDriver;
8
+ export declare function createDriver(type: 'filesystem', options?: FilesystemRateLimitDriverOptions): RateLimitDriver;
9
+ export declare function createDriver(type: 'redis', options: RedisRateLimitDriverOptions): RateLimitDriver;
10
+ export declare function createDriver(type: 's3db', options: S3dbRateLimitDriverOptions): RateLimitDriver;
11
+ export declare function createDriverFromConfig(config: RateLimitDriverConfig): RateLimitDriver;
12
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/rate-limit/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,qBAAqB,EACrB,4BAA4B,EAC5B,gCAAgC,EAChC,2BAA2B,EAC3B,0BAA0B,EAC3B,MAAM,YAAY,CAAA;AAMnB,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,4BAA4B,GAAG,eAAe,CAAA;AACrG,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,gCAAgC,GAAG,eAAe,CAAA;AAC7G,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,GAAG,eAAe,CAAA;AAClG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,GAAG,eAAe,CAAA;AAsBhG,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAarF"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Rate Limit Driver Types
3
+ *
4
+ * Driver abstraction for pluggable rate limiting backends.
5
+ */
6
+ export interface RateLimitRecord {
7
+ count: number;
8
+ resetAt: number;
9
+ }
10
+ export interface RateLimitDriver {
11
+ readonly name: string;
12
+ increment(key: string, windowMs: number): Promise<RateLimitRecord>;
13
+ get(key: string): Promise<RateLimitRecord | null>;
14
+ decrement?(key: string): Promise<void>;
15
+ reset?(key: string): Promise<void>;
16
+ clear?(): Promise<void>;
17
+ shutdown?(): Promise<void>;
18
+ }
19
+ export interface MemoryRateLimitDriverOptions {
20
+ /** Maximum number of keys to keep (default: 10000) */
21
+ maxKeys?: number;
22
+ /** Cleanup interval in ms (default: 60000) */
23
+ cleanupInterval?: number;
24
+ }
25
+ export interface FilesystemRateLimitDriverOptions {
26
+ /** Directory for storing rate limit state (default: '.rate-limit') */
27
+ directory?: string;
28
+ /** Cleanup interval in ms (default: 300000) */
29
+ cleanupInterval?: number;
30
+ }
31
+ export interface RedisRateLimitDriverOptions {
32
+ client: RedisLikeClient;
33
+ prefix?: string;
34
+ }
35
+ export interface RedisLikeClient {
36
+ get(key: string): Promise<string | number | null>;
37
+ incr(key: string): Promise<number>;
38
+ decr?(key: string): Promise<number>;
39
+ pexpire?(key: string, ttlMs: number): Promise<number>;
40
+ pttl?(key: string): Promise<number>;
41
+ del?(...keys: string[]): Promise<number>;
42
+ keys?(pattern: string): Promise<string[]>;
43
+ }
44
+ export interface S3dbRateLimitResource {
45
+ /** Read a record by key */
46
+ get(key: string): Promise<Record<string, unknown> | null | undefined>;
47
+ /** Write/rewrite a record by key */
48
+ upsert(key: string, data: Record<string, unknown>): Promise<unknown>;
49
+ /** Delete a key */
50
+ delete(key: string): Promise<unknown>;
51
+ /** Optional namespace-based key listing for cleanup */
52
+ listKeys?(namespace: string): Promise<string[]>;
53
+ keys?(namespace: string): Promise<string[]>;
54
+ /** Optional connection shutdown */
55
+ close?(): Promise<void>;
56
+ }
57
+ export interface S3dbRateLimitDriverOptions {
58
+ /** s3db-like resource instance */
59
+ resource: S3dbRateLimitResource;
60
+ /** Namespace used to isolate rate-limit keys */
61
+ namespace?: string;
62
+ /** Field for counter value */
63
+ countField?: string;
64
+ /** Field for window reset timestamp (ms since epoch) */
65
+ resetAtField?: string;
66
+ }
67
+ export type RateLimitDriverType = 'memory' | 'filesystem' | 'redis' | 's3db';
68
+ export type RateLimitDriverConfig = {
69
+ driver: 'memory';
70
+ options?: MemoryRateLimitDriverOptions;
71
+ } | {
72
+ driver: 'filesystem';
73
+ options?: FilesystemRateLimitDriverOptions;
74
+ } | {
75
+ driver: 'redis';
76
+ options: RedisRateLimitDriverOptions;
77
+ } | {
78
+ driver: 's3db';
79
+ options: S3dbRateLimitDriverOptions;
80
+ };
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/rate-limit/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-processor.d.ts","sourceRoot":"","sources":["../../../../src/server/fs-routes/middleware-processor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAA;AAG1E,OAAO,KAAK,EACV,WAAW,EAEX,UAAU,EAEX,MAAM,YAAY,CAAA;AAInB;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,CA6BzE;AAuMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,CAAC,EAAE,UAAU,EACvB,WAAW,GAAE,UAAU,GAAG,UAAU,GAAG,MAAe,GACrD,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CA2B/F"}
1
+ {"version":3,"file":"middleware-processor.d.ts","sourceRoot":"","sources":["../../../../src/server/fs-routes/middleware-processor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAA;AAI1E,OAAO,KAAK,EACV,WAAW,EAEX,UAAU,EAEX,MAAM,YAAY,CAAA;AAInB;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,CA6BzE;AAuMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,CAAC,EAAE,UAAU,EACvB,WAAW,GAAE,UAAU,GAAG,UAAU,GAAG,MAAe,GACrD,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CA2B/F"}