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,211 @@
1
+ /**
2
+ * Mock Server — Route Extractor
3
+ *
4
+ * Walks OpenAPI/USD paths and extracts MockRoute objects ready for serving.
5
+ */
6
+ import { generateFromSchema } from './fake-data.js';
7
+ const HTTP_METHODS = ['get', 'post', 'put', 'delete', 'patch', 'head', 'options'];
8
+ /**
9
+ * Extract all HTTP routes from an OpenAPI/USD document.
10
+ * Document should have $refs already inlined.
11
+ */
12
+ export function extractRoutes(doc) {
13
+ const paths = doc.paths;
14
+ if (!paths)
15
+ return [];
16
+ const routes = [];
17
+ for (const [path, pathItem] of Object.entries(paths)) {
18
+ if (!pathItem || typeof pathItem !== 'object')
19
+ continue;
20
+ const item = pathItem;
21
+ for (const method of HTTP_METHODS) {
22
+ const operation = item[method];
23
+ if (!operation)
24
+ continue;
25
+ const params = mergeParameters(item.parameters, operation.parameters);
26
+ const { schema: bodySchema, required: bodyRequired } = extractRequestBodySchema(operation);
27
+ const response = resolveResponse(operation);
28
+ routes.push({
29
+ method: method.toUpperCase(),
30
+ pathPattern: toExpressPath(path),
31
+ operationId: operation.operationId,
32
+ parameters: params,
33
+ requestBodySchema: bodySchema,
34
+ requestBodyRequired: bodyRequired,
35
+ response,
36
+ });
37
+ }
38
+ }
39
+ return routes;
40
+ }
41
+ /**
42
+ * Convert OpenAPI path template to Express-style pattern.
43
+ * /users/{userId}/posts/{postId} => /users/:userId/posts/:postId
44
+ */
45
+ export function toExpressPath(openapiPath) {
46
+ return openapiPath.replace(/\{([^}]+)\}/g, ':$1');
47
+ }
48
+ /**
49
+ * Resolve the best mock response for an operation.
50
+ *
51
+ * Picks the success response (200 > 201 > 204 > first 2xx), then:
52
+ * 1. response.content['application/json'].example
53
+ * 2. response.content['application/json'].examples (first named example's value)
54
+ * 3. response.content['application/json'].schema.example
55
+ * 4. generateFromSchema(schema)
56
+ */
57
+ export function resolveResponse(operation) {
58
+ const responses = operation.responses;
59
+ if (!responses) {
60
+ return { statusCode: 200, contentType: 'application/json', body: {} };
61
+ }
62
+ // Find best success response
63
+ const statusCode = pickSuccessStatus(responses);
64
+ const response = responses[String(statusCode)];
65
+ if (!response) {
66
+ return { statusCode, contentType: 'application/json', body: {} };
67
+ }
68
+ // Extract headers
69
+ const headers = {};
70
+ if (response.headers) {
71
+ for (const [name, header] of Object.entries(response.headers)) {
72
+ if (header.schema) {
73
+ const val = generateFromSchema(header.schema);
74
+ if (val != null)
75
+ headers[name] = String(val);
76
+ }
77
+ }
78
+ }
79
+ // No content (e.g. 204)
80
+ if (!response.content) {
81
+ return {
82
+ statusCode,
83
+ contentType: 'application/json',
84
+ body: statusCode === 204 ? undefined : {},
85
+ headers: Object.keys(headers).length > 0 ? headers : undefined,
86
+ };
87
+ }
88
+ // Find media type (prefer application/json)
89
+ const [contentType, mediaType] = pickMediaType(response.content);
90
+ if (!mediaType) {
91
+ return { statusCode, contentType: 'application/json', body: {}, headers: Object.keys(headers).length > 0 ? headers : undefined };
92
+ }
93
+ const body = resolveBody(mediaType);
94
+ return {
95
+ statusCode,
96
+ contentType,
97
+ body,
98
+ headers: Object.keys(headers).length > 0 ? headers : undefined,
99
+ };
100
+ }
101
+ /**
102
+ * Extract request body JSON Schema from an operation.
103
+ */
104
+ export function extractRequestBodySchema(operation) {
105
+ if (!operation.requestBody)
106
+ return { schema: undefined, required: false };
107
+ const rb = operation.requestBody;
108
+ const content = rb.content;
109
+ if (!content)
110
+ return { schema: undefined, required: rb.required ?? false };
111
+ // Prefer application/json
112
+ const jsonMedia = content['application/json'];
113
+ if (jsonMedia?.schema) {
114
+ return {
115
+ schema: jsonMedia.schema,
116
+ required: rb.required ?? false,
117
+ };
118
+ }
119
+ // Try first content type
120
+ for (const media of Object.values(content)) {
121
+ if (media.schema) {
122
+ return {
123
+ schema: media.schema,
124
+ required: rb.required ?? false,
125
+ };
126
+ }
127
+ }
128
+ return { schema: undefined, required: rb.required ?? false };
129
+ }
130
+ /**
131
+ * Merge path-level and operation-level parameters.
132
+ * Operation params override path params on same name+in.
133
+ */
134
+ export function mergeParameters(pathParams, opParams) {
135
+ const map = new Map();
136
+ const toResolved = (p) => ({
137
+ name: p.name,
138
+ in: p.in,
139
+ required: p.required,
140
+ schema: p.schema,
141
+ example: p.example,
142
+ });
143
+ if (pathParams) {
144
+ for (const p of pathParams) {
145
+ map.set(`${p.in}:${p.name}`, toResolved(p));
146
+ }
147
+ }
148
+ if (opParams) {
149
+ for (const p of opParams) {
150
+ map.set(`${p.in}:${p.name}`, toResolved(p));
151
+ }
152
+ }
153
+ return [...map.values()];
154
+ }
155
+ // ── Internal helpers ───────────────────────────────────────────────────────────
156
+ function pickSuccessStatus(responses) {
157
+ // Prefer 200, 201, 204, then first 2xx
158
+ for (const preferred of [200, 201, 204]) {
159
+ if (String(preferred) in responses)
160
+ return preferred;
161
+ }
162
+ for (const code of Object.keys(responses)) {
163
+ const n = Number(code);
164
+ if (n >= 200 && n < 300)
165
+ return n;
166
+ }
167
+ // Fallback: default or first status
168
+ if ('default' in responses)
169
+ return 200;
170
+ const first = Object.keys(responses)[0];
171
+ return first ? Number(first) || 200 : 200;
172
+ }
173
+ function pickMediaType(content) {
174
+ // Prefer application/json
175
+ if (content['application/json'])
176
+ return ['application/json', content['application/json']];
177
+ // Try *json* content types
178
+ for (const [ct, media] of Object.entries(content)) {
179
+ if (ct.includes('json'))
180
+ return [ct, media];
181
+ }
182
+ // First available
183
+ const first = Object.entries(content)[0];
184
+ if (first)
185
+ return [first[0], first[1]];
186
+ return ['application/json', undefined];
187
+ }
188
+ function resolveBody(mediaType) {
189
+ // 1. Direct example
190
+ if (mediaType.example !== undefined)
191
+ return mediaType.example;
192
+ // 2. Named examples — first one's value
193
+ if (mediaType.examples) {
194
+ for (const ex of Object.values(mediaType.examples)) {
195
+ if (ex && 'value' in ex && ex.value !== undefined)
196
+ return ex.value;
197
+ }
198
+ }
199
+ // 3. Schema example
200
+ if (mediaType.schema) {
201
+ const schema = mediaType.schema;
202
+ if (schema.example !== undefined)
203
+ return schema.example;
204
+ }
205
+ // 4. Generate from schema
206
+ if (mediaType.schema) {
207
+ return generateFromSchema(mediaType.schema);
208
+ }
209
+ return {};
210
+ }
211
+ //# sourceMappingURL=route-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-extractor.js","sourceRoot":"","sources":["../../src/mock-server/route-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Mock Server — Types
3
+ */
4
+ import type { USDDocument } from '../usd/spec/types.js';
5
+ /** Accepted spec input: raw object (OpenAPI 3.x or USD) */
6
+ export type SpecDocument = USDDocument | Record<string, unknown>;
7
+ export interface MockServerOptions {
8
+ /** OpenAPI/USD spec: raw JSON/YAML string, parsed object, or file path */
9
+ spec: string | SpecDocument;
10
+ /** HTTP port. Default: 3000 */
11
+ port?: number;
12
+ /** Hostname. Default: '0.0.0.0' */
13
+ hostname?: string;
14
+ /** Simulate network latency in ms */
15
+ delay?: number;
16
+ /** Validate incoming request bodies against schema. Default: true */
17
+ validateRequests?: boolean;
18
+ /** Which protocols to enable beyond HTTP (only if USD doc) */
19
+ protocols?: {
20
+ /** Enable WebSocket procedures. Default: false */
21
+ ws?: boolean;
22
+ /** Enable JSON-RPC on /rpc. Default: false */
23
+ jsonrpc?: boolean;
24
+ };
25
+ /** Called once listening */
26
+ onListen?: () => void;
27
+ }
28
+ export interface MockModuleOptions {
29
+ /** Simulate network latency in ms */
30
+ delay?: number;
31
+ /** Validate incoming request bodies against schema. Default: true */
32
+ validateRequests?: boolean;
33
+ }
34
+ /** A resolved HTTP route ready to be served */
35
+ export interface MockRoute {
36
+ /** HTTP method (GET, POST, etc.) */
37
+ method: string;
38
+ /** Express-style path pattern (/users/:id) */
39
+ pathPattern: string;
40
+ /** OpenAPI operationId */
41
+ operationId?: string;
42
+ /** Resolved parameters */
43
+ parameters: ResolvedParam[];
44
+ /** JSON Schema for request body validation */
45
+ requestBodySchema?: Record<string, unknown>;
46
+ /** Whether request body is required */
47
+ requestBodyRequired?: boolean;
48
+ /** Pre-resolved mock response */
49
+ response: MockResponse;
50
+ }
51
+ export interface ResolvedParam {
52
+ name: string;
53
+ in: 'path' | 'query' | 'header' | 'cookie';
54
+ required?: boolean;
55
+ schema?: Record<string, unknown>;
56
+ example?: unknown;
57
+ }
58
+ export interface MockResponse {
59
+ statusCode: number;
60
+ contentType: string;
61
+ body: unknown;
62
+ headers?: Record<string, string>;
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mock-server/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,2DAA2D;AAC3D,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEhE,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;IAC3B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,8DAA8D;IAC9D,SAAS,CAAC,EAAE;QACV,kDAAkD;QAClD,EAAE,CAAC,EAAE,OAAO,CAAA;QACZ,8CAA8C;QAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,uCAAuC;IACvC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,iCAAiC;IACjC,QAAQ,EAAE,YAAY,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Mock Server — Types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mock-server/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -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,82 @@
1
+ /**
2
+ * Runtime helpers for contract-bound policy metadata.
3
+ */
4
+ import { RaffelError } from '../core/router.js';
5
+ import { createRateLimitInterceptor } from '../middleware/interceptors/rate-limit.js';
6
+ import { createTimeoutInterceptor } from '../middleware/interceptors/timeout.js';
7
+ import { getAuthRoles, getAuthScopes, getPrincipalId } from '../types/index.js';
8
+ import { normalizeContractPolicies } from '../types/policies.js';
9
+ function createContractAuthPolicyInterceptor(policy) {
10
+ const mode = policy.mode ?? 'required';
11
+ const requiredRoles = policy.roles ?? [];
12
+ const requiredScopes = policy.scopes ?? [];
13
+ return async (_envelope, ctx, next) => {
14
+ const auth = ctx.auth;
15
+ const isAuthenticated = auth?.authenticated === true && typeof auth.principal === 'string';
16
+ if (!isAuthenticated) {
17
+ if (mode === 'optional') {
18
+ return next();
19
+ }
20
+ throw new RaffelError('UNAUTHENTICATED', 'Authentication required');
21
+ }
22
+ if (requiredRoles.length > 0) {
23
+ const roles = [...getAuthRoles(ctx.auth)];
24
+ const allowed = requiredRoles.some((role) => roles.includes(role));
25
+ if (!allowed) {
26
+ throw new RaffelError('PERMISSION_DENIED', 'Required role policy not satisfied', {
27
+ requiredRoles,
28
+ roles,
29
+ });
30
+ }
31
+ }
32
+ if (requiredScopes.length > 0) {
33
+ const scopes = [...getAuthScopes(ctx.auth)];
34
+ const allowed = requiredScopes.some((scope) => scopes.includes(scope));
35
+ if (!allowed) {
36
+ throw new RaffelError('PERMISSION_DENIED', 'Required scope policy not satisfied', {
37
+ requiredScopes,
38
+ scopes,
39
+ });
40
+ }
41
+ }
42
+ return next();
43
+ };
44
+ }
45
+ function createRateLimitKeyGenerator(policy) {
46
+ switch (policy.key) {
47
+ case 'user':
48
+ return (_envelope, ctx) => getPrincipalId(ctx.auth?.principal) ?? `req:${ctx.requestId}`;
49
+ case 'client':
50
+ return (envelope, ctx) => envelope.metadata['x-client-id']
51
+ || envelope.metadata['x-forwarded-for']
52
+ || getPrincipalId(ctx.auth?.principal)
53
+ || `req:${ctx.requestId}`;
54
+ case 'request':
55
+ return (_envelope, ctx) => `req:${ctx.requestId}`;
56
+ default:
57
+ return undefined;
58
+ }
59
+ }
60
+ export function createPolicyInterceptors(policies) {
61
+ const normalized = normalizeContractPolicies(policies);
62
+ if (!normalized)
63
+ return [];
64
+ const interceptors = [];
65
+ if (normalized.auth) {
66
+ interceptors.push(createContractAuthPolicyInterceptor(normalized.auth));
67
+ }
68
+ if (normalized.timeout) {
69
+ interceptors.push(createTimeoutInterceptor({ defaultMs: normalized.timeout.timeoutMs }));
70
+ }
71
+ if (normalized.rateLimit) {
72
+ interceptors.push(createRateLimitInterceptor({
73
+ windowMs: normalized.rateLimit.windowMs,
74
+ maxRequests: normalized.rateLimit.maxRequests,
75
+ ...(createRateLimitKeyGenerator(normalized.rateLimit) && {
76
+ keyGenerator: createRateLimitKeyGenerator(normalized.rateLimit),
77
+ }),
78
+ }));
79
+ }
80
+ return interceptors;
81
+ }
82
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/policy/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAA;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAEhF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAM/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAEhE,SAAS,mCAAmC,CAAC,MAA0B;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,UAAU,CAAA;IACtC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;IACxC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;IAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;QACrB,MAAM,eAAe,GAAG,IAAI,EAAE,aAAa,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAA;QAE1F,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,OAAO,IAAI,EAAE,CAAA;YACf,CAAC;YACD,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;YACzC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;YAClE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,WAAW,CAAC,mBAAmB,EAAE,oCAAoC,EAAE;oBAC/E,aAAa;oBACb,KAAK;iBACN,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;YAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;YACtE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,WAAW,CAAC,mBAAmB,EAAE,qCAAqC,EAAE;oBAChF,cAAc;oBACd,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,EAAE,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,MAA+B;IAE/B,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,EAAE,CAAA;QAC1F,KAAK,QAAQ;YACX,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CACvB,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;mBAC7B,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;mBACpC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;mBACnC,OAAO,GAAG,CAAC,SAAS,EAAE,CAAA;QAC7B,KAAK,SAAS;YACZ,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,SAAS,EAAE,CAAA;QACnD;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAA2B;IAE3B,MAAM,UAAU,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IACtD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAA;IAE1B,MAAM,YAAY,GAAkB,EAAE,CAAA;IAEtC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,YAAY,CAAC,IAAI,CAAC,mCAAmC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAC1F,CAAC;IAED,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzB,YAAY,CAAC,IAAI,CACf,0BAA0B,CAAC;YACzB,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,QAAQ;YACvC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW;YAC7C,GAAG,CAAC,2BAA2B,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI;gBACvD,YAAY,EAAE,2BAA2B,CAAC,UAAU,CAAC,SAAS,CAAC;aAChE,CAAC;SACH,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO,YAAY,CAAA;AACrB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Ports — Hexagonal Architecture Boundaries
3
+ *
4
+ * This module exports all port interfaces (contracts) that define the boundaries
5
+ * between Raffel's core domain and external infrastructure.
6
+ *
7
+ * Outbound ports: interfaces that the core requires, implemented by adapters.
8
+ * (e.g., LoggerPort, SessionStore, CacheDriver, RateLimitDriver, etc.)
9
+ */
10
+ export type { LoggerPort, LoggerFactory, LogData } from './outbound/logger.js';
11
+ export type { SessionStore, SessionData, Session } from './outbound/session-store.js';
12
+ export type { RateLimitDriver, RateLimitRecord } from './outbound/rate-limit-driver.js';
13
+ export type { CacheDriver, CacheEntry, CacheGetResult, CacheStats } from './outbound/cache-driver.js';
14
+ export type { CacheStore } from './outbound/cache-store.js';
15
+ export type { EventDeliveryStore } from './outbound/event-store.js';
16
+ export type { ValidatorAdapter, ValidationResult, ValidationErrorDetails } from './outbound/validator.js';
17
+ export type { ChannelPresencePort } from './outbound/channel-presence.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAG9E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAGrF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAGvF,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAGrG,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAG3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAGnE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAGzG,YAAY,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Ports — Hexagonal Architecture Boundaries
3
+ *
4
+ * This module exports all port interfaces (contracts) that define the boundaries
5
+ * between Raffel's core domain and external infrastructure.
6
+ *
7
+ * Outbound ports: interfaces that the core requires, implemented by adapters.
8
+ * (e.g., LoggerPort, SessionStore, CacheDriver, RateLimitDriver, etc.)
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cache Driver Port
3
+ *
4
+ * Canonical interface for cache backends.
5
+ * Re-exports from cache/types.ts to establish the port
6
+ * as the single source of truth.
7
+ */
8
+ export type { CacheDriver, CacheEntry, CacheGetResult, CacheStats } from '../../cache/types.js';
9
+ //# sourceMappingURL=cache-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-driver.d.ts","sourceRoot":"","sources":["../../../src/ports/outbound/cache-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cache Driver Port
3
+ *
4
+ * Canonical interface for cache backends.
5
+ * Re-exports from cache/types.ts to establish the port
6
+ * as the single source of truth.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=cache-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-driver.js","sourceRoot":"","sources":["../../../src/ports/outbound/cache-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Cache Store Port (Interceptor-level)
3
+ *
4
+ * Simpler cache interface used by the cache interceptor.
5
+ * Re-exports from middleware/types.ts.
6
+ */
7
+ export type { CacheStore } from '../../middleware/types.js';
8
+ //# sourceMappingURL=cache-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-store.d.ts","sourceRoot":"","sources":["../../../src/ports/outbound/cache-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Cache Store Port (Interceptor-level)
3
+ *
4
+ * Simpler cache interface used by the cache interceptor.
5
+ * Re-exports from middleware/types.ts.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cache-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-store.js","sourceRoot":"","sources":["../../../src/ports/outbound/cache-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Channel Presence Port
3
+ *
4
+ * Interface for channel state management and presence tracking.
5
+ * Extracted from the ChannelManager to allow alternative implementations
6
+ * (e.g., Redis-backed presence for multi-instance deployments).
7
+ */
8
+ import type { ChannelMember } from '../../channels/types.js';
9
+ /**
10
+ * Channel presence port — manages member tracking in presence channels.
11
+ *
12
+ * The default in-memory implementation lives in `channels/channel-manager.ts`.
13
+ * Alternative implementations (Redis, S3db) can satisfy this port for
14
+ * multi-instance deployments where presence state must be shared.
15
+ */
16
+ export interface ChannelPresencePort {
17
+ /** Get all members in a presence channel */
18
+ getMembers(channel: string): ChannelMember[];
19
+ /** Get a specific member */
20
+ getMember(channel: string, socketId: string): ChannelMember | undefined;
21
+ /** Get member count */
22
+ getMemberCount(channel: string): number;
23
+ /** Add a member to a channel */
24
+ addMember(channel: string, member: ChannelMember): void;
25
+ /** Remove a member from a channel */
26
+ removeMember(channel: string, socketId: string): void;
27
+ /** Check if a member exists */
28
+ hasMember(channel: string, socketId: string): boolean;
29
+ }
30
+ //# sourceMappingURL=channel-presence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-presence.d.ts","sourceRoot":"","sources":["../../../src/ports/outbound/channel-presence.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAAA;IAE5C,4BAA4B;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAA;IAEvE,uBAAuB;IACvB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;IAEvC,gCAAgC;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAEvD,qCAAqC;IACrC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAErD,+BAA+B;IAC/B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CACtD"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Channel Presence Port
3
+ *
4
+ * Interface for channel state management and presence tracking.
5
+ * Extracted from the ChannelManager to allow alternative implementations
6
+ * (e.g., Redis-backed presence for multi-instance deployments).
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=channel-presence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-presence.js","sourceRoot":"","sources":["../../../src/ports/outbound/channel-presence.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Event Delivery Store Port
3
+ *
4
+ * Canonical interface for event delivery state persistence.
5
+ * Re-exports from core/event-delivery.ts to establish the port
6
+ * as the single source of truth.
7
+ */
8
+ export type { EventDeliveryStore } from '../../core/event-delivery.js';
9
+ //# sourceMappingURL=event-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../../../src/ports/outbound/event-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Event Delivery Store Port
3
+ *
4
+ * Canonical interface for event delivery state persistence.
5
+ * Re-exports from core/event-delivery.ts to establish the port
6
+ * as the single source of truth.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=event-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../../src/ports/outbound/event-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Logger Port
3
+ *
4
+ * Canonical logging interface for Raffel's hexagonal architecture.
5
+ * Any logger implementation (pino, winston, console, etc.) can satisfy this port.
6
+ */
7
+ /**
8
+ * Structured log data — arbitrary key/value pairs for structured logging.
9
+ */
10
+ export type LogData = Record<string, unknown>;
11
+ /**
12
+ * Logger port — the minimal logging contract used throughout Raffel core.
13
+ *
14
+ * All core and application modules depend on this interface, never on a
15
+ * concrete logger (e.g., pino). Concrete adapters live in `adapters/outbound/logger/`.
16
+ */
17
+ export interface LoggerPort {
18
+ debug(msg: string): void;
19
+ debug(data: LogData, msg: string): void;
20
+ info(msg: string): void;
21
+ info(data: LogData, msg: string): void;
22
+ warn(msg: string): void;
23
+ warn(data: LogData, msg: string): void;
24
+ error(msg: string): void;
25
+ error(data: LogData, msg: string): void;
26
+ }
27
+ /**
28
+ * Logger factory — creates child loggers scoped to a component.
29
+ */
30
+ export type LoggerFactory = (component: string) => LoggerPort;
31
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/ports/outbound/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Logger Port
3
+ *
4
+ * Canonical logging interface for Raffel's hexagonal architecture.
5
+ * Any logger implementation (pino, winston, console, etc.) can satisfy this port.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/ports/outbound/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Rate Limit Driver Port
3
+ *
4
+ * Canonical interface for rate limiting backends.
5
+ * Re-exports from rate-limit/types.ts to establish the port
6
+ * as the single source of truth.
7
+ */
8
+ export type { RateLimitDriver, RateLimitRecord } from '../../rate-limit/types.js';
9
+ //# sourceMappingURL=rate-limit-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-driver.d.ts","sourceRoot":"","sources":["../../../src/ports/outbound/rate-limit-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA"}