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,808 +0,0 @@
1
- /**
2
- * Multi-Validator Tests
3
- *
4
- * Tests for the multi-validator support (Zod, Yup, Joi, Ajv, fastest-validator)
5
- */
6
- import { describe, it, expect, beforeEach } from 'vitest';
7
- import { z } from 'zod';
8
- import * as yup from 'yup';
9
- import Joi from 'joi';
10
- import AjvModule from 'ajv';
11
- import ValidatorModule from 'fastest-validator';
12
- // Handle CJS/ESM interop for Ajv and fastest-validator
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- const Ajv = (AjvModule.default ?? AjvModule);
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- const Validator = (ValidatorModule.default ?? ValidatorModule);
17
- import { configureValidation, getValidationConfig, getValidator, validate, registerValidator, resetValidation, hasValidator, listValidators, createValidationInterceptor, createSchemaRegistry, createSchemaValidationInterceptor, createZodAdapter, createYupAdapter, createJoiAdapter, createAjvAdapter, createFastestValidatorAdapter, } from './index.js';
18
- import { createContext } from '../types/context.js';
19
- import { RaffelError } from '../core/router.js';
20
- // Create adapter instances for tests
21
- const zodAdapter = createZodAdapter(z);
22
- const yupAdapter = createYupAdapter(yup);
23
- const joiAdapter = createJoiAdapter(Joi);
24
- const ajvAdapter = createAjvAdapter(new Ajv({ allErrors: true }));
25
- const fvAdapter = createFastestValidatorAdapter(new Validator());
26
- describe('Multi-Validator Support', () => {
27
- beforeEach(() => {
28
- // Reset and register validators fresh for each test
29
- resetValidation();
30
- registerValidator(zodAdapter);
31
- registerValidator(fvAdapter);
32
- });
33
- describe('Validator Registration', () => {
34
- it('should register a validator', () => {
35
- resetValidation();
36
- expect(hasValidator('zod')).toBe(false);
37
- registerValidator(zodAdapter);
38
- expect(hasValidator('zod')).toBe(true);
39
- });
40
- it('should auto-set first registered validator as default', () => {
41
- resetValidation();
42
- expect(getValidationConfig().defaultValidator).toBeUndefined();
43
- registerValidator(zodAdapter);
44
- expect(getValidationConfig().defaultValidator).toBe('zod');
45
- });
46
- it('should list all registered validators', () => {
47
- resetValidation();
48
- registerValidator(zodAdapter);
49
- registerValidator(fvAdapter);
50
- registerValidator(yupAdapter);
51
- const validators = listValidators();
52
- expect(validators).toContain('zod');
53
- expect(validators).toContain('fastest-validator');
54
- expect(validators).toContain('yup');
55
- });
56
- it('should throw when getting unregistered validator', () => {
57
- resetValidation();
58
- expect(() => getValidator('zod')).toThrow();
59
- });
60
- });
61
- describe('configureValidation', () => {
62
- it('should set default validator', () => {
63
- configureValidation({ defaultValidator: 'fastest-validator' });
64
- const config = getValidationConfig();
65
- expect(config.defaultValidator).toBe('fastest-validator');
66
- });
67
- it('should default to first registered validator', () => {
68
- resetValidation();
69
- registerValidator(zodAdapter);
70
- const config = getValidationConfig();
71
- expect(config.defaultValidator).toBe('zod');
72
- });
73
- });
74
- describe('getValidator', () => {
75
- it('should return zod adapter', () => {
76
- const validator = getValidator('zod');
77
- expect(validator.name).toBe('zod');
78
- });
79
- it('should return fastest-validator adapter', () => {
80
- const validator = getValidator('fastest-validator');
81
- expect(validator.name).toBe('fastest-validator');
82
- });
83
- it('should use default when type not specified', () => {
84
- configureValidation({ defaultValidator: 'fastest-validator' });
85
- const validator = getValidator();
86
- expect(validator.name).toBe('fastest-validator');
87
- });
88
- it('should throw for unknown validator type', () => {
89
- expect(() => getValidator('unknown')).toThrow();
90
- });
91
- });
92
- describe('Zod Adapter', () => {
93
- it('should validate valid data', () => {
94
- const schema = z.object({ name: z.string(), age: z.number() });
95
- const result = zodAdapter.validate(schema, { name: 'John', age: 30 });
96
- expect(result.success).toBe(true);
97
- expect(result.data).toEqual({ name: 'John', age: 30 });
98
- });
99
- it('should return errors for invalid data', () => {
100
- const schema = z.object({ name: z.string().min(1), age: z.number().positive() });
101
- const result = zodAdapter.validate(schema, { name: '', age: -5 });
102
- expect(result.success).toBe(false);
103
- expect(result.errors).toBeDefined();
104
- expect(result.errors.length).toBe(2);
105
- });
106
- it('should identify valid Zod schemas', () => {
107
- const zodSchema = z.object({ name: z.string() });
108
- const fvSchema = { name: { type: 'string' } };
109
- expect(zodAdapter.isValidSchema(zodSchema)).toBe(true);
110
- expect(zodAdapter.isValidSchema(fvSchema)).toBe(false);
111
- });
112
- it('should convert to JSON Schema', () => {
113
- const schema = z.object({ name: z.string(), age: z.number() });
114
- const jsonSchema = zodAdapter.toJsonSchema(schema);
115
- expect(jsonSchema).toBeDefined();
116
- expect(typeof jsonSchema).toBe('object');
117
- });
118
- });
119
- describe('Yup Adapter', () => {
120
- beforeEach(() => {
121
- registerValidator(yupAdapter);
122
- });
123
- it('should validate valid data', () => {
124
- const schema = yup.object({ name: yup.string().required(), age: yup.number().required() });
125
- const result = yupAdapter.validate(schema, { name: 'John', age: 30 });
126
- expect(result.success).toBe(true);
127
- expect(result.data).toEqual({ name: 'John', age: 30 });
128
- });
129
- it('should return errors for invalid data', () => {
130
- const schema = yup.object({
131
- name: yup.string().min(1, 'Name is required').required(),
132
- age: yup.number().positive('Age must be positive').required(),
133
- });
134
- const result = yupAdapter.validate(schema, { name: '', age: -5 });
135
- expect(result.success).toBe(false);
136
- expect(result.errors).toBeDefined();
137
- expect(result.errors.length).toBeGreaterThan(0);
138
- });
139
- it('should identify valid Yup schemas', () => {
140
- const yupSchema = yup.object({ name: yup.string() });
141
- const fvSchema = { name: { type: 'string' } };
142
- expect(yupAdapter.isValidSchema(yupSchema)).toBe(true);
143
- expect(yupAdapter.isValidSchema(fvSchema)).toBe(false);
144
- });
145
- });
146
- describe('Joi Adapter', () => {
147
- beforeEach(() => {
148
- registerValidator(joiAdapter);
149
- });
150
- it('should validate valid data', () => {
151
- const schema = Joi.object({ name: Joi.string().required(), age: Joi.number().required() });
152
- const result = joiAdapter.validate(schema, { name: 'John', age: 30 });
153
- expect(result.success).toBe(true);
154
- expect(result.data).toEqual({ name: 'John', age: 30 });
155
- });
156
- it('should return errors for invalid data', () => {
157
- const schema = Joi.object({
158
- name: Joi.string().min(1).required(),
159
- age: Joi.number().positive().required(),
160
- });
161
- const result = joiAdapter.validate(schema, { name: '', age: -5 });
162
- expect(result.success).toBe(false);
163
- expect(result.errors).toBeDefined();
164
- expect(result.errors.length).toBeGreaterThan(0);
165
- });
166
- it('should identify valid Joi schemas', () => {
167
- const joiSchema = Joi.object({ name: Joi.string() });
168
- const fvSchema = { name: { type: 'string' } };
169
- expect(joiAdapter.isValidSchema(joiSchema)).toBe(true);
170
- expect(joiAdapter.isValidSchema(fvSchema)).toBe(false);
171
- });
172
- });
173
- describe('Ajv Adapter', () => {
174
- beforeEach(() => {
175
- registerValidator(ajvAdapter);
176
- });
177
- it('should validate valid data', () => {
178
- const schema = {
179
- type: 'object',
180
- properties: {
181
- name: { type: 'string' },
182
- age: { type: 'number' },
183
- },
184
- required: ['name', 'age'],
185
- };
186
- const result = ajvAdapter.validate(schema, { name: 'John', age: 30 });
187
- expect(result.success).toBe(true);
188
- expect(result.data).toEqual({ name: 'John', age: 30 });
189
- });
190
- it('should return errors for invalid data', () => {
191
- // JSON Schema Draft 7+ uses exclusiveMinimum as a number, not boolean
192
- const schema = {
193
- type: 'object',
194
- properties: {
195
- name: { type: 'string', minLength: 1 },
196
- age: { type: 'number', exclusiveMinimum: 0 },
197
- },
198
- required: ['name', 'age'],
199
- };
200
- const result = ajvAdapter.validate(schema, { name: '', age: -5 });
201
- expect(result.success).toBe(false);
202
- expect(result.errors).toBeDefined();
203
- expect(result.errors.length).toBeGreaterThan(0);
204
- });
205
- it('should identify valid JSON schemas', () => {
206
- const jsonSchema = { type: 'object', properties: { name: { type: 'string' } } };
207
- // Plain objects that look like schemas but aren't JSON Schema
208
- const notJsonSchema = { name: 'John', age: 30 };
209
- expect(ajvAdapter.isValidSchema(jsonSchema)).toBe(true);
210
- expect(ajvAdapter.isValidSchema(notJsonSchema)).toBe(false);
211
- });
212
- it('should return schema as-is for toJsonSchema', () => {
213
- const schema = { type: 'object', properties: { name: { type: 'string' } } };
214
- const jsonSchema = ajvAdapter.toJsonSchema(schema);
215
- expect(jsonSchema).toEqual(schema);
216
- });
217
- });
218
- describe('Fastest-Validator Adapter', () => {
219
- it('should validate valid data', () => {
220
- const schema = { name: { type: 'string' }, age: { type: 'number' } };
221
- const result = fvAdapter.validate(schema, { name: 'John', age: 30 });
222
- expect(result.success).toBe(true);
223
- expect(result.data).toEqual({ name: 'John', age: 30 });
224
- });
225
- it('should return errors for invalid data', () => {
226
- const schema = {
227
- name: { type: 'string', min: 1 },
228
- age: { type: 'number', positive: true },
229
- };
230
- const result = fvAdapter.validate(schema, { name: '', age: -5 });
231
- expect(result.success).toBe(false);
232
- expect(result.errors).toBeDefined();
233
- expect(result.errors.length).toBeGreaterThan(0);
234
- });
235
- it('should identify valid fastest-validator schemas', () => {
236
- const zodSchema = z.object({ name: z.string() });
237
- const fvSchema = { name: { type: 'string' } };
238
- expect(fvAdapter.isValidSchema(fvSchema)).toBe(true);
239
- expect(fvAdapter.isValidSchema(zodSchema)).toBe(false);
240
- });
241
- it('should support shorthand notation', () => {
242
- const schema = { name: 'string', age: 'number' };
243
- const result = fvAdapter.validate(schema, { name: 'John', age: 30 });
244
- expect(result.success).toBe(true);
245
- });
246
- it('should convert to JSON Schema', () => {
247
- const schema = { name: { type: 'string' }, age: { type: 'number' } };
248
- const jsonSchema = fvAdapter.toJsonSchema(schema);
249
- expect(jsonSchema.type).toBe('object');
250
- expect(jsonSchema.properties).toBeDefined();
251
- });
252
- });
253
- describe('validate function', () => {
254
- it('should validate with Zod when specified', () => {
255
- const schema = z.object({ name: z.string() });
256
- const result = validate(schema, { name: 'Test' }, 'zod');
257
- expect(result).toEqual({ name: 'Test' });
258
- });
259
- it('should validate with fastest-validator when specified', () => {
260
- const schema = { name: { type: 'string' } };
261
- const result = validate(schema, { name: 'Test' }, 'fastest-validator');
262
- expect(result).toEqual({ name: 'Test' });
263
- });
264
- it('should throw RaffelError on validation failure', () => {
265
- const schema = z.object({ name: z.string().min(1) });
266
- expect(() => validate(schema, { name: '' }, 'zod')).toThrow(RaffelError);
267
- });
268
- });
269
- describe('createValidationInterceptor with validator choice', () => {
270
- it('should use Zod by default', async () => {
271
- const schema = {
272
- input: z.object({ name: z.string().min(1) }),
273
- };
274
- const interceptor = createValidationInterceptor(schema);
275
- const envelope = {
276
- id: 'test',
277
- procedure: 'test',
278
- type: 'request',
279
- payload: { name: '' },
280
- metadata: {},
281
- context: createContext('test-id'),
282
- };
283
- await expect(interceptor(envelope, envelope.context, async () => 'ok')).rejects.toThrow('Input validation failed');
284
- });
285
- it('should use fastest-validator when specified', async () => {
286
- const schema = {
287
- validator: 'fastest-validator',
288
- input: { name: { type: 'string', min: 1 } },
289
- };
290
- const interceptor = createValidationInterceptor(schema);
291
- const envelope = {
292
- id: 'test',
293
- procedure: 'test',
294
- type: 'request',
295
- payload: { name: '' },
296
- metadata: {},
297
- context: createContext('test-id'),
298
- };
299
- await expect(interceptor(envelope, envelope.context, async () => 'ok')).rejects.toThrow('Input validation failed');
300
- });
301
- it('should validate output with chosen validator', async () => {
302
- const schema = {
303
- validator: 'fastest-validator',
304
- output: { result: { type: 'number' } },
305
- };
306
- const interceptor = createValidationInterceptor(schema);
307
- const envelope = {
308
- id: 'test',
309
- procedure: 'test',
310
- type: 'request',
311
- payload: {},
312
- metadata: {},
313
- context: createContext('test-id'),
314
- };
315
- // Valid output
316
- const validResult = await interceptor(envelope, envelope.context, async () => ({ result: 42 }));
317
- expect(validResult).toEqual({ result: 42 });
318
- // Invalid output
319
- await expect(interceptor(envelope, envelope.context, async () => ({ result: 'not a number' }))).rejects.toThrow('Output validation failed');
320
- });
321
- it('should use default validator from config', async () => {
322
- configureValidation({ defaultValidator: 'fastest-validator' });
323
- const schema = {
324
- // No validator specified - should use default
325
- input: { name: { type: 'string', min: 1 } },
326
- };
327
- const interceptor = createValidationInterceptor(schema);
328
- const envelope = {
329
- id: 'test',
330
- procedure: 'test',
331
- type: 'request',
332
- payload: { name: 'Valid' },
333
- metadata: {},
334
- context: createContext('test-id'),
335
- };
336
- const result = await interceptor(envelope, envelope.context, async () => 'ok');
337
- expect(result).toBe('ok');
338
- });
339
- });
340
- describe('Schema Registry with mixed validators', () => {
341
- it('should support different validators per handler', async () => {
342
- const schemaRegistry = createSchemaRegistry();
343
- // Register Zod schema
344
- schemaRegistry.register('zodHandler', {
345
- validator: 'zod',
346
- input: z.object({ name: z.string().min(1) }),
347
- });
348
- // Register fastest-validator schema
349
- schemaRegistry.register('fvHandler', {
350
- validator: 'fastest-validator',
351
- input: { name: { type: 'string', min: 1 } },
352
- });
353
- const interceptor = createSchemaValidationInterceptor(schemaRegistry);
354
- // Test Zod handler
355
- const zodEnvelope = {
356
- id: 'test',
357
- procedure: 'zodHandler',
358
- type: 'request',
359
- payload: { name: '' },
360
- metadata: {},
361
- context: createContext('test-id'),
362
- };
363
- await expect(interceptor(zodEnvelope, zodEnvelope.context, async () => 'ok')).rejects.toThrow('Input validation failed');
364
- // Test fastest-validator handler
365
- const fvEnvelope = {
366
- id: 'test',
367
- procedure: 'fvHandler',
368
- type: 'request',
369
- payload: { name: '' },
370
- metadata: {},
371
- context: createContext('test-id'),
372
- };
373
- await expect(interceptor(fvEnvelope, fvEnvelope.context, async () => 'ok')).rejects.toThrow('Input validation failed');
374
- });
375
- it('should list schemas with validator info', () => {
376
- const schemaRegistry = createSchemaRegistry();
377
- schemaRegistry.register('zodHandler', {
378
- validator: 'zod',
379
- input: z.string(),
380
- });
381
- schemaRegistry.register('fvHandler', {
382
- validator: 'fastest-validator',
383
- input: { name: 'string' },
384
- });
385
- const list = schemaRegistry.list();
386
- expect(list.length).toBe(2);
387
- expect(list.find((s) => s.name === 'zodHandler')?.schema.validator).toBe('zod');
388
- expect(list.find((s) => s.name === 'fvHandler')?.schema.validator).toBe('fastest-validator');
389
- });
390
- });
391
- describe('Complex fastest-validator schemas', () => {
392
- it('should validate nested objects', () => {
393
- const schema = {
394
- user: {
395
- type: 'object',
396
- properties: {
397
- name: { type: 'string', min: 1 },
398
- email: { type: 'email' },
399
- },
400
- },
401
- };
402
- const result = fvAdapter.validate(schema, {
403
- user: { name: 'John', email: 'john@example.com' },
404
- });
405
- expect(result.success).toBe(true);
406
- });
407
- it('should validate arrays', () => {
408
- const schema = {
409
- items: {
410
- type: 'array',
411
- items: { type: 'number' },
412
- },
413
- };
414
- const validResult = fvAdapter.validate(schema, { items: [1, 2, 3] });
415
- expect(validResult.success).toBe(true);
416
- const invalidResult = fvAdapter.validate(schema, { items: [1, 'two', 3] });
417
- expect(invalidResult.success).toBe(false);
418
- });
419
- it('should validate enums', () => {
420
- const schema = {
421
- status: {
422
- type: 'enum',
423
- values: ['pending', 'active', 'completed'],
424
- },
425
- };
426
- const validResult = fvAdapter.validate(schema, { status: 'active' });
427
- expect(validResult.success).toBe(true);
428
- const invalidResult = fvAdapter.validate(schema, { status: 'invalid' });
429
- expect(invalidResult.success).toBe(false);
430
- });
431
- it('should handle optional fields', () => {
432
- const schema = {
433
- required: { type: 'string' },
434
- optional: { type: 'string', optional: true },
435
- };
436
- const result = fvAdapter.validate(schema, { required: 'test' });
437
- expect(result.success).toBe(true);
438
- });
439
- });
440
- describe('Complex Yup Schemas', () => {
441
- beforeEach(() => {
442
- registerValidator(yupAdapter);
443
- });
444
- it('should validate nested objects', () => {
445
- const schema = yup.object({
446
- user: yup.object({
447
- profile: yup.object({
448
- name: yup.string().required(),
449
- email: yup.string().email().required(),
450
- }),
451
- }),
452
- });
453
- const result = yupAdapter.validate(schema, {
454
- user: { profile: { name: 'John', email: 'john@example.com' } },
455
- });
456
- expect(result.success).toBe(true);
457
- });
458
- it('should validate arrays with object items', () => {
459
- const schema = yup.object({
460
- items: yup.array().of(yup.object({
461
- id: yup.number().required(),
462
- name: yup.string().required(),
463
- })),
464
- });
465
- const validResult = yupAdapter.validate(schema, {
466
- items: [
467
- { id: 1, name: 'First' },
468
- { id: 2, name: 'Second' },
469
- ],
470
- });
471
- expect(validResult.success).toBe(true);
472
- const invalidResult = yupAdapter.validate(schema, {
473
- items: [{ id: 'not-a-number', name: 'Test' }],
474
- });
475
- expect(invalidResult.success).toBe(false);
476
- });
477
- it('should handle transformations', () => {
478
- const schema = yup.object({
479
- email: yup.string().email().lowercase().required(),
480
- });
481
- const result = yupAdapter.validate(schema, { email: 'TEST@EXAMPLE.COM' });
482
- expect(result.success).toBe(true);
483
- expect(result.data.email).toBe('test@example.com');
484
- });
485
- it('should handle nullable fields', () => {
486
- const schema = yup.object({
487
- name: yup.string().required(),
488
- nickname: yup.string().nullable(),
489
- });
490
- const result = yupAdapter.validate(schema, { name: 'John', nickname: null });
491
- expect(result.success).toBe(true);
492
- });
493
- it('should handle default values', () => {
494
- const schema = yup.object({
495
- name: yup.string().required(),
496
- role: yup.string().default('user'),
497
- });
498
- const result = yupAdapter.validate(schema, { name: 'John' });
499
- expect(result.success).toBe(true);
500
- expect(result.data.role).toBe('user');
501
- });
502
- it('should convert to JSON Schema', () => {
503
- const schema = yup.object({
504
- name: yup.string(),
505
- age: yup.number(),
506
- active: yup.boolean(),
507
- });
508
- const jsonSchema = yupAdapter.toJsonSchema(schema);
509
- expect(jsonSchema.type).toBe('object');
510
- expect(jsonSchema.properties.name.type).toBe('string');
511
- expect(jsonSchema.properties.age.type).toBe('number');
512
- });
513
- });
514
- describe('Complex Joi Schemas', () => {
515
- beforeEach(() => {
516
- registerValidator(joiAdapter);
517
- });
518
- it('should validate nested objects', () => {
519
- const schema = Joi.object({
520
- user: Joi.object({
521
- profile: Joi.object({
522
- name: Joi.string().required(),
523
- email: Joi.string().email().required(),
524
- }),
525
- }),
526
- });
527
- const result = joiAdapter.validate(schema, {
528
- user: { profile: { name: 'John', email: 'john@example.com' } },
529
- });
530
- expect(result.success).toBe(true);
531
- });
532
- it('should validate arrays with object items', () => {
533
- const schema = Joi.object({
534
- items: Joi.array().items(Joi.object({
535
- id: Joi.number().required(),
536
- name: Joi.string().required(),
537
- })),
538
- });
539
- const validResult = joiAdapter.validate(schema, {
540
- items: [
541
- { id: 1, name: 'First' },
542
- { id: 2, name: 'Second' },
543
- ],
544
- });
545
- expect(validResult.success).toBe(true);
546
- const invalidResult = joiAdapter.validate(schema, {
547
- items: [{ id: 'not-a-number', name: 'Test' }],
548
- });
549
- expect(invalidResult.success).toBe(false);
550
- });
551
- it('should handle alternatives (oneOf)', () => {
552
- const schema = Joi.object({
553
- value: Joi.alternatives().try(Joi.string(), Joi.number()),
554
- });
555
- const stringResult = joiAdapter.validate(schema, { value: 'text' });
556
- expect(stringResult.success).toBe(true);
557
- const numberResult = joiAdapter.validate(schema, { value: 42 });
558
- expect(numberResult.success).toBe(true);
559
- const invalidResult = joiAdapter.validate(schema, { value: [] });
560
- expect(invalidResult.success).toBe(false);
561
- });
562
- it('should handle conditional validation (when)', () => {
563
- const schema = Joi.object({
564
- type: Joi.string().valid('personal', 'business').required(),
565
- companyName: Joi.when('type', {
566
- is: 'business',
567
- then: Joi.string().required(),
568
- otherwise: Joi.string().optional(),
569
- }),
570
- });
571
- const businessValid = joiAdapter.validate(schema, {
572
- type: 'business',
573
- companyName: 'Acme Corp',
574
- });
575
- expect(businessValid.success).toBe(true);
576
- const businessInvalid = joiAdapter.validate(schema, {
577
- type: 'business',
578
- // missing companyName
579
- });
580
- expect(businessInvalid.success).toBe(false);
581
- const personalValid = joiAdapter.validate(schema, {
582
- type: 'personal',
583
- // companyName not required
584
- });
585
- expect(personalValid.success).toBe(true);
586
- });
587
- it('should convert to JSON Schema', () => {
588
- const schema = Joi.object({
589
- name: Joi.string(),
590
- age: Joi.number(),
591
- active: Joi.boolean(),
592
- });
593
- const jsonSchema = joiAdapter.toJsonSchema(schema);
594
- expect(jsonSchema.type).toBe('object');
595
- expect(jsonSchema.properties).toBeDefined();
596
- });
597
- });
598
- describe('Complex Ajv Schemas', () => {
599
- beforeEach(() => {
600
- registerValidator(ajvAdapter);
601
- });
602
- it('should validate nested objects', () => {
603
- const schema = {
604
- type: 'object',
605
- properties: {
606
- user: {
607
- type: 'object',
608
- properties: {
609
- profile: {
610
- type: 'object',
611
- properties: {
612
- name: { type: 'string' },
613
- email: { type: 'string' },
614
- },
615
- required: ['name', 'email'],
616
- },
617
- },
618
- required: ['profile'],
619
- },
620
- },
621
- required: ['user'],
622
- };
623
- const result = ajvAdapter.validate(schema, {
624
- user: { profile: { name: 'John', email: 'john@example.com' } },
625
- });
626
- expect(result.success).toBe(true);
627
- });
628
- it('should validate with additionalProperties: false', () => {
629
- const schema = {
630
- type: 'object',
631
- properties: {
632
- name: { type: 'string' },
633
- },
634
- additionalProperties: false,
635
- };
636
- const validResult = ajvAdapter.validate(schema, { name: 'John' });
637
- expect(validResult.success).toBe(true);
638
- const invalidResult = ajvAdapter.validate(schema, { name: 'John', extra: 'field' });
639
- expect(invalidResult.success).toBe(false);
640
- });
641
- it('should validate oneOf schemas', () => {
642
- const schema = {
643
- oneOf: [
644
- {
645
- type: 'object',
646
- properties: { type: { const: 'text' }, content: { type: 'string' } },
647
- required: ['type', 'content'],
648
- },
649
- {
650
- type: 'object',
651
- properties: { type: { const: 'number' }, value: { type: 'number' } },
652
- required: ['type', 'value'],
653
- },
654
- ],
655
- };
656
- const textResult = ajvAdapter.validate(schema, { type: 'text', content: 'hello' });
657
- expect(textResult.success).toBe(true);
658
- const numberResult = ajvAdapter.validate(schema, { type: 'number', value: 42 });
659
- expect(numberResult.success).toBe(true);
660
- });
661
- it('should validate pattern strings', () => {
662
- const schema = {
663
- type: 'object',
664
- properties: {
665
- phone: { type: 'string', pattern: '^\\d{3}-\\d{3}-\\d{4}$' },
666
- },
667
- };
668
- const validResult = ajvAdapter.validate(schema, { phone: '123-456-7890' });
669
- expect(validResult.success).toBe(true);
670
- const invalidResult = ajvAdapter.validate(schema, { phone: '1234567890' });
671
- expect(invalidResult.success).toBe(false);
672
- });
673
- it('should validate array constraints', () => {
674
- const schema = {
675
- type: 'object',
676
- properties: {
677
- tags: {
678
- type: 'array',
679
- items: { type: 'string' },
680
- minItems: 1,
681
- maxItems: 5,
682
- uniqueItems: true,
683
- },
684
- },
685
- };
686
- const validResult = ajvAdapter.validate(schema, { tags: ['a', 'b', 'c'] });
687
- expect(validResult.success).toBe(true);
688
- const emptyResult = ajvAdapter.validate(schema, { tags: [] });
689
- expect(emptyResult.success).toBe(false);
690
- const duplicateResult = ajvAdapter.validate(schema, { tags: ['a', 'a'] });
691
- expect(duplicateResult.success).toBe(false);
692
- });
693
- });
694
- describe('Edge Cases', () => {
695
- it('should handle empty objects', () => {
696
- const zodSchema = z.object({});
697
- const zodResult = zodAdapter.validate(zodSchema, {});
698
- expect(zodResult.success).toBe(true);
699
- const fvSchema = {};
700
- const fvResult = fvAdapter.validate(fvSchema, {});
701
- expect(fvResult.success).toBe(true);
702
- });
703
- it('should handle null values correctly', () => {
704
- const zodSchema = z.object({ value: z.string().nullable() });
705
- const zodResult = zodAdapter.validate(zodSchema, { value: null });
706
- expect(zodResult.success).toBe(true);
707
- registerValidator(joiAdapter);
708
- const joiSchema = Joi.object({ value: Joi.string().allow(null) });
709
- const joiResult = joiAdapter.validate(joiSchema, { value: null });
710
- expect(joiResult.success).toBe(true);
711
- });
712
- it('should handle undefined values correctly', () => {
713
- const zodSchema = z.object({
714
- required: z.string(),
715
- optional: z.string().optional(),
716
- });
717
- const zodResult = zodAdapter.validate(zodSchema, { required: 'test' });
718
- expect(zodResult.success).toBe(true);
719
- });
720
- it('should return proper field paths in errors', () => {
721
- const zodSchema = z.object({
722
- user: z.object({
723
- profile: z.object({
724
- email: z.string().email(),
725
- }),
726
- }),
727
- });
728
- const zodResult = zodAdapter.validate(zodSchema, {
729
- user: { profile: { email: 'invalid' } },
730
- });
731
- expect(zodResult.success).toBe(false);
732
- expect(zodResult.errors[0].field).toContain('email');
733
- });
734
- it('should handle invalid schema gracefully', () => {
735
- // Pass non-schema to Zod adapter
736
- const zodResult = zodAdapter.validate('not a schema', { data: 'test' });
737
- expect(zodResult.success).toBe(false);
738
- expect(zodResult.errors[0].code).toBe('invalid_schema');
739
- // Pass non-schema to Ajv adapter
740
- const ajvResult = ajvAdapter.validate('not a schema', { data: 'test' });
741
- expect(ajvResult.success).toBe(false);
742
- expect(ajvResult.errors[0].code).toBe('invalid_schema');
743
- });
744
- });
745
- describe('Error Message Consistency', () => {
746
- it('should return errors with field, message, and code', () => {
747
- // Test all adapters return consistent error structure
748
- const zodSchema = z.object({ name: z.string().min(1) });
749
- const zodResult = zodAdapter.validate(zodSchema, { name: '' });
750
- expect(zodResult.errors[0]).toHaveProperty('field');
751
- expect(zodResult.errors[0]).toHaveProperty('message');
752
- expect(zodResult.errors[0]).toHaveProperty('code');
753
- const fvSchema = { name: { type: 'string', min: 1 } };
754
- const fvResult = fvAdapter.validate(fvSchema, { name: '' });
755
- expect(fvResult.errors[0]).toHaveProperty('field');
756
- expect(fvResult.errors[0]).toHaveProperty('message');
757
- expect(fvResult.errors[0]).toHaveProperty('code');
758
- registerValidator(yupAdapter);
759
- const yupSchema = yup.object({ name: yup.string().min(1).required() });
760
- const yupResult = yupAdapter.validate(yupSchema, { name: '' });
761
- expect(yupResult.errors[0]).toHaveProperty('field');
762
- expect(yupResult.errors[0]).toHaveProperty('message');
763
- expect(yupResult.errors[0]).toHaveProperty('code');
764
- registerValidator(joiAdapter);
765
- const joiSchema = Joi.object({ name: Joi.string().min(1).required() });
766
- const joiResult = joiAdapter.validate(joiSchema, { name: '' });
767
- expect(joiResult.errors[0]).toHaveProperty('field');
768
- expect(joiResult.errors[0]).toHaveProperty('message');
769
- expect(joiResult.errors[0]).toHaveProperty('code');
770
- registerValidator(ajvAdapter);
771
- const ajvSchema = { type: 'object', properties: { name: { type: 'string', minLength: 1 } }, required: ['name'] };
772
- const ajvResult = ajvAdapter.validate(ajvSchema, { name: '' });
773
- expect(ajvResult.errors[0]).toHaveProperty('field');
774
- expect(ajvResult.errors[0]).toHaveProperty('message');
775
- expect(ajvResult.errors[0]).toHaveProperty('code');
776
- });
777
- });
778
- describe('JSON Schema Conversion', () => {
779
- it('should convert fastest-validator to JSON Schema', () => {
780
- const schema = {
781
- name: { type: 'string', min: 1, max: 100 },
782
- email: { type: 'email' },
783
- age: { type: 'number', min: 0 },
784
- tags: { type: 'array', items: { type: 'string' } },
785
- status: { type: 'enum', values: ['active', 'inactive'] },
786
- };
787
- const jsonSchema = fvAdapter.toJsonSchema(schema);
788
- expect(jsonSchema.type).toBe('object');
789
- const props = jsonSchema.properties;
790
- expect(props.name).toEqual({ type: 'string', minLength: 1, maxLength: 100, pattern: undefined, enum: undefined });
791
- expect(props.email).toEqual({ type: 'string', format: 'email' });
792
- expect(props.tags.type).toBe('array');
793
- });
794
- it('should handle special types in conversion', () => {
795
- const schema = {
796
- url: { type: 'url' },
797
- uuid: { type: 'uuid' },
798
- date: { type: 'date' },
799
- };
800
- const jsonSchema = fvAdapter.toJsonSchema(schema);
801
- const props = jsonSchema.properties;
802
- expect(props.url).toEqual({ type: 'string', format: 'uri' });
803
- expect(props.uuid).toEqual({ type: 'string', format: 'uuid' });
804
- expect(props.date).toEqual({ type: 'string', format: 'date-time' });
805
- });
806
- });
807
- });
808
- //# sourceMappingURL=multi-validator.int.test.js.map