raffel 0.2.3 → 1.0.0-next.f81d4db

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 (590) hide show
  1. package/dist/adapters/grpc.d.ts.map +1 -1
  2. package/dist/adapters/grpc.js +1 -15
  3. package/dist/adapters/grpc.js.map +1 -1
  4. package/dist/adapters/http.d.ts +6 -0
  5. package/dist/adapters/http.d.ts.map +1 -1
  6. package/dist/adapters/http.js +53 -86
  7. package/dist/adapters/http.js.map +1 -1
  8. package/dist/adapters/index.d.ts +0 -2
  9. package/dist/adapters/index.d.ts.map +1 -1
  10. package/dist/adapters/index.js +0 -2
  11. package/dist/adapters/index.js.map +1 -1
  12. package/dist/adapters/tcp.d.ts +16 -0
  13. package/dist/adapters/tcp.d.ts.map +1 -1
  14. package/dist/adapters/tcp.js +85 -34
  15. package/dist/adapters/tcp.js.map +1 -1
  16. package/dist/adapters/websocket.d.ts.map +1 -1
  17. package/dist/adapters/websocket.js +1 -14
  18. package/dist/adapters/websocket.js.map +1 -1
  19. package/dist/cache/drivers/index.d.ts +0 -1
  20. package/dist/cache/drivers/index.d.ts.map +1 -1
  21. package/dist/cache/drivers/index.js +0 -1
  22. package/dist/cache/drivers/index.js.map +1 -1
  23. package/dist/cache/factory.d.ts +2 -9
  24. package/dist/cache/factory.d.ts.map +1 -1
  25. package/dist/cache/factory.js +1 -19
  26. package/dist/cache/factory.js.map +1 -1
  27. package/dist/cache/index.d.ts +2 -7
  28. package/dist/cache/index.d.ts.map +1 -1
  29. package/dist/cache/index.js +1 -6
  30. package/dist/cache/index.js.map +1 -1
  31. package/dist/cache/types.d.ts +1 -32
  32. package/dist/cache/types.d.ts.map +1 -1
  33. package/dist/core/event-delivery.d.ts.map +1 -1
  34. package/dist/core/event-delivery.js +5 -3
  35. package/dist/core/event-delivery.js.map +1 -1
  36. package/dist/core/index.d.ts +1 -1
  37. package/dist/core/index.d.ts.map +1 -1
  38. package/dist/core/registry.d.ts +3 -3
  39. package/dist/core/registry.d.ts.map +1 -1
  40. package/dist/core/registry.js +30 -8
  41. package/dist/core/registry.js.map +1 -1
  42. package/dist/core/router.d.ts.map +1 -1
  43. package/dist/core/router.js +5 -4
  44. package/dist/core/router.js.map +1 -1
  45. package/dist/docs/generators/code-samples.d.ts +32 -0
  46. package/dist/docs/generators/code-samples.d.ts.map +1 -0
  47. package/dist/docs/generators/code-samples.js +322 -0
  48. package/dist/docs/generators/code-samples.js.map +1 -0
  49. package/dist/docs/generators/errors-types.d.ts +2 -2
  50. package/dist/docs/generators/errors-types.js +2 -2
  51. package/dist/docs/generators/http-generator.d.ts +10 -0
  52. package/dist/docs/generators/http-generator.d.ts.map +1 -1
  53. package/dist/docs/generators/http-generator.js +100 -3
  54. package/dist/docs/generators/http-generator.js.map +1 -1
  55. package/dist/docs/generators/usd-generator.d.ts +31 -1
  56. package/dist/docs/generators/usd-generator.d.ts.map +1 -1
  57. package/dist/docs/generators/usd-generator.js +19 -1
  58. package/dist/docs/generators/usd-generator.js.map +1 -1
  59. package/dist/docs/generators/websocket-generator.d.ts.map +1 -1
  60. package/dist/docs/generators/websocket-generator.js +6 -4
  61. package/dist/docs/generators/websocket-generator.js.map +1 -1
  62. package/dist/docs/ui/html-builder.d.ts.map +1 -1
  63. package/dist/docs/ui/html-builder.js +260 -54
  64. package/dist/docs/ui/html-builder.js.map +1 -1
  65. package/dist/docs/ui/styles.d.ts.map +1 -1
  66. package/dist/docs/ui/styles.js +240 -30
  67. package/dist/docs/ui/styles.js.map +1 -1
  68. package/dist/docs/ui/types.d.ts +15 -1
  69. package/dist/docs/ui/types.d.ts.map +1 -1
  70. package/dist/docs/usd-middleware.d.ts +32 -7
  71. package/dist/docs/usd-middleware.d.ts.map +1 -1
  72. package/dist/docs/usd-middleware.js +5 -1
  73. package/dist/docs/usd-middleware.js.map +1 -1
  74. package/dist/dx/index.d.ts +2 -0
  75. package/dist/dx/index.d.ts.map +1 -1
  76. package/dist/dx/index.js +1 -0
  77. package/dist/dx/index.js.map +1 -1
  78. package/dist/dx/logging/index.d.ts.map +1 -1
  79. package/dist/dx/logging/index.js +5 -3
  80. package/dist/dx/logging/index.js.map +1 -1
  81. package/dist/dx/scenarios.d.ts +26 -0
  82. package/dist/dx/scenarios.d.ts.map +1 -0
  83. package/dist/dx/scenarios.js +109 -0
  84. package/dist/dx/scenarios.js.map +1 -0
  85. package/dist/errors/codes.d.ts +1 -1
  86. package/dist/errors/codes.js +1 -1
  87. package/dist/graphql/adapter.js +1 -1
  88. package/dist/http/index.d.ts +2 -0
  89. package/dist/http/index.d.ts.map +1 -1
  90. package/dist/http/index.js +4 -0
  91. package/dist/http/index.js.map +1 -1
  92. package/dist/http/openapi-ui.d.ts +174 -0
  93. package/dist/http/openapi-ui.d.ts.map +1 -0
  94. package/dist/http/openapi-ui.js +221 -0
  95. package/dist/http/openapi-ui.js.map +1 -0
  96. package/dist/http/serve.d.ts +14 -0
  97. package/dist/http/serve.d.ts.map +1 -1
  98. package/dist/http/serve.js +8 -1
  99. package/dist/http/serve.js.map +1 -1
  100. package/dist/index.d.ts +17 -10
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +12 -6
  103. package/dist/index.js.map +1 -1
  104. package/dist/mcp/cli.d.ts +2 -1
  105. package/dist/mcp/cli.d.ts.map +1 -1
  106. package/dist/mcp/cli.js +30 -7
  107. package/dist/mcp/cli.js.map +1 -1
  108. package/dist/mcp/docs/adapters.d.ts.map +1 -1
  109. package/dist/mcp/docs/adapters.js +1 -117
  110. package/dist/mcp/docs/adapters.js.map +1 -1
  111. package/dist/mcp/docs/index.d.ts +0 -1
  112. package/dist/mcp/docs/index.d.ts.map +1 -1
  113. package/dist/mcp/docs/index.js +0 -1
  114. package/dist/mcp/docs/index.js.map +1 -1
  115. package/dist/mcp/docs/interceptors.d.ts.map +1 -1
  116. package/dist/mcp/docs/interceptors.js +272 -1
  117. package/dist/mcp/docs/interceptors.js.map +1 -1
  118. package/dist/mcp/docs/patterns.js +1 -1
  119. package/dist/mcp/prompts/index.d.ts.map +1 -1
  120. package/dist/mcp/prompts/index.js +147 -22
  121. package/dist/mcp/prompts/index.js.map +1 -1
  122. package/dist/mcp/resources/index.d.ts.map +1 -1
  123. package/dist/mcp/resources/index.js +508 -10
  124. package/dist/mcp/resources/index.js.map +1 -1
  125. package/dist/mcp/server.js +1 -1
  126. package/dist/mcp/server.js.map +1 -1
  127. package/dist/mcp/tools/definitions.d.ts +2 -0
  128. package/dist/mcp/tools/definitions.d.ts.map +1 -1
  129. package/dist/mcp/tools/definitions.js +149 -1
  130. package/dist/mcp/tools/definitions.js.map +1 -1
  131. package/dist/mcp/tools/handlers.d.ts.map +1 -1
  132. package/dist/mcp/tools/handlers.js +828 -44
  133. package/dist/mcp/tools/handlers.js.map +1 -1
  134. package/dist/mcp/types.d.ts +1 -1
  135. package/dist/mcp/types.d.ts.map +1 -1
  136. package/dist/metrics/interceptor.d.ts.map +1 -1
  137. package/dist/metrics/interceptor.js +10 -2
  138. package/dist/metrics/interceptor.js.map +1 -1
  139. package/dist/middleware/interceptors/cache.d.ts +1 -1
  140. package/dist/middleware/interceptors/cache.d.ts.map +1 -1
  141. package/dist/middleware/interceptors/cache.js +4 -2
  142. package/dist/middleware/interceptors/cache.js.map +1 -1
  143. package/dist/middleware/interceptors/envelope.d.ts.map +1 -1
  144. package/dist/middleware/interceptors/envelope.js +12 -14
  145. package/dist/middleware/interceptors/envelope.js.map +1 -1
  146. package/dist/middleware/interceptors/logging.d.ts.map +1 -1
  147. package/dist/middleware/interceptors/logging.js +11 -6
  148. package/dist/middleware/interceptors/logging.js.map +1 -1
  149. package/dist/middleware/session/drivers/memory.d.ts +36 -0
  150. package/dist/middleware/session/drivers/memory.d.ts.map +1 -0
  151. package/dist/middleware/session/drivers/memory.js +82 -0
  152. package/dist/middleware/session/drivers/memory.js.map +1 -0
  153. package/dist/middleware/session/drivers/redis.d.ts +58 -0
  154. package/dist/middleware/session/drivers/redis.d.ts.map +1 -0
  155. package/dist/middleware/session/drivers/redis.js +70 -0
  156. package/dist/middleware/session/drivers/redis.js.map +1 -0
  157. package/dist/middleware/session/drivers/s3db.d.ts +65 -0
  158. package/dist/middleware/session/drivers/s3db.d.ts.map +1 -0
  159. package/dist/middleware/session/drivers/s3db.js +98 -0
  160. package/dist/middleware/session/drivers/s3db.js.map +1 -0
  161. package/dist/middleware/session/index.d.ts +47 -0
  162. package/dist/middleware/session/index.d.ts.map +1 -0
  163. package/dist/middleware/session/index.js +46 -0
  164. package/dist/middleware/session/index.js.map +1 -0
  165. package/dist/middleware/session/interceptor.d.ts +42 -0
  166. package/dist/middleware/session/interceptor.d.ts.map +1 -0
  167. package/dist/middleware/session/interceptor.js +264 -0
  168. package/dist/middleware/session/interceptor.js.map +1 -0
  169. package/dist/middleware/session/types.d.ts +116 -0
  170. package/dist/middleware/session/types.d.ts.map +1 -0
  171. package/dist/middleware/session/types.js +9 -0
  172. package/dist/middleware/session/types.js.map +1 -0
  173. package/dist/proxy/connect-tunnel.d.ts +50 -0
  174. package/dist/proxy/connect-tunnel.d.ts.map +1 -0
  175. package/dist/proxy/connect-tunnel.js +163 -0
  176. package/dist/proxy/connect-tunnel.js.map +1 -0
  177. package/dist/proxy/http-forward.d.ts +48 -0
  178. package/dist/proxy/http-forward.d.ts.map +1 -0
  179. package/dist/proxy/http-forward.js +160 -0
  180. package/dist/proxy/http-forward.js.map +1 -0
  181. package/dist/proxy/index.d.ts +19 -0
  182. package/dist/proxy/index.d.ts.map +1 -0
  183. package/dist/proxy/index.js +14 -0
  184. package/dist/proxy/index.js.map +1 -0
  185. package/dist/proxy/socks5.d.ts +22 -0
  186. package/dist/proxy/socks5.d.ts.map +1 -0
  187. package/dist/proxy/socks5.js +307 -0
  188. package/dist/proxy/socks5.js.map +1 -0
  189. package/dist/proxy/transparent.d.ts +40 -0
  190. package/dist/proxy/transparent.d.ts.map +1 -0
  191. package/dist/proxy/transparent.js +144 -0
  192. package/dist/proxy/transparent.js.map +1 -0
  193. package/dist/proxy/types.d.ts +32 -0
  194. package/dist/proxy/types.d.ts.map +1 -0
  195. package/dist/proxy/types.js +5 -0
  196. package/dist/proxy/types.js.map +1 -0
  197. package/dist/proxy/utils/auth.d.ts +31 -0
  198. package/dist/proxy/utils/auth.d.ts.map +1 -0
  199. package/dist/proxy/utils/auth.js +69 -0
  200. package/dist/proxy/utils/auth.js.map +1 -0
  201. package/dist/proxy/utils/hop-headers.d.ts +13 -0
  202. package/dist/proxy/utils/hop-headers.d.ts.map +1 -0
  203. package/dist/proxy/utils/hop-headers.js +38 -0
  204. package/dist/proxy/utils/hop-headers.js.map +1 -0
  205. package/dist/proxy/utils/pipe.d.ts +22 -0
  206. package/dist/proxy/utils/pipe.d.ts.map +1 -0
  207. package/dist/proxy/utils/pipe.js +60 -0
  208. package/dist/proxy/utils/pipe.js.map +1 -0
  209. package/dist/rate-limit/factory.d.ts.map +1 -1
  210. package/dist/rate-limit/factory.js +30 -6
  211. package/dist/rate-limit/factory.js.map +1 -1
  212. package/dist/server/builder/config-preview.d.ts +34 -0
  213. package/dist/server/builder/config-preview.d.ts.map +1 -0
  214. package/dist/server/builder/config-preview.js +95 -0
  215. package/dist/server/builder/config-preview.js.map +1 -0
  216. package/dist/server/builder/lifecycle-utils.d.ts +11 -0
  217. package/dist/server/builder/lifecycle-utils.d.ts.map +1 -0
  218. package/dist/server/builder/lifecycle-utils.js +32 -0
  219. package/dist/server/builder/lifecycle-utils.js.map +1 -0
  220. package/dist/server/builder/lifecycle.d.ts +86 -0
  221. package/dist/server/builder/lifecycle.d.ts.map +1 -0
  222. package/dist/server/builder/lifecycle.js +738 -0
  223. package/dist/server/builder/lifecycle.js.map +1 -0
  224. package/dist/server/builder/single-port-utils.d.ts +27 -0
  225. package/dist/server/builder/single-port-utils.d.ts.map +1 -0
  226. package/dist/server/builder/single-port-utils.js +170 -0
  227. package/dist/server/builder/single-port-utils.js.map +1 -0
  228. package/dist/server/builder.d.ts.map +1 -1
  229. package/dist/server/builder.js +446 -601
  230. package/dist/server/builder.js.map +1 -1
  231. package/dist/server/discovery-bootstrap.d.ts +21 -0
  232. package/dist/server/discovery-bootstrap.d.ts.map +1 -0
  233. package/dist/server/discovery-bootstrap.js +39 -0
  234. package/dist/server/discovery-bootstrap.js.map +1 -0
  235. package/dist/server/errors.d.ts.map +1 -1
  236. package/dist/server/errors.js +1 -33
  237. package/dist/server/errors.js.map +1 -1
  238. package/dist/server/front-door.d.ts +34 -0
  239. package/dist/server/front-door.d.ts.map +1 -0
  240. package/dist/server/front-door.js +238 -0
  241. package/dist/server/front-door.js.map +1 -0
  242. package/dist/server/fs-routes/types.d.ts +6 -0
  243. package/dist/server/fs-routes/types.d.ts.map +1 -1
  244. package/dist/server/handler-builders.d.ts +22 -4
  245. package/dist/server/handler-builders.d.ts.map +1 -1
  246. package/dist/server/handler-builders.js +37 -14
  247. package/dist/server/handler-builders.js.map +1 -1
  248. package/dist/server/index.d.ts +4 -1
  249. package/dist/server/index.d.ts.map +1 -1
  250. package/dist/server/index.js +2 -0
  251. package/dist/server/index.js.map +1 -1
  252. package/dist/server/interceptor-utils.d.ts +8 -0
  253. package/dist/server/interceptor-utils.d.ts.map +1 -0
  254. package/dist/server/interceptor-utils.js +23 -0
  255. package/dist/server/interceptor-utils.js.map +1 -0
  256. package/dist/server/port-binding.d.ts +44 -0
  257. package/dist/server/port-binding.d.ts.map +1 -0
  258. package/dist/server/port-binding.js +94 -0
  259. package/dist/server/port-binding.js.map +1 -0
  260. package/dist/server/protocol-aliases.d.ts +56 -0
  261. package/dist/server/protocol-aliases.d.ts.map +1 -0
  262. package/dist/server/protocol-aliases.js +47 -0
  263. package/dist/server/protocol-aliases.js.map +1 -0
  264. package/dist/server/protocol-config.d.ts +17 -1
  265. package/dist/server/protocol-config.d.ts.map +1 -1
  266. package/dist/server/protocol-config.js +116 -9
  267. package/dist/server/protocol-config.js.map +1 -1
  268. package/dist/server/resource-builder.js +3 -3
  269. package/dist/server/resource-builder.js.map +1 -1
  270. package/dist/server/rest-middleware.d.ts.map +1 -1
  271. package/dist/server/rest-middleware.js +1 -15
  272. package/dist/server/rest-middleware.js.map +1 -1
  273. package/dist/server/router-module.d.ts.map +1 -1
  274. package/dist/server/router-module.js +22 -99
  275. package/dist/server/router-module.js.map +1 -1
  276. package/dist/server/shared-context.d.ts.map +1 -1
  277. package/dist/server/shared-context.js +3 -1
  278. package/dist/server/shared-context.js.map +1 -1
  279. package/dist/server/single-port/dispatcher.d.ts +10 -0
  280. package/dist/server/single-port/dispatcher.d.ts.map +1 -0
  281. package/dist/server/single-port/dispatcher.js +188 -0
  282. package/dist/server/single-port/dispatcher.js.map +1 -0
  283. package/dist/server/single-port/index.d.ts +4 -0
  284. package/dist/server/single-port/index.d.ts.map +1 -0
  285. package/dist/server/single-port/index.js +3 -0
  286. package/dist/server/single-port/index.js.map +1 -0
  287. package/dist/server/single-port/registry.d.ts +19 -0
  288. package/dist/server/single-port/registry.d.ts.map +1 -0
  289. package/dist/server/single-port/registry.js +24 -0
  290. package/dist/server/single-port/registry.js.map +1 -0
  291. package/dist/server/single-port/types.d.ts +46 -0
  292. package/dist/server/single-port/types.d.ts.map +1 -0
  293. package/dist/server/single-port/types.js +2 -0
  294. package/dist/server/single-port/types.js.map +1 -0
  295. package/dist/server/telemetry-bootstrap.d.ts +38 -0
  296. package/dist/server/telemetry-bootstrap.d.ts.map +1 -0
  297. package/dist/server/telemetry-bootstrap.js +115 -0
  298. package/dist/server/telemetry-bootstrap.js.map +1 -0
  299. package/dist/server/types.d.ts +422 -21
  300. package/dist/server/types.d.ts.map +1 -1
  301. package/dist/testing/echo-protection.d.ts +30 -0
  302. package/dist/testing/echo-protection.d.ts.map +1 -0
  303. package/dist/testing/echo-protection.js +158 -0
  304. package/dist/testing/echo-protection.js.map +1 -0
  305. package/dist/testing/index.d.ts +344 -0
  306. package/dist/testing/index.d.ts.map +1 -0
  307. package/dist/testing/index.js +1072 -0
  308. package/dist/testing/index.js.map +1 -0
  309. package/dist/testing/mock-dns-server.d.ts +31 -0
  310. package/dist/testing/mock-dns-server.d.ts.map +1 -0
  311. package/dist/testing/mock-dns-server.js +247 -0
  312. package/dist/testing/mock-dns-server.js.map +1 -0
  313. package/dist/testing/mock-hls-server.d.ts +85 -0
  314. package/dist/testing/mock-hls-server.d.ts.map +1 -0
  315. package/dist/testing/mock-hls-server.js +252 -0
  316. package/dist/testing/mock-hls-server.js.map +1 -0
  317. package/dist/testing/mock-proxy-server.d.ts +78 -0
  318. package/dist/testing/mock-proxy-server.d.ts.map +1 -0
  319. package/dist/testing/mock-proxy-server.js +277 -0
  320. package/dist/testing/mock-proxy-server.js.map +1 -0
  321. package/dist/testing/mock-sse-server.d.ts +56 -0
  322. package/dist/testing/mock-sse-server.d.ts.map +1 -0
  323. package/dist/testing/mock-sse-server.js +206 -0
  324. package/dist/testing/mock-sse-server.js.map +1 -0
  325. package/dist/testing/proxy-certs.d.ts +9 -0
  326. package/dist/testing/proxy-certs.d.ts.map +1 -0
  327. package/dist/testing/proxy-certs.js +2 -0
  328. package/dist/testing/proxy-certs.js.map +1 -0
  329. package/dist/testing/service-suite.d.ts +47 -0
  330. package/dist/testing/service-suite.d.ts.map +1 -0
  331. package/dist/testing/service-suite.js +82 -0
  332. package/dist/testing/service-suite.js.map +1 -0
  333. package/dist/testing/service-types.d.ts +32 -0
  334. package/dist/testing/service-types.d.ts.map +1 -0
  335. package/dist/testing/service-types.js +2 -0
  336. package/dist/testing/service-types.js.map +1 -0
  337. package/dist/ui/core/event-delivery.d.ts.map +1 -1
  338. package/dist/ui/core/index.d.ts +1 -1
  339. package/dist/ui/core/index.d.ts.map +1 -1
  340. package/dist/ui/core/registry.d.ts +3 -3
  341. package/dist/ui/core/registry.d.ts.map +1 -1
  342. package/dist/ui/core/router.d.ts.map +1 -1
  343. package/dist/ui/docs/generators/code-samples.d.ts +32 -0
  344. package/dist/ui/docs/generators/code-samples.d.ts.map +1 -0
  345. package/dist/ui/docs/generators/errors-types.d.ts +2 -2
  346. package/dist/ui/docs/generators/http-generator.d.ts +10 -0
  347. package/dist/ui/docs/generators/http-generator.d.ts.map +1 -1
  348. package/dist/ui/docs/generators/usd-generator.d.ts +31 -1
  349. package/dist/ui/docs/generators/usd-generator.d.ts.map +1 -1
  350. package/dist/ui/docs/generators/websocket-generator.d.ts.map +1 -1
  351. package/dist/ui/docs/ui/html-builder.d.ts.map +1 -1
  352. package/dist/ui/docs/ui/styles.d.ts.map +1 -1
  353. package/dist/ui/docs/ui/types.d.ts +15 -1
  354. package/dist/ui/docs/ui/types.d.ts.map +1 -1
  355. package/dist/ui/docs/usd-middleware.d.ts +32 -7
  356. package/dist/ui/docs/usd-middleware.d.ts.map +1 -1
  357. package/dist/ui/errors/codes.d.ts +1 -1
  358. package/dist/ui/server/fs-routes/types.d.ts +6 -0
  359. package/dist/ui/server/fs-routes/types.d.ts.map +1 -1
  360. package/dist/ui/usd/index.d.ts +1 -1
  361. package/dist/ui/usd/index.d.ts.map +1 -1
  362. package/dist/ui/usd/spec/types.d.ts +91 -0
  363. package/dist/ui/usd/spec/types.d.ts.map +1 -1
  364. package/dist/usd/index.d.ts +1 -1
  365. package/dist/usd/index.d.ts.map +1 -1
  366. package/dist/usd/index.js.map +1 -1
  367. package/dist/usd/spec/types.d.ts +91 -0
  368. package/dist/usd/spec/types.d.ts.map +1 -1
  369. package/dist/usd/spec/types.js.map +1 -1
  370. package/dist/utils/certs.d.ts +30 -0
  371. package/dist/utils/certs.d.ts.map +1 -0
  372. package/dist/utils/certs.js +230 -0
  373. package/dist/utils/certs.js.map +1 -0
  374. package/dist/utils/context-utils.d.ts +11 -0
  375. package/dist/utils/context-utils.d.ts.map +1 -0
  376. package/dist/utils/context-utils.js +24 -0
  377. package/dist/utils/context-utils.js.map +1 -0
  378. package/package.json +11 -2
  379. package/dist/adapters/grpc.int.test.d.ts +0 -5
  380. package/dist/adapters/grpc.int.test.d.ts.map +0 -1
  381. package/dist/adapters/grpc.int.test.js +0 -168
  382. package/dist/adapters/grpc.int.test.js.map +0 -1
  383. package/dist/adapters/http.int.test.d.ts +0 -5
  384. package/dist/adapters/http.int.test.d.ts.map +0 -1
  385. package/dist/adapters/http.int.test.js +0 -396
  386. package/dist/adapters/http.int.test.js.map +0 -1
  387. package/dist/adapters/jsonrpc.int.test.d.ts +0 -5
  388. package/dist/adapters/jsonrpc.int.test.d.ts.map +0 -1
  389. package/dist/adapters/jsonrpc.int.test.js +0 -640
  390. package/dist/adapters/jsonrpc.int.test.js.map +0 -1
  391. package/dist/adapters/s3db/adapter.d.ts +0 -105
  392. package/dist/adapters/s3db/adapter.d.ts.map +0 -1
  393. package/dist/adapters/s3db/adapter.js +0 -536
  394. package/dist/adapters/s3db/adapter.js.map +0 -1
  395. package/dist/adapters/s3db/index.d.ts +0 -20
  396. package/dist/adapters/s3db/index.d.ts.map +0 -1
  397. package/dist/adapters/s3db/index.js +0 -25
  398. package/dist/adapters/s3db/index.js.map +0 -1
  399. package/dist/adapters/s3db/s3db.int.test.d.ts +0 -5
  400. package/dist/adapters/s3db/s3db.int.test.d.ts.map +0 -1
  401. package/dist/adapters/s3db/s3db.int.test.js +0 -472
  402. package/dist/adapters/s3db/s3db.int.test.js.map +0 -1
  403. package/dist/adapters/s3db/types.d.ts +0 -277
  404. package/dist/adapters/s3db/types.d.ts.map +0 -1
  405. package/dist/adapters/s3db/types.js +0 -7
  406. package/dist/adapters/s3db/types.js.map +0 -1
  407. package/dist/adapters/s3db/utils/etag.d.ts +0 -65
  408. package/dist/adapters/s3db/utils/etag.d.ts.map +0 -1
  409. package/dist/adapters/s3db/utils/etag.js +0 -99
  410. package/dist/adapters/s3db/utils/etag.js.map +0 -1
  411. package/dist/adapters/s3db/utils/guards.d.ts +0 -121
  412. package/dist/adapters/s3db/utils/guards.d.ts.map +0 -1
  413. package/dist/adapters/s3db/utils/guards.js +0 -169
  414. package/dist/adapters/s3db/utils/guards.js.map +0 -1
  415. package/dist/adapters/s3db/utils/index.d.ts +0 -9
  416. package/dist/adapters/s3db/utils/index.d.ts.map +0 -1
  417. package/dist/adapters/s3db/utils/index.js +0 -10
  418. package/dist/adapters/s3db/utils/index.js.map +0 -1
  419. package/dist/adapters/s3db/utils/populate.d.ts +0 -89
  420. package/dist/adapters/s3db/utils/populate.d.ts.map +0 -1
  421. package/dist/adapters/s3db/utils/populate.js +0 -165
  422. package/dist/adapters/s3db/utils/populate.js.map +0 -1
  423. package/dist/adapters/tcp.int.test.d.ts +0 -5
  424. package/dist/adapters/tcp.int.test.d.ts.map +0 -1
  425. package/dist/adapters/tcp.int.test.js +0 -379
  426. package/dist/adapters/tcp.int.test.js.map +0 -1
  427. package/dist/adapters/udp.int.test.d.ts +0 -5
  428. package/dist/adapters/udp.int.test.d.ts.map +0 -1
  429. package/dist/adapters/udp.int.test.js +0 -397
  430. package/dist/adapters/udp.int.test.js.map +0 -1
  431. package/dist/adapters/websocket.int.test.d.ts +0 -5
  432. package/dist/adapters/websocket.int.test.d.ts.map +0 -1
  433. package/dist/adapters/websocket.int.test.js +0 -383
  434. package/dist/adapters/websocket.int.test.js.map +0 -1
  435. package/dist/cache/drivers/memory.int.test.d.ts +0 -5
  436. package/dist/cache/drivers/memory.int.test.d.ts.map +0 -1
  437. package/dist/cache/drivers/memory.int.test.js +0 -241
  438. package/dist/cache/drivers/memory.int.test.js.map +0 -1
  439. package/dist/cache/drivers/s3db.d.ts +0 -78
  440. package/dist/cache/drivers/s3db.d.ts.map +0 -1
  441. package/dist/cache/drivers/s3db.js +0 -216
  442. package/dist/cache/drivers/s3db.js.map +0 -1
  443. package/dist/channels/channel-manager.int.test.d.ts +0 -5
  444. package/dist/channels/channel-manager.int.test.d.ts.map +0 -1
  445. package/dist/channels/channel-manager.int.test.js +0 -378
  446. package/dist/channels/channel-manager.int.test.js.map +0 -1
  447. package/dist/core/ctx-call.int.test.d.ts +0 -7
  448. package/dist/core/ctx-call.int.test.d.ts.map +0 -1
  449. package/dist/core/ctx-call.int.test.js +0 -263
  450. package/dist/core/ctx-call.int.test.js.map +0 -1
  451. package/dist/core/registry.unit.test.d.ts +0 -2
  452. package/dist/core/registry.unit.test.d.ts.map +0 -1
  453. package/dist/core/registry.unit.test.js +0 -133
  454. package/dist/core/registry.unit.test.js.map +0 -1
  455. package/dist/core/router.int.test.d.ts +0 -2
  456. package/dist/core/router.int.test.d.ts.map +0 -1
  457. package/dist/core/router.int.test.js +0 -368
  458. package/dist/core/router.int.test.js.map +0 -1
  459. package/dist/docs/generators/generators.int.test.d.ts +0 -2
  460. package/dist/docs/generators/generators.int.test.d.ts.map +0 -1
  461. package/dist/docs/generators/generators.int.test.js +0 -105
  462. package/dist/docs/generators/generators.int.test.js.map +0 -1
  463. package/dist/docs/openapi/generator.int.test.d.ts +0 -5
  464. package/dist/docs/openapi/generator.int.test.d.ts.map +0 -1
  465. package/dist/docs/openapi/generator.int.test.js +0 -260
  466. package/dist/docs/openapi/generator.int.test.js.map +0 -1
  467. package/dist/dx/health/health.int.test.d.ts +0 -5
  468. package/dist/dx/health/health.int.test.d.ts.map +0 -1
  469. package/dist/dx/health/health.int.test.js +0 -249
  470. package/dist/dx/health/health.int.test.js.map +0 -1
  471. package/dist/dx/logging/http-logging.int.test.d.ts +0 -5
  472. package/dist/dx/logging/http-logging.int.test.d.ts.map +0 -1
  473. package/dist/dx/logging/http-logging.int.test.js +0 -319
  474. package/dist/dx/logging/http-logging.int.test.js.map +0 -1
  475. package/dist/errors/factories.unit.test.d.ts +0 -7
  476. package/dist/errors/factories.unit.test.d.ts.map +0 -1
  477. package/dist/errors/factories.unit.test.js +0 -358
  478. package/dist/errors/factories.unit.test.js.map +0 -1
  479. package/dist/graphql/graphql.int.test.d.ts +0 -10
  480. package/dist/graphql/graphql.int.test.d.ts.map +0 -1
  481. package/dist/graphql/graphql.int.test.js +0 -698
  482. package/dist/graphql/graphql.int.test.js.map +0 -1
  483. package/dist/graphql/schema-generator.int.test.d.ts +0 -5
  484. package/dist/graphql/schema-generator.int.test.d.ts.map +0 -1
  485. package/dist/graphql/schema-generator.int.test.js +0 -51
  486. package/dist/graphql/schema-generator.int.test.js.map +0 -1
  487. package/dist/http/http.int.test.d.ts +0 -7
  488. package/dist/http/http.int.test.d.ts.map +0 -1
  489. package/dist/http/http.int.test.js +0 -605
  490. package/dist/http/http.int.test.js.map +0 -1
  491. package/dist/http/session-redis.int.test.d.ts +0 -8
  492. package/dist/http/session-redis.int.test.d.ts.map +0 -1
  493. package/dist/http/session-redis.int.test.js +0 -492
  494. package/dist/http/session-redis.int.test.js.map +0 -1
  495. package/dist/metrics/metrics.int.test.d.ts +0 -5
  496. package/dist/metrics/metrics.int.test.d.ts.map +0 -1
  497. package/dist/metrics/metrics.int.test.js +0 -288
  498. package/dist/metrics/metrics.int.test.js.map +0 -1
  499. package/dist/middleware/auth/oauth2.int.test.d.ts +0 -2
  500. package/dist/middleware/auth/oauth2.int.test.d.ts.map +0 -1
  501. package/dist/middleware/auth/oauth2.int.test.js +0 -714
  502. package/dist/middleware/auth/oauth2.int.test.js.map +0 -1
  503. package/dist/middleware/auth.int.test.d.ts +0 -5
  504. package/dist/middleware/auth.int.test.d.ts.map +0 -1
  505. package/dist/middleware/auth.int.test.js +0 -366
  506. package/dist/middleware/auth.int.test.js.map +0 -1
  507. package/dist/middleware/compose.int.test.d.ts +0 -7
  508. package/dist/middleware/compose.int.test.d.ts.map +0 -1
  509. package/dist/middleware/compose.int.test.js +0 -238
  510. package/dist/middleware/compose.int.test.js.map +0 -1
  511. package/dist/middleware/interceptors/bulkhead.int.test.d.ts +0 -5
  512. package/dist/middleware/interceptors/bulkhead.int.test.d.ts.map +0 -1
  513. package/dist/middleware/interceptors/bulkhead.int.test.js +0 -263
  514. package/dist/middleware/interceptors/bulkhead.int.test.js.map +0 -1
  515. package/dist/middleware/interceptors/cache.int.test.d.ts +0 -5
  516. package/dist/middleware/interceptors/cache.int.test.d.ts.map +0 -1
  517. package/dist/middleware/interceptors/cache.int.test.js +0 -470
  518. package/dist/middleware/interceptors/cache.int.test.js.map +0 -1
  519. package/dist/middleware/interceptors/circuit-breaker.int.test.d.ts +0 -5
  520. package/dist/middleware/interceptors/circuit-breaker.int.test.d.ts.map +0 -1
  521. package/dist/middleware/interceptors/circuit-breaker.int.test.js +0 -253
  522. package/dist/middleware/interceptors/circuit-breaker.int.test.js.map +0 -1
  523. package/dist/middleware/interceptors/envelope.int.test.d.ts +0 -5
  524. package/dist/middleware/interceptors/envelope.int.test.d.ts.map +0 -1
  525. package/dist/middleware/interceptors/envelope.int.test.js +0 -409
  526. package/dist/middleware/interceptors/envelope.int.test.js.map +0 -1
  527. package/dist/middleware/interceptors/fallback.int.test.d.ts +0 -5
  528. package/dist/middleware/interceptors/fallback.int.test.d.ts.map +0 -1
  529. package/dist/middleware/interceptors/fallback.int.test.js +0 -211
  530. package/dist/middleware/interceptors/fallback.int.test.js.map +0 -1
  531. package/dist/middleware/interceptors/logging.int.test.d.ts +0 -5
  532. package/dist/middleware/interceptors/logging.int.test.d.ts.map +0 -1
  533. package/dist/middleware/interceptors/logging.int.test.js +0 -144
  534. package/dist/middleware/interceptors/logging.int.test.js.map +0 -1
  535. package/dist/middleware/interceptors/rate-limit.int.test.d.ts +0 -5
  536. package/dist/middleware/interceptors/rate-limit.int.test.d.ts.map +0 -1
  537. package/dist/middleware/interceptors/rate-limit.int.test.js +0 -221
  538. package/dist/middleware/interceptors/rate-limit.int.test.js.map +0 -1
  539. package/dist/middleware/interceptors/request-id.int.test.d.ts +0 -5
  540. package/dist/middleware/interceptors/request-id.int.test.d.ts.map +0 -1
  541. package/dist/middleware/interceptors/request-id.int.test.js +0 -136
  542. package/dist/middleware/interceptors/request-id.int.test.js.map +0 -1
  543. package/dist/middleware/interceptors/retry.int.test.d.ts +0 -5
  544. package/dist/middleware/interceptors/retry.int.test.d.ts.map +0 -1
  545. package/dist/middleware/interceptors/retry.int.test.js +0 -534
  546. package/dist/middleware/interceptors/retry.int.test.js.map +0 -1
  547. package/dist/middleware/interceptors/timeout.int.test.d.ts +0 -5
  548. package/dist/middleware/interceptors/timeout.int.test.d.ts.map +0 -1
  549. package/dist/middleware/interceptors/timeout.int.test.js +0 -228
  550. package/dist/middleware/interceptors/timeout.int.test.js.map +0 -1
  551. package/dist/rate-limit/drivers/drivers.int.test.d.ts +0 -7
  552. package/dist/rate-limit/drivers/drivers.int.test.d.ts.map +0 -1
  553. package/dist/rate-limit/drivers/drivers.int.test.js +0 -466
  554. package/dist/rate-limit/drivers/drivers.int.test.js.map +0 -1
  555. package/dist/server/builder.int.test.d.ts +0 -7
  556. package/dist/server/builder.int.test.d.ts.map +0 -1
  557. package/dist/server/builder.int.test.js +0 -455
  558. package/dist/server/builder.int.test.js.map +0 -1
  559. package/dist/server/fs-routes/loader.int.test.d.ts +0 -5
  560. package/dist/server/fs-routes/loader.int.test.d.ts.map +0 -1
  561. package/dist/server/fs-routes/loader.int.test.js +0 -48
  562. package/dist/server/fs-routes/loader.int.test.js.map +0 -1
  563. package/dist/server/hooks.int.test.d.ts +0 -7
  564. package/dist/server/hooks.int.test.d.ts.map +0 -1
  565. package/dist/server/hooks.int.test.js +0 -564
  566. package/dist/server/hooks.int.test.js.map +0 -1
  567. package/dist/server/route-discovery.int.test.d.ts +0 -5
  568. package/dist/server/route-discovery.int.test.d.ts.map +0 -1
  569. package/dist/server/route-discovery.int.test.js +0 -49
  570. package/dist/server/route-discovery.int.test.js.map +0 -1
  571. package/dist/stream/raffel-stream.int.test.d.ts +0 -2
  572. package/dist/stream/raffel-stream.int.test.d.ts.map +0 -1
  573. package/dist/stream/raffel-stream.int.test.js +0 -265
  574. package/dist/stream/raffel-stream.int.test.js.map +0 -1
  575. package/dist/tracing/tracing.int.test.d.ts +0 -5
  576. package/dist/tracing/tracing.int.test.d.ts.map +0 -1
  577. package/dist/tracing/tracing.int.test.js +0 -412
  578. package/dist/tracing/tracing.int.test.js.map +0 -1
  579. package/dist/usd/usd.int.test.d.ts +0 -10
  580. package/dist/usd/usd.int.test.d.ts.map +0 -1
  581. package/dist/usd/usd.int.test.js +0 -719
  582. package/dist/usd/usd.int.test.js.map +0 -1
  583. package/dist/validation/multi-validator.int.test.d.ts +0 -7
  584. package/dist/validation/multi-validator.int.test.d.ts.map +0 -1
  585. package/dist/validation/multi-validator.int.test.js +0 -808
  586. package/dist/validation/multi-validator.int.test.js.map +0 -1
  587. package/dist/validation/schema.int.test.d.ts +0 -5
  588. package/dist/validation/schema.int.test.d.ts.map +0 -1
  589. package/dist/validation/schema.int.test.js +0 -340
  590. package/dist/validation/schema.int.test.js.map +0 -1
