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,719 +0,0 @@
1
- /**
2
- * USD Module Integration Tests
3
- *
4
- * Tests for:
5
- * - Parser (parse, serialize, format detection)
6
- * - Validator (validate, validateOrThrow, isValid)
7
- * - Document Builder (fluent API)
8
- */
9
- import { describe, it, expect, beforeAll, afterAll } from 'vitest';
10
- import { writeFile, mkdir, rm } from 'node:fs/promises';
11
- import { join } from 'node:path';
12
- import { tmpdir } from 'node:os';
13
- // Parser imports
14
- import { parse, parseFile, serialize, detectFormat, detectFormatFromPath, createDocumentWrapper, USDParseError, } from './parser/index.js';
15
- // Validator imports
16
- import { validate, validateOrThrow, isValid, formatValidationResult, } from './validator/index.js';
17
- // Builder imports
18
- import { USD, document } from './builder/document.js';
19
- // =============================================================================
20
- // Test Fixtures
21
- // =============================================================================
22
- const VALID_JSON_DOC = `{
23
- "usd": "1.0.0",
24
- "openapi": "3.1.0",
25
- "info": {
26
- "title": "Test API",
27
- "version": "1.0.0",
28
- "description": "A test API"
29
- }
30
- }`;
31
- const VALID_YAML_DOC = `usd: "1.0.0"
32
- openapi: "3.1.0"
33
- info:
34
- title: Test API
35
- version: "1.0.0"
36
- description: A test API`;
37
- const INVALID_JSON = '{ "invalid": json }';
38
- const INVALID_YAML = `
39
- usd: "1.0.0"
40
- openapi: "3.1.0"
41
- info:
42
- - this is wrong
43
- `;
44
- const MISSING_INFO_DOC = `{
45
- "usd": "1.0.0",
46
- "openapi": "3.1.0"
47
- }`;
48
- const WRONG_VERSION_DOC = `{
49
- "usd": "2.0.0",
50
- "openapi": "3.1.0",
51
- "info": {
52
- "title": "Test",
53
- "version": "1.0.0"
54
- }
55
- }`;
56
- // =============================================================================
57
- // Parser Tests
58
- // =============================================================================
59
- describe('USD Parser', () => {
60
- describe('detectFormat', () => {
61
- it('should detect JSON from content starting with {', () => {
62
- expect(detectFormat('{"key": "value"}')).toBe('json');
63
- });
64
- it('should detect JSON from content starting with [', () => {
65
- expect(detectFormat('[1, 2, 3]')).toBe('json');
66
- });
67
- it('should detect YAML for other content', () => {
68
- expect(detectFormat('key: value')).toBe('yaml');
69
- expect(detectFormat('---\nkey: value')).toBe('yaml');
70
- });
71
- it('should handle whitespace before content', () => {
72
- expect(detectFormat(' \n {"key": "value"}')).toBe('json');
73
- expect(detectFormat(' \n key: value')).toBe('yaml');
74
- });
75
- });
76
- describe('detectFormatFromPath', () => {
77
- it('should detect JSON from .json extension', () => {
78
- expect(detectFormatFromPath('file.json')).toBe('json');
79
- expect(detectFormatFromPath('/path/to/file.JSON')).toBe('json');
80
- });
81
- it('should detect YAML from .yaml extension', () => {
82
- expect(detectFormatFromPath('file.yaml')).toBe('yaml');
83
- expect(detectFormatFromPath('/path/to/file.YAML')).toBe('yaml');
84
- });
85
- it('should detect YAML from .yml extension', () => {
86
- expect(detectFormatFromPath('file.yml')).toBe('yaml');
87
- });
88
- it('should default to YAML for unknown extensions', () => {
89
- expect(detectFormatFromPath('file.txt')).toBe('yaml');
90
- expect(detectFormatFromPath('file')).toBe('yaml');
91
- });
92
- });
93
- describe('parse', () => {
94
- it('should parse valid JSON', () => {
95
- const doc = parse(VALID_JSON_DOC);
96
- expect(doc.usd).toBe('1.0.0');
97
- expect(doc.openapi).toBe('3.1.0');
98
- expect(doc.info.title).toBe('Test API');
99
- expect(doc.info.version).toBe('1.0.0');
100
- });
101
- it('should parse valid YAML', () => {
102
- const doc = parse(VALID_YAML_DOC);
103
- expect(doc.usd).toBe('1.0.0');
104
- expect(doc.openapi).toBe('3.1.0');
105
- expect(doc.info.title).toBe('Test API');
106
- });
107
- it('should auto-detect format', () => {
108
- const jsonDoc = parse(VALID_JSON_DOC);
109
- const yamlDoc = parse(VALID_YAML_DOC);
110
- expect(jsonDoc.info.title).toBe('Test API');
111
- expect(yamlDoc.info.title).toBe('Test API');
112
- });
113
- it('should accept format override', () => {
114
- // Force YAML parsing on JSON-looking content (will fail)
115
- const yamlLike = 'usd: "1.0.0"\nopenapi: "3.1.0"\ninfo:\n title: Test\n version: "1.0.0"';
116
- const doc = parse(yamlLike, { format: 'yaml' });
117
- expect(doc.info.title).toBe('Test');
118
- });
119
- it('should throw USDParseError on invalid JSON', () => {
120
- expect(() => parse(INVALID_JSON)).toThrow(USDParseError);
121
- });
122
- it('should include format in parse error', () => {
123
- try {
124
- parse(INVALID_JSON);
125
- expect.fail('Should have thrown');
126
- }
127
- catch (err) {
128
- expect(err).toBeInstanceOf(USDParseError);
129
- expect(err.format).toBe('json');
130
- }
131
- });
132
- it('should support raw option to skip normalization', () => {
133
- const doc = parse(VALID_JSON_DOC, { raw: true });
134
- expect(doc.info.title).toBe('Test API');
135
- });
136
- });
137
- describe('parseFile', () => {
138
- const TEST_DIR = join(tmpdir(), 'raffel-usd-test');
139
- const JSON_FILE = join(TEST_DIR, 'test.json');
140
- const YAML_FILE = join(TEST_DIR, 'test.yaml');
141
- const YML_FILE = join(TEST_DIR, 'test.yml');
142
- beforeAll(async () => {
143
- await mkdir(TEST_DIR, { recursive: true });
144
- await writeFile(JSON_FILE, VALID_JSON_DOC);
145
- await writeFile(YAML_FILE, VALID_YAML_DOC);
146
- await writeFile(YML_FILE, VALID_YAML_DOC);
147
- });
148
- afterAll(async () => {
149
- await rm(TEST_DIR, { recursive: true, force: true });
150
- });
151
- it('should parse JSON file', async () => {
152
- const doc = await parseFile(JSON_FILE);
153
- expect(doc.info.title).toBe('Test API');
154
- });
155
- it('should parse YAML file', async () => {
156
- const doc = await parseFile(YAML_FILE);
157
- expect(doc.info.title).toBe('Test API');
158
- });
159
- it('should parse YML file', async () => {
160
- const doc = await parseFile(YML_FILE);
161
- expect(doc.info.title).toBe('Test API');
162
- });
163
- it('should throw on non-existent file', async () => {
164
- await expect(parseFile('/nonexistent/file.json')).rejects.toThrow();
165
- });
166
- });
167
- describe('serialize', () => {
168
- const doc = {
169
- usd: '1.0.0',
170
- openapi: '3.1.0',
171
- info: {
172
- title: 'Serialized API',
173
- version: '2.0.0',
174
- },
175
- };
176
- it('should serialize to JSON', () => {
177
- const json = serialize(doc, 'json');
178
- expect(json).toContain('"usd": "1.0.0"');
179
- expect(json).toContain('"title": "Serialized API"');
180
- });
181
- it('should serialize to YAML', () => {
182
- const yaml = serialize(doc, 'yaml');
183
- expect(yaml).toContain('usd:');
184
- expect(yaml).toContain('title: Serialized API');
185
- });
186
- it('should support pretty option for JSON', () => {
187
- const prettyJson = serialize(doc, 'json', { pretty: true });
188
- const compactJson = serialize(doc, 'json', { pretty: false });
189
- expect(prettyJson.split('\n').length).toBeGreaterThan(1);
190
- expect(compactJson.split('\n').length).toBe(1);
191
- });
192
- it('should default to YAML format', () => {
193
- const output = serialize(doc);
194
- expect(output).toContain('usd:');
195
- });
196
- it('should round-trip JSON', () => {
197
- const json = serialize(doc, 'json');
198
- const reparsed = parse(json);
199
- expect(reparsed.info.title).toBe('Serialized API');
200
- });
201
- it('should round-trip YAML', () => {
202
- const yaml = serialize(doc, 'yaml');
203
- const reparsed = parse(yaml);
204
- expect(reparsed.info.title).toBe('Serialized API');
205
- });
206
- });
207
- describe('createDocumentWrapper', () => {
208
- const doc = {
209
- usd: '1.0.0',
210
- openapi: '3.1.0',
211
- info: {
212
- title: 'Wrapper Test',
213
- version: '1.0.0',
214
- },
215
- };
216
- it('should provide access to raw document', () => {
217
- const wrapper = createDocumentWrapper(doc);
218
- expect(wrapper.document).toBe(doc);
219
- });
220
- it('should serialize to JSON', () => {
221
- const wrapper = createDocumentWrapper(doc);
222
- const json = wrapper.toJson();
223
- expect(json).toContain('"title": "Wrapper Test"');
224
- });
225
- it('should serialize to YAML', () => {
226
- const wrapper = createDocumentWrapper(doc);
227
- const yaml = wrapper.toYaml();
228
- expect(yaml).toContain('title: Wrapper Test');
229
- });
230
- it('should clone document', () => {
231
- const wrapper = createDocumentWrapper(doc);
232
- const cloned = wrapper.clone();
233
- expect(cloned).toEqual(doc);
234
- expect(cloned).not.toBe(doc);
235
- });
236
- it('should merge with another document', () => {
237
- const wrapper = createDocumentWrapper(doc);
238
- const merged = wrapper.merge({
239
- info: {
240
- title: 'Merged Title',
241
- version: '2.0.0',
242
- description: 'Added description',
243
- },
244
- });
245
- expect(merged.info.title).toBe('Merged Title');
246
- expect(merged.info.description).toBe('Added description');
247
- });
248
- });
249
- });
250
- // =============================================================================
251
- // Validator Tests
252
- // =============================================================================
253
- describe('USD Validator', () => {
254
- describe('validate', () => {
255
- it('should validate a correct document', () => {
256
- const doc = parse(VALID_JSON_DOC);
257
- const result = validate(doc);
258
- expect(result.valid).toBe(true);
259
- expect(result.errors).toHaveLength(0);
260
- });
261
- it('should fail on missing info', () => {
262
- const doc = JSON.parse(MISSING_INFO_DOC);
263
- const result = validate(doc);
264
- expect(result.valid).toBe(false);
265
- expect(result.errors.length).toBeGreaterThan(0);
266
- });
267
- it('should fail on wrong USD version', () => {
268
- const doc = JSON.parse(WRONG_VERSION_DOC);
269
- const result = validate(doc);
270
- expect(result.valid).toBe(false);
271
- });
272
- it('should fail on null input', () => {
273
- const result = validate(null);
274
- expect(result.valid).toBe(false);
275
- });
276
- it('should fail on undefined input', () => {
277
- const result = validate(undefined);
278
- expect(result.valid).toBe(false);
279
- });
280
- it('should fail on non-object input', () => {
281
- const result = validate('string');
282
- expect(result.valid).toBe(false);
283
- });
284
- describe('options', () => {
285
- it('should skip schema validation with skipSchema option', () => {
286
- const invalidDoc = { info: { title: 'Test', version: '1.0.0' } };
287
- const result = validate(invalidDoc, { skipSchema: true });
288
- // Without schema validation, just semantic checks run
289
- // Semantic validation requires a USD-document-like object
290
- expect(result).toBeDefined();
291
- });
292
- it('should skip semantic validation with skipSemantic option', () => {
293
- const doc = parse(VALID_JSON_DOC);
294
- const result = validate(doc, { skipSemantic: true });
295
- expect(result.valid).toBe(true);
296
- });
297
- it('should treat warnings as errors in strict mode', () => {
298
- // Create a doc that might have warnings
299
- const doc = USD.document({
300
- title: 'Test API',
301
- version: '1.0.0',
302
- }).build();
303
- const normalResult = validate(doc);
304
- const strictResult = validate(doc, { strict: true });
305
- // If there are warnings in normal mode, strict mode should fail
306
- if (normalResult.warnings.length > 0) {
307
- expect(strictResult.valid).toBe(false);
308
- }
309
- else {
310
- expect(strictResult.valid).toBe(true);
311
- }
312
- });
313
- });
314
- });
315
- describe('validateOrThrow', () => {
316
- it('should not throw for valid document', () => {
317
- const doc = parse(VALID_JSON_DOC);
318
- expect(() => validateOrThrow(doc)).not.toThrow();
319
- });
320
- it('should throw for invalid document', () => {
321
- expect(() => validateOrThrow(null)).toThrow('USD validation failed');
322
- });
323
- it('should include formatted error in exception', () => {
324
- try {
325
- validateOrThrow(null);
326
- expect.fail('Should have thrown');
327
- }
328
- catch (err) {
329
- expect(err).toBeInstanceOf(Error);
330
- expect(err.message).toContain('USD validation failed');
331
- }
332
- });
333
- });
334
- describe('isValid', () => {
335
- it('should return true for valid document', () => {
336
- const doc = parse(VALID_JSON_DOC);
337
- expect(isValid(doc)).toBe(true);
338
- });
339
- it('should return false for invalid document', () => {
340
- expect(isValid(null)).toBe(false);
341
- expect(isValid({})).toBe(false);
342
- expect(isValid({ usd: '1.0.0' })).toBe(false);
343
- });
344
- it('should accept options', () => {
345
- const invalidDoc = { info: { title: 'Test', version: '1.0.0' } };
346
- expect(isValid(invalidDoc, { skipSchema: true })).toBe(true);
347
- });
348
- });
349
- describe('formatValidationResult', () => {
350
- it('should format errors nicely', () => {
351
- const result = validate(null);
352
- const formatted = formatValidationResult(result);
353
- expect(typeof formatted).toBe('string');
354
- expect(formatted.length).toBeGreaterThan(0);
355
- });
356
- });
357
- });
358
- // =============================================================================
359
- // Document Builder Tests
360
- // =============================================================================
361
- describe('USD Document Builder', () => {
362
- describe('basic document creation', () => {
363
- it('should create minimal document', () => {
364
- const doc = USD.document({
365
- title: 'My API',
366
- version: '1.0.0',
367
- }).build();
368
- expect(doc.usd).toBe('1.0.0');
369
- expect(doc.openapi).toBe('3.1.0');
370
- expect(doc.info.title).toBe('My API');
371
- expect(doc.info.version).toBe('1.0.0');
372
- });
373
- it('should create document with description', () => {
374
- const doc = document({
375
- title: 'My API',
376
- version: '1.0.0',
377
- description: 'A great API',
378
- }).build();
379
- expect(doc.info.description).toBe('A great API');
380
- });
381
- it('should create document with protocols', () => {
382
- const doc = USD.document({
383
- title: 'Multi-Protocol API',
384
- version: '1.0.0',
385
- protocols: ['http', 'websocket'],
386
- }).build();
387
- expect(doc['x-usd']?.protocols).toContain('http');
388
- expect(doc['x-usd']?.protocols).toContain('websocket');
389
- });
390
- });
391
- describe('info methods', () => {
392
- it('should set description', () => {
393
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
394
- .description('New description')
395
- .build();
396
- expect(doc.info.description).toBe('New description');
397
- });
398
- it('should set summary', () => {
399
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
400
- .summary('API summary')
401
- .build();
402
- expect(doc.info.summary).toBe('API summary');
403
- });
404
- it('should set terms of service', () => {
405
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
406
- .termsOfService('https://example.com/tos')
407
- .build();
408
- expect(doc.info.termsOfService).toBe('https://example.com/tos');
409
- });
410
- it('should set contact info', () => {
411
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
412
- .contact({
413
- name: 'Support',
414
- email: 'support@example.com',
415
- url: 'https://support.example.com',
416
- })
417
- .build();
418
- expect(doc.info.contact?.name).toBe('Support');
419
- expect(doc.info.contact?.email).toBe('support@example.com');
420
- });
421
- it('should set license info', () => {
422
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
423
- .license({ name: 'MIT', url: 'https://opensource.org/licenses/MIT' })
424
- .build();
425
- expect(doc.info.license?.name).toBe('MIT');
426
- });
427
- });
428
- describe('server methods', () => {
429
- it('should add HTTP server', () => {
430
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
431
- .server('https://api.example.com', { description: 'Production' })
432
- .build();
433
- expect(doc.servers).toHaveLength(1);
434
- expect(doc.servers[0].url).toBe('https://api.example.com');
435
- expect(doc.servers[0].description).toBe('Production');
436
- });
437
- it('should add multiple servers', () => {
438
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
439
- .server('https://api.example.com', { description: 'Production' })
440
- .server('https://staging.example.com', { description: 'Staging' })
441
- .build();
442
- expect(doc.servers).toHaveLength(2);
443
- });
444
- it('should add server with variables', () => {
445
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
446
- .server('https://{region}.api.example.com', {
447
- variables: {
448
- region: { default: 'us', enum: ['us', 'eu', 'asia'] },
449
- },
450
- })
451
- .build();
452
- expect(doc.servers[0].variables?.region.default).toBe('us');
453
- });
454
- it('should add protocol-specific server to x-usd', () => {
455
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
456
- .server('wss://ws.example.com', { protocol: 'websocket' })
457
- .build();
458
- expect(doc['x-usd']?.servers).toHaveLength(1);
459
- expect(doc['x-usd']?.servers[0].protocol).toBe('websocket');
460
- });
461
- });
462
- describe('tag methods', () => {
463
- it('should add tag', () => {
464
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
465
- .tag('users', { description: 'User operations' })
466
- .build();
467
- expect(doc.tags).toHaveLength(1);
468
- expect(doc.tags[0].name).toBe('users');
469
- });
470
- it('should add multiple tags', () => {
471
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
472
- .tag('users')
473
- .tag('products')
474
- .tag('orders')
475
- .build();
476
- expect(doc.tags).toHaveLength(3);
477
- });
478
- it('should set external docs', () => {
479
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
480
- .externalDocs('https://docs.example.com', 'Full documentation')
481
- .build();
482
- expect(doc.externalDocs?.url).toBe('https://docs.example.com');
483
- expect(doc.externalDocs?.description).toBe('Full documentation');
484
- });
485
- });
486
- describe('component methods', () => {
487
- it('should add schema', () => {
488
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
489
- .schema('User', {
490
- type: 'object',
491
- properties: {
492
- id: { type: 'string' },
493
- name: { type: 'string' },
494
- },
495
- })
496
- .build();
497
- expect(doc.components?.schemas?.User).toBeDefined();
498
- expect(doc.components?.schemas?.User.type).toBe('object');
499
- });
500
- it('should add multiple schemas', () => {
501
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
502
- .schemas({
503
- User: { type: 'object' },
504
- Product: { type: 'object' },
505
- })
506
- .build();
507
- expect(doc.components?.schemas?.User).toBeDefined();
508
- expect(doc.components?.schemas?.Product).toBeDefined();
509
- });
510
- it('should add security scheme', () => {
511
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
512
- .securityScheme('bearerAuth', {
513
- type: 'http',
514
- scheme: 'bearer',
515
- bearerFormat: 'JWT',
516
- })
517
- .build();
518
- expect(doc.components?.securitySchemes?.bearerAuth).toBeDefined();
519
- expect(doc.components?.securitySchemes?.bearerAuth.type).toBe('http');
520
- });
521
- it('should add global security requirement', () => {
522
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
523
- .securityScheme('apiKey', { type: 'apiKey', name: 'X-API-Key', in: 'header' })
524
- .security({ apiKey: [] })
525
- .build();
526
- expect(doc.security).toHaveLength(1);
527
- expect(doc.security[0]).toHaveProperty('apiKey');
528
- });
529
- });
530
- describe('error methods', () => {
531
- it('should add error definition', () => {
532
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
533
- .error('NotFound', {
534
- status: 404,
535
- message: 'Resource not found',
536
- })
537
- .build();
538
- expect(doc['x-usd']?.errors?.NotFound).toBeDefined();
539
- expect(doc['x-usd']?.errors?.NotFound.status).toBe(404);
540
- });
541
- it('should add multiple errors', () => {
542
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
543
- .errors({
544
- NotFound: { status: 404, message: 'Not found' },
545
- Unauthorized: { status: 401, message: 'Unauthorized' },
546
- })
547
- .build();
548
- expect(doc['x-usd']?.errors?.NotFound).toBeDefined();
549
- expect(doc['x-usd']?.errors?.Unauthorized).toBeDefined();
550
- });
551
- });
552
- describe('protocol builders', () => {
553
- it('should get HTTP builder', () => {
554
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
555
- const http = builder.http();
556
- expect(http).toBeDefined();
557
- expect(typeof http.path).toBe('function');
558
- });
559
- it('should get WebSocket builder', () => {
560
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
561
- const ws = builder.websocket();
562
- expect(ws).toBeDefined();
563
- });
564
- it('should get ws() as alias for websocket()', () => {
565
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
566
- const ws = builder.ws();
567
- expect(ws).toBeDefined();
568
- });
569
- it('should get JSON-RPC builder', () => {
570
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
571
- const rpc = builder.jsonrpc();
572
- expect(rpc).toBeDefined();
573
- });
574
- it('should get rpc() as alias for jsonrpc()', () => {
575
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
576
- const rpc = builder.rpc();
577
- expect(rpc).toBeDefined();
578
- });
579
- it('should get gRPC builder', () => {
580
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
581
- const grpc = builder.grpc();
582
- expect(grpc).toBeDefined();
583
- });
584
- it('should get TCP builder', () => {
585
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
586
- const tcp = builder.tcp();
587
- expect(tcp).toBeDefined();
588
- });
589
- it('should get UDP builder', () => {
590
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
591
- const udp = builder.udp();
592
- expect(udp).toBeDefined();
593
- });
594
- });
595
- describe('protocols', () => {
596
- it('should set protocols explicitly', () => {
597
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
598
- .protocols('http', 'websocket')
599
- .build();
600
- const protocols = doc['x-usd']?.protocols ?? [];
601
- expect(protocols).toContain('http');
602
- expect(protocols).toContain('websocket');
603
- });
604
- it('should return HTTP builder instance', () => {
605
- const builder = USD.document({ title: 'Test', version: '1.0.0' });
606
- const httpBuilder = builder.http();
607
- expect(httpBuilder).toBeDefined();
608
- expect(typeof httpBuilder.path).toBe('function');
609
- });
610
- });
611
- describe('content types', () => {
612
- it('should set content types', () => {
613
- const doc = USD.document({ title: 'Test', version: '1.0.0' })
614
- .contentTypes({
615
- default: 'application/json',
616
- supported: ['application/xml', 'text/plain'],
617
- })
618
- .build();
619
- expect(doc['x-usd']?.contentTypes?.default).toBe('application/json');
620
- expect(doc['x-usd']?.contentTypes?.supported).toContain('application/xml');
621
- });
622
- });
623
- describe('serialization methods', () => {
624
- it('should serialize to JSON', () => {
625
- const json = USD.document({ title: 'Test', version: '1.0.0' }).toJson();
626
- expect(json).toContain('"title": "Test"');
627
- expect(json).toContain('"usd": "1.0.0"');
628
- });
629
- it('should serialize to YAML', () => {
630
- const yaml = USD.document({ title: 'Test', version: '1.0.0' }).toYaml();
631
- expect(yaml).toContain('title: Test');
632
- expect(yaml).toContain('usd:');
633
- });
634
- it('should support JSON pretty option', () => {
635
- const pretty = USD.document({ title: 'Test', version: '1.0.0' }).toJson(true);
636
- const compact = USD.document({ title: 'Test', version: '1.0.0' }).toJson(false);
637
- expect(pretty.split('\n').length).toBeGreaterThan(1);
638
- expect(compact.split('\n').length).toBe(1);
639
- });
640
- });
641
- describe('fluent API chaining', () => {
642
- it('should support full fluent chaining', () => {
643
- const doc = USD.document({ title: 'Complete API', version: '1.0.0' })
644
- .description('A complete API example')
645
- .summary('Complete API')
646
- .contact({ name: 'Support', email: 'support@example.com' })
647
- .license({ name: 'MIT' })
648
- .server('https://api.example.com')
649
- .tag('users', { description: 'User operations' })
650
- .schema('User', {
651
- type: 'object',
652
- properties: {
653
- id: { type: 'string' },
654
- name: { type: 'string' },
655
- },
656
- })
657
- .securityScheme('bearerAuth', {
658
- type: 'http',
659
- scheme: 'bearer',
660
- })
661
- .error('NotFound', { status: 404, message: 'Not found' })
662
- .build();
663
- expect(doc.info.title).toBe('Complete API');
664
- expect(doc.info.description).toBe('A complete API example');
665
- expect(doc.info.contact?.name).toBe('Support');
666
- expect(doc.servers).toHaveLength(1);
667
- expect(doc.tags).toHaveLength(1);
668
- expect(doc.components?.schemas?.User).toBeDefined();
669
- expect(doc.components?.securitySchemes?.bearerAuth).toBeDefined();
670
- expect(doc['x-usd']?.errors?.NotFound).toBeDefined();
671
- });
672
- });
673
- });
674
- // =============================================================================
675
- // Integration Tests
676
- // =============================================================================
677
- describe('USD Module Integration', () => {
678
- it('should build, serialize, parse, and validate a complete document', () => {
679
- // Build
680
- const builder = USD.document({
681
- title: 'Integration Test API',
682
- version: '1.0.0',
683
- })
684
- .description('Integration test')
685
- .server('https://api.test.com')
686
- .schema('Item', { type: 'object', properties: { id: { type: 'string' } } });
687
- // Serialize to JSON
688
- const json = builder.toJson();
689
- // Parse
690
- const parsed = parse(json);
691
- // Validate
692
- const result = validate(parsed);
693
- expect(result.valid).toBe(true);
694
- expect(parsed.info.title).toBe('Integration Test API');
695
- });
696
- it('should round-trip through YAML', () => {
697
- const original = USD.document({
698
- title: 'YAML Test',
699
- version: '2.0.0',
700
- })
701
- .server('https://yaml.test.com')
702
- .build();
703
- const yaml = serialize(original, 'yaml');
704
- const parsed = parse(yaml);
705
- expect(parsed.info.title).toBe('YAML Test');
706
- expect(parsed.info.version).toBe('2.0.0');
707
- expect(parsed.servers[0].url).toBe('https://yaml.test.com');
708
- });
709
- it('should create wrapper from builder output', () => {
710
- const doc = USD.document({
711
- title: 'Wrapper Test',
712
- version: '1.0.0',
713
- }).build();
714
- const wrapper = createDocumentWrapper(doc);
715
- expect(wrapper.toJson()).toContain('Wrapper Test');
716
- expect(wrapper.toYaml()).toContain('Wrapper Test');
717
- });
718
- });
719
- //# sourceMappingURL=usd.int.test.js.map