zudoku 0.0.0-e101786 → 0.0.0-e20b2e4

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 (505) hide show
  1. package/dist/app/entry.server.d.ts +1 -1
  2. package/dist/app/main.d.ts +1 -1
  3. package/dist/app/main.js +18 -8
  4. package/dist/app/main.js.map +1 -1
  5. package/dist/cli/common/output.js.map +1 -1
  6. package/dist/cli/dev/handler.js +7 -2
  7. package/dist/cli/dev/handler.js.map +1 -1
  8. package/dist/config/config.d.ts +1 -0
  9. package/dist/config/loader.js +4 -1
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/validators/common.d.ts +217 -28
  12. package/dist/config/validators/common.js +15 -6
  13. package/dist/config/validators/common.js.map +1 -1
  14. package/dist/config/validators/icon-types.d.ts +1 -1
  15. package/dist/config/validators/validate.d.ts +88 -12
  16. package/dist/lib/authentication/providers/auth0.js +1 -1
  17. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  18. package/dist/lib/authentication/providers/openid.d.ts +1 -1
  19. package/dist/lib/authentication/providers/openid.js +10 -6
  20. package/dist/lib/authentication/providers/openid.js.map +1 -1
  21. package/dist/lib/authentication/state.d.ts +9 -0
  22. package/dist/lib/authentication/state.js +11 -0
  23. package/dist/lib/authentication/state.js.map +1 -1
  24. package/dist/lib/components/AnchorLink.js +5 -2
  25. package/dist/lib/components/AnchorLink.js.map +1 -1
  26. package/dist/lib/components/Autocomplete.d.ts +13 -0
  27. package/dist/lib/components/Autocomplete.js +47 -0
  28. package/dist/lib/components/Autocomplete.js.map +1 -0
  29. package/dist/lib/components/Header.js +4 -4
  30. package/dist/lib/components/Header.js.map +1 -1
  31. package/dist/lib/components/Heading.d.ts +1 -1
  32. package/dist/lib/components/Markdown.d.ts +2 -2
  33. package/dist/lib/components/Markdown.js +3 -1
  34. package/dist/lib/components/Markdown.js.map +1 -1
  35. package/dist/lib/components/PathRenderer.d.ts +11 -0
  36. package/dist/lib/components/PathRenderer.js +28 -0
  37. package/dist/lib/components/PathRenderer.js.map +1 -0
  38. package/dist/lib/components/StatusPage.d.ts +7 -0
  39. package/dist/lib/components/StatusPage.js +71 -0
  40. package/dist/lib/components/StatusPage.js.map +1 -0
  41. package/dist/lib/components/SyntaxHighlight.d.ts +2 -1
  42. package/dist/lib/components/SyntaxHighlight.js +2 -2
  43. package/dist/lib/components/SyntaxHighlight.js.map +1 -1
  44. package/dist/lib/components/ThemeSwitch.js +2 -2
  45. package/dist/lib/components/ThemeSwitch.js.map +1 -1
  46. package/dist/lib/components/cache.d.ts +6 -0
  47. package/dist/lib/components/cache.js +13 -0
  48. package/dist/lib/components/cache.js.map +1 -0
  49. package/dist/lib/components/context/ViewportAnchorContext.js +16 -4
  50. package/dist/lib/components/context/ViewportAnchorContext.js.map +1 -1
  51. package/dist/lib/components/context/ZudokuContext.js +10 -3
  52. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  53. package/dist/lib/components/index.d.ts +14 -2
  54. package/dist/lib/components/index.js +10 -3
  55. package/dist/lib/components/index.js.map +1 -1
  56. package/dist/lib/components/navigation/Sidebar.js +6 -1
  57. package/dist/lib/components/navigation/Sidebar.js.map +1 -1
  58. package/dist/lib/components/navigation/SidebarCategory.js +17 -15
  59. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  60. package/dist/lib/components/navigation/SidebarItem.js +1 -0
  61. package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
  62. package/dist/lib/core/RouteGuard.d.ts +1 -0
  63. package/dist/lib/core/RouteGuard.js +32 -0
  64. package/dist/lib/core/RouteGuard.js.map +1 -0
  65. package/dist/lib/core/ZudokuContext.d.ts +4 -2
  66. package/dist/lib/core/ZudokuContext.js +9 -7
  67. package/dist/lib/core/ZudokuContext.js.map +1 -1
  68. package/dist/lib/oas/graphql/circular.d.ts +3 -0
  69. package/dist/lib/oas/graphql/circular.js +38 -0
  70. package/dist/lib/oas/graphql/circular.js.map +1 -0
  71. package/dist/lib/oas/graphql/index.d.ts +8 -0
  72. package/dist/lib/oas/graphql/index.js +61 -42
  73. package/dist/lib/oas/graphql/index.js.map +1 -1
  74. package/dist/lib/oas/parser/dereference/index.d.ts +0 -1
  75. package/dist/lib/oas/parser/dereference/index.js +1 -1
  76. package/dist/lib/oas/parser/dereference/index.js.map +1 -1
  77. package/dist/lib/oas/parser/upgrade/index.js +2 -1
  78. package/dist/lib/oas/parser/upgrade/index.js.map +1 -1
  79. package/dist/lib/plugins/markdown/MdxPage.js +8 -2
  80. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  81. package/dist/lib/plugins/markdown/resolver.d.ts +0 -6
  82. package/dist/lib/plugins/markdown/resolver.js +0 -29
  83. package/dist/lib/plugins/markdown/resolver.js.map +1 -1
  84. package/dist/lib/plugins/openapi/ColorizedParam.js +3 -1
  85. package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -1
  86. package/dist/lib/plugins/openapi/Endpoint.js +6 -7
  87. package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
  88. package/dist/lib/plugins/openapi/{Route.d.ts → OpenApiRoute.d.ts} +2 -1
  89. package/dist/lib/plugins/openapi/{Route.js → OpenApiRoute.js} +3 -4
  90. package/dist/lib/plugins/openapi/OpenApiRoute.js.map +1 -0
  91. package/dist/lib/plugins/openapi/OperationList.d.ts +4 -1
  92. package/dist/lib/plugins/openapi/OperationList.js +29 -19
  93. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  94. package/dist/lib/plugins/openapi/OperationListItem.d.ts +2 -1
  95. package/dist/lib/plugins/openapi/OperationListItem.js +3 -3
  96. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  97. package/dist/lib/plugins/openapi/ParameterListItem.js +2 -2
  98. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  99. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.d.ts +3 -1
  100. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js +8 -3
  101. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js.map +1 -1
  102. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +1 -1
  103. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +2 -0
  104. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  105. package/dist/lib/plugins/openapi/Sidecar.js +11 -16
  106. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  107. package/dist/lib/plugins/openapi/SidecarBox.js +1 -1
  108. package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
  109. package/dist/lib/plugins/openapi/SidecarExamples.js +17 -14
  110. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  111. package/dist/lib/plugins/openapi/graphql/gql.d.ts +6 -2
  112. package/dist/lib/plugins/openapi/graphql/gql.js +3 -2
  113. package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
  114. package/dist/lib/plugins/openapi/graphql/graphql.d.ts +66 -29
  115. package/dist/lib/plugins/openapi/graphql/graphql.js +33 -15
  116. package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
  117. package/dist/lib/plugins/openapi/index.js +126 -61
  118. package/dist/lib/plugins/openapi/index.js.map +1 -1
  119. package/dist/lib/plugins/openapi/interfaces.d.ts +12 -4
  120. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.d.ts +6 -0
  121. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +12 -0
  122. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -0
  123. package/dist/lib/plugins/openapi/playground/Headers.d.ts +4 -4
  124. package/dist/lib/plugins/openapi/playground/Headers.js +84 -5
  125. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  126. package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +9 -0
  127. package/dist/lib/plugins/openapi/playground/ParamsGrid.js +5 -0
  128. package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -0
  129. package/dist/lib/plugins/openapi/playground/PathParams.js +3 -11
  130. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  131. package/dist/lib/plugins/openapi/playground/Playground.d.ts +22 -1
  132. package/dist/lib/plugins/openapi/playground/Playground.js +61 -56
  133. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  134. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +1 -1
  135. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  136. package/dist/lib/plugins/openapi/playground/QueryParams.js +20 -29
  137. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  138. package/dist/lib/plugins/openapi/playground/SubmitButton.d.ts +7 -0
  139. package/dist/lib/plugins/openapi/playground/SubmitButton.js +22 -0
  140. package/dist/lib/plugins/openapi/playground/SubmitButton.js.map +1 -0
  141. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.d.ts +7 -0
  142. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js +11 -0
  143. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js.map +1 -0
  144. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.d.ts +8 -0
  145. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +95 -0
  146. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -0
  147. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.d.ts +7 -0
  148. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +16 -0
  149. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -0
  150. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.d.ts +10 -0
  151. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.js +32 -0
  152. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.js.map +1 -0
  153. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.d.ts +1 -0
  154. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.js +56 -0
  155. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.js.map +1 -0
  156. package/dist/lib/plugins/openapi/post-processors/removeExtensions.d.ts +2 -1
  157. package/dist/lib/plugins/openapi/post-processors/removeExtensions.js +5 -3
  158. package/dist/lib/plugins/openapi/post-processors/removeExtensions.js.map +1 -1
  159. package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.js +49 -0
  160. package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.js.map +1 -1
  161. package/dist/lib/plugins/openapi/post-processors/removeParameters.d.ts +10 -0
  162. package/dist/lib/plugins/openapi/post-processors/removeParameters.js +66 -0
  163. package/dist/lib/plugins/openapi/post-processors/removeParameters.js.map +1 -0
  164. package/dist/lib/plugins/openapi/post-processors/removeParameters.test.d.ts +1 -0
  165. package/dist/lib/plugins/openapi/post-processors/removeParameters.test.js +131 -0
  166. package/dist/lib/plugins/openapi/post-processors/removeParameters.test.js.map +1 -0
  167. package/dist/lib/plugins/openapi/schema/{SchemaComponents.js → SchemaPropertyItem.js} +10 -8
  168. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -0
  169. package/dist/lib/plugins/openapi/schema/SchemaView.js +1 -1
  170. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  171. package/dist/lib/plugins/openapi/schema/utils.d.ts +1 -0
  172. package/dist/lib/plugins/openapi/schema/utils.js +2 -0
  173. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
  174. package/dist/lib/ui/Badge.d.ts +1 -1
  175. package/dist/lib/ui/Badge.js +1 -0
  176. package/dist/lib/ui/Badge.js.map +1 -1
  177. package/dist/lib/ui/Command.d.ts +9 -1
  178. package/dist/lib/ui/Command.js +5 -1
  179. package/dist/lib/ui/Command.js.map +1 -1
  180. package/dist/lib/ui/Input.d.ts +1 -2
  181. package/dist/lib/ui/Input.js.map +1 -1
  182. package/dist/lib/ui/Select.js +2 -2
  183. package/dist/lib/ui/Select.js.map +1 -1
  184. package/dist/lib/util/MdxComponents.js +2 -2
  185. package/dist/lib/util/MdxComponents.js.map +1 -1
  186. package/dist/lib/util/joinUrl.d.ts +1 -0
  187. package/dist/lib/util/joinUrl.js +40 -0
  188. package/dist/lib/util/joinUrl.js.map +1 -0
  189. package/dist/lib/util/joinUrl.test.d.ts +1 -0
  190. package/dist/lib/util/joinUrl.test.js +43 -0
  191. package/dist/lib/util/joinUrl.test.js.map +1 -0
  192. package/dist/lib/util/scrollIntoViewIfNeeded.d.ts +1 -0
  193. package/dist/lib/util/scrollIntoViewIfNeeded.js +14 -0
  194. package/dist/lib/util/scrollIntoViewIfNeeded.js.map +1 -0
  195. package/dist/lib/util/useLatest.d.ts +1 -0
  196. package/dist/lib/util/useLatest.js +15 -0
  197. package/dist/lib/util/useLatest.js.map +1 -0
  198. package/dist/lib/util/useScrollToAnchor.d.ts +1 -0
  199. package/dist/lib/util/useScrollToAnchor.js +27 -28
  200. package/dist/lib/util/useScrollToAnchor.js.map +1 -1
  201. package/dist/lib/util/useScrollToTop.js +6 -4
  202. package/dist/lib/util/useScrollToTop.js.map +1 -1
  203. package/dist/vite/build.js +15 -12
  204. package/dist/vite/build.js.map +1 -1
  205. package/dist/vite/config.js +4 -1
  206. package/dist/vite/config.js.map +1 -1
  207. package/dist/vite/config.test.js +5 -1
  208. package/dist/vite/config.test.js.map +1 -1
  209. package/dist/vite/dev-server.js +4 -1
  210. package/dist/vite/dev-server.js.map +1 -1
  211. package/dist/vite/plugin-api.d.ts +1 -1
  212. package/dist/vite/plugin-api.js +153 -98
  213. package/dist/vite/plugin-api.js.map +1 -1
  214. package/dist/vite/plugin-auth.js +4 -1
  215. package/dist/vite/plugin-auth.js.map +1 -1
  216. package/dist/vite/plugin-config.js +2 -1
  217. package/dist/vite/plugin-config.js.map +1 -1
  218. package/dist/vite/plugin-mdx.js +20 -9
  219. package/dist/vite/plugin-mdx.js.map +1 -1
  220. package/dist/vite/plugin-theme-css.js +7 -4
  221. package/dist/vite/plugin-theme-css.js.map +1 -1
  222. package/dist/vite/plugin.js.map +1 -1
  223. package/dist/vite/{prerender.d.ts → prerender/FileWritingResponse.d.ts} +0 -6
  224. package/dist/vite/prerender/FileWritingResponse.js +42 -0
  225. package/dist/vite/prerender/FileWritingResponse.js.map +1 -0
  226. package/dist/vite/prerender/prerender.d.ts +6 -0
  227. package/dist/vite/prerender/prerender.js +101 -0
  228. package/dist/vite/prerender/prerender.js.map +1 -0
  229. package/dist/vite/prerender/worker.d.ts +11 -0
  230. package/dist/vite/prerender/worker.js +21 -0
  231. package/dist/vite/prerender/worker.js.map +1 -0
  232. package/dist/vite/reporter.d.ts +3 -0
  233. package/dist/vite/reporter.js +33 -0
  234. package/dist/vite/reporter.js.map +1 -0
  235. package/dist/zuplo/enrich-with-zuplo.d.ts +5 -0
  236. package/dist/zuplo/enrich-with-zuplo.js +184 -0
  237. package/dist/zuplo/enrich-with-zuplo.js.map +1 -0
  238. package/dist/zuplo/env.d.ts +1 -0
  239. package/dist/zuplo/env.js +3 -0
  240. package/dist/zuplo/env.js.map +1 -1
  241. package/dist/zuplo/policy-types.d.ts +33 -0
  242. package/dist/zuplo/policy-types.js +8 -0
  243. package/dist/zuplo/policy-types.js.map +1 -0
  244. package/dist/zuplo/with-zuplo-processors.d.ts +3 -0
  245. package/dist/zuplo/with-zuplo-processors.js +26 -0
  246. package/dist/zuplo/with-zuplo-processors.js.map +1 -0
  247. package/dist/zuplo/with-zuplo.d.ts +1 -1
  248. package/dist/zuplo/with-zuplo.js +7 -26
  249. package/dist/zuplo/with-zuplo.js.map +1 -1
  250. package/lib/{AuthenticationPlugin-D7G3me8L.js → AuthenticationPlugin-DjnQ5hs7.js} +4 -4
  251. package/lib/{AuthenticationPlugin-D7G3me8L.js.map → AuthenticationPlugin-DjnQ5hs7.js.map} +1 -1
  252. package/lib/{CategoryHeading-CBconmtI.js → CategoryHeading-MYL1u_6K.js} +3 -3
  253. package/lib/{CategoryHeading-CBconmtI.js.map → CategoryHeading-MYL1u_6K.js.map} +1 -1
  254. package/lib/{Markdown-CZDLNOFc.js → Markdown-8mv9nhGd.js} +3391 -3403
  255. package/lib/Markdown-8mv9nhGd.js.map +1 -0
  256. package/lib/{MdxPage-DKMbBROv.js → MdxPage-ZX2oquWw.js} +61 -56
  257. package/lib/MdxPage-ZX2oquWw.js.map +1 -0
  258. package/lib/OpenApiRoute-BP9kzG5k.js +36 -0
  259. package/lib/OpenApiRoute-BP9kzG5k.js.map +1 -0
  260. package/lib/OperationList-c72qPMtm.js +5180 -0
  261. package/lib/OperationList-c72qPMtm.js.map +1 -0
  262. package/lib/Select-NSz0gku6.js +223 -0
  263. package/lib/Select-NSz0gku6.js.map +1 -0
  264. package/lib/{SlotletProvider-pfc9oejW.js → SlotletProvider-D0mFmGJu.js} +53 -53
  265. package/lib/{SlotletProvider-pfc9oejW.js.map → SlotletProvider-D0mFmGJu.js.map} +1 -1
  266. package/lib/{Button-DeAoTouo.js → Spinner-BlzrEEk1.js} +16 -13
  267. package/lib/Spinner-BlzrEEk1.js.map +1 -0
  268. package/lib/{SyntaxHighlight-Bz-lOJtH.js → SyntaxHighlight-B0L4SC_N.js} +390 -383
  269. package/lib/SyntaxHighlight-B0L4SC_N.js.map +1 -0
  270. package/lib/{chunk-D52XG6IA-Dl7HLe6j.js → chunk-SYFQ2XB5-QijJrSf0.js} +409 -411
  271. package/lib/chunk-SYFQ2XB5-QijJrSf0.js.map +1 -0
  272. package/lib/circular-DxaIIlWD.js +15409 -0
  273. package/lib/circular-DxaIIlWD.js.map +1 -0
  274. package/lib/context-rwLGh-6_.js +22 -0
  275. package/lib/{context-h_UkBLvr.js.map → context-rwLGh-6_.js.map} +1 -1
  276. package/lib/{createServer-BznDkeSA.js → createServer-ZDNGmPfQ.js} +3611 -5736
  277. package/lib/createServer-ZDNGmPfQ.js.map +1 -0
  278. package/lib/hook-Dnj3SwPC.js +1455 -0
  279. package/lib/hook-Dnj3SwPC.js.map +1 -0
  280. package/lib/index-B7mqiOei.js +509 -0
  281. package/lib/index-B7mqiOei.js.map +1 -0
  282. package/lib/index-CZjcfK-H.js +2063 -0
  283. package/lib/index-CZjcfK-H.js.map +1 -0
  284. package/lib/{index-LNp6rxyU.js → index-CjJS0l4l.js} +2 -2
  285. package/lib/{index-LNp6rxyU.js.map → index-CjJS0l4l.js.map} +1 -1
  286. package/lib/index-Djenk2Hj.js +36 -0
  287. package/lib/{index-CPNSgwSb.js.map → index-Djenk2Hj.js.map} +1 -1
  288. package/lib/{index-CBXSgjaE.js → index-Dl3Yl0yb.js} +65 -69
  289. package/lib/index-Dl3Yl0yb.js.map +1 -0
  290. package/lib/{index.esm-BSV1C092.js → index.esm-9-TF9KQB.js} +52 -52
  291. package/lib/{index.esm-BSV1C092.js.map → index.esm-9-TF9KQB.js.map} +1 -1
  292. package/lib/index.esm-CrSoEshU.js +1207 -0
  293. package/lib/index.esm-CrSoEshU.js.map +1 -0
  294. package/lib/joinUrl-nLx9pD-Z.js +20 -0
  295. package/lib/joinUrl-nLx9pD-Z.js.map +1 -0
  296. package/lib/{jsx-runtime-Dx-03ztt.js → jsx-runtime-Bdg6XQ1m.js} +135 -135
  297. package/lib/{jsx-runtime-Dx-03ztt.js.map → jsx-runtime-Bdg6XQ1m.js.map} +1 -1
  298. package/lib/mutation-ByGtmi0-.js +208 -0
  299. package/lib/mutation-ByGtmi0-.js.map +1 -0
  300. package/lib/post-processors/removeExtensions.js +7 -7
  301. package/lib/post-processors/removeExtensions.js.map +1 -1
  302. package/lib/post-processors/removeParameters.js +48 -0
  303. package/lib/post-processors/removeParameters.js.map +1 -0
  304. package/lib/{prism-bash.min-DadFsM4Z.js → prism-bash.min-HHIMdNJ_.js} +4 -4
  305. package/lib/{prism-bash.min-DadFsM4Z.js.map → prism-bash.min-HHIMdNJ_.js.map} +1 -1
  306. package/lib/{prism-csharp.min-DUwvItt4.js → prism-csharp.min-bQAo2pmx.js} +33 -33
  307. package/lib/{prism-csharp.min-DUwvItt4.js.map → prism-csharp.min-bQAo2pmx.js.map} +1 -1
  308. package/lib/{prism-java.min-BtgBR4yd.js → prism-java.min-BpvsOuIa.js} +12 -12
  309. package/lib/{prism-java.min-BtgBR4yd.js.map → prism-java.min-BpvsOuIa.js.map} +1 -1
  310. package/lib/{prism-markdown.min-F3U-vPBi.js → prism-markdown.min-C0Qn0m-5.js} +30 -30
  311. package/lib/{prism-markdown.min-F3U-vPBi.js.map → prism-markdown.min-C0Qn0m-5.js.map} +1 -1
  312. package/lib/{prism-ruby.min-DeDXCp1r.js → prism-ruby.min-Dx9KO9ds.js} +16 -16
  313. package/lib/{prism-ruby.min-DeDXCp1r.js.map → prism-ruby.min-Dx9KO9ds.js.map} +1 -1
  314. package/lib/prism-typescript.min-CD7H2IYQ.js.map +1 -1
  315. package/lib/ui/Accordion.js +1 -1
  316. package/lib/ui/ActionButton.js +10 -11
  317. package/lib/ui/ActionButton.js.map +1 -1
  318. package/lib/ui/Alert.js +2 -2
  319. package/lib/ui/AlertDialog.js +1 -1
  320. package/lib/ui/Badge.js +3 -2
  321. package/lib/ui/Badge.js.map +1 -1
  322. package/lib/ui/Breadcrumb.js +1 -1
  323. package/lib/ui/Button.js +2 -2
  324. package/lib/ui/Callout.js +1 -1
  325. package/lib/ui/Card.js +1 -1
  326. package/lib/ui/Carousel.js +3 -3
  327. package/lib/ui/Carousel.js.map +1 -1
  328. package/lib/ui/Checkbox.js +2 -2
  329. package/lib/ui/Command.js +125 -13
  330. package/lib/ui/Command.js.map +1 -1
  331. package/lib/ui/Dialog.js +1 -1
  332. package/lib/ui/Drawer.js +520 -519
  333. package/lib/ui/Drawer.js.map +1 -1
  334. package/lib/ui/DropdownMenu.js +1 -1
  335. package/lib/ui/Form.js +2 -2
  336. package/lib/ui/HoverCard.js +1 -1
  337. package/lib/ui/Input.js +1 -1
  338. package/lib/ui/Input.js.map +1 -1
  339. package/lib/ui/Label.js +2 -2
  340. package/lib/ui/Pagination.js +7 -7
  341. package/lib/ui/Popover.js +1 -1
  342. package/lib/ui/Progress.js +1 -1
  343. package/lib/ui/RadioGroup.js +1 -1
  344. package/lib/ui/ScrollArea.js +1 -1
  345. package/lib/ui/Select.js +3 -3
  346. package/lib/ui/Select.js.map +1 -1
  347. package/lib/ui/Skeleton.js +1 -1
  348. package/lib/ui/Slider.js +1 -1
  349. package/lib/ui/Switch.js +1 -1
  350. package/lib/ui/Tabs.js +1 -1
  351. package/lib/ui/Textarea.js +1 -1
  352. package/lib/ui/Toggle.js +2 -2
  353. package/lib/ui/ToggleGroup.js +1 -1
  354. package/lib/ui/Tooltip.js +1 -1
  355. package/lib/{useExposedProps-DE9lR6MF.js → useExposedProps-Bbf99zic.js} +2 -2
  356. package/lib/{useExposedProps-DE9lR6MF.js.map → useExposedProps-Bbf99zic.js.map} +1 -1
  357. package/lib/useScrollToAnchor-DkVfWsxe.js +286 -0
  358. package/lib/useScrollToAnchor-DkVfWsxe.js.map +1 -0
  359. package/lib/zudoku.auth-auth0.js +8 -10
  360. package/lib/zudoku.auth-auth0.js.map +1 -1
  361. package/lib/zudoku.auth-clerk.js +18 -18
  362. package/lib/zudoku.auth-openid.js +224 -221
  363. package/lib/zudoku.auth-openid.js.map +1 -1
  364. package/lib/zudoku.components.js +828 -940
  365. package/lib/zudoku.components.js.map +1 -1
  366. package/lib/zudoku.plugin-api-catalog.js +18 -19
  367. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  368. package/lib/zudoku.plugin-api-keys.js +15 -16
  369. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  370. package/lib/zudoku.plugin-custom-pages.js +3 -3
  371. package/lib/zudoku.plugin-markdown.js +23 -44
  372. package/lib/zudoku.plugin-markdown.js.map +1 -1
  373. package/lib/zudoku.plugin-openapi.js +7 -6
  374. package/lib/zudoku.plugin-openapi.js.map +1 -1
  375. package/lib/zudoku.plugin-redirect.js +1 -1
  376. package/lib/zudoku.plugin-search-inkeep.js +9 -9
  377. package/package.json +53 -49
  378. package/src/app/demo-cdn.html +31 -31
  379. package/src/app/entry.server.tsx +1 -1
  380. package/src/app/main.css +52 -51
  381. package/src/app/main.tsx +31 -8
  382. package/src/lib/authentication/providers/auth0.tsx +1 -4
  383. package/src/lib/authentication/providers/openid.tsx +12 -5
  384. package/src/lib/authentication/state.ts +18 -0
  385. package/src/lib/components/AnchorLink.tsx +5 -2
  386. package/src/lib/components/Autocomplete.tsx +113 -0
  387. package/src/lib/components/Header.tsx +4 -4
  388. package/src/lib/components/Markdown.tsx +14 -15
  389. package/src/lib/components/PathRenderer.tsx +61 -0
  390. package/src/lib/components/StatusPage.tsx +91 -0
  391. package/src/lib/components/SyntaxHighlight.tsx +14 -0
  392. package/src/lib/components/ThemeSwitch.tsx +2 -2
  393. package/src/lib/components/cache.ts +15 -0
  394. package/src/lib/components/context/ViewportAnchorContext.tsx +20 -6
  395. package/src/lib/components/context/ZudokuContext.ts +16 -3
  396. package/src/lib/components/index.ts +14 -3
  397. package/src/lib/components/navigation/Sidebar.tsx +7 -1
  398. package/src/lib/components/navigation/SidebarCategory.tsx +46 -43
  399. package/src/lib/components/navigation/SidebarItem.tsx +1 -0
  400. package/src/lib/core/RouteGuard.tsx +39 -0
  401. package/src/lib/core/ZudokuContext.ts +9 -8
  402. package/src/lib/oas/graphql/circular.ts +50 -0
  403. package/src/lib/oas/graphql/index.ts +95 -69
  404. package/src/lib/oas/parser/dereference/index.ts +1 -2
  405. package/src/lib/oas/parser/upgrade/index.ts +2 -1
  406. package/src/lib/plugins/markdown/MdxPage.tsx +9 -1
  407. package/src/lib/plugins/markdown/resolver.ts +0 -33
  408. package/src/lib/plugins/openapi/ColorizedParam.tsx +3 -3
  409. package/src/lib/plugins/openapi/Endpoint.tsx +11 -9
  410. package/src/lib/plugins/openapi/{Route.tsx → OpenApiRoute.tsx} +3 -3
  411. package/src/lib/plugins/openapi/OperationList.tsx +47 -19
  412. package/src/lib/plugins/openapi/OperationListItem.tsx +7 -4
  413. package/src/lib/plugins/openapi/ParameterListItem.tsx +3 -6
  414. package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +11 -1
  415. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +2 -0
  416. package/src/lib/plugins/openapi/Sidecar.tsx +27 -34
  417. package/src/lib/plugins/openapi/SidecarBox.tsx +1 -1
  418. package/src/lib/plugins/openapi/SidecarExamples.tsx +24 -24
  419. package/src/lib/plugins/openapi/graphql/gql.ts +12 -4
  420. package/src/lib/plugins/openapi/graphql/graphql.ts +92 -45
  421. package/src/lib/plugins/openapi/index.tsx +163 -78
  422. package/src/lib/plugins/openapi/interfaces.ts +16 -12
  423. package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +54 -0
  424. package/src/lib/plugins/openapi/playground/Headers.tsx +165 -36
  425. package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +13 -0
  426. package/src/lib/plugins/openapi/playground/PathParams.tsx +35 -75
  427. package/src/lib/plugins/openapi/playground/Playground.tsx +251 -213
  428. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +6 -3
  429. package/src/lib/plugins/openapi/playground/QueryParams.tsx +84 -114
  430. package/src/lib/plugins/openapi/playground/SubmitButton.tsx +75 -0
  431. package/src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx +73 -0
  432. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +210 -0
  433. package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +101 -0
  434. package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.test.ts +64 -0
  435. package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -0
  436. package/src/lib/plugins/openapi/post-processors/removeExtensions.test.ts +58 -0
  437. package/src/lib/plugins/openapi/post-processors/removeExtensions.ts +7 -4
  438. package/src/lib/plugins/openapi/post-processors/removeParameters.test.ts +148 -0
  439. package/src/lib/plugins/openapi/post-processors/removeParameters.ts +101 -0
  440. package/src/lib/plugins/openapi/schema/{SchemaComponents.tsx → SchemaPropertyItem.tsx} +11 -7
  441. package/src/lib/plugins/openapi/schema/SchemaView.tsx +4 -1
  442. package/src/lib/plugins/openapi/schema/utils.ts +4 -0
  443. package/src/lib/ui/Badge.tsx +1 -0
  444. package/src/lib/ui/Command.tsx +20 -0
  445. package/src/lib/ui/Input.tsx +1 -2
  446. package/src/lib/ui/Select.tsx +1 -1
  447. package/src/lib/util/MdxComponents.tsx +2 -1
  448. package/src/lib/util/joinUrl.test.ts +62 -0
  449. package/src/lib/util/joinUrl.ts +57 -0
  450. package/src/lib/util/scrollIntoViewIfNeeded.ts +18 -0
  451. package/src/lib/util/useLatest.ts +18 -0
  452. package/src/lib/util/useScrollToAnchor.ts +33 -34
  453. package/src/lib/util/useScrollToTop.ts +8 -3
  454. package/dist/lib/plugins/openapi/Route.js.map +0 -1
  455. package/dist/lib/plugins/openapi/playground/EnumSelector.d.ts +0 -8
  456. package/dist/lib/plugins/openapi/playground/EnumSelector.js +0 -21
  457. package/dist/lib/plugins/openapi/playground/EnumSelector.js.map +0 -1
  458. package/dist/lib/plugins/openapi/playground/ResponseTab.d.ts +0 -4
  459. package/dist/lib/plugins/openapi/playground/ResponseTab.js +0 -42
  460. package/dist/lib/plugins/openapi/playground/ResponseTab.js.map +0 -1
  461. package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +0 -1
  462. package/dist/vite/prerender.js +0 -89
  463. package/dist/vite/prerender.js.map +0 -1
  464. package/lib/AnchorLink-DFZZbmvr.js +0 -34
  465. package/lib/AnchorLink-DFZZbmvr.js.map +0 -1
  466. package/lib/Button-DeAoTouo.js.map +0 -1
  467. package/lib/Command-9x_kZHr4.js +0 -611
  468. package/lib/Command-9x_kZHr4.js.map +0 -1
  469. package/lib/Markdown-CZDLNOFc.js.map +0 -1
  470. package/lib/MdxPage-DKMbBROv.js.map +0 -1
  471. package/lib/OperationList-DFa3DqhW.js +0 -5143
  472. package/lib/OperationList-DFa3DqhW.js.map +0 -1
  473. package/lib/Route-DYwKZ_c_.js +0 -35
  474. package/lib/Route-DYwKZ_c_.js.map +0 -1
  475. package/lib/Select-B_IxRUUC.js +0 -223
  476. package/lib/Select-B_IxRUUC.js.map +0 -1
  477. package/lib/Spinner-DuxJLLNE.js +0 -7
  478. package/lib/Spinner-DuxJLLNE.js.map +0 -1
  479. package/lib/StaggeredRender-DgsamH_G.js +0 -17
  480. package/lib/StaggeredRender-DgsamH_G.js.map +0 -1
  481. package/lib/SyntaxHighlight-Bz-lOJtH.js.map +0 -1
  482. package/lib/ZudokuContext-hmLMUdf2.js +0 -1217
  483. package/lib/ZudokuContext-hmLMUdf2.js.map +0 -1
  484. package/lib/__vite-browser-external-BYRIRx8p.js +0 -9
  485. package/lib/__vite-browser-external-BYRIRx8p.js.map +0 -1
  486. package/lib/chunk-D52XG6IA-Dl7HLe6j.js.map +0 -1
  487. package/lib/context-h_UkBLvr.js +0 -22
  488. package/lib/createServer-BznDkeSA.js.map +0 -1
  489. package/lib/hook-CHq7pFyz.js +0 -227
  490. package/lib/hook-CHq7pFyz.js.map +0 -1
  491. package/lib/index-Bn6Lc9tq.js +0 -9
  492. package/lib/index-Bn6Lc9tq.js.map +0 -1
  493. package/lib/index-CBXSgjaE.js.map +0 -1
  494. package/lib/index-CPNSgwSb.js +0 -36
  495. package/lib/index-PqKef_jH.js +0 -1292
  496. package/lib/index-PqKef_jH.js.map +0 -1
  497. package/lib/index-TaRXY2w1.js +0 -43
  498. package/lib/index-TaRXY2w1.js.map +0 -1
  499. package/lib/index.esm-BnnBRKJX.js +0 -1214
  500. package/lib/index.esm-BnnBRKJX.js.map +0 -1
  501. package/lib/state-CFQsUZUP.js +0 -202
  502. package/lib/state-CFQsUZUP.js.map +0 -1
  503. package/src/lib/plugins/openapi/playground/EnumSelector.tsx +0 -86
  504. package/src/lib/plugins/openapi/playground/ResponseTab.tsx +0 -76
  505. /package/dist/lib/plugins/openapi/schema/{SchemaComponents.d.ts → SchemaPropertyItem.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-PqKef_jH.js","sources":["../src/lib/plugins/openapi/graphql/graphql.ts","../src/lib/plugins/openapi/graphql/gql.ts","../src/lib/plugins/openapi/client/GraphQLClient.tsx","../src/lib/util/pastellize.ts","../src/lib/plugins/openapi/ColorizedParam.tsx","../src/lib/plugins/openapi/playground/createUrl.ts","../src/lib/plugins/openapi/playground/Headers.tsx","../src/lib/ui/Card.tsx","../src/lib/plugins/openapi/playground/PathParams.tsx","../src/lib/ui/Checkbox.tsx","../src/lib/plugins/openapi/playground/EnumSelector.tsx","../src/lib/util/createVariantComponent.tsx","../src/lib/plugins/openapi/playground/InlineInput.tsx","../src/lib/plugins/openapi/playground/QueryParams.tsx","../src/lib/plugins/openapi/SimpleSelect.tsx","../src/lib/plugins/openapi/playground/ResponseTab.tsx","../src/lib/plugins/openapi/playground/Playground.tsx","../src/lib/plugins/openapi/playground/PlaygroundDialog.tsx","../src/lib/plugins/openapi/index.tsx"],"sourcesContent":["/* eslint-disable */\nimport type { DocumentTypeDecoration } from \"@graphql-typed-document-node/core\";\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = {\n [K in keyof T]: T[K];\n};\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & {\n [SubKey in K]?: Maybe<T[SubKey]>;\n};\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {\n [SubKey in K]: Maybe<T[SubKey]>;\n};\nexport type MakeEmpty<\n T extends { [key: string]: unknown },\n K extends keyof T,\n> = { [_ in K]?: never };\nexport type Incremental<T> =\n | T\n | {\n [P in keyof T]?: P extends \" $fragmentName\" | \"__typename\" ? T[P] : never;\n };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string };\n String: { input: string; output: string };\n Boolean: { input: boolean; output: boolean };\n Int: { input: number; output: number };\n Float: { input: number; output: number };\n /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSON: { input: any; output: any };\n /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSONObject: { input: any; output: any };\n};\n\nexport type EncodingItem = {\n __typename?: \"EncodingItem\";\n allowReserved?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n contentType?: Maybe<Scalars[\"String\"][\"output\"]>;\n explode?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n headers?: Maybe<Scalars[\"JSONObject\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n style?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type ExampleItem = {\n __typename?: \"ExampleItem\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n externalValue?: Maybe<Scalars[\"String\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n value?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n};\n\nexport type MediaTypeObject = {\n __typename?: \"MediaTypeObject\";\n encoding?: Maybe<Array<EncodingItem>>;\n examples?: Maybe<Array<ExampleItem>>;\n mediaType: Scalars[\"String\"][\"output\"];\n schema?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n};\n\nexport type OperationItem = {\n __typename?: \"OperationItem\";\n contentTypes: Array<Scalars[\"String\"][\"output\"]>;\n deprecated?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n method: Scalars[\"String\"][\"output\"];\n operationId?: Maybe<Scalars[\"String\"][\"output\"]>;\n parameters?: Maybe<Array<ParameterItem>>;\n path: Scalars[\"String\"][\"output\"];\n requestBody?: Maybe<RequestBodyObject>;\n responses: Array<ResponseItem>;\n slug: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n tags?: Maybe<Array<TagItem>>;\n};\n\nexport type ParameterIn = \"cookie\" | \"header\" | \"path\" | \"query\";\n\nexport type ParameterItem = {\n __typename?: \"ParameterItem\";\n allowEmptyValue?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n allowReserved?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n deprecated?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n examples?: Maybe<Array<ExampleItem>>;\n explode?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n in: ParameterIn;\n name: Scalars[\"String\"][\"output\"];\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n schema?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n style?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type PathItem = {\n __typename?: \"PathItem\";\n methods: Array<Scalars[\"String\"][\"output\"]>;\n path: Scalars[\"String\"][\"output\"];\n};\n\nexport type Query = {\n __typename?: \"Query\";\n schema: Schema;\n};\n\nexport type QuerySchemaArgs = {\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n};\n\nexport type RequestBodyObject = {\n __typename?: \"RequestBodyObject\";\n content?: Maybe<Array<MediaTypeObject>>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n};\n\nexport type ResponseItem = {\n __typename?: \"ResponseItem\";\n content?: Maybe<Array<MediaTypeObject>>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n headers?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n links?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n statusCode: Scalars[\"String\"][\"output\"];\n};\n\nexport type Schema = {\n __typename?: \"Schema\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n openapi: Scalars[\"String\"][\"output\"];\n operations: Array<OperationItem>;\n paths: Array<PathItem>;\n servers: Array<Server>;\n tags: Array<SchemaTag>;\n title: Scalars[\"String\"][\"output\"];\n url: Scalars[\"String\"][\"output\"];\n version: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type SchemaOperationsArgs = {\n method?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n operationId?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n path?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n tag?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n};\n\nexport type SchemaTagsArgs = {\n name?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n};\n\nexport type SchemaTag = {\n __typename?: \"SchemaTag\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n name?: Maybe<Scalars[\"String\"][\"output\"]>;\n operations: Array<OperationItem>;\n};\n\nexport type SchemaType = \"file\" | \"raw\" | \"url\";\n\nexport type Server = {\n __typename?: \"Server\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n url: Scalars[\"String\"][\"output\"];\n};\n\nexport type TagItem = {\n __typename?: \"TagItem\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n};\n\nexport type ServersQueryQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type ServersQueryQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n };\n};\n\nexport type OperationsFragmentFragment = {\n __typename?: \"OperationItem\";\n slug: string;\n summary?: string | null;\n method: string;\n description?: string | null;\n operationId?: string | null;\n contentTypes: Array<string>;\n path: string;\n parameters?: Array<{\n __typename?: \"ParameterItem\";\n name: string;\n in: ParameterIn;\n description?: string | null;\n required?: boolean | null;\n schema?: any | null;\n style?: string | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n }> | null;\n requestBody?: {\n __typename?: \"RequestBodyObject\";\n description?: string | null;\n required?: boolean | null;\n content?: Array<{\n __typename?: \"MediaTypeObject\";\n mediaType: string;\n schema?: any | null;\n encoding?: Array<{ __typename?: \"EncodingItem\"; name: string }> | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n }> | null;\n } | null;\n responses: Array<{\n __typename?: \"ResponseItem\";\n statusCode: string;\n links?: any | null;\n description?: string | null;\n content?: Array<{\n __typename?: \"MediaTypeObject\";\n mediaType: string;\n schema?: any | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n encoding?: Array<{ __typename?: \"EncodingItem\"; name: string }> | null;\n }> | null;\n }>;\n} & { \" $fragmentName\"?: \"OperationsFragmentFragment\" };\n\nexport type AllOperationsQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type AllOperationsQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n description?: string | null;\n summary?: string | null;\n title: string;\n url: string;\n version: string;\n tags: Array<{\n __typename?: \"SchemaTag\";\n name?: string | null;\n description?: string | null;\n operations: Array<\n { __typename?: \"OperationItem\"; slug: string } & {\n \" $fragmentRefs\"?: {\n OperationsFragmentFragment: OperationsFragmentFragment;\n };\n }\n >;\n }>;\n };\n};\n\nexport type GetServerQueryQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type GetServerQueryQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n };\n};\n\nexport type GetCategoriesQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type GetCategoriesQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n tags: Array<{\n __typename: \"SchemaTag\";\n name?: string | null;\n operations: Array<{\n __typename: \"OperationItem\";\n slug: string;\n deprecated?: boolean | null;\n method: string;\n summary?: string | null;\n operationId?: string | null;\n path: string;\n }>;\n }>;\n };\n};\n\nexport class TypedDocumentString<TResult, TVariables>\n extends String\n implements DocumentTypeDecoration<TResult, TVariables>\n{\n __apiType?: DocumentTypeDecoration<TResult, TVariables>[\"__apiType\"];\n\n constructor(\n private value: string,\n public __meta__?: Record<string, any> | undefined,\n ) {\n super(value);\n }\n\n toString(): string & DocumentTypeDecoration<TResult, TVariables> {\n return this.value;\n }\n}\nexport const OperationsFragmentFragmentDoc = new TypedDocumentString(\n `\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n examples {\n name\n description\n externalValue\n value\n summary\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n examples {\n name\n description\n externalValue\n value\n summary\n }\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n}\n `,\n { fragmentName: \"OperationsFragment\" },\n) as unknown as TypedDocumentString<OperationsFragmentFragment, unknown>;\nexport const ServersQueryDocument = new TypedDocumentString(`\n query ServersQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n}\n `) as unknown as TypedDocumentString<\n ServersQueryQuery,\n ServersQueryQueryVariables\n>;\nexport const AllOperationsDocument = new TypedDocumentString(`\n query AllOperations($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n description\n summary\n title\n url\n version\n tags {\n name\n description\n operations {\n slug\n ...OperationsFragment\n }\n }\n }\n}\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n examples {\n name\n description\n externalValue\n value\n summary\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n examples {\n name\n description\n externalValue\n value\n summary\n }\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n}`) as unknown as TypedDocumentString<\n AllOperationsQuery,\n AllOperationsQueryVariables\n>;\nexport const GetServerQueryDocument = new TypedDocumentString(`\n query getServerQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetServerQueryQuery,\n GetServerQueryQueryVariables\n>;\nexport const GetCategoriesDocument = new TypedDocumentString(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n __typename\n name\n operations {\n __typename\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetCategoriesQuery,\n GetCategoriesQueryVariables\n>;\n","/* eslint-disable */\nimport * as types from \"./graphql.js\";\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size\n */\nconst documents = {\n \"\\n query ServersQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\":\n types.ServersQueryDocument,\n \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n parameters {\\n name\\n in\\n description\\n required\\n schema\\n style\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n }\\n requestBody {\\n content {\\n mediaType\\n encoding {\\n name\\n }\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n schema\\n }\\n description\\n required\\n }\\n responses {\\n statusCode\\n links\\n description\\n content {\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n mediaType\\n encoding {\\n name\\n }\\n schema\\n }\\n }\\n }\\n\":\n types.OperationsFragmentFragmentDoc,\n \"\\n query AllOperations($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n description\\n summary\\n title\\n url\\n version\\n tags {\\n name\\n description\\n operations {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n }\\n\":\n types.AllOperationsDocument,\n \"\\n query getServerQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\":\n types.GetServerQueryDocument,\n \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n __typename\\n name\\n operations {\\n __typename\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n }\\n\":\n types.GetCategoriesDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query ServersQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").ServersQueryDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n parameters {\\n name\\n in\\n description\\n required\\n schema\\n style\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n }\\n requestBody {\\n content {\\n mediaType\\n encoding {\\n name\\n }\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n schema\\n }\\n description\\n required\\n }\\n responses {\\n statusCode\\n links\\n description\\n content {\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n mediaType\\n encoding {\\n name\\n }\\n schema\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").OperationsFragmentFragmentDoc;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query AllOperations($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n description\\n summary\\n title\\n url\\n version\\n tags {\\n name\\n description\\n operations {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").AllOperationsDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query getServerQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetServerQueryDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n __typename\\n name\\n operations {\\n __typename\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetCategoriesDocument;\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n","import type { GraphQLError } from \"graphql/error/index.js\";\nimport { ZudokuError } from \"../../../util/invariant.js\";\nimport type { TypedDocumentString } from \"../graphql/graphql.js\";\nimport type { OpenApiPluginOptions } from \"../index.js\";\nimport type { LocalServer } from \"./createServer.js\";\n\nlet localServerPromise: Promise<LocalServer> | undefined;\n\ntype GraphQLResponse<TResult> = {\n errors?: GraphQLError[];\n data: TResult;\n};\n\nconst throwIfError = (response: GraphQLResponse<unknown>) => {\n if (!response.errors?.[0]) return;\n\n throw new ZudokuError(response.errors[0].message, {\n developerHint:\n \"Check your configuration value `apis.type` and `apis.input` in the Zudoku config.\",\n });\n};\n\nexport class GraphQLClient {\n constructor(private readonly config: OpenApiPluginOptions) {}\n\n #getLocalServer = async () => {\n if (!localServerPromise) {\n localServerPromise = import(\"./createServer.js\").then((m) =>\n m.createServer(this.config),\n );\n }\n return localServerPromise;\n };\n\n #executeFetch = async (init: RequestInit): Promise<Response> => {\n if (this.config.server) {\n return fetch(this.config.server, init);\n }\n\n const localServer = await this.#getLocalServer();\n return localServer.fetch(\"http://localhost/graphql\", init);\n };\n\n fetch = async <TResult, TVariables>(\n query: TypedDocumentString<TResult, TVariables>,\n ...[variables]: TVariables extends Record<string, never> ? [] : [TVariables]\n ): Promise<TResult> => {\n const operationName = query.match(/query (\\w+)/)?.[1];\n\n const response = await this.#executeFetch({\n method: \"POST\",\n body: JSON.stringify({ query, variables, operationName }),\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n const result = (await response.json()) as GraphQLResponse<TResult>;\n throwIfError(result);\n\n return result.data;\n };\n}\n","const c2n = (c: string) =>\n Math.abs(\n isNaN(parseInt(c))\n ? c.toLowerCase().charCodeAt(0) - 96\n : isNaN(parseInt(c))\n ? 0\n : parseInt(c),\n );\nconst s2n = (s: string) =>\n s.length > 1\n ? parseInt(s.split(\"\").reduce((a, c) => `${c2n(a) + c2n(c)}`))\n : c2n(s);\n\nexport const pastellize = (\n s: string,\n options: {\n saturation?: number;\n lightness?: number;\n } = {},\n) => {\n const hue = (3 * s2n(s) + 2 * s2n(s) + s2n(s)) % 360;\n const { saturation = 75, lightness = 60 } = options;\n\n return `${hue}deg ${saturation}% ${lightness}%`;\n};\n","import { useTheme } from \"next-themes\";\nimport { useEffect, useRef, type CSSProperties, type ReactNode } from \"react\";\nimport { cn } from \"../../util/cn.js\";\nimport { pastellize } from \"../../util/pastellize.js\";\n\nexport const DATA_ATTR = \"data-linked-param\";\n\nexport const usePastellizedColor = (name: string) => {\n const { resolvedTheme } = useTheme();\n\n return {\n text: pastellize(\n name,\n resolvedTheme === \"light\" ? { saturation: 95, lightness: 38 } : {},\n ),\n background: pastellize(\n name,\n resolvedTheme === \"light\" ? { saturation: 85, lightness: 40 } : {},\n ),\n };\n};\n\nexport const useParamColor = (name: string) => {\n const normalized = name.replace(/[{}]/g, \"\");\n return usePastellizedColor(normalized);\n};\n\nexport const ColorizedParam = ({\n name,\n className,\n slug,\n title,\n children,\n onClick,\n}: {\n name: string;\n className?: string;\n backgroundOpacity?: string;\n borderOpacity?: string;\n slug?: string;\n children?: ReactNode;\n title?: string;\n onClick?: () => void;\n}) => {\n const ref = useRef<HTMLSpanElement>(null);\n const normalizedSlug = slug?.replace(/[{}]/g, \"\");\n const normalized = name.replace(/[{}]/g, \"\");\n const { text, background } = usePastellizedColor(normalized);\n\n const textColor = `hsl(${text} / 100%)`;\n const backgroundColor = `hsl(${background} / 10%)`;\n const borderColor = `hsl(${background} / 50%)`;\n\n useEffect(() => {\n if (!normalizedSlug) return;\n if (!ref.current) return;\n\n const onMouseEnter = () => {\n document\n .querySelectorAll(`[${DATA_ATTR}=\"${normalizedSlug}\"]`)\n .forEach((el) => {\n if (el instanceof HTMLElement) {\n el.dataset.active = \"true\";\n }\n });\n };\n const onMouseLeave = () => {\n document\n .querySelectorAll(`[${DATA_ATTR}=\"${normalizedSlug}\"]`)\n .forEach((el) => {\n if (el instanceof HTMLElement) {\n el.dataset.active = \"false\";\n }\n });\n };\n\n const el = ref.current;\n\n el.addEventListener(\"mouseenter\", onMouseEnter);\n el.addEventListener(\"mouseleave\", onMouseLeave);\n\n return () => {\n el.removeEventListener(\"mouseenter\", onMouseEnter);\n el.removeEventListener(\"mouseleave\", onMouseLeave);\n };\n }, [normalizedSlug]);\n\n return (\n <span\n {...{ [DATA_ATTR]: normalizedSlug }}\n className={cn(\n \"relative inline-block rounded transition-all duration-100\",\n \"rounded-lg\",\n \"border border-[--border-color] p-0.5 text-[--param-color] bg-[--background-color]\",\n \"data-[active=true]:border-[--param-color] data-[active=true]:shadow data-[active=true]:-translate-y-px\",\n className,\n )}\n title={title}\n suppressHydrationWarning\n ref={ref}\n onClick={onClick}\n style={\n {\n \"--param-color\": textColor,\n \"--border-color\": borderColor,\n \"--background-color\": backgroundColor,\n } as CSSProperties\n }\n >\n {children ?? name}\n </span>\n );\n};\n","import type { PlaygroundForm } from \"./Playground.js\";\n\nexport const createUrl = (host: string, path: string, data: PlaygroundForm) => {\n const filledPath = path.replace(/(:\\w+|\\{\\w+})/g, (match) => {\n const key = match.replace(/[:{}]/g, \"\");\n const value = data.pathParams.find((part) => part.name === key)?.value;\n\n return value ?? match;\n });\n\n // Ensure host ends with a slash and path doesn't start with one,\n // so they form a correct URL, without overriding the host's path.\n const url = new URL(\n filledPath.replace(/^\\//, \"\"),\n host.endsWith(\"/\") ? host : `${host}/`,\n );\n\n data.queryParams\n .filter((param) => param.active)\n .forEach((param) => {\n url.searchParams.set(param.name, param.value);\n });\n\n return url;\n};\n","import { XIcon } from \"lucide-react\";\nimport { Control, useFieldArray, UseFormRegister } from \"react-hook-form\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { type PlaygroundForm } from \"./Playground.js\";\n\nexport const Headers = ({\n control,\n register,\n}: {\n register: UseFormRegister<PlaygroundForm>;\n control: Control<PlaygroundForm>;\n}) => {\n const { fields, append, remove } = useFieldArray<PlaygroundForm>({\n control,\n name: \"headers\",\n });\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full [&_td]:border [&_td]:p-1.5 [&_td]:px-2\">\n <tbody>\n {fields.map((header, i) => (\n <tr\n key={header.id}\n className=\"group has-[:focus]:bg-muted/50 hover:bg-muted/50\"\n >\n <td className=\"flex gap-2 items-center\">\n <Input\n {...register(`headers.${i}.name`)}\n placeholder=\"Name\"\n className=\"border-0 shadow-none text-xs font-mono\"\n autoComplete=\"off\"\n />\n </td>\n <td>\n <div className=\"flex items-center gap-2\">\n <Input\n placeholder={\"Value\"}\n className=\"border-0 shadow-none text-xs font-mono\"\n {...register(`headers.${i}.value`)}\n autoComplete=\"off\"\n />\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"text-muted-foreground opacity-0 group-hover:opacity-100\"\n onClick={() => {\n remove(i);\n }}\n type=\"button\"\n >\n <XIcon size={16} />\n </Button>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n <div className=\"text-end\">\n <Button\n className=\"\"\n onClick={() => append({ name: \"\", value: \"\" })}\n type=\"button\"\n variant=\"secondary\"\n >\n Add header\n </Button>\n </div>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import { EraserIcon } from \"lucide-react\";\nimport { Control, Controller, useFieldArray } from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { ColorizedParam, useParamColor } from \"../ColorizedParam.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\nconst PathParamLabel = ({ name }: { name: string }) => {\n const color = useParamColor(name);\n\n return (\n <div className=\"flex items-center\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: `hsl(${color})` }}\n />\n\n <ColorizedParam\n slug={name}\n name={name}\n className=\"font-mono text-xs m-2 px-1\"\n />\n </div>\n );\n};\n\nexport const PathParams = ({\n control,\n}: {\n control: Control<PlaygroundForm>;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"pathParams\",\n });\n\n return (\n <Card className=\"rounded-lg\">\n <table className=\"w-full\">\n <tbody>\n {fields.map((part, i) => (\n <tr key={part.id} className=\"hover:bg-accent/40\">\n <td className=\"w-5/12\">\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={() => <PathParamLabel name={part.name} />}\n />\n </td>\n <td className=\"w-7/12\">\n <div className=\"flex justify-between items-center\">\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={({ field }) => (\n <Input\n {...field}\n required\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none text-xs font-mono hover:bg-accent\"\n />\n )}\n />\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={({ field }) => (\n <Button\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Clear value\"\n className={cn(\n \"ms-2 mr-1\",\n field.value.length === 0\n ? \"opacity-0 pointer-events-none\"\n : \"opacity-100\",\n )}\n title=\"Clear value\"\n onClick={() => field.onChange(\"\")}\n >\n <EraserIcon size={16} />\n </Button>\n )}\n />\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </Card>\n );\n};\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst checkboxVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary\",\n {\n variants: {\n variant: {\n default: \"border border-primary data-[state=checked]:bg-primary\",\n outline: \"border border-input data-[state=checked]:bg-accent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ninterface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, variant, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(checkboxVariants({ variant, className }))}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox, type CheckboxProps };\n","import { useState } from \"react\";\nimport {\n Command,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../../../ui/Command.js\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../../ui/Popover.js\";\nimport { cn } from \"../../../util/cn.js\";\n\ninterface EnumSelectorProps {\n value: string;\n enumValues: string[];\n onChange: (value: string) => void;\n onValueSelected: () => void;\n}\n\nexport const EnumSelector = ({\n value,\n enumValues,\n onChange,\n onValueSelected,\n}: EnumSelectorProps) => {\n const [searchValue, setSearchValue] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n className={cn(\n \"px-3 py-2 w-full border-0 shadow-none text-xs font-mono text-start hover:bg-accent/40 rounded border-transparent hover:bg-accent\",\n !value && \"text-muted-foreground\",\n )}\n >\n {value || \"Select value\"}\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0 w-[--radix-popover-trigger-width] \"\n align=\"start\"\n sideOffset={3}\n alignOffset={-3}\n side=\"bottom\"\n >\n <Command className=\"max-h-[180px]\">\n <CommandInput\n placeholder=\"Enter value\"\n className=\"h-9 bg-transparent \"\n onValueChange={setSearchValue}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n onChange(searchValue);\n onValueSelected();\n setOpen(false);\n }\n }}\n />\n <CommandList>\n <CommandEmpty>Use \"{searchValue}\"</CommandEmpty>\n {enumValues.map((enumValue) => (\n <CommandItem\n key={enumValue}\n value={enumValue}\n onSelect={(selected) => {\n onChange(selected);\n onValueSelected();\n setOpen(false);\n }}\n >\n {enumValue}\n </CommandItem>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport type { ClassValue } from \"clsx\";\nimport * as React from \"react\";\nimport { type HTMLElementType, type JSX } from \"react\";\nimport { cn } from \"./cn.js\";\n\nconst createVariantComponent = <\n E extends HTMLElementType,\n C extends ReturnType<typeof cva>,\n>(\n tag: E,\n cvx: ClassValue | C,\n // variantProps: Array<keyof VariantProps<C>> = [],\n) => {\n const MyVariant = React.forwardRef<\n HTMLElement,\n JSX.IntrinsicElements[E] & { className?: ClassValue; asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : tag;\n\n return React.createElement(Comp, {\n ...props,\n ref,\n className:\n typeof cvx === \"function\" ? cvx({ className }) : cn(cvx, className),\n });\n });\n\n MyVariant.displayName = `VariantComponent(${tag})`;\n\n return MyVariant;\n};\n\nexport default createVariantComponent;\n","import createVariantComponent from \"../../../util/createVariantComponent.js\";\n\nexport const InlineInput = createVariantComponent(\n \"input\",\n \"px-2 bg-transparent h-6 font-mono text-xs m-2\",\n);\n","import { EraserIcon } from \"lucide-react\";\nimport {\n Control,\n Controller,\n useFieldArray,\n useFormContext,\n} from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Checkbox } from \"zudoku/ui/Checkbox.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { EnumSelector } from \"./EnumSelector.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport {\n NO_IDENTITY,\n type PlaygroundForm,\n type QueryParam,\n} from \"./Playground.js\";\n\nexport const QueryParams = ({\n control,\n queryParams,\n}: {\n control: Control<PlaygroundForm>;\n queryParams: QueryParam[];\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"queryParams\",\n });\n const form = useFormContext<PlaygroundForm>();\n\n const requiredFields = queryParams.map((param) => Boolean(param.isRequired));\n\n const selectedIdentity = form.watch(\"identity\");\n const hasSelectedIdentity = selectedIdentity !== NO_IDENTITY;\n\n return (\n <Card className=\"rounded-lg\">\n <table className=\"w-full\">\n <tbody>\n {fields\n .filter(\n // TODO remove this hack for Accu or make it more generic\n (field) => !(hasSelectedIdentity && field.name === \"apikey\"),\n )\n .map((field, i) => {\n const currentParam = queryParams.find(\n (param) => param.name === field.name,\n );\n return (\n <tr key={field.id} className=\"hover:bg-accent/40\">\n <td className=\"w-5/12 flex items-center ps-3\">\n <Controller\n control={control}\n name={`queryParams.${i}.active`}\n render={({ field }) => (\n <Checkbox\n variant=\"outline\"\n id={`queryParams.${i}.active`}\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n )}\n />\n <Controller\n control={control}\n render={({ field }) => (\n <InlineInput asChild>\n <label\n className=\"flex items-center cursor-pointer gap-1\"\n htmlFor={`queryParams.${i}.active`}\n title={\n requiredFields[i] ? \"Required field\" : undefined\n }\n >\n {field.value}\n {requiredFields[i] && <sup>&nbsp;*</sup>}\n </label>\n </InlineInput>\n )}\n name={`queryParams.${i}.name`}\n />\n </td>\n <td className=\"w-7/12\">\n <div className=\"flex justify-between items-center\">\n <Controller\n control={control}\n render={({ field }) => {\n const hasEnum =\n currentParam?.enum && currentParam.enum.length > 0;\n\n if (!hasEnum) {\n return (\n <Input\n {...field}\n onChange={(e) => {\n field.onChange(e.target.value);\n if (e.target.value.length > 0) {\n form.setValue(\n `queryParams.${i}.active`,\n true,\n );\n }\n }}\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none text-xs font-mono hover:bg-accent\"\n />\n );\n }\n\n const enumValues = currentParam.enum ?? [];\n\n return (\n <EnumSelector\n value={field.value}\n enumValues={enumValues}\n onChange={field.onChange}\n onValueSelected={() => {\n form.setValue(`queryParams.${i}.active`, true);\n }}\n />\n );\n }}\n name={`queryParams.${i}.value`}\n />\n <Controller\n control={control}\n render={({ field }) => (\n <Button\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Clear value\"\n className={cn(\n \"ms-2 mr-1\",\n field.value.length === 0\n ? \"opacity-0 pointer-events-none\"\n : \"opacity-100\",\n )}\n title=\"Clear value\"\n onClick={() => field.onChange(\"\")}\n >\n <EraserIcon size={16} />\n </Button>\n )}\n name={`queryParams.${i}.value`}\n />\n </div>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </Card>\n );\n};\n","import { ChevronsUpDownIcon } from \"lucide-react\";\nimport type { ChangeEventHandler } from \"react\";\nimport { cn } from \"../../util/cn.js\";\n\nexport const SimpleSelect = ({\n value,\n onChange,\n className,\n options,\n showChevrons = true,\n}: {\n value: string;\n onChange: ChangeEventHandler<HTMLSelectElement>;\n className?: string;\n options: {\n value: string;\n label: string;\n }[];\n showChevrons?: boolean;\n}) => (\n <div className=\"grid\">\n <select\n className={cn(\n \"row-start-1 col-start-1 border border-input text-foreground px-2 py-1 pe-6\",\n \"rounded-md appearance-none bg-zinc-50 hover:bg-white dark:bg-zinc-800 hover:dark:bg-zinc-800/75\",\n className,\n )}\n value={value}\n onChange={onChange}\n >\n {options.map((option) => (\n <option value={option.value} key={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n <div\n className={cn(\n !showChevrons && \"hidden\",\n \"row-start-1 col-start-1 self-center justify-self-end relative end-2 pointer-events-none\",\n )}\n >\n <ChevronsUpDownIcon size={14} />\n </div>\n </div>\n);\n","import { useState } from \"react\";\nimport { SyntaxHighlight } from \"../../../components/SyntaxHighlight.js\";\nimport { Card } from \"../../../ui/Card.js\";\nimport { SimpleSelect } from \"../SimpleSelect.js\";\n\nconst mimeTypeToLanguage = (mimeType: string) => {\n const mimeTypeMapping = {\n \"application/json\": \"json\",\n \"text/json\": \"json\",\n \"text/html\": \"html\",\n \"text/css\": \"css\",\n \"text/javascript\": \"javascript\",\n \"application/xml\": \"xml\",\n \"application/xhtml+xml\": \"xhtml\",\n };\n\n return Object.entries(mimeTypeMapping).find(([mime]) =>\n mimeType.includes(mime),\n )?.[1];\n};\n\nconst detectLanguage = (headers: Headers) => {\n const contentType = headers.get(\"Content-Type\") || \"\";\n return mimeTypeToLanguage(contentType);\n};\n\nconst tryParseJson = (body: string) => {\n try {\n return JSON.stringify(JSON.parse(body), null, 2);\n } catch {\n return null;\n }\n};\n\nexport const ResponseTab = ({\n body = \"\",\n headers,\n}: {\n body?: string;\n headers: Headers;\n}) => {\n const detectedLanguage = detectLanguage(headers);\n const jsonContent = tryParseJson(body);\n const beautifiedBody = jsonContent || body;\n const [view, setView] = useState<\"formatted\" | \"raw\">(\n jsonContent ? \"formatted\" : \"raw\",\n );\n\n return (\n <div className=\"flex flex-col gap-2\">\n <Card className=\"shadow-none\">\n <SyntaxHighlight\n language={\n view === \"raw\" ? (jsonContent ? \"plain\" : detectedLanguage) : \"json\"\n }\n noBackground\n // playground dialog has h-5/6 ≈ 83.333vh\n className=\"overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]\"\n code={view === \"raw\" ? body : beautifiedBody}\n />\n </Card>\n {jsonContent && (\n <div className=\"flex justify-end\">\n <SimpleSelect\n value={view}\n onChange={(e) => setView(e.target.value as \"formatted\" | \"raw\")}\n options={[\n { value: \"formatted\", label: \"Formatted\" },\n { value: \"raw\", label: \"Raw\" },\n ]}\n />\n </div>\n )}\n </div>\n );\n};\n","import { useMutation } from \"@tanstack/react-query\";\nimport { Fragment, useEffect, useRef, useTransition } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { useSelectedServerStore } from \"../../../authentication/state.js\";\nimport { useApiIdentities } from \"../../../components/context/ZudokuContext.js\";\nimport { Spinner } from \"../../../components/Spinner.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Callout } from \"../../../ui/Callout.js\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"../../../ui/Card.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../../ui/Tabs.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport { createUrl } from \"./createUrl.js\";\nimport { Headers } from \"./Headers.js\";\nimport { PathParams } from \"./PathParams.js\";\nimport { QueryParams } from \"./QueryParams.js\";\nimport { ResponseTab } from \"./ResponseTab.js\";\n\nexport const NO_IDENTITY = \"__none\";\n\nconst statusCodeMap: Record<number, string> = {\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 204: \"No Content\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 500: \"Internal Server Error\",\n};\n\nexport type Header = {\n name: string;\n defaultValue?: string;\n};\nexport type QueryParam = {\n name: string;\n defaultValue?: string;\n defaultActive?: boolean;\n isRequired?: boolean;\n enum?: string[];\n type?: string;\n};\nexport type PathParam = {\n name: string;\n defaultValue?: string;\n isRequired?: boolean;\n};\n\nexport type PlaygroundForm = {\n body: string;\n queryParams: Array<{\n name: string;\n value: string;\n active: boolean;\n enum?: string[];\n }>;\n pathParams: Array<{ name: string; value: string }>;\n headers: Array<{\n name: string;\n value: string;\n }>;\n identity?: string;\n};\n\nexport type PlaygroundContentProps = {\n server: string;\n servers?: string[];\n url: string;\n method: string;\n headers?: Header[];\n queryParams?: QueryParam[];\n pathParams?: PathParam[];\n defaultBody?: string;\n};\n\nexport const Playground = ({\n server,\n servers,\n url,\n method,\n headers = [],\n queryParams = [],\n pathParams = [],\n defaultBody = \"\",\n}: PlaygroundContentProps) => {\n const { selectedServer, setSelectedServer } = useSelectedServerStore();\n const [, startTransition] = useTransition();\n const { register, control, handleSubmit, watch, setValue, ...form } =\n useForm<PlaygroundForm>({\n defaultValues: {\n body: defaultBody,\n queryParams: queryParams.map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n active: param.defaultActive ?? false,\n enum: param.enum ?? [],\n })),\n pathParams: pathParams.map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n })),\n headers: headers.map((header) => ({\n name: header.name,\n value: header.defaultValue ?? \"\",\n })),\n identity: NO_IDENTITY,\n },\n });\n const formState = watch();\n const identities = useApiIdentities();\n\n const setOnce = useRef(false);\n useEffect(() => {\n if (setOnce.current) return;\n const firstIdentity = identities.data?.at(0);\n if (firstIdentity) {\n setValue(\"identity\", firstIdentity.id);\n setOnce.current = true;\n }\n }, [setValue, identities.data]);\n\n const queryMutation = useMutation({\n mutationFn: async (data: PlaygroundForm) => {\n const requestUrl = createUrl(selectedServer ?? server, url, data);\n const start = performance.now();\n\n const request = new Request(requestUrl, {\n method: method.toUpperCase(),\n headers: Object.fromEntries(\n data.headers\n .filter((h) => h.name)\n .map((header) => [header.name, header.value]),\n ),\n body: data.body ? data.body : undefined,\n });\n\n if (data.identity !== NO_IDENTITY) {\n identities.data\n ?.find((i) => i.id === data.identity)\n ?.authorizeRequest(request);\n }\n try {\n const response = await fetch(request, {\n signal: AbortSignal.timeout(5000),\n });\n\n const time = performance.now() - start;\n\n const body = await response.text();\n\n return {\n status: response.status,\n headers: response.headers,\n size: body.length,\n body,\n time,\n };\n } catch (error) {\n if (error instanceof TypeError) {\n throw new Error(\n \"The request failed, possibly due to network issues or CORS policy.\",\n );\n } else {\n throw error;\n }\n }\n },\n });\n\n const path = url.split(\"/\").map((part, i, arr) => {\n const isPathParam =\n (part.startsWith(\"{\") && part.endsWith(\"}\")) || part.startsWith(\":\");\n const replaced = part.replace(/[:{}]/g, \"\");\n const value = formState.pathParams.find((p) => p.name === replaced)?.value;\n\n const pathParamValue = (\n <ColorizedParam\n backgroundOpacity=\"25%\"\n name={part}\n slug={part}\n title={\n !value\n ? `Missing value for path parameter \\`${replaced}\\``\n : undefined\n }\n >\n {value ? encodeURIComponent(value) : part}\n </ColorizedParam>\n );\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={part + i}>\n {isPathParam ? pathParamValue : part}\n {i < arr.length - 1 && \"/\"}\n <wbr />\n </Fragment>\n );\n });\n\n const headerEntries = Array.from(queryMutation.data?.headers.entries() ?? []);\n\n const urlQueryParams = formState.queryParams\n .filter((p) => p.active)\n .map((p, i, arr) => (\n <Fragment key={p.name}>\n {p.name}={encodeURIComponent(p.value).replaceAll(\"%20\", \"+\")}\n {i < arr.length - 1 && \"&\"}\n <wbr />\n </Fragment>\n ));\n\n const serverSelect = (\n <div className=\"inline-block opacity-50 hover:opacity-100 transition\">\n {servers && servers.length > 1 ? (\n <Select\n onValueChange={(value) => {\n startTransition(() => {\n setSelectedServer(value);\n });\n }}\n value={selectedServer}\n >\n <SelectTrigger className=\"p-0 border-none flex-row-reverse bg-transparent text-xs gap-0.5 h-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {servers.map((s) => (\n <SelectItem key={s} value={s}>\n {s.replace(/^https?:\\/\\//, \"\")}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <span>{server.replace(/^https?:\\/\\//, \"\")}</span>\n )}\n </div>\n );\n\n return (\n <FormProvider\n {...{ register, control, handleSubmit, watch, setValue, ...form }}\n >\n <form onSubmit={handleSubmit((data) => queryMutation.mutateAsync(data))}>\n <div className=\"grid grid-cols-[8fr_7fr] text-sm h-full\">\n <div className=\"flex flex-col gap-4 p-4 after:bg-muted-foreground/20 relative after:absolute after:w-px after:inset-0 after:left-auto\">\n <div className=\"flex gap-2 items-stretch\">\n <div className=\"flex flex-1 items-center w-full border rounded-md\">\n <div className=\"border-r p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono\">\n {method.toUpperCase()}\n </div>\n <div className=\"flex items-center flex-wrap p-2 font-mono text-xs\">\n {serverSelect}\n {path}\n {urlQueryParams.length > 0 ? \"?\" : \"\"}\n {urlQueryParams}\n </div>\n </div>\n <Button type=\"submit\" className=\"h-auto flex gap-1\">\n Send\n </Button>\n </div>\n <Tabs\n defaultValue={\n queryParams.length + pathParams.length > 0\n ? \"parameters\"\n : \"headers\"\n }\n >\n <div className=\"flex flex-wrap gap-1 justify-between\">\n <TabsList>\n {queryParams.length + pathParams.length > 0 && (\n <TabsTrigger value=\"parameters\">Parameters</TabsTrigger>\n )}\n <TabsTrigger value=\"headers\">\n Headers{\" \"}\n {formState.headers.length > 0 &&\n `(${formState.headers.length})`}\n </TabsTrigger>\n <TabsTrigger\n value=\"body\"\n disabled={\n ![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n )\n }\n >\n Body\n </TabsTrigger>\n </TabsList>\n <div className=\"flex gap-2 items-center\">\n Auth:\n <Select\n onValueChange={(value) => setValue(\"identity\", value)}\n value={formState.identity}\n defaultValue={formState.identity}\n >\n <SelectTrigger className=\"w-[180px] flex\">\n {identities.isPending ? <Spinner /> : <SelectValue />}\n </SelectTrigger>\n <SelectContent align=\"center\">\n <SelectItem value={NO_IDENTITY}>None</SelectItem>\n {identities.data?.map((identity) => (\n <SelectItem key={identity.id} value={identity.id}>\n {identity.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <TabsContent value=\"headers\">\n <Headers control={control} register={register} />\n </TabsContent>\n <TabsContent value=\"parameters\">\n {pathParams.length > 0 && (\n <div className=\"flex flex-col gap-4 my-4\">\n <span className=\"font-semibold\">Path Parameters</span>\n <PathParams control={control} />\n </div>\n )}\n {queryParams.length > 0 && (\n <div className=\"flex flex-col gap-4 my-4\">\n <span className=\"font-semibold\">Query Parameters</span>\n <QueryParams control={control} queryParams={queryParams} />\n </div>\n )}\n </TabsContent>\n <TabsContent value=\"body\">\n <textarea\n {...register(\"body\")}\n className=\"border w-full rounded p-2 bg-muted h-40\"\n />\n </TabsContent>\n </Tabs>\n </div>\n <div className=\"min-w-0 p-8 bg-muted/70\">\n {queryMutation.error ? (\n <div className=\"flex flex-col gap-2\">\n {formState.pathParams.some((p) => p.value === \"\") && (\n <Callout type=\"caution\">\n Some path parameters are missing values. Please fill them in\n to ensure the request is sent correctly.\n </Callout>\n )}\n <Card>\n <CardHeader>\n <CardTitle>Request failed</CardTitle>\n </CardHeader>\n <CardContent>\n Error:{\" \"}\n {queryMutation.error.message ||\n String(queryMutation.error) ||\n \"Unexpected error\"}\n </CardContent>\n </Card>\n </div>\n ) : queryMutation.data ? (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex gap-2\">\n <div className=\"flex text-xs gap-6\">\n <div>\n Status: {queryMutation.data.status}{\" \"}\n {statusCodeMap[queryMutation.data.status] ?? \"\"}\n </div>\n <div>Time: {queryMutation.data.time.toFixed(0)}ms</div>\n <div>Size: {queryMutation.data.size} B</div>\n </div>\n </div>\n <Tabs defaultValue=\"response\">\n <TabsList>\n <TabsTrigger value=\"response\">Response</TabsTrigger>\n <TabsTrigger value=\"headers\">\n {headerEntries.length\n ? `Headers (${headerEntries.length})`\n : \"No headers\"}\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"response\">\n <ResponseTab\n headers={queryMutation.data.headers}\n body={queryMutation.data.body}\n />\n </TabsContent>\n <TabsContent value=\"headers\">\n <Card\n // playground dialog has h-5/6 ≈ 83.333vh\n className=\"max-h-[calc(83.333vh-140px)] overflow-y-auto grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4\"\n >\n <div className=\"font-semibold\">Key</div>\n <div className=\"font-semibold\">Value</div>\n {headerEntries.map(([key, value]) => (\n <Fragment key={key}>\n <div>{key}</div>\n <div className=\"break-words\">{value}</div>\n </Fragment>\n ))}\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n ) : (\n <div className=\"grid place-items-center h-full\">\n <span className=\"text-[16px] font-semibold text-muted-foreground\">\n {queryMutation.isPending ? (\n <Spinner />\n ) : (\n \"Send a request first to see the response here\"\n )}\n </span>\n </div>\n )}\n </div>\n </div>\n </form>\n </FormProvider>\n );\n};\n\nexport default Playground;\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { type PropsWithChildren, useState } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"zudoku/ui/Dialog.js\";\nimport { Playground, type PlaygroundContentProps } from \"./Playground.js\";\n\nexport type PlaygroundDialogProps = PropsWithChildren<PlaygroundContentProps>;\n\nconst HeroPlayIcon = ({\n className,\n size = 16,\n}: {\n className?: string;\n size?: number;\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={size}\n height={size}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm14.024-.983a1.125 1.125 0 0 1 0 1.966l-5.603 3.113A1.125 1.125 0 0 1 9 15.113V8.887c0-.857.921-1.4 1.671-.983l5.603 3.113Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst PlaygroundDialog = (props: PlaygroundDialogProps) => {\n const [open, setOpen] = useState(false);\n return (\n <Dialog onOpenChange={(open) => setOpen(open)}>\n <DialogTrigger asChild>\n {props.children ?? (\n <button className=\"flex gap-1 items-center px-2 py-1 rounded-md transition text-xs bg-primary text-primary-foreground shadow-sm hover:bg-primary/80\">\n Test\n <HeroPlayIcon className=\"\" size={14} />\n </button>\n )}\n </DialogTrigger>\n\n <DialogContent\n className=\"max-w-screen-xl w-full h-5/6 overflow-auto p-0\"\n aria-describedby={undefined}\n >\n <VisuallyHidden>\n <DialogTitle>Playground</DialogTitle>\n </VisuallyHidden>\n {open && <Playground {...props} />}\n </DialogContent>\n </Dialog>\n );\n};\n\nexport { PlaygroundDialog };\n","import { matchPath } from \"react-router\";\nimport { type ZudokuPlugin } from \"../../core/plugins.js\";\nimport { graphql } from \"./graphql/index.js\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { CirclePlayIcon, LogInIcon } from \"lucide-react\";\nimport type { SidebarItem } from \"../../../config/validators/SidebarSchema.js\";\nimport { useAuth } from \"../../authentication/hook.js\";\nimport { ColorMap } from \"../../components/navigation/SidebarBadge.js\";\nimport type { SchemaImports } from \"../../oas/graphql/index.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { GraphQLClient } from \"./client/GraphQLClient.js\";\nimport { OasPluginConfig } from \"./interfaces.js\";\nimport type { PlaygroundContentProps } from \"./playground/Playground.js\";\nimport { PlaygroundDialog } from \"./playground/PlaygroundDialog.js\";\n\nconst GetCategoriesQuery = graphql(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n __typename\n name\n operations {\n __typename\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n }\n`);\n\ntype InternalOasPluginConfig = { schemaImports?: SchemaImports };\n\nconst MethodColorMap: Record<string, keyof typeof ColorMap> = {\n get: \"green\",\n post: \"blue\",\n put: \"yellow\",\n delete: \"red\",\n patch: \"purple\",\n options: \"gray\",\n head: \"gray\",\n};\n\nexport type OpenApiPluginOptions = OasPluginConfig & InternalOasPluginConfig;\n\nexport const openApiPlugin = (config: OpenApiPluginOptions): ZudokuPlugin => {\n const basePath = joinPath(config.navigationId ?? \"/reference\");\n\n const versions = config.type === \"file\" ? Object.keys(config.input) : [];\n\n const client = new GraphQLClient(config);\n\n return {\n getHead: () => {\n if (config.type === \"url\" && !config.skipPreload) {\n return (\n <link\n rel=\"preload\"\n href={config.input}\n as=\"fetch\"\n crossOrigin=\"anonymous\"\n />\n );\n }\n\n if (config.server) {\n return <link rel=\"preconnect\" href={config.server} />;\n }\n },\n getMdxComponents: () => ({\n OpenPlaygroundButton: ({\n requireAuth,\n server,\n method,\n url,\n ...props\n }: Partial<PlaygroundContentProps> & { requireAuth: boolean }) => {\n const auth = useAuth();\n // We don't have the GraphQL context here\n const serverQuery = useQuery({\n queryFn: () =>\n client.fetch(GetCategoriesQuery, {\n type: config.type,\n input: config.input,\n }),\n enabled: !server,\n queryKey: [\"playground-server\"],\n });\n\n if (requireAuth && !auth.isAuthenticated) {\n return (\n <Button\n className=\"gap-2 items-center\"\n variant=\"outline\"\n onClick={auth.login}\n >\n Login to open in Playground <LogInIcon size={16} />\n </Button>\n );\n }\n\n return (\n <PlaygroundDialog\n url={url ?? \"/\"}\n method={method ?? \"get\"}\n server={\n server ?? serverQuery.data?.schema.url ?? \"https://example.com\"\n }\n {...props}\n >\n <Button className=\"gap-2 items-center\" variant=\"outline\">\n Open in Playground <CirclePlayIcon size={16} />\n </Button>\n </PlaygroundDialog>\n );\n },\n }),\n getSidebar: async (path: string) => {\n if (!matchPath({ path: basePath, end: false }, path)) {\n return [];\n }\n\n try {\n const version =\n versions.find((v) => path === joinPath(basePath, v)) ??\n Object.keys(config.input).at(0);\n\n const data = await client.fetch(GetCategoriesQuery, {\n type: config.type,\n input: config.type === \"file\" ? config.input[version!] : config.input,\n version,\n });\n\n const categories = data.schema.tags\n .filter((tag) => tag.operations.length > 0)\n .map<SidebarItem>((tag) => ({\n type: \"category\",\n label: tag.name || \"Other endpoints\",\n collapsible: true,\n collapsed: false,\n items: tag.operations.map((operation) => ({\n type: \"link\",\n label: operation.summary ?? operation.path,\n href: `#${operation.slug}`,\n badge: {\n label: operation.method,\n color: MethodColorMap[operation.method.toLowerCase()]!,\n invert: true,\n },\n })),\n }));\n\n categories.unshift({\n type: \"link\",\n label: \"Overview\",\n href: \"#description\",\n });\n\n return categories;\n } catch {\n return [];\n }\n },\n getRoutes: () => {\n const versionsInPath = [null, ...versions];\n\n return versionsInPath.map((version) => ({\n path: basePath + (version ? `/${version}` : \"\"),\n async lazy() {\n const { OpenApiRoute } = await import(\"./Route.js\");\n return {\n element: (\n <OpenApiRoute\n basePath={basePath}\n versions={versions}\n client={client}\n config={config}\n />\n ),\n };\n },\n children: [\n {\n index: true,\n async lazy() {\n const { OperationList } = await import(\"./OperationList.js\");\n return { element: <OperationList /> };\n },\n },\n ],\n }));\n },\n };\n};\n"],"names":["TypedDocumentString","value","__meta__","__publicField","OperationsFragmentFragmentDoc","ServersQueryDocument","AllOperationsDocument","GetServerQueryDocument","GetCategoriesDocument","documents","types.ServersQueryDocument","types.OperationsFragmentFragmentDoc","types.AllOperationsDocument","types.GetServerQueryDocument","types.GetCategoriesDocument","graphql","source","localServerPromise","throwIfError","response","_a","ZudokuError","GraphQLClient","config","__privateAdd","_getLocalServer","m","_executeFetch","init","__privateGet","query","variables","operationName","result","c2n","c","s2n","s","pastellize","options","hue","saturation","lightness","DATA_ATTR","usePastellizedColor","name","resolvedTheme","useTheme","useParamColor","normalized","ColorizedParam","className","slug","title","children","onClick","ref","useRef","normalizedSlug","text","background","textColor","backgroundColor","borderColor","useEffect","onMouseEnter","el","onMouseLeave","jsx","cn","createUrl","host","path","data","filledPath","match","key","part","url","param","Headers","control","register","fields","append","remove","useFieldArray","jsxs","header","i","Input","Button","XIcon","Card","React","props","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","PathParamLabel","color","PathParams","Controller","field","EraserIcon","checkboxVariants","cva","Checkbox","variant","CheckboxPrimitive","Check","EnumSelector","enumValues","onChange","onValueSelected","searchValue","setSearchValue","useState","open","setOpen","Popover","PopoverTrigger","PopoverContent","Command","CommandInput","e","CommandList","CommandEmpty","enumValue","CommandItem","selected","createVariantComponent","tag","cvx","MyVariant","asChild","Comp","Slot","InlineInput","QueryParams","queryParams","form","useFormContext","requiredFields","hasSelectedIdentity","NO_IDENTITY","currentParam","SimpleSelect","showChevrons","option","ChevronsUpDownIcon","mimeTypeToLanguage","mimeType","mime","detectLanguage","headers","contentType","tryParseJson","body","ResponseTab","detectedLanguage","jsonContent","beautifiedBody","view","setView","SyntaxHighlight","statusCodeMap","Playground","server","servers","method","pathParams","defaultBody","selectedServer","setSelectedServer","useSelectedServerStore","startTransition","useTransition","handleSubmit","watch","setValue","useForm","formState","identities","useApiIdentities","setOnce","firstIdentity","queryMutation","useMutation","requestUrl","start","request","h","_b","time","error","arr","isPathParam","replaced","p","pathParamValue","Fragment","headerEntries","urlQueryParams","serverSelect","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","FormProvider","Tabs","TabsList","TabsTrigger","Spinner","identity","TabsContent","Callout","HeroPlayIcon","size","PlaygroundDialog","Dialog","DialogTrigger","DialogContent","VisuallyHidden","DialogTitle","GetCategoriesQuery","MethodColorMap","openApiPlugin","basePath","joinPath","versions","client","requireAuth","auth","useAuth","serverQuery","useQuery","LogInIcon","CirclePlayIcon","matchPath","version","v","categories","operation","OpenApiRoute","OperationList"],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- const f = /* @__PURE__ */ new Map(), w = (s, a) => {
2
- f.has(s) || f.set(s, /* @__PURE__ */ new Map());
3
- const n = f.get(s);
4
- if (n.has(a))
5
- return n.get(a);
6
- const i = a.split("/").slice(1);
7
- let t = s;
8
- for (const l of i)
9
- (!t || typeof t != "object") && (t = null), t = t[l] ?? null;
10
- return n.set(a, t), t;
11
- }, p = "$[Circular Reference]", c = /* @__PURE__ */ new Map(), y = (s) => s !== null && typeof s == "object", v = async (s, a = []) => {
12
- if (c.has(s))
13
- return c.get(s);
14
- const n = structuredClone(s), i = /* @__PURE__ */ new Set(), t = async (e, g) => {
15
- if (y(e)) {
16
- if (i.has(e))
17
- return p;
18
- if (i.add(e), Array.isArray(e))
19
- for (let o = 0; o < e.length; o++)
20
- e[o] = await t(e[o]);
21
- else {
22
- if ("$ref" in e && typeof e.$ref == "string") {
23
- for (const d of a) {
24
- const r = await d(e.$ref);
25
- if (r) return await t(r);
26
- }
27
- const o = await w(n, e.$ref);
28
- return await t(o);
29
- }
30
- for (const o in e)
31
- e[o] = await t(e[o]);
32
- }
33
- i.delete(e);
34
- }
35
- return e;
36
- }, l = await t(n);
37
- return c.set(s, l), l;
38
- };
39
- export {
40
- p as C,
41
- v as d
42
- };
43
- //# sourceMappingURL=index-TaRXY2w1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-TaRXY2w1.js","sources":["../src/lib/oas/parser/dereference/resolveRef.ts","../src/lib/oas/parser/dereference/index.ts"],"sourcesContent":["import type { JSONSchema } from \"./index.js\";\n\nconst cache = new Map<JSONSchema, Map<string, unknown>>();\n\n/**\n * Resolves a $ref pointer in a schema and returns the referenced value.\n */\nexport const resolveLocalRef = (schema: JSONSchema, ref: string): unknown => {\n if (!cache.has(schema)) {\n cache.set(schema, new Map<string, unknown>());\n }\n const schemaCache = cache.get(schema);\n\n if (schemaCache!.has(ref)) {\n return schemaCache!.get(ref);\n }\n\n const path = ref.split(\"/\").slice(1);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let current: any = schema;\n for (const segment of path) {\n if (!current || typeof current !== \"object\") {\n // we've reached a dead end\n current = null;\n }\n current = current[segment] ?? null;\n }\n\n schemaCache!.set(ref, current);\n return current;\n};\n","import type { JSONSchema4, JSONSchema6 } from \"json-schema\";\nimport { resolveLocalRef } from \"./resolveRef.js\";\n\nexport type JSONSchema = JSONSchema4 | JSONSchema6;\n\nexport const CIRCULAR_REF = \"$[Circular Reference]\";\n\ntype CustomResolver = (ref: string) => Promise<JSONSchema | undefined>;\n\nconst cache = new Map<JSONSchema, JSONSchema>();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isIndexableObject = (obj: any): obj is Record<string, any> =>\n obj !== null && typeof obj === \"object\";\n\n// Taken and inspired from `dereference-json-schema` package.\nexport const dereference = async (\n schema: JSONSchema,\n resolvers: CustomResolver[] = [],\n) => {\n if (cache.has(schema)) {\n return cache.get(schema)!;\n }\n\n const cloned = structuredClone(schema);\n const visited = new Set<unknown>();\n\n const resolve = async (current: unknown, path: string) => {\n if (isIndexableObject(current)) {\n if (visited.has(current)) {\n return CIRCULAR_REF;\n }\n\n visited.add(current);\n\n if (Array.isArray(current)) {\n for (let index = 0; index < current.length; index++) {\n current[index] = await resolve(current[index], `${path}/${index}`);\n }\n } else {\n if (\"$ref\" in current && typeof current.$ref === \"string\") {\n for (const resolver of resolvers) {\n const resolved = await resolver(current.$ref);\n if (resolved) return await resolve(resolved, path);\n }\n const resolved = await resolveLocalRef(cloned, current.$ref);\n return await resolve(resolved, path);\n }\n\n for (const key in current) {\n current[key] = await resolve(current[key], `${path}/${key}`);\n }\n }\n\n visited.delete(current);\n }\n\n return current;\n };\n\n const result = (await resolve(cloned, \"#\")) as JSONSchema;\n cache.set(schema, result);\n return result;\n};\n"],"names":["cache","resolveLocalRef","schema","ref","schemaCache","path","current","segment","CIRCULAR_REF","isIndexableObject","obj","dereference","resolvers","cloned","visited","resolve","index","resolver","resolved","key","result"],"mappings":"AAEA,MAAMA,wBAAY,IAAsC,GAK3CC,IAAkB,CAACC,GAAoBC,MAAyB;AAC3E,EAAKH,EAAM,IAAIE,CAAM,KACnBF,EAAM,IAAIE,GAAY,oBAAA,IAAA,CAAsB;AAExC,QAAAE,IAAcJ,EAAM,IAAIE,CAAM;AAEhC,MAAAE,EAAa,IAAID,CAAG;AACf,WAAAC,EAAa,IAAID,CAAG;AAG7B,QAAME,IAAOF,EAAI,MAAM,GAAG,EAAE,MAAM,CAAC;AAGnC,MAAIG,IAAeJ;AACnB,aAAWK,KAAWF;AACpB,KAAI,CAACC,KAAW,OAAOA,KAAY,cAEvBA,IAAA,OAEFA,IAAAA,EAAQC,CAAO,KAAK;AAGnB,SAAAH,EAAA,IAAID,GAAKG,CAAO,GACtBA;AACT,GC1BaE,IAAe,yBAItBR,wBAAY,IAA4B,GAGxCS,IAAoB,CAACC,MACzBA,MAAQ,QAAQ,OAAOA,KAAQ,UAGpBC,IAAc,OACzBT,GACAU,IAA8B,OAC3B;AACC,MAAAZ,EAAM,IAAIE,CAAM;AACX,WAAAF,EAAM,IAAIE,CAAM;AAGnB,QAAAW,IAAS,gBAAgBX,CAAM,GAC/BY,wBAAc,IAAa,GAE3BC,IAAU,OAAOT,GAAkBD,MAAiB;AACpD,QAAAI,EAAkBH,CAAO,GAAG;AAC1B,UAAAQ,EAAQ,IAAIR,CAAO;AACd,eAAAE;AAKL,UAFJM,EAAQ,IAAIR,CAAO,GAEf,MAAM,QAAQA,CAAO;AACvB,iBAASU,IAAQ,GAAGA,IAAQV,EAAQ,QAAQU;AAClC,UAAAV,EAAAU,CAAK,IAAI,MAAMD,EAAQT,EAAQU,CAAK,CAAqB;AAAA,WAE9D;AACL,YAAI,UAAUV,KAAW,OAAOA,EAAQ,QAAS,UAAU;AACzD,qBAAWW,KAAYL,GAAW;AAChC,kBAAMM,IAAW,MAAMD,EAASX,EAAQ,IAAI;AAC5C,gBAAIY,EAAU,QAAO,MAAMH,EAAQG,CAAc;AAAA,UAAA;AAEnD,gBAAMA,IAAW,MAAMjB,EAAgBY,GAAQP,EAAQ,IAAI;AACpD,iBAAA,MAAMS,EAAQG,CAAc;AAAA,QAAA;AAGrC,mBAAWC,KAAOb;AACR,UAAAA,EAAAa,CAAG,IAAI,MAAMJ,EAAQT,EAAQa,CAAG,CAAmB;AAAA,MAC7D;AAGF,MAAAL,EAAQ,OAAOR,CAAO;AAAA,IAAA;AAGjB,WAAAA;AAAA,EACT,GAEMc,IAAU,MAAML,EAAQF,CAAW;AACnC,SAAAb,EAAA,IAAIE,GAAQkB,CAAM,GACjBA;AACT;"}