@@ -1,640 +0,0 @@
1
- /**
2
- * JSON-RPC 2.0 Adapter Tests
3
- */
4
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
- import { createJsonRpcAdapter, JsonRpcErrorCode, HttpMetadataKey, } from './jsonrpc.js';
6
- import { createRegistry } from '../core/registry.js';
7
- import { createRouter, RaffelError } from '../core/router.js';
8
- import { getExtension } from '../types/context.js';
9
- // Helper to make JSON-RPC HTTP requests
10
- async function jsonRpcRequest(port, body, options = {}) {
11
- const { path = '/', contentType = 'application/json', method = 'POST' } = options;
12
- const response = await fetch(`http://localhost:${port}${path}`, {
13
- method,
14
- headers: contentType ? { 'Content-Type': contentType } : {},
15
- body: method !== 'OPTIONS' ? JSON.stringify(body) : undefined,
16
- });
17
- let responseBody;
18
- const text = await response.text();
19
- if (text) {
20
- try {
21
- responseBody = JSON.parse(text);
22
- }
23
- catch {
24
- responseBody = text;
25
- }
26
- }
27
- return { status: response.status, body: responseBody, headers: response.headers };
28
- }
29
- function resolvePort(adapter) {
30
- const server = adapter.getServer();
31
- if (!server) {
32
- throw new Error('JSON-RPC server not started');
33
- }
34
- const address = server.address();
35
- if (!address || typeof address === 'string') {
36
- throw new Error('Unable to resolve JSON-RPC server port');
37
- }
38
- return address.port;
39
- }
40
- describe('JSON-RPC 2.0 Adapter', () => {
41
- let registry;
42
- let router;
43
- let port;
44
- beforeEach(() => {
45
- registry = createRegistry();
46
- router = createRouter(registry);
47
- port = 0;
48
- });
49
- afterEach(async () => {
50
- // Allow cleanup time
51
- await new Promise((resolve) => setTimeout(resolve, 50));
52
- });
53
- describe('Basic Requests', () => {
54
- it('should handle a simple procedure call', async () => {
55
- registry.procedure('greet', async (input) => ({
56
- message: `Hello, ${input.name}!`,
57
- }));
58
- const adapter = createJsonRpcAdapter(router, { port: 0 });
59
- await adapter.start();
60
- port = resolvePort(adapter);
61
- try {
62
- const request = {
63
- jsonrpc: '2.0',
64
- method: 'greet',
65
- params: { name: 'World' },
66
- id: 1,
67
- };
68
- const { status, body } = await jsonRpcRequest(port, request);
69
- expect(status).toBe(200);
70
- const response = body;
71
- expect(response.jsonrpc).toBe('2.0');
72
- expect(response.id).toBe(1);
73
- expect(response.result).toEqual({ message: 'Hello, World!' });
74
- expect(response.error).toBeUndefined();
75
- }
76
- finally {
77
- await adapter.stop();
78
- }
79
- });
80
- it('should handle procedure with no params', async () => {
81
- registry.procedure('ping', async () => ({ pong: true }));
82
- const adapter = createJsonRpcAdapter(router, { port: 0 });
83
- await adapter.start();
84
- port = resolvePort(adapter);
85
- try {
86
- const request = {
87
- jsonrpc: '2.0',
88
- method: 'ping',
89
- id: 'test-id',
90
- };
91
- const { status, body } = await jsonRpcRequest(port, request);
92
- expect(status).toBe(200);
93
- const response = body;
94
- expect(response.id).toBe('test-id');
95
- expect(response.result).toEqual({ pong: true });
96
- }
97
- finally {
98
- await adapter.stop();
99
- }
100
- });
101
- it('should handle positional params (array)', async () => {
102
- registry.procedure('add', async (input) => ({
103
- sum: input.reduce((a, b) => a + b, 0),
104
- }));
105
- const adapter = createJsonRpcAdapter(router, { port: 0 });
106
- await adapter.start();
107
- port = resolvePort(adapter);
108
- try {
109
- const request = {
110
- jsonrpc: '2.0',
111
- method: 'add',
112
- params: [1, 2, 3, 4, 5],
113
- id: 1,
114
- };
115
- const { body } = await jsonRpcRequest(port, request);
116
- const response = body;
117
- expect(response.result).toEqual({ sum: 15 });
118
- }
119
- finally {
120
- await adapter.stop();
121
- }
122
- });
123
- it('should handle single positional param', async () => {
124
- registry.procedure('double', async (input) => ({
125
- result: input * 2,
126
- }));
127
- const adapter = createJsonRpcAdapter(router, { port: 0 });
128
- await adapter.start();
129
- port = resolvePort(adapter);
130
- try {
131
- const request = {
132
- jsonrpc: '2.0',
133
- method: 'double',
134
- params: [5],
135
- id: 1,
136
- };
137
- const { body } = await jsonRpcRequest(port, request);
138
- const response = body;
139
- expect(response.result).toEqual({ result: 10 });
140
- }
141
- finally {
142
- await adapter.stop();
143
- }
144
- });
145
- });
146
- describe('Notifications', () => {
147
- it('should not return response for notifications', async () => {
148
- let called = false;
149
- registry.procedure('log', async () => {
150
- called = true;
151
- return { ok: true };
152
- });
153
- const adapter = createJsonRpcAdapter(router, { port: 0 });
154
- await adapter.start();
155
- port = resolvePort(adapter);
156
- try {
157
- const request = {
158
- jsonrpc: '2.0',
159
- method: 'log',
160
- // No id = notification
161
- };
162
- const { status, body } = await jsonRpcRequest(port, request);
163
- expect(status).toBe(204);
164
- expect(body).toBeFalsy();
165
- // Give it time to process
166
- await new Promise((resolve) => setTimeout(resolve, 50));
167
- expect(called).toBe(true);
168
- }
169
- finally {
170
- await adapter.stop();
171
- }
172
- });
173
- it('should handle notification with params', async () => {
174
- let receivedData;
175
- registry.procedure('store', async (input) => {
176
- receivedData = input.data;
177
- return { ok: true };
178
- });
179
- const adapter = createJsonRpcAdapter(router, { port: 0 });
180
- await adapter.start();
181
- port = resolvePort(adapter);
182
- try {
183
- const request = {
184
- jsonrpc: '2.0',
185
- method: 'store',
186
- params: { data: 'test-value' },
187
- };
188
- const { status } = await jsonRpcRequest(port, request);
189
- expect(status).toBe(204);
190
- await new Promise((resolve) => setTimeout(resolve, 50));
191
- expect(receivedData).toBe('test-value');
192
- }
193
- finally {
194
- await adapter.stop();
195
- }
196
- });
197
- });
198
- describe('Batch Requests', () => {
199
- it('should handle batch requests', async () => {
200
- registry.procedure('greet', async (input) => ({
201
- message: `Hello, ${input.name}!`,
202
- }));
203
- registry.procedure('ping', async () => ({ pong: true }));
204
- const adapter = createJsonRpcAdapter(router, { port: 0 });
205
- await adapter.start();
206
- port = resolvePort(adapter);
207
- try {
208
- const batch = [
209
- { jsonrpc: '2.0', method: 'greet', params: { name: 'Alice' }, id: 1 },
210
- { jsonrpc: '2.0', method: 'ping', id: 2 },
211
- { jsonrpc: '2.0', method: 'greet', params: { name: 'Bob' }, id: 3 },
212
- ];
213
- const { status, body } = await jsonRpcRequest(port, batch);
214
- expect(status).toBe(200);
215
- const responses = body;
216
- expect(responses).toHaveLength(3);
217
- const sorted = responses.sort((a, b) => Number(a.id) - Number(b.id));
218
- expect(sorted[0].result).toEqual({ message: 'Hello, Alice!' });
219
- expect(sorted[1].result).toEqual({ pong: true });
220
- expect(sorted[2].result).toEqual({ message: 'Hello, Bob!' });
221
- }
222
- finally {
223
- await adapter.stop();
224
- }
225
- });
226
- it('should handle batch with mixed requests and notifications', async () => {
227
- registry.procedure('greet', async (input) => ({
228
- message: `Hello, ${input.name}!`,
229
- }));
230
- registry.procedure('log', async () => ({ ok: true }));
231
- const adapter = createJsonRpcAdapter(router, { port: 0 });
232
- await adapter.start();
233
- port = resolvePort(adapter);
234
- try {
235
- const batch = [
236
- { jsonrpc: '2.0', method: 'greet', params: { name: 'Alice' }, id: 1 },
237
- { jsonrpc: '2.0', method: 'log' }, // notification
238
- { jsonrpc: '2.0', method: 'greet', params: { name: 'Bob' }, id: 2 },
239
- ];
240
- const { status, body } = await jsonRpcRequest(port, batch);
241
- expect(status).toBe(200);
242
- const responses = body;
243
- // Only 2 responses (notifications don't return responses)
244
- expect(responses).toHaveLength(2);
245
- }
246
- finally {
247
- await adapter.stop();
248
- }
249
- });
250
- it('should return 204 for batch of only notifications', async () => {
251
- registry.procedure('log', async () => ({ ok: true }));
252
- const adapter = createJsonRpcAdapter(router, { port: 0 });
253
- await adapter.start();
254
- port = resolvePort(adapter);
255
- try {
256
- const batch = [
257
- { jsonrpc: '2.0', method: 'log' },
258
- { jsonrpc: '2.0', method: 'log' },
259
- ];
260
- const { status, body } = await jsonRpcRequest(port, batch);
261
- expect(status).toBe(204);
262
- expect(body).toBeFalsy();
263
- }
264
- finally {
265
- await adapter.stop();
266
- }
267
- });
268
- it('should reject empty batch', async () => {
269
- const adapter = createJsonRpcAdapter(router, { port: 0 });
270
- await adapter.start();
271
- port = resolvePort(adapter);
272
- try {
273
- const { status, body } = await jsonRpcRequest(port, []);
274
- expect(status).toBe(200);
275
- const response = body;
276
- expect(response.error?.code).toBe(JsonRpcErrorCode.INVALID_REQUEST);
277
- expect(response.error?.message).toContain('Empty batch');
278
- }
279
- finally {
280
- await adapter.stop();
281
- }
282
- });
283
- });
284
- describe('Error Handling', () => {
285
- it('should return METHOD_NOT_FOUND for unknown procedure', async () => {
286
- const adapter = createJsonRpcAdapter(router, { port: 0 });
287
- await adapter.start();
288
- port = resolvePort(adapter);
289
- try {
290
- const request = {
291
- jsonrpc: '2.0',
292
- method: 'unknown',
293
- id: 1,
294
- };
295
- const { status, body } = await jsonRpcRequest(port, request);
296
- expect(status).toBe(200);
297
- const response = body;
298
- expect(response.error?.code).toBe(JsonRpcErrorCode.METHOD_NOT_FOUND);
299
- expect(response.id).toBe(1);
300
- }
301
- finally {
302
- await adapter.stop();
303
- }
304
- });
305
- it('should return INVALID_REQUEST for wrong JSON-RPC version', async () => {
306
- const adapter = createJsonRpcAdapter(router, { port: 0 });
307
- await adapter.start();
308
- port = resolvePort(adapter);
309
- try {
310
- const request = {
311
- jsonrpc: '1.0',
312
- method: 'test',
313
- id: 1,
314
- };
315
- const { body } = await jsonRpcRequest(port, request);
316
- const response = body;
317
- expect(response.error?.code).toBe(JsonRpcErrorCode.INVALID_REQUEST);
318
- expect(response.error?.message).toContain('Invalid JSON-RPC version');
319
- }
320
- finally {
321
- await adapter.stop();
322
- }
323
- });
324
- it('should return INVALID_REQUEST for missing method', async () => {
325
- const adapter = createJsonRpcAdapter(router, { port: 0 });
326
- await adapter.start();
327
- port = resolvePort(adapter);
328
- try {
329
- const request = {
330
- jsonrpc: '2.0',
331
- id: 1,
332
- };
333
- const { body } = await jsonRpcRequest(port, request);
334
- const response = body;
335
- expect(response.error?.code).toBe(JsonRpcErrorCode.INVALID_REQUEST);
336
- expect(response.error?.message).toContain('Method must be a non-empty string');
337
- }
338
- finally {
339
- await adapter.stop();
340
- }
341
- });
342
- it('should return INVALID_REQUEST for empty method', async () => {
343
- const adapter = createJsonRpcAdapter(router, { port: 0 });
344
- await adapter.start();
345
- port = resolvePort(adapter);
346
- try {
347
- const request = {
348
- jsonrpc: '2.0',
349
- method: '',
350
- id: 1,
351
- };
352
- const { body } = await jsonRpcRequest(port, request);
353
- const response = body;
354
- expect(response.error?.code).toBe(JsonRpcErrorCode.INVALID_REQUEST);
355
- }
356
- finally {
357
- await adapter.stop();
358
- }
359
- });
360
- it('should return PARSE_ERROR for invalid JSON', async () => {
361
- const adapter = createJsonRpcAdapter(router, { port: 0 });
362
- await adapter.start();
363
- port = resolvePort(adapter);
364
- try {
365
- const response = await fetch(`http://localhost:${port}/`, {
366
- method: 'POST',
367
- headers: { 'Content-Type': 'application/json' },
368
- body: '{invalid json}',
369
- });
370
- const body = (await response.json());
371
- expect(body.error?.code).toBe(JsonRpcErrorCode.PARSE_ERROR);
372
- }
373
- finally {
374
- await adapter.stop();
375
- }
376
- });
377
- it('should return INTERNAL_ERROR for handler exceptions', async () => {
378
- registry.procedure('fail', async () => {
379
- throw new Error('Something went wrong');
380
- });
381
- const adapter = createJsonRpcAdapter(router, { port: 0 });
382
- await adapter.start();
383
- port = resolvePort(adapter);
384
- try {
385
- const request = {
386
- jsonrpc: '2.0',
387
- method: 'fail',
388
- id: 1,
389
- };
390
- const { body } = await jsonRpcRequest(port, request);
391
- const response = body;
392
- expect(response.error?.code).toBe(JsonRpcErrorCode.INTERNAL_ERROR);
393
- expect(response.error?.message).toBe('Something went wrong');
394
- }
395
- finally {
396
- await adapter.stop();
397
- }
398
- });
399
- it('should map RaffelError VALIDATION_ERROR to INVALID_PARAMS', async () => {
400
- registry.procedure('validate', async () => {
401
- throw new RaffelError('VALIDATION_ERROR', 'Invalid input');
402
- });
403
- const adapter = createJsonRpcAdapter(router, { port: 0 });
404
- await adapter.start();
405
- port = resolvePort(adapter);
406
- try {
407
- const request = {
408
- jsonrpc: '2.0',
409
- method: 'validate',
410
- id: 1,
411
- };
412
- const { body } = await jsonRpcRequest(port, request);
413
- const response = body;
414
- expect(response.error?.code).toBe(JsonRpcErrorCode.INVALID_PARAMS);
415
- }
416
- finally {
417
- await adapter.stop();
418
- }
419
- });
420
- it('should handle null id in request', async () => {
421
- registry.procedure('test', async () => ({ ok: true }));
422
- const adapter = createJsonRpcAdapter(router, { port: 0 });
423
- await adapter.start();
424
- port = resolvePort(adapter);
425
- try {
426
- const request = {
427
- jsonrpc: '2.0',
428
- method: 'test',
429
- id: null,
430
- };
431
- const { body } = await jsonRpcRequest(port, request);
432
- const response = body;
433
- expect(response.id).toBeNull();
434
- expect(response.result).toEqual({ ok: true });
435
- }
436
- finally {
437
- await adapter.stop();
438
- }
439
- });
440
- });
441
- describe('HTTP Layer', () => {
442
- it('should reject non-POST requests', async () => {
443
- const adapter = createJsonRpcAdapter(router, { port: 0 });
444
- await adapter.start();
445
- port = resolvePort(adapter);
446
- try {
447
- const response = await fetch(`http://localhost:${port}/`, {
448
- method: 'GET',
449
- });
450
- expect(response.status).toBe(405);
451
- const body = (await response.json());
452
- expect(body.error?.code).toBe(JsonRpcErrorCode.INVALID_REQUEST);
453
- }
454
- finally {
455
- await adapter.stop();
456
- }
457
- });
458
- it('should reject wrong content-type', async () => {
459
- const adapter = createJsonRpcAdapter(router, { port: 0 });
460
- await adapter.start();
461
- port = resolvePort(adapter);
462
- try {
463
- const response = await fetch(`http://localhost:${port}/`, {
464
- method: 'POST',
465
- headers: { 'Content-Type': 'application/xml' },
466
- body: '{"jsonrpc":"2.0","method":"test","id":1}',
467
- });
468
- expect(response.status).toBe(415);
469
- }
470
- finally {
471
- await adapter.stop();
472
- }
473
- });
474
- it('should return 404 for wrong path', async () => {
475
- const adapter = createJsonRpcAdapter(router, { port: 0, path: '/rpc' });
476
- await adapter.start();
477
- port = resolvePort(adapter);
478
- try {
479
- const response = await fetch(`http://localhost:${port}/wrong`, {
480
- method: 'POST',
481
- headers: { 'Content-Type': 'application/json' },
482
- body: '{"jsonrpc":"2.0","method":"test","id":1}',
483
- });
484
- expect(response.status).toBe(404);
485
- }
486
- finally {
487
- await adapter.stop();
488
- }
489
- });
490
- it('should handle custom path', async () => {
491
- registry.procedure('test', async () => ({ ok: true }));
492
- const adapter = createJsonRpcAdapter(router, { port: 0, path: '/api/jsonrpc' });
493
- await adapter.start();
494
- port = resolvePort(adapter);
495
- try {
496
- const request = {
497
- jsonrpc: '2.0',
498
- method: 'test',
499
- id: 1,
500
- };
501
- const { status, body } = await jsonRpcRequest(port, request, { path: '/api/jsonrpc' });
502
- expect(status).toBe(200);
503
- const response = body;
504
- expect(response.result).toEqual({ ok: true });
505
- }
506
- finally {
507
- await adapter.stop();
508
- }
509
- });
510
- });
511
- describe('CORS', () => {
512
- it('should handle OPTIONS preflight', async () => {
513
- const adapter = createJsonRpcAdapter(router, { port: 0, cors: true });
514
- await adapter.start();
515
- port = resolvePort(adapter);
516
- try {
517
- const response = await fetch(`http://localhost:${port}/`, {
518
- method: 'OPTIONS',
519
- });
520
- expect(response.status).toBe(204);
521
- expect(response.headers.get('Access-Control-Allow-Origin')).toBe('*');
522
- expect(response.headers.get('Access-Control-Allow-Methods')).toContain('POST');
523
- }
524
- finally {
525
- await adapter.stop();
526
- }
527
- });
528
- it('should include CORS headers in response', async () => {
529
- registry.procedure('test', async () => ({ ok: true }));
530
- const adapter = createJsonRpcAdapter(router, { port: 0, cors: true });
531
- await adapter.start();
532
- port = resolvePort(adapter);
533
- try {
534
- const request = {
535
- jsonrpc: '2.0',
536
- method: 'test',
537
- id: 1,
538
- };
539
- const { headers } = await jsonRpcRequest(port, request);
540
- expect(headers.get('Access-Control-Allow-Origin')).toBe('*');
541
- }
542
- finally {
543
- await adapter.stop();
544
- }
545
- });
546
- });
547
- describe('Server Lifecycle', () => {
548
- it('should start and stop cleanly', async () => {
549
- const adapter = createJsonRpcAdapter(router, { port: 0 });
550
- expect(adapter.getServer()).toBeNull();
551
- await adapter.start();
552
- port = resolvePort(adapter);
553
- expect(adapter.getServer()).not.toBeNull();
554
- await adapter.stop();
555
- expect(adapter.getServer()).toBeNull();
556
- });
557
- it('should allow restart', async () => {
558
- registry.procedure('test', async () => ({ ok: true }));
559
- const adapter = createJsonRpcAdapter(router, { port: 0 });
560
- await adapter.start();
561
- port = resolvePort(adapter);
562
- await adapter.stop();
563
- await adapter.start();
564
- port = resolvePort(adapter);
565
- try {
566
- const request = {
567
- jsonrpc: '2.0',
568
- method: 'test',
569
- id: 1,
570
- };
571
- const { status, body } = await jsonRpcRequest(port, request);
572
- expect(status).toBe(200);
573
- expect(body.result).toEqual({ ok: true });
574
- }
575
- finally {
576
- await adapter.stop();
577
- }
578
- });
579
- });
580
- describe('Body Size Limit', () => {
581
- it('should reject requests exceeding maxBodySize', async () => {
582
- const adapter = createJsonRpcAdapter(router, { port: 0, maxBodySize: 100 });
583
- await adapter.start();
584
- port = resolvePort(adapter);
585
- try {
586
- // Create a large payload
587
- const largePayload = {
588
- jsonrpc: '2.0',
589
- method: 'test',
590
- params: { data: 'x'.repeat(200) },
591
- id: 1,
592
- };
593
- const response = await fetch(`http://localhost:${port}/`, {
594
- method: 'POST',
595
- headers: { 'Content-Type': 'application/json' },
596
- body: JSON.stringify(largePayload),
597
- });
598
- expect(response.status).toBe(413);
599
- }
600
- finally {
601
- await adapter.stop();
602
- }
603
- });
604
- });
605
- describe('Metadata', () => {
606
- it('should pass HTTP headers as metadata via context extension', async () => {
607
- let receivedMetadata;
608
- registry.procedure('checkHeaders', async (_input, ctx) => {
609
- receivedMetadata = getExtension(ctx, HttpMetadataKey);
610
- return { ok: true };
611
- });
612
- const adapter = createJsonRpcAdapter(router, { port: 0 });
613
- await adapter.start();
614
- port = resolvePort(adapter);
615
- try {
616
- const response = await fetch(`http://localhost:${port}/`, {
617
- method: 'POST',
618
- headers: {
619
- 'Content-Type': 'application/json',
620
- 'X-Custom-Header': 'custom-value',
621
- 'Authorization': 'Bearer token123',
622
- },
623
- body: JSON.stringify({
624
- jsonrpc: '2.0',
625
- method: 'checkHeaders',
626
- id: 1,
627
- }),
628
- });
629
- expect(response.status).toBe(200);
630
- expect(receivedMetadata).toBeDefined();
631
- expect(receivedMetadata['x-custom-header']).toBe('custom-value');
632
- expect(receivedMetadata['authorization']).toBe('Bearer token123');
633
- }
634
- finally {
635
- await adapter.stop();
636
- }
637
- });
638
- });
639
- });
640
- //# sourceMappingURL=jsonrpc.int.test.js.map