zudoku 0.0.0-fix-firebase-export.2e421fda → 0.0.0-fix-circular-ref-false-positives.zbe02c6a6

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 (380) hide show
  1. package/dist/app/main.d.ts +6 -6
  2. package/dist/cli/common/version-check.js +12 -3
  3. package/dist/cli/common/version-check.js.map +1 -1
  4. package/dist/config/loader.js +3 -1
  5. package/dist/config/loader.js.map +1 -1
  6. package/dist/config/validators/InputNavigationSchema.d.ts +77 -75
  7. package/dist/config/validators/InputNavigationSchema.js +1 -0
  8. package/dist/config/validators/InputNavigationSchema.js.map +1 -1
  9. package/dist/config/validators/NavigationSchema.js +6 -1
  10. package/dist/config/validators/NavigationSchema.js.map +1 -1
  11. package/dist/config/validators/validate.d.ts +59 -14
  12. package/dist/config/validators/validate.js +7 -5
  13. package/dist/config/validators/validate.js.map +1 -1
  14. package/dist/flat-config.d.ts +29 -27
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.js +2 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/lib/auth/issuer.js +1 -1
  19. package/dist/lib/auth/issuer.js.map +1 -1
  20. package/dist/lib/authentication/authentication.d.ts +3 -2
  21. package/dist/lib/authentication/components/CallbackHandler.js +1 -1
  22. package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
  23. package/dist/lib/authentication/components/SignIn.js +4 -2
  24. package/dist/lib/authentication/components/SignIn.js.map +1 -1
  25. package/dist/lib/authentication/components/SignUp.js +4 -2
  26. package/dist/lib/authentication/components/SignUp.js.map +1 -1
  27. package/dist/lib/authentication/hook.d.ts +2 -0
  28. package/dist/lib/authentication/hook.js +10 -0
  29. package/dist/lib/authentication/hook.js.map +1 -1
  30. package/dist/lib/authentication/providers/auth0.js +11 -7
  31. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  32. package/dist/lib/authentication/providers/clerk.js +0 -22
  33. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  34. package/dist/lib/authentication/providers/firebase.js +67 -9
  35. package/dist/lib/authentication/providers/firebase.js.map +1 -1
  36. package/dist/lib/authentication/providers/supabase.js +6 -15
  37. package/dist/lib/authentication/providers/supabase.js.map +1 -1
  38. package/dist/lib/authentication/ui/EmailVerificationUi.d.ts +4 -0
  39. package/dist/lib/authentication/ui/EmailVerificationUi.js +34 -0
  40. package/dist/lib/authentication/ui/EmailVerificationUi.js.map +1 -0
  41. package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +7 -2
  42. package/dist/lib/authentication/ui/ZudokuAuthUi.js +48 -12
  43. package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -1
  44. package/dist/lib/authentication/utils/relativeRedirectUrl.d.ts +1 -0
  45. package/dist/lib/authentication/utils/relativeRedirectUrl.js +8 -0
  46. package/dist/lib/authentication/utils/relativeRedirectUrl.js.map +1 -0
  47. package/dist/lib/components/Pagination.js +2 -2
  48. package/dist/lib/components/Pagination.js.map +1 -1
  49. package/dist/lib/components/index.d.ts +5 -0
  50. package/dist/lib/components/index.js +4 -0
  51. package/dist/lib/components/index.js.map +1 -1
  52. package/dist/lib/components/navigation/NavigationItem.js +2 -2
  53. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  54. package/dist/lib/core/RouteGuard.js +12 -7
  55. package/dist/lib/core/RouteGuard.js.map +1 -1
  56. package/dist/lib/core/plugins.d.ts +11 -1
  57. package/dist/lib/core/plugins.js +1 -0
  58. package/dist/lib/core/plugins.js.map +1 -1
  59. package/dist/lib/core/react-query.d.ts +1 -0
  60. package/dist/lib/core/react-query.js +2 -0
  61. package/dist/lib/core/react-query.js.map +1 -0
  62. package/dist/lib/core/transform-config.d.ts +2 -0
  63. package/dist/lib/core/transform-config.js +22 -0
  64. package/dist/lib/core/transform-config.js.map +1 -0
  65. package/dist/lib/errors/ErrorMessage.d.ts +3 -0
  66. package/dist/lib/errors/ErrorMessage.js +16 -0
  67. package/dist/lib/errors/ErrorMessage.js.map +1 -0
  68. package/dist/lib/hooks/index.d.ts +2 -0
  69. package/dist/lib/oas/graphql/circular.d.ts +2 -0
  70. package/dist/lib/oas/graphql/circular.js +21 -16
  71. package/dist/lib/oas/graphql/circular.js.map +1 -1
  72. package/dist/lib/oas/graphql/circular.test.d.ts +1 -0
  73. package/dist/lib/oas/graphql/circular.test.js +183 -0
  74. package/dist/lib/oas/graphql/circular.test.js.map +1 -0
  75. package/dist/lib/oas/graphql/index.js +7 -3
  76. package/dist/lib/oas/graphql/index.js.map +1 -1
  77. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +9 -172
  78. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  79. package/dist/lib/plugins/api-keys/index.d.ts +11 -4
  80. package/dist/lib/plugins/api-keys/index.js +36 -22
  81. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  82. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.d.ts +12 -0
  83. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js +133 -0
  84. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js.map +1 -0
  85. package/dist/lib/plugins/api-keys/settings/ApiKeyList.d.ts +4 -0
  86. package/dist/lib/plugins/api-keys/settings/ApiKeyList.js +33 -0
  87. package/dist/lib/plugins/api-keys/settings/ApiKeyList.js.map +1 -0
  88. package/dist/lib/plugins/api-keys/settings/RevealApiKey.d.ts +6 -0
  89. package/dist/lib/plugins/api-keys/settings/RevealApiKey.js +39 -0
  90. package/dist/lib/plugins/api-keys/settings/RevealApiKey.js.map +1 -0
  91. package/dist/lib/plugins/openapi/OasProvider.js +6 -2
  92. package/dist/lib/plugins/openapi/OasProvider.js.map +1 -1
  93. package/dist/lib/plugins/openapi/OperationList.js +4 -4
  94. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  95. package/dist/lib/plugins/openapi/ParamInfos.js +1 -0
  96. package/dist/lib/plugins/openapi/ParamInfos.js.map +1 -1
  97. package/dist/lib/plugins/openapi/Sidecar.js +3 -2
  98. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  99. package/dist/lib/plugins/openapi/interfaces.d.ts +3 -0
  100. package/dist/lib/plugins/openapi/schema/SchemaView.js +1 -1
  101. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  102. package/dist/lib/plugins/openapi/schema/utils.js +11 -3
  103. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
  104. package/dist/lib/plugins/openapi/util/createHttpSnippet.js +24 -1
  105. package/dist/lib/plugins/openapi/util/createHttpSnippet.js.map +1 -1
  106. package/dist/lib/plugins/openapi/util/getRoutes.d.ts +3 -0
  107. package/dist/lib/plugins/openapi/util/getRoutes.js +2 -1
  108. package/dist/lib/plugins/openapi/util/getRoutes.js.map +1 -1
  109. package/dist/lib/ui/Button.js +1 -1
  110. package/dist/lib/ui/Button.js.map +1 -1
  111. package/dist/lib/ui/Command.d.ts +3 -3
  112. package/dist/lib/util/invariant.d.ts +1 -1
  113. package/dist/lib/util/invariant.js +2 -2
  114. package/dist/lib/util/invariant.js.map +1 -1
  115. package/dist/vite/api/SchemaManager.d.ts +12 -1
  116. package/dist/vite/api/SchemaManager.js +31 -14
  117. package/dist/vite/api/SchemaManager.js.map +1 -1
  118. package/dist/vite/api/SchemaManager.test.js +44 -0
  119. package/dist/vite/api/SchemaManager.test.js.map +1 -1
  120. package/dist/vite/config.js +10 -4
  121. package/dist/vite/config.js.map +1 -1
  122. package/dist/vite/error-handler.js +1 -5
  123. package/dist/vite/error-handler.js.map +1 -1
  124. package/dist/vite/mdx/remark-link-rewrite.js +1 -1
  125. package/dist/vite/plugin-api-keys.js +5 -1
  126. package/dist/vite/plugin-api-keys.js.map +1 -1
  127. package/dist/vite/plugin-api.js +5 -3
  128. package/dist/vite/plugin-api.js.map +1 -1
  129. package/dist/vite/plugin-markdown-export.js +1 -1
  130. package/dist/vite/plugin-markdown-export.js.map +1 -1
  131. package/dist/vite/prerender/utils.js +9 -3
  132. package/dist/vite/prerender/utils.js.map +1 -1
  133. package/dist/vite/prerender/worker.js +3 -0
  134. package/dist/vite/prerender/worker.js.map +1 -1
  135. package/dist/vite/zuplo.d.ts +13 -0
  136. package/dist/vite/zuplo.js +15 -0
  137. package/dist/vite/zuplo.js.map +1 -0
  138. package/lib/{ActionButton-DUgvSylL.js → ActionButton-B0CXL1Lq.js} +3 -3
  139. package/lib/{ActionButton-DUgvSylL.js.map → ActionButton-B0CXL1Lq.js.map} +1 -1
  140. package/lib/{Button-CynVW1JV.js → Button-GUVe7pmt.js} +8 -7
  141. package/lib/{Button-CynVW1JV.js.map → Button-GUVe7pmt.js.map} +1 -1
  142. package/lib/{Card-KFniaZn5.js → Card-DCdq37aA.js} +2 -2
  143. package/lib/{Card-KFniaZn5.js.map → Card-DCdq37aA.js.map} +1 -1
  144. package/lib/{ClaudeLogo-B4Xxt-x_.js → ClaudeLogo-DJ9bU-sO.js} +22 -22
  145. package/lib/ClaudeLogo-DJ9bU-sO.js.map +1 -0
  146. package/lib/{Command-BpT1iBE6.js → Command-N6VujV30.js} +3 -3
  147. package/lib/{Command-BpT1iBE6.js.map → Command-N6VujV30.js.map} +1 -1
  148. package/lib/{Dialog-BQciPiHN.js → Dialog-hlvmmQ_c.js} +2 -2
  149. package/lib/{Dialog-BQciPiHN.js.map → Dialog-hlvmmQ_c.js.map} +1 -1
  150. package/lib/{Drawer-Ci7XwhqT.js → Drawer-Ch7927PF.js} +7 -7
  151. package/lib/{Drawer-Ci7XwhqT.js.map → Drawer-Ch7927PF.js.map} +1 -1
  152. package/lib/{DropdownMenu-C8SX_-S_.js → DropdownMenu-DN0jNrjj.js} +2 -2
  153. package/lib/{DropdownMenu-C8SX_-S_.js.map → DropdownMenu-DN0jNrjj.js.map} +1 -1
  154. package/lib/Frame-DKlOmSkU.js +205 -0
  155. package/lib/Frame-DKlOmSkU.js.map +1 -0
  156. package/lib/HydrationBoundary-CNF2ZV3E.js +601 -0
  157. package/lib/HydrationBoundary-CNF2ZV3E.js.map +1 -0
  158. package/lib/{IndexingDialog-B5zCiUKr.js → IndexingDialog-D0YdGfbn.js} +3 -3
  159. package/lib/{IndexingDialog-B5zCiUKr.js.map → IndexingDialog-D0YdGfbn.js.map} +1 -1
  160. package/lib/Input-Cx-GeKoF.js +22 -0
  161. package/lib/Input-Cx-GeKoF.js.map +1 -0
  162. package/lib/{MdxPage-BagO2c-n.js → MdxPage-stpAoBtx.js} +11 -11
  163. package/lib/{MdxPage-BagO2c-n.js.map → MdxPage-stpAoBtx.js.map} +1 -1
  164. package/lib/{Mermaid-D_VSX7_Q.js → Mermaid-Koc3z8mU.js} +4 -4
  165. package/lib/{Mermaid-D_VSX7_Q.js.map → Mermaid-Koc3z8mU.js.map} +1 -1
  166. package/lib/{OAuthErrorPage-Fq54RLgt.js → OAuthErrorPage-DJ811Bn_.js} +15 -15
  167. package/lib/OAuthErrorPage-DJ811Bn_.js.map +1 -0
  168. package/lib/OasProvider-B2KxIBsI.js +48 -0
  169. package/lib/OasProvider-B2KxIBsI.js.map +1 -0
  170. package/lib/{OperationList-C0jiEaG5.js → OperationList-C2tAfThO.js} +1558 -1543
  171. package/lib/{OperationList-C0jiEaG5.js.map → OperationList-C2tAfThO.js.map} +1 -1
  172. package/lib/RouteGuard--A04ESy8.js +77 -0
  173. package/lib/RouteGuard--A04ESy8.js.map +1 -0
  174. package/lib/{SchemaList-BU0zCHn9.js → SchemaList-Ep8DleP_.js} +9 -9
  175. package/lib/{SchemaList-BU0zCHn9.js.map → SchemaList-Ep8DleP_.js.map} +1 -1
  176. package/lib/SchemaView-BpaEKRYx.js +438 -0
  177. package/lib/SchemaView-BpaEKRYx.js.map +1 -0
  178. package/lib/{Select-CkxXP5I7.js → Secret-BDBqq4p3.js} +122 -122
  179. package/lib/Secret-BDBqq4p3.js.map +1 -0
  180. package/lib/{Separator-CTPSeW1S.js → Separator-BXt1LYnm.js} +2 -2
  181. package/lib/{Separator-CTPSeW1S.js.map → Separator-BXt1LYnm.js.map} +1 -1
  182. package/lib/SignUp-DCBViNUi.js +50 -0
  183. package/lib/SignUp-DCBViNUi.js.map +1 -0
  184. package/lib/{SyntaxHighlight-Kdyskw3C.js → SyntaxHighlight-Dshjn3Zf.js} +1749 -1723
  185. package/lib/SyntaxHighlight-Dshjn3Zf.js.map +1 -0
  186. package/lib/{Toc-DJxFPfcS.js → Toc-Cgz6CPiE.js} +3 -3
  187. package/lib/{Toc-DJxFPfcS.js.map → Toc-Cgz6CPiE.js.map} +1 -1
  188. package/lib/ZudokuContext-BZB1TWdT.js +387 -0
  189. package/lib/ZudokuContext-BZB1TWdT.js.map +1 -0
  190. package/lib/{___vite-browser-external_commonjs-proxy-Cga3HsWk.js → ___vite-browser-external_commonjs-proxy-BttVsNON.js} +2 -2
  191. package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js.map +1 -0
  192. package/lib/chunk-EPOLDU6W-C6C8jAwd.js +8558 -0
  193. package/lib/chunk-EPOLDU6W-C6C8jAwd.js.map +1 -0
  194. package/lib/{circular-CzWF1hj5.js → circular-CG3e0_Uz.js} +1689 -1686
  195. package/lib/{circular-CzWF1hj5.js.map → circular-CG3e0_Uz.js.map} +1 -1
  196. package/lib/{cn-dYga0KKN.js → cn-5-Gd1Dss.js} +531 -498
  197. package/lib/cn-5-Gd1Dss.js.map +1 -0
  198. package/lib/{createServer-BIr2_tGn.js → createServer-CNeRqj98.js} +12 -12
  199. package/lib/{createServer-BIr2_tGn.js.map → createServer-CNeRqj98.js.map} +1 -1
  200. package/lib/createVariantComponent-Dc0vtOvr.js +18 -0
  201. package/lib/createVariantComponent-Dc0vtOvr.js.map +1 -0
  202. package/lib/{errors-Bs4duWDy.js → errors-b9I-fAOY.js} +3 -3
  203. package/lib/{errors-Bs4duWDy.js.map → errors-b9I-fAOY.js.map} +1 -1
  204. package/lib/{firebase-Cax7HPzn.js → firebase-BCXX7Qv5.js} +1579 -1325
  205. package/lib/firebase-BCXX7Qv5.js.map +1 -0
  206. package/lib/hook-BGlHBdET.js +52 -0
  207. package/lib/hook-BGlHBdET.js.map +1 -0
  208. package/lib/{ErrorAlert-DrOR8w3f.js → index-CL8eDnQW.js} +5473 -4433
  209. package/lib/index-CL8eDnQW.js.map +1 -0
  210. package/lib/index-CrcNWbel.js.map +1 -1
  211. package/lib/{index-Css56y3F.js → index-DBjOT2H1.js} +4 -4
  212. package/lib/{index-Css56y3F.js.map → index-DBjOT2H1.js.map} +1 -1
  213. package/lib/{index-0oT9beQN.js → index-I3kmZ7tG.js} +152 -148
  214. package/lib/{index-0oT9beQN.js.map → index-I3kmZ7tG.js.map} +1 -1
  215. package/lib/{index-Bh-MffiL.js → index-UOLtazB8.js} +2 -2
  216. package/lib/{index-Bh-MffiL.js.map → index-UOLtazB8.js.map} +1 -1
  217. package/lib/index.esm-BYObtETB.js.map +1 -1
  218. package/lib/{index.esm-DtzT_KoE.js → index.esm-B_0dvNjB.js} +2 -2
  219. package/lib/{index.esm-DtzT_KoE.js.map → index.esm-B_0dvNjB.js.map} +1 -1
  220. package/lib/{index.esm-DDENMN4y.js → index.esm-C5CBsVzN.js} +16 -14
  221. package/lib/index.esm-C5CBsVzN.js.map +1 -0
  222. package/lib/{invariant-CGOLuIIz.js → invariant-BJAl77rw.js} +4 -4
  223. package/lib/invariant-BJAl77rw.js.map +1 -0
  224. package/lib/jsx-runtime-BzflLqGi.js.map +1 -1
  225. package/lib/{mutation-BoVlx8yA.js → mutation-BISOc7OM.js} +70 -44
  226. package/lib/mutation-BISOc7OM.js.map +1 -0
  227. package/lib/ui/Accordion.js +1 -1
  228. package/lib/ui/ActionButton.js +2 -2
  229. package/lib/ui/Alert.js +1 -1
  230. package/lib/ui/AlertDialog.js +1 -1
  231. package/lib/ui/Badge.js +1 -1
  232. package/lib/ui/Breadcrumb.js +1 -1
  233. package/lib/ui/Button.js +7 -6
  234. package/lib/ui/Button.js.map +1 -1
  235. package/lib/ui/ButtonGroup.js +1 -1
  236. package/lib/ui/Callout.js +1 -1
  237. package/lib/ui/Card.js +1 -1
  238. package/lib/ui/Carousel.js +1 -1
  239. package/lib/ui/Carousel.js.map +1 -1
  240. package/lib/ui/Checkbox.js +1 -1
  241. package/lib/ui/CodeBlock.js +1 -1
  242. package/lib/ui/Command.js +2 -2
  243. package/lib/ui/Dialog.js +1 -1
  244. package/lib/ui/Drawer.js +3 -3
  245. package/lib/ui/DropdownMenu.js +1 -1
  246. package/lib/ui/EmbeddedCodeBlock.js +1 -1
  247. package/lib/ui/Form.js +1 -1
  248. package/lib/ui/Frame.js +1 -1
  249. package/lib/ui/HoverCard.js +1 -1
  250. package/lib/ui/Input.js +1 -1
  251. package/lib/ui/Item.js +1 -1
  252. package/lib/ui/Label.js +1 -1
  253. package/lib/ui/NativeSelect.js +1 -1
  254. package/lib/ui/Pagination.js +1 -1
  255. package/lib/ui/Popover.js +1 -1
  256. package/lib/ui/Progress.js +1 -1
  257. package/lib/ui/RadioGroup.js +1 -1
  258. package/lib/ui/ScrollArea.js +1 -1
  259. package/lib/ui/Secret.js +1 -1
  260. package/lib/ui/Separator.js +1 -1
  261. package/lib/ui/Skeleton.js +1 -1
  262. package/lib/ui/Slider.js +1 -1
  263. package/lib/ui/Switch.js +1 -1
  264. package/lib/ui/SyntaxHighlight.js +3 -3
  265. package/lib/ui/Tabs.js +1 -1
  266. package/lib/ui/Textarea.js +1 -1
  267. package/lib/ui/Toggle.js +1 -1
  268. package/lib/ui/ToggleGroup.js +1 -1
  269. package/lib/ui/Value.js +1 -1
  270. package/lib/ui/util.js +1 -1
  271. package/lib/{useMutation-C6RqWmTS.js → useMutation-CFMGlAMW.js} +39 -17
  272. package/lib/useMutation-CFMGlAMW.js.map +1 -0
  273. package/lib/useSuspenseQuery-CSB_rVek.js +1226 -0
  274. package/lib/useSuspenseQuery-CSB_rVek.js.map +1 -0
  275. package/lib/zudoku.__internal.js +826 -1325
  276. package/lib/zudoku.__internal.js.map +1 -1
  277. package/lib/zudoku.auth-auth0.js +16 -16
  278. package/lib/zudoku.auth-auth0.js.map +1 -1
  279. package/lib/zudoku.auth-azureb2c.js +4 -4
  280. package/lib/zudoku.auth-clerk.js +52 -75
  281. package/lib/zudoku.auth-clerk.js.map +1 -1
  282. package/lib/zudoku.auth-firebase.js +6 -5
  283. package/lib/zudoku.auth-firebase.js.map +1 -1
  284. package/lib/zudoku.auth-openid.js +5 -5
  285. package/lib/zudoku.auth-supabase.js +31 -40
  286. package/lib/zudoku.auth-supabase.js.map +1 -1
  287. package/lib/zudoku.components.js +23 -21
  288. package/lib/zudoku.hooks.js +3 -3
  289. package/lib/zudoku.mermaid.js +3 -3
  290. package/lib/zudoku.plugin-api-catalog.js +8 -8
  291. package/lib/zudoku.plugin-api-keys.js +607 -552
  292. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  293. package/lib/zudoku.plugin-custom-pages.js +1 -1
  294. package/lib/zudoku.plugin-markdown.js +1 -1
  295. package/lib/zudoku.plugin-openapi.js +3 -3
  296. package/lib/zudoku.plugin-redirect.js +1 -1
  297. package/lib/zudoku.plugin-search-pagefind.js +30 -29
  298. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  299. package/lib/zudoku.plugins.js +9 -8
  300. package/lib/zudoku.plugins.js.map +1 -1
  301. package/lib/zudoku.react-query.js +440 -0
  302. package/lib/zudoku.react-query.js.map +1 -0
  303. package/lib/zudoku.router.js +1130 -1404
  304. package/lib/zudoku.router.js.map +1 -1
  305. package/package.json +28 -21
  306. package/src/lib/auth/issuer.ts +1 -1
  307. package/src/lib/authentication/authentication.ts +8 -2
  308. package/src/lib/authentication/components/CallbackHandler.tsx +1 -1
  309. package/src/lib/authentication/components/SignIn.tsx +5 -2
  310. package/src/lib/authentication/components/SignUp.tsx +5 -2
  311. package/src/lib/authentication/hook.ts +16 -0
  312. package/src/lib/authentication/providers/auth0.tsx +15 -9
  313. package/src/lib/authentication/providers/clerk.tsx +0 -26
  314. package/src/lib/authentication/providers/firebase.tsx +98 -6
  315. package/src/lib/authentication/providers/supabase.tsx +6 -15
  316. package/src/lib/authentication/ui/EmailVerificationUi.tsx +129 -0
  317. package/src/lib/authentication/ui/ZudokuAuthUi.tsx +181 -39
  318. package/src/lib/authentication/utils/relativeRedirectUrl.ts +12 -0
  319. package/src/lib/components/Pagination.tsx +4 -5
  320. package/src/lib/components/index.ts +4 -0
  321. package/src/lib/components/navigation/NavigationItem.tsx +9 -3
  322. package/src/lib/core/RouteGuard.tsx +30 -24
  323. package/src/lib/core/plugins.ts +21 -1
  324. package/src/lib/core/react-query.ts +1 -0
  325. package/src/lib/core/transform-config.ts +29 -0
  326. package/src/lib/errors/ErrorMessage.tsx +38 -0
  327. package/src/lib/oas/graphql/circular.test.ts +221 -0
  328. package/src/lib/oas/graphql/circular.ts +31 -18
  329. package/src/lib/oas/graphql/index.ts +7 -3
  330. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +36 -476
  331. package/src/lib/plugins/api-keys/index.tsx +76 -32
  332. package/src/lib/plugins/api-keys/settings/ApiKeyItem.tsx +342 -0
  333. package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -0
  334. package/src/lib/plugins/api-keys/settings/RevealApiKey.tsx +124 -0
  335. package/src/lib/plugins/openapi/OasProvider.tsx +10 -2
  336. package/src/lib/plugins/openapi/OperationList.tsx +4 -4
  337. package/src/lib/plugins/openapi/ParamInfos.tsx +1 -0
  338. package/src/lib/plugins/openapi/Sidecar.tsx +3 -2
  339. package/src/lib/plugins/openapi/interfaces.ts +6 -1
  340. package/src/lib/plugins/openapi/schema/SchemaView.tsx +6 -4
  341. package/src/lib/plugins/openapi/schema/utils.ts +15 -4
  342. package/src/lib/plugins/openapi/util/createHttpSnippet.ts +29 -1
  343. package/src/lib/plugins/openapi/util/getRoutes.tsx +4 -1
  344. package/src/lib/ui/Button.tsx +1 -0
  345. package/src/lib/util/invariant.ts +2 -1
  346. package/src/shiki/langs/c3.js +1 -0
  347. package/src/shiki/langs/gn.js +1 -0
  348. package/src/shiki/langs/moonbit.js +1 -0
  349. package/lib/ClaudeLogo-B4Xxt-x_.js.map +0 -1
  350. package/lib/ErrorAlert-DrOR8w3f.js.map +0 -1
  351. package/lib/OAuthErrorPage-Fq54RLgt.js.map +0 -1
  352. package/lib/OasProvider-DPH8mwDa.js +0 -40
  353. package/lib/OasProvider-DPH8mwDa.js.map +0 -1
  354. package/lib/RouteGuard-9wjejsKm.js +0 -77
  355. package/lib/RouteGuard-9wjejsKm.js.map +0 -1
  356. package/lib/RouterError-DSLXagd5.js +0 -42
  357. package/lib/RouterError-DSLXagd5.js.map +0 -1
  358. package/lib/SchemaView-DVae4RO2.js +0 -597
  359. package/lib/SchemaView-DVae4RO2.js.map +0 -1
  360. package/lib/Select-CkxXP5I7.js.map +0 -1
  361. package/lib/SignUp-BjS4ozA7.js +0 -50
  362. package/lib/SignUp-BjS4ozA7.js.map +0 -1
  363. package/lib/SyntaxHighlight-Kdyskw3C.js.map +0 -1
  364. package/lib/ZudokuContext-BXldanA8.js +0 -1508
  365. package/lib/ZudokuContext-BXldanA8.js.map +0 -1
  366. package/lib/___vite-browser-external_commonjs-proxy-Cga3HsWk.js.map +0 -1
  367. package/lib/chunk-PVWAREVJ-dLIqswPy.js +0 -7965
  368. package/lib/chunk-PVWAREVJ-dLIqswPy.js.map +0 -1
  369. package/lib/cn-dYga0KKN.js.map +0 -1
  370. package/lib/createVariantComponent-B9_dVBvu.js +0 -35
  371. package/lib/createVariantComponent-B9_dVBvu.js.map +0 -1
  372. package/lib/firebase-Cax7HPzn.js.map +0 -1
  373. package/lib/hook-BNxidGQq.js +0 -40
  374. package/lib/hook-BNxidGQq.js.map +0 -1
  375. package/lib/index-CCmMJp02.js +0 -1059
  376. package/lib/index-CCmMJp02.js.map +0 -1
  377. package/lib/index.esm-DDENMN4y.js.map +0 -1
  378. package/lib/invariant-CGOLuIIz.js.map +0 -1
  379. package/lib/mutation-BoVlx8yA.js.map +0 -1
  380. package/lib/useMutation-C6RqWmTS.js.map +0 -1
@@ -0,0 +1,77 @@
1
+ import { j as t } from "./jsx-runtime-BzflLqGi.js";
2
+ import { H as f } from "./index.esm-B_0dvNjB.js";
3
+ import { createContext as x, use as g } from "react";
4
+ import { u as j, a as v, m as C, O as h } from "./chunk-EPOLDU6W-C6C8jAwd.js";
5
+ import { B as a } from "./Button-GUVe7pmt.js";
6
+ import { D as R, a as D, b as w, c as E, d as T, e as b } from "./Dialog-hlvmmQ_c.js";
7
+ import { u as k } from "./hook-BGlHBdET.js";
8
+ import { a as y } from "./ZudokuContext-BZB1TWdT.js";
9
+ import { Z as P } from "./invariant-BJAl77rw.js";
10
+ import { u as O } from "./useLatest-hmRS46UF.js";
11
+ const A = x(!1), B = "protected", U = () => {
12
+ const n = k(), e = y(), o = j(), r = v(), c = O(r.pathname), m = g(A), { protectedRoutes: u } = e.options, d = u ? Object.entries(u).find(
13
+ ([s]) => C({ path: s, end: !0 }, r.pathname)
14
+ ) : void 0, i = d !== void 0;
15
+ if (m)
16
+ return /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
17
+ i && /* @__PURE__ */ t.jsx(f, { children: /* @__PURE__ */ t.jsx(
18
+ "meta",
19
+ {
20
+ name: "pagefind",
21
+ "data-pagefind-filter": `section:${B}`,
22
+ content: "true"
23
+ }
24
+ ) }),
25
+ /* @__PURE__ */ t.jsx(h, {})
26
+ ] });
27
+ if (i && !n.isAuthEnabled)
28
+ throw new P("Authentication is not enabled", {
29
+ title: "Authentication is not enabled",
30
+ developerHint: "To use protectedRoutes you need authentication to be enabled"
31
+ });
32
+ const p = d?.[1], l = i && !p?.({ auth: n, context: e });
33
+ return l && n.isPending && typeof window < "u" ? null : l ? /* @__PURE__ */ t.jsx(
34
+ R,
35
+ {
36
+ open: !0,
37
+ onOpenChange: (s) => {
38
+ s || o(-1);
39
+ },
40
+ children: /* @__PURE__ */ t.jsxs(D, { children: [
41
+ /* @__PURE__ */ t.jsx(w, { children: /* @__PURE__ */ t.jsx(E, { children: "Login to continue" }) }),
42
+ /* @__PURE__ */ t.jsx(T, { children: "Please wait while we log you in." }),
43
+ /* @__PURE__ */ t.jsxs(b, { children: [
44
+ /* @__PURE__ */ t.jsx(a, { variant: "outline", onClick: () => void o(-1), children: "Cancel" }),
45
+ /* @__PURE__ */ t.jsx("div", { className: "w-full" }),
46
+ /* @__PURE__ */ t.jsx(
47
+ a,
48
+ {
49
+ variant: "secondary",
50
+ onClick: () => void e.authentication?.signUp(
51
+ { navigate: o },
52
+ { redirectTo: c.current }
53
+ ),
54
+ children: "Register"
55
+ }
56
+ ),
57
+ /* @__PURE__ */ t.jsx(
58
+ a,
59
+ {
60
+ onClick: () => void e.authentication?.signIn(
61
+ { navigate: o },
62
+ { redirectTo: c.current }
63
+ ),
64
+ children: "Login"
65
+ }
66
+ )
67
+ ] })
68
+ ] })
69
+ }
70
+ ) : /* @__PURE__ */ t.jsx(h, {});
71
+ };
72
+ export {
73
+ A as B,
74
+ U as R,
75
+ B as S
76
+ };
77
+ //# sourceMappingURL=RouteGuard--A04ESy8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteGuard--A04ESy8.js","sources":["../src/lib/components/context/BypassProtectedRoutesContext.ts","../src/lib/core/RouteGuard.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nexport const BypassProtectedRoutesContext = createContext(false);\n","import { Helmet } from \"@zudoku/react-helmet-async\";\nimport { use } from \"react\";\nimport { matchPath, Outlet, useLocation, useNavigate } from \"react-router\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"zudoku/ui/Dialog.js\";\nimport { useAuth } from \"../authentication/hook.js\";\nimport { BypassProtectedRoutesContext } from \"../components/context/BypassProtectedRoutesContext.js\";\nimport { useZudoku } from \"../components/context/ZudokuContext.js\";\nimport { ZudokuError } from \"../util/invariant.js\";\nimport { useLatest } from \"../util/useLatest.js\";\n\nexport const SEARCH_PROTECTED_SECTION = \"protected\";\n\nexport const RouteGuard = () => {\n const auth = useAuth();\n const zudoku = useZudoku();\n const navigate = useNavigate();\n const location = useLocation();\n const latestPath = useLatest(location.pathname);\n const shouldBypass = use(BypassProtectedRoutesContext);\n const { protectedRoutes } = zudoku.options;\n\n const protectedRouteEntry = protectedRoutes\n ? Object.entries(protectedRoutes).find(([path]) =>\n matchPath({ path, end: true }, location.pathname),\n )\n : undefined;\n\n const isProtectedRoute = protectedRouteEntry !== undefined;\n\n // SSR/prerendering mode: render content with search meta tag, skip all auth\n if (shouldBypass) {\n return (\n <>\n {isProtectedRoute && (\n <Helmet>\n <meta\n name=\"pagefind\"\n data-pagefind-filter={`section:${SEARCH_PROTECTED_SECTION}`}\n content=\"true\"\n />\n </Helmet>\n )}\n <Outlet />\n </>\n );\n }\n\n if (isProtectedRoute && !auth.isAuthEnabled) {\n throw new ZudokuError(\"Authentication is not enabled\", {\n title: \"Authentication is not enabled\",\n developerHint:\n \"To use protectedRoutes you need authentication to be enabled\",\n });\n }\n\n const authCheckFn = protectedRouteEntry?.[1];\n const needsToSignIn =\n isProtectedRoute && !authCheckFn?.({ auth, context: zudoku });\n\n if (needsToSignIn && auth.isPending && typeof window !== \"undefined\") {\n return null;\n }\n\n if (needsToSignIn) {\n return (\n <Dialog\n open={true}\n onOpenChange={(open) => {\n if (!open) {\n void navigate(-1);\n }\n }}\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Login to continue</DialogTitle>\n </DialogHeader>\n <DialogDescription>\n Please wait while we log you in.\n </DialogDescription>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => void navigate(-1)}>\n Cancel\n </Button>\n <div className=\"w-full\"></div>\n <Button\n variant=\"secondary\"\n onClick={() =>\n void zudoku.authentication?.signUp(\n { navigate },\n { redirectTo: latestPath.current },\n )\n }\n >\n Register\n </Button>\n <Button\n onClick={() =>\n void zudoku.authentication?.signIn(\n { navigate },\n { redirectTo: latestPath.current },\n )\n }\n >\n Login\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n }\n\n return <Outlet />;\n};\n"],"names":["BypassProtectedRoutesContext","createContext","SEARCH_PROTECTED_SECTION","RouteGuard","auth","useAuth","zudoku","useZudoku","navigate","useNavigate","location","useLocation","latestPath","useLatest","shouldBypass","use","protectedRoutes","protectedRouteEntry","path","matchPath","isProtectedRoute","jsxs","Fragment","Helmet","jsx","Outlet","ZudokuError","authCheckFn","needsToSignIn","Dialog","open","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":";;;;;;;;;;AAEO,MAAMA,IAA+BC,EAAc,EAAK,GCgBlDC,IAA2B,aAE3BC,IAAa,MAAM;AAC9B,QAAMC,IAAOC,EAAA,GACPC,IAASC,EAAA,GACTC,IAAWC,EAAA,GACXC,IAAWC,EAAA,GACXC,IAAaC,EAAUH,EAAS,QAAQ,GACxCI,IAAeC,EAAIf,CAA4B,GAC/C,EAAE,iBAAAgB,MAAoBV,EAAO,SAE7BW,IAAsBD,IACxB,OAAO,QAAQA,CAAe,EAAE;AAAA,IAAK,CAAC,CAACE,CAAI,MACzCC,EAAU,EAAE,MAAAD,GAAM,KAAK,MAAQR,EAAS,QAAQ;AAAA,EAAA,IAElD,QAEEU,IAAmBH,MAAwB;AAGjD,MAAIH;AACF,WACEO,gBAAAA,EAAAA,KAAAC,YAAA,EACG,UAAA;AAAA,MAAAF,2BACEG,GAAA,EACC,UAAAC,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,wBAAsB,WAAWtB,CAAwB;AAAA,UACzD,SAAQ;AAAA,QAAA;AAAA,MAAA,GAEZ;AAAA,4BAEDuB,GAAA,CAAA,CAAO;AAAA,IAAA,GACV;AAIJ,MAAIL,KAAoB,CAAChB,EAAK;AAC5B,UAAM,IAAIsB,EAAY,iCAAiC;AAAA,MACrD,OAAO;AAAA,MACP,eACE;AAAA,IAAA,CACH;AAGH,QAAMC,IAAcV,IAAsB,CAAC,GACrCW,IACJR,KAAoB,CAACO,IAAc,EAAE,MAAAvB,GAAM,SAASE,GAAQ;AAE9D,SAAIsB,KAAiBxB,EAAK,aAAa,OAAO,SAAW,MAChD,OAGLwB,IAEAJ,gBAAAA,EAAAA;AAAAA,IAACK;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,cAAc,CAACC,MAAS;AACtB,QAAKA,KACEtB,EAAS,EAAE;AAAA,MAEpB;AAAA,MAEA,iCAACuB,GAAA,EACC,UAAA;AAAA,QAAAP,gBAAAA,MAACQ,GAAA,EACC,UAAAR,gBAAAA,EAAAA,IAACS,GAAA,EAAY,UAAA,oBAAA,CAAiB,GAChC;AAAA,QACAT,gBAAAA,EAAAA,IAACU,KAAkB,UAAA,mCAAA,CAEnB;AAAA,+BACCC,GAAA,EACC,UAAA;AAAA,UAAAX,gBAAAA,EAAAA,IAACY,GAAA,EAAO,SAAQ,WAAU,SAAS,MAAM,KAAK5B,EAAS,EAAE,GAAG,UAAA,SAAA,CAE5D;AAAA,UACAgB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,SAAA,CAAS;AAAA,UACxBA,gBAAAA,EAAAA;AAAAA,YAACY;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,SAAS,MACP,KAAK9B,EAAO,gBAAgB;AAAA,gBAC1B,EAAE,UAAAE,EAAA;AAAA,gBACF,EAAE,YAAYI,EAAW,QAAA;AAAA,cAAQ;AAAA,cAGtC,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGDY,gBAAAA,EAAAA;AAAAA,YAACY;AAAA,YAAA;AAAA,cACC,SAAS,MACP,KAAK9B,EAAO,gBAAgB;AAAA,gBAC1B,EAAE,UAAAE,EAAA;AAAA,gBACF,EAAE,YAAYI,EAAW,QAAA;AAAA,cAAQ;AAAA,cAGtC,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,0BAKEa,GAAA,EAAO;AACjB;"}
@@ -1,14 +1,14 @@
1
1
  import { j as e } from "./jsx-runtime-BzflLqGi.js";
2
- import { s as o } from "./index-Bh-MffiL.js";
3
- import { e as j } from "./ZudokuContext-BXldanA8.js";
4
- import { H as c } from "./index.esm-DtzT_KoE.js";
2
+ import { s as o } from "./index-UOLtazB8.js";
3
+ import { u as j } from "./useSuspenseQuery-CSB_rVek.js";
4
+ import { H as c } from "./index.esm-B_0dvNjB.js";
5
5
  import { ChevronsUpDownIcon as y, ChevronsDownUpIcon as N, ChevronRightIcon as b } from "lucide-react";
6
- import { B as v } from "./Button-CynVW1JV.js";
7
- import { u as C, a as w, C as m, b as l, c as d, d as S } from "./index-0oT9beQN.js";
6
+ import { B as v } from "./Button-GUVe7pmt.js";
7
+ import { u as C, a as w, C as m, b as l, c as d, d as S } from "./index-I3kmZ7tG.js";
8
8
  import { C as A } from "./CategoryHeading-DhmodDcq.js";
9
- import { H as p, M as H } from "./ErrorAlert-DrOR8w3f.js";
10
- import { T as I } from "./Toc-DJxFPfcS.js";
11
- import { P as z, S as M } from "./SchemaView-DVae4RO2.js";
9
+ import { H as p, M as H } from "./index-CL8eDnQW.js";
10
+ import { T as I } from "./Toc-Cgz6CPiE.js";
11
+ import { P as z, S as M } from "./SchemaView-BpaEKRYx.js";
12
12
  const P = S(
13
13
  /* GraphQL */
14
14
  `
@@ -148,4 +148,4 @@ function R() {
148
148
  export {
149
149
  R as SchemaList
150
150
  };
151
- //# sourceMappingURL=SchemaList-BU0zCHn9.js.map
151
+ //# sourceMappingURL=SchemaList-Ep8DleP_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaList-BU0zCHn9.js","sources":["../src/lib/plugins/openapi/SchemaList.tsx"],"sourcesContent":["import slugify from \"@sindresorhus/slugify\";\nimport { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n ChevronRightIcon,\n ChevronsDownUpIcon,\n ChevronsUpDownIcon,\n} from \"lucide-react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"zudoku/ui/Collapsible.js\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Markdown } from \"../../components/Markdown.js\";\nimport { Toc } from \"../../components/navigation/Toc.js\";\nimport { PagefindSearchMeta } from \"../../components/PagefindSearchMeta.js\";\nimport { useCreateQuery } from \"./client/useCreateQuery.js\";\nimport { useOasConfig } from \"./context.js\";\nimport { graphql } from \"./graphql/gql.js\";\nimport { SchemaView } from \"./schema/SchemaView.js\";\n\nconst GET_SCHEMAS = graphql(/* GraphQL */ `\n query GetSchemas($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n title\n description\n summary\n components {\n schemas {\n name\n schema\n extensions\n }\n }\n }\n }\n`);\n\nexport function SchemaList() {\n const { input, type, versions, version, options } = useOasConfig();\n const schemasQuery = useCreateQuery(GET_SCHEMAS, {\n input,\n type,\n });\n const { data } = useSuspenseQuery(schemasQuery);\n\n const schemas = data.schema.components?.schemas ?? [];\n const hasMultipleVersions = Object.entries(versions).length > 1;\n const showVersions =\n options?.showVersionSelect === \"always\" ||\n (hasMultipleVersions && options?.showVersionSelect !== \"hide\");\n\n if (!schemas.length) {\n return (\n <div>\n <Helmet>\n <title>Schemas {showVersions ? version : \"\"}</title>\n <meta name=\"description\" content=\"List of schemas used by the API.\" />\n </Helmet>\n No schemas found\n </div>\n );\n }\n\n return (\n <div\n className=\"grid grid-cols-(--sidecar-grid-cols) gap-8 justify-between\"\n data-pagefind-filter=\"section:openapi\"\n data-pagefind-meta=\"section:openapi\"\n >\n <PagefindSearchMeta name=\"category\">\n {data.schema.title}\n </PagefindSearchMeta>\n <Helmet>\n <title>Schemas {showVersions ? version : \"\"}</title>\n <meta name=\"description\" content=\"List of schemas used by the API.\" />\n </Helmet>\n <div className=\"pt-(--padding-content-top) pb-(--padding-content-bottom)\">\n <Collapsible className=\"w-full\">\n <div className=\"flex flex-col gap-y-4 sm:flex-row justify-around items-start sm:items-end\">\n <div className=\"flex-1\">\n <CategoryHeading>{data.schema.title}</CategoryHeading>\n <Heading\n level={1}\n id=\"schemas\"\n registerNavigationAnchor\n className=\"mb-0\"\n >\n Schemas\n {showVersions && (\n <span className=\"text-xl text-muted-foreground ms-1.5\">\n ({version})\n </span>\n )}\n </Heading>\n </div>\n {data.schema.description && (\n <CollapsibleTrigger className=\"flex items-center gap-1 text-sm font-medium text-muted-foreground group\">\n <span>API information</span>\n <ChevronsUpDownIcon\n className=\"group-data-[state=open]:hidden translate-y-px\"\n size={14}\n />\n <ChevronsDownUpIcon\n className=\"group-data-[state=closed]:hidden translate-y-px\"\n size={13}\n />\n </CollapsibleTrigger>\n )}\n </div>\n {data.schema.description && (\n <CollapsibleContent className=\"CollapsibleContent\">\n <div className=\"mt-4 max-w-full border rounded-sm bg-muted/25\">\n <Markdown\n className=\"max-w-full prose-img:max-w-prose border-border p-3 lg:p-5\"\n content={data.schema.description}\n />\n </div>\n </CollapsibleContent>\n )}\n </Collapsible>\n <hr className=\"my-8\" />\n <div className=\"flex flex-col gap-y-5\">\n {schemas.map((schema) => (\n <Collapsible key={schema.name} className=\"group\" defaultOpen>\n <Heading\n registerNavigationAnchor\n level={2}\n className=\"flex items-center gap-1 justify-between w-fit\"\n id={slugify(schema.name)}\n >\n {schema.name}{\" \"}\n <CollapsibleTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-6\">\n <ChevronRightIcon\n size={16}\n className=\"group-data-[state=open]:rotate-90 transition cursor-pointer\"\n />\n </Button>\n </CollapsibleTrigger>\n </Heading>\n <CollapsibleContent className=\"mt-4 CollapsibleContent\">\n <SchemaView schema={schema.schema} />\n </CollapsibleContent>\n </Collapsible>\n ))}\n </div>\n </div>\n <Toc\n entries={schemas.map((schema) => ({\n id: slugify(schema.name),\n value: schema.name,\n depth: 1,\n }))}\n />\n </div>\n );\n}\n"],"names":["GET_SCHEMAS","graphql","SchemaList","input","type","versions","version","options","useOasConfig","schemasQuery","useCreateQuery","data","useSuspenseQuery","schemas","hasMultipleVersions","showVersions","jsxs","jsx","PagefindSearchMeta","Helmet","Collapsible","CategoryHeading","Heading","CollapsibleTrigger","ChevronsUpDownIcon","ChevronsDownUpIcon","CollapsibleContent","Markdown","schema","slugify","Button","ChevronRightIcon","SchemaView","Toc"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaList-Ep8DleP_.js","sources":["../src/lib/plugins/openapi/SchemaList.tsx"],"sourcesContent":["import slugify from \"@sindresorhus/slugify\";\nimport { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n ChevronRightIcon,\n ChevronsDownUpIcon,\n ChevronsUpDownIcon,\n} from \"lucide-react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"zudoku/ui/Collapsible.js\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Markdown } from \"../../components/Markdown.js\";\nimport { Toc } from \"../../components/navigation/Toc.js\";\nimport { PagefindSearchMeta } from \"../../components/PagefindSearchMeta.js\";\nimport { useCreateQuery } from \"./client/useCreateQuery.js\";\nimport { useOasConfig } from \"./context.js\";\nimport { graphql } from \"./graphql/gql.js\";\nimport { SchemaView } from \"./schema/SchemaView.js\";\n\nconst GET_SCHEMAS = graphql(/* GraphQL */ `\n query GetSchemas($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n title\n description\n summary\n components {\n schemas {\n name\n schema\n extensions\n }\n }\n }\n }\n`);\n\nexport function SchemaList() {\n const { input, type, versions, version, options } = useOasConfig();\n const schemasQuery = useCreateQuery(GET_SCHEMAS, {\n input,\n type,\n });\n const { data } = useSuspenseQuery(schemasQuery);\n\n const schemas = data.schema.components?.schemas ?? [];\n const hasMultipleVersions = Object.entries(versions).length > 1;\n const showVersions =\n options?.showVersionSelect === \"always\" ||\n (hasMultipleVersions && options?.showVersionSelect !== \"hide\");\n\n if (!schemas.length) {\n return (\n <div>\n <Helmet>\n <title>Schemas {showVersions ? version : \"\"}</title>\n <meta name=\"description\" content=\"List of schemas used by the API.\" />\n </Helmet>\n No schemas found\n </div>\n );\n }\n\n return (\n <div\n className=\"grid grid-cols-(--sidecar-grid-cols) gap-8 justify-between\"\n data-pagefind-filter=\"section:openapi\"\n data-pagefind-meta=\"section:openapi\"\n >\n <PagefindSearchMeta name=\"category\">\n {data.schema.title}\n </PagefindSearchMeta>\n <Helmet>\n <title>Schemas {showVersions ? version : \"\"}</title>\n <meta name=\"description\" content=\"List of schemas used by the API.\" />\n </Helmet>\n <div className=\"pt-(--padding-content-top) pb-(--padding-content-bottom)\">\n <Collapsible className=\"w-full\">\n <div className=\"flex flex-col gap-y-4 sm:flex-row justify-around items-start sm:items-end\">\n <div className=\"flex-1\">\n <CategoryHeading>{data.schema.title}</CategoryHeading>\n <Heading\n level={1}\n id=\"schemas\"\n registerNavigationAnchor\n className=\"mb-0\"\n >\n Schemas\n {showVersions && (\n <span className=\"text-xl text-muted-foreground ms-1.5\">\n ({version})\n </span>\n )}\n </Heading>\n </div>\n {data.schema.description && (\n <CollapsibleTrigger className=\"flex items-center gap-1 text-sm font-medium text-muted-foreground group\">\n <span>API information</span>\n <ChevronsUpDownIcon\n className=\"group-data-[state=open]:hidden translate-y-px\"\n size={14}\n />\n <ChevronsDownUpIcon\n className=\"group-data-[state=closed]:hidden translate-y-px\"\n size={13}\n />\n </CollapsibleTrigger>\n )}\n </div>\n {data.schema.description && (\n <CollapsibleContent className=\"CollapsibleContent\">\n <div className=\"mt-4 max-w-full border rounded-sm bg-muted/25\">\n <Markdown\n className=\"max-w-full prose-img:max-w-prose border-border p-3 lg:p-5\"\n content={data.schema.description}\n />\n </div>\n </CollapsibleContent>\n )}\n </Collapsible>\n <hr className=\"my-8\" />\n <div className=\"flex flex-col gap-y-5\">\n {schemas.map((schema) => (\n <Collapsible key={schema.name} className=\"group\" defaultOpen>\n <Heading\n registerNavigationAnchor\n level={2}\n className=\"flex items-center gap-1 justify-between w-fit\"\n id={slugify(schema.name)}\n >\n {schema.name}{\" \"}\n <CollapsibleTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-6\">\n <ChevronRightIcon\n size={16}\n className=\"group-data-[state=open]:rotate-90 transition cursor-pointer\"\n />\n </Button>\n </CollapsibleTrigger>\n </Heading>\n <CollapsibleContent className=\"mt-4 CollapsibleContent\">\n <SchemaView schema={schema.schema} />\n </CollapsibleContent>\n </Collapsible>\n ))}\n </div>\n </div>\n <Toc\n entries={schemas.map((schema) => ({\n id: slugify(schema.name),\n value: schema.name,\n depth: 1,\n }))}\n />\n </div>\n );\n}\n"],"names":["GET_SCHEMAS","graphql","SchemaList","input","type","versions","version","options","useOasConfig","schemasQuery","useCreateQuery","data","useSuspenseQuery","schemas","hasMultipleVersions","showVersions","jsxs","jsx","PagefindSearchMeta","Helmet","Collapsible","CategoryHeading","Heading","CollapsibleTrigger","ChevronsUpDownIcon","ChevronsDownUpIcon","CollapsibleContent","Markdown","schema","slugify","Button","ChevronRightIcon","SchemaView","Toc"],"mappings":"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"}
@@ -0,0 +1,438 @@
1
+ import { j as t } from "./jsx-runtime-BzflLqGi.js";
2
+ import { ChevronUpIcon as _, ChevronDownIcon as J, ChevronsLeftRightIcon as U, MinusIcon as W, PlusIcon as G, RefreshCcwDotIcon as K, InfoIcon as X } from "lucide-react";
3
+ import { useState as f, isValidElement as Q, Fragment as P } from "react";
4
+ import { I as S, a as g, b as $, c as Y, F as N, d as h, e as F, f as Z, g as H, h as ee, i as te } from "./Frame-DKlOmSkU.js";
5
+ import { b as u, I as R, M as V } from "./index-CL8eDnQW.js";
6
+ import { B as re } from "./Button-GUVe7pmt.js";
7
+ import { c as j } from "./cn-5-Gd1Dss.js";
8
+ import * as E from "@radix-ui/react-collapsible";
9
+ import { Button as se } from "./ui/Button.js";
10
+ import { Badge as ne } from "./ui/Badge.js";
11
+ import { Frame as ie, FramePanel as oe } from "./ui/Frame.js";
12
+ import { C as le, S as b } from "./circular-CG3e0_Uz.js";
13
+ const Fe = ({
14
+ name: e,
15
+ children: r
16
+ }) => /* @__PURE__ */ t.jsx("span", { "data-pagefind-meta": e, className: "sr-only", children: r }), ae = (e, r) => e.reduce(
17
+ (s, i) => {
18
+ const o = r(i);
19
+ return s[o] || (s[o] = []), s[o].push(i), s;
20
+ },
21
+ {}
22
+ ), M = ({
23
+ schema: e,
24
+ hideDescription: r = !1
25
+ }) => /* @__PURE__ */ t.jsx("div", { className: "flex flex-col gap-1", children: /* @__PURE__ */ t.jsxs("div", { children: [
26
+ /* @__PURE__ */ t.jsx("span", { className: "text-muted-foreground", children: "Const value: " }),
27
+ /* @__PURE__ */ t.jsx(u, { className: "border rounded px-1 font-mono", children: e.const }),
28
+ !r && e.description && /* @__PURE__ */ t.jsx("div", { className: "text-muted-foreground", children: e.description })
29
+ ] }) }), v = ({
30
+ values: e,
31
+ className: r,
32
+ maxVisibleValues: s = 8
33
+ }) => {
34
+ const [i, o] = f(!1);
35
+ if (!e.length) return null;
36
+ const n = e.length > s, l = n && !i ? e.slice(0, s) : e;
37
+ return /* @__PURE__ */ t.jsxs("div", { className: j("flex flex-wrap gap-1.5", r), children: [
38
+ /* @__PURE__ */ t.jsx("span", { className: "text-muted-foreground", children: "Enum values:" }),
39
+ l.map((d) => /* @__PURE__ */ t.jsx("div", { children: /* @__PURE__ */ t.jsx(u, { className: "border rounded-sm px-1 font-mono", children: d }) }, d)),
40
+ n && /* @__PURE__ */ t.jsx(
41
+ re,
42
+ {
43
+ variant: "ghost",
44
+ size: "sm",
45
+ className: "h-fit px-0",
46
+ onClick: () => o(!i),
47
+ children: i ? /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-1", children: [
48
+ /* @__PURE__ */ t.jsx(_, { size: 12 }),
49
+ /* @__PURE__ */ t.jsx("span", { className: "text-muted-foreground", children: "show less" })
50
+ ] }) : /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-1", children: [
51
+ /* @__PURE__ */ t.jsx(J, { size: 12 }),
52
+ /* @__PURE__ */ t.jsxs("span", { className: "text-muted-foreground", children: [
53
+ "show ",
54
+ e.length - s,
55
+ " more"
56
+ ] })
57
+ ] })
58
+ }
59
+ )
60
+ ] });
61
+ }, de = ({ pattern: e }) => {
62
+ const [r, s] = f(!1), i = e.length > 20, o = i ? `${e.slice(0, 20)}…` : e;
63
+ return /* @__PURE__ */ t.jsxs(
64
+ R,
65
+ {
66
+ className: j("text-xs", i && "cursor-pointer"),
67
+ onClick: () => s(!r),
68
+ selectOnClick: !1,
69
+ children: [
70
+ r ? e : o,
71
+ i && /* @__PURE__ */ t.jsx("button", { type: "button", className: "p-1 translate-y-[2px]", children: !r && /* @__PURE__ */ t.jsx(U, { size: 12 }) })
72
+ ]
73
+ }
74
+ );
75
+ }, ce = (e) => e ? [
76
+ e.type === "array" && e.items.type ? Array.isArray(e.items.type) ? `(${e.items.type.join(" | ")})[]` : `${e.items.type}[]` : Array.isArray(e.type) ? e.type.join(" | ") : e.type,
77
+ e.enum && "enum",
78
+ e.const && "const",
79
+ e.format,
80
+ e.type === "array" && e.items?.contentMediaType,
81
+ e.minimum !== void 0 && `min: ${e.minimum}`,
82
+ e.maximum !== void 0 && `max: ${e.maximum}`,
83
+ e.minLength !== void 0 && `minLength: ${e.minLength}`,
84
+ e.maxLength !== void 0 && `maxLength: ${e.maxLength}`,
85
+ e.minItems !== void 0 && `minItems: ${e.minItems}`,
86
+ e.maxItems !== void 0 && `maxItems: ${e.maxItems}`,
87
+ e.minProperties !== void 0 && `minProps: ${e.minProperties}`,
88
+ e.maxProperties !== void 0 && `maxProps: ${e.maxProperties}`,
89
+ e.uniqueItems && "unique",
90
+ e.readOnly && "readOnly",
91
+ e.writeOnly && "writeOnly",
92
+ e.deprecated && "deprecated",
93
+ e.pattern && /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
94
+ "pattern: ",
95
+ /* @__PURE__ */ t.jsx(de, { pattern: e.pattern })
96
+ ] })
97
+ ] : [], I = ({
98
+ schema: e,
99
+ extraItems: r = [],
100
+ className: s
101
+ }) => {
102
+ const i = [...ce(e), ...r].flatMap(
103
+ (o) => typeof o == "string" || Q(o) ? o : []
104
+ );
105
+ return /* @__PURE__ */ t.jsx("span", { className: s, children: i.map((o, n) => (
106
+ // biome-ignore lint/suspicious/noArrayIndexKey: index should be stable
107
+ /* @__PURE__ */ t.jsxs("span", { className: "text-muted-foreground", children: [
108
+ o,
109
+ n < i.length - 1 && /* @__PURE__ */ t.jsx("span", { className: "text-muted-foreground/50", children: " · " })
110
+ ] }, n)
111
+ )) });
112
+ }, O = ({
113
+ schema: e
114
+ }) => {
115
+ const r = e.examples?.at(0), s = e.default;
116
+ return r === void 0 && s === void 0 ? null : /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-1", children: [
117
+ r !== void 0 && /* @__PURE__ */ t.jsxs("div", { children: [
118
+ /* @__PURE__ */ t.jsx("span", { className: "text-muted-foreground", children: "Example: " }),
119
+ /* @__PURE__ */ t.jsx(u, { className: "border rounded-sm px-1 font-mono", children: typeof r == "object" || typeof r == "boolean" ? JSON.stringify(r) : r })
120
+ ] }),
121
+ s !== void 0 && /* @__PURE__ */ t.jsxs("div", { children: [
122
+ /* @__PURE__ */ t.jsx("span", { className: "text-muted-foreground", children: "Default: " }),
123
+ /* @__PURE__ */ t.jsx(u, { className: "border rounded-sm px-1 font-mono", children: typeof s == "object" || typeof s == "boolean" ? JSON.stringify(s) : s })
124
+ ] })
125
+ ] });
126
+ }, B = (e) => typeof e == "string" && ["string", "number", "boolean", "integer", "null"].includes(e) || Array.isArray(e) && e.every(B), m = (e) => e.type === "array" || // schema.type might be an array of types, so we need to check if "array" is one of them
127
+ Array.isArray(e.type) && e.type.includes("array"), k = (e) => e && (e.type === "object" && Object.keys(e.properties ?? {}).length > 0 || e.type === "array" && typeof e.items == "object" && (!e.items.type || e.items.type === "object")), z = (e) => typeof e == "string" && (e.startsWith(le) || e.startsWith(b)), w = (e) => m(e) && "items" in e && z(e.items), pe = (e) => {
128
+ if (typeof e == "string")
129
+ return e.startsWith(b) ? e.slice(b.length).split("/").pop() : e.split(":")[1];
130
+ }, q = ({ circularProp: e }) => /* @__PURE__ */ t.jsxs(
131
+ R,
132
+ {
133
+ className: "inline-flex items-center gap-1.5 text-xs translate-y-0.5",
134
+ selectOnClick: !1,
135
+ children: [
136
+ /* @__PURE__ */ t.jsx(K, { size: 13 }),
137
+ /* @__PURE__ */ t.jsx("span", { children: e ? `${e} (circular)` : "circular" })
138
+ ]
139
+ }
140
+ ), xe = ({
141
+ name: e,
142
+ schema: r,
143
+ group: s,
144
+ defaultOpen: i = !1,
145
+ showCollapseButton: o = !0
146
+ }) => {
147
+ const [n, l] = f(i);
148
+ if (z(r))
149
+ return /* @__PURE__ */ t.jsx(S, { children: /* @__PURE__ */ t.jsxs(g, { className: "gap-y-2", children: [
150
+ /* @__PURE__ */ t.jsxs("div", { children: [
151
+ /* @__PURE__ */ t.jsx($, { className: "inline me-2", children: /* @__PURE__ */ t.jsx("code", { children: e }) }),
152
+ /* @__PURE__ */ t.jsx(
153
+ I,
154
+ {
155
+ className: "inline",
156
+ schema: r,
157
+ extraItems: [
158
+ s !== "optional" && /* @__PURE__ */ t.jsx("span", { className: "text-primary", children: "required" }),
159
+ /* @__PURE__ */ t.jsx(q, {}, "circular-ref")
160
+ ]
161
+ }
162
+ )
163
+ ] }),
164
+ /* @__PURE__ */ t.jsx(O, { schema: r })
165
+ ] }) });
166
+ const d = !!((r.allOf || r.anyOf || r.oneOf || k(r) || m(r) && "items" in r && k(r.items) || r.additionalProperties) && !w(r)), c = !!(r.description || "items" in r && r.items?.enum || r.const || r.enum || r.example !== void 0 || r.default !== void 0);
167
+ return /* @__PURE__ */ t.jsxs(S, { children: [
168
+ /* @__PURE__ */ t.jsxs(g, { className: "gap-y-2", children: [
169
+ /* @__PURE__ */ t.jsxs("div", { children: [
170
+ /* @__PURE__ */ t.jsx($, { className: "inline me-2", children: d ? /* @__PURE__ */ t.jsx(
171
+ "button",
172
+ {
173
+ onClick: () => l(!n),
174
+ type: "button",
175
+ className: "hover:underline",
176
+ children: /* @__PURE__ */ t.jsx("code", { children: e })
177
+ }
178
+ ) : /* @__PURE__ */ t.jsx("code", { children: e }) }),
179
+ /* @__PURE__ */ t.jsx(
180
+ I,
181
+ {
182
+ className: "inline",
183
+ schema: r,
184
+ extraItems: [
185
+ s !== "optional" && /* @__PURE__ */ t.jsx("span", { className: "text-primary", children: "required" }),
186
+ w(r) && /* @__PURE__ */ t.jsx(
187
+ q,
188
+ {
189
+ circularProp: pe(r.items)
190
+ }
191
+ )
192
+ ]
193
+ }
194
+ )
195
+ ] }),
196
+ c && /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-1.5", children: [
197
+ r.description && /* @__PURE__ */ t.jsx(V, { className: "prose-sm", content: r.description }),
198
+ "items" in r && r.items?.enum && /* @__PURE__ */ t.jsx(v, { values: r.items.enum }),
199
+ r.const && /* @__PURE__ */ t.jsx(M, { schema: r, hideDescription: !0 }),
200
+ r.enum && /* @__PURE__ */ t.jsx(v, { values: r.enum }),
201
+ /* @__PURE__ */ t.jsx(O, { schema: r })
202
+ ] })
203
+ ] }),
204
+ d && o && /* @__PURE__ */ t.jsx(Y, { className: "self-start", children: /* @__PURE__ */ t.jsx(
205
+ se,
206
+ {
207
+ variant: "ghost",
208
+ size: "icon",
209
+ className: "rounded-full",
210
+ onClick: () => l(!n),
211
+ "aria-label": "Toggle properties",
212
+ children: n ? /* @__PURE__ */ t.jsx(W, { size: 16 }) : /* @__PURE__ */ t.jsx(G, { size: 16 })
213
+ }
214
+ ) }),
215
+ d && /* @__PURE__ */ t.jsx(
216
+ E.Root,
217
+ {
218
+ defaultOpen: i,
219
+ open: n,
220
+ onOpenChange: l,
221
+ className: j("w-full", !n && "contents"),
222
+ children: /* @__PURE__ */ t.jsx(E.Content, { asChild: !0, children: /* @__PURE__ */ t.jsx(g, { children: r.anyOf || r.oneOf || r.type === "object" ? /* @__PURE__ */ t.jsx(x, { schema: r }) : m(r) && "items" in r ? /* @__PURE__ */ t.jsx(x, { schema: r.items }) : null }) })
223
+ }
224
+ )
225
+ ] });
226
+ }, D = (e) => {
227
+ const r = e.oneOf ?? e.anyOf ?? [];
228
+ return e.properties && Object.keys(e.properties).length > 0 ? r.map((s) => !s.properties && !s.type && !s.oneOf && !s.anyOf ? {
229
+ ...s,
230
+ type: "object",
231
+ properties: e.properties,
232
+ required: s.required ?? e.required
233
+ } : s) : r;
234
+ }, ue = (e) => {
235
+ if (Array.isArray(e.oneOf)) return "exactly-one";
236
+ const r = e.discriminator?.propertyName;
237
+ if (!r) return "at-least-one";
238
+ const s = D(e), i = /* @__PURE__ */ new Set();
239
+ for (const o of s) {
240
+ const n = o.properties?.[r], l = n?.const ?? (Array.isArray(n?.enum) && n.enum.length === 1 ? String(n.enum[0]) : void 0);
241
+ if (l == null || i.has(String(l))) return "at-least-one";
242
+ i.add(String(l));
243
+ }
244
+ return "exactly-one";
245
+ }, A = (e, r) => r.title?.trim() || `Variant ${e + 1}`, me = (e, r) => {
246
+ const s = [];
247
+ e.type && s.push(
248
+ `type = ${Array.isArray(e.type) ? e.type.join("|") : e.type}`
249
+ );
250
+ const i = r?.discriminator?.propertyName;
251
+ if (i) {
252
+ const n = e.properties?.[i], l = n?.const ?? (Array.isArray(n?.enum) && n.enum.length === 1 ? n.enum[0] : void 0);
253
+ l !== void 0 && s.push(`${i}=${JSON.stringify(l)}`);
254
+ }
255
+ const o = (e.required ?? []).filter((n) => n !== i);
256
+ if (o.length) {
257
+ const n = o.slice(0, 3).join(", "), l = o.length > 3 ? ` +${o.length - 3} more` : "";
258
+ s.push(`requires: ${n}${l}`);
259
+ }
260
+ return s;
261
+ }, fe = ({
262
+ variants: e,
263
+ schema: r,
264
+ selectedVariant: s,
265
+ onSelectVariant: i
266
+ }) => {
267
+ const o = e.map((n, l) => ({
268
+ label: A(l, n),
269
+ guards: me(n, r)
270
+ }));
271
+ return /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-2 text-sm", children: [
272
+ /* @__PURE__ */ t.jsx("h4", { className: "font-medium", children: "Decision Table" }),
273
+ /* @__PURE__ */ t.jsx("div", { className: "border rounded-md overflow-hidden", children: /* @__PURE__ */ t.jsxs("table", { className: "w-full", children: [
274
+ /* @__PURE__ */ t.jsx("thead", { children: /* @__PURE__ */ t.jsxs("tr", { className: "border-b bg-muted/50", children: [
275
+ /* @__PURE__ */ t.jsx("th", { className: "text-left p-2 font-medium", children: "Variant" }),
276
+ /* @__PURE__ */ t.jsx("th", { className: "text-left p-2 font-medium", children: "Matching Criteria" })
277
+ ] }) }),
278
+ /* @__PURE__ */ t.jsx("tbody", { className: "divide-y", children: o.map((n) => /* @__PURE__ */ t.jsxs("tr", { className: "hover:bg-muted/30", children: [
279
+ /* @__PURE__ */ t.jsx("td", { className: "p-2 font-medium", children: /* @__PURE__ */ t.jsx(
280
+ "button",
281
+ {
282
+ type: "button",
283
+ className: j(
284
+ "hover:underline",
285
+ s === n.label && "text-primary"
286
+ ),
287
+ onClick: () => i(n.label),
288
+ children: n.label
289
+ }
290
+ ) }),
291
+ /* @__PURE__ */ t.jsx("td", { className: "p-2 text-muted-foreground text-xs", children: n.guards.length > 0 ? n.guards.join(" · ") : "No specific criteria" })
292
+ ] }, n.label)) })
293
+ ] }) })
294
+ ] });
295
+ }, je = ({
296
+ schema: e,
297
+ cardHeader: r
298
+ }) => {
299
+ const s = Array.isArray(e.oneOf) ? "oneOf" : Array.isArray(e.anyOf) ? "anyOf" : void 0, i = s ? D(e) : [], [o, n] = f(
300
+ () => i[0] ? A(0, i[0]) : ""
301
+ );
302
+ if (!s) return null;
303
+ const d = ue(e) === "exactly-one" ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
304
+ "Exactly one variant ",
305
+ /* @__PURE__ */ t.jsx("b", { children: "must match" }),
306
+ "."
307
+ ] }) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
308
+ "At least one variant ",
309
+ /* @__PURE__ */ t.jsx("b", { children: "must match" }),
310
+ ". Multiple variants",
311
+ " ",
312
+ /* @__PURE__ */ t.jsx("i", { children: "may match" }),
313
+ " simultaneously."
314
+ ] }), c = i.findIndex(
315
+ (p, y) => A(y, p) === o
316
+ ), a = c >= 0 ? i[c] : null;
317
+ return /* @__PURE__ */ t.jsxs(ie, { children: [
318
+ r,
319
+ /* @__PURE__ */ t.jsxs(oe, { className: "text-sm flex flex-col gap-4", children: [
320
+ /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
321
+ /* @__PURE__ */ t.jsx(ne, { variant: "outline", children: s }),
322
+ /* @__PURE__ */ t.jsx("div", { className: "flex-1 p-2", children: /* @__PURE__ */ t.jsx("span", { className: "text-sm", children: d }) })
323
+ ] }),
324
+ /* @__PURE__ */ t.jsx(
325
+ fe,
326
+ {
327
+ variants: i,
328
+ schema: e,
329
+ selectedVariant: o,
330
+ onSelectVariant: n
331
+ }
332
+ ),
333
+ /* @__PURE__ */ t.jsxs("strong", { children: [
334
+ "Properties for ",
335
+ o,
336
+ ":"
337
+ ] }),
338
+ a && /* @__PURE__ */ t.jsx(x, { schema: a })
339
+ ] })
340
+ ] });
341
+ }, ye = (e) => e && /* @__PURE__ */ t.jsx(
342
+ V,
343
+ {
344
+ className: "text-sm leading-normal line-clamp-4",
345
+ content: e
346
+ }
347
+ ), ge = (e, r, s) => {
348
+ const i = /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
349
+ /* @__PURE__ */ t.jsx("span", { className: "text-sm text-muted-foreground", children: /* @__PURE__ */ t.jsx(I, { schema: e }) }),
350
+ e.enum && /* @__PURE__ */ t.jsx(v, { values: e.enum }),
351
+ ye(e.description),
352
+ /* @__PURE__ */ t.jsx(O, { schema: e })
353
+ ] });
354
+ return s ? /* @__PURE__ */ t.jsx("div", { className: "space-y-2 p-4", children: i }) : /* @__PURE__ */ t.jsxs(N, { children: [
355
+ r,
356
+ /* @__PURE__ */ t.jsx(h, { className: "space-y-2", children: i })
357
+ ] });
358
+ }, x = ({
359
+ schema: e,
360
+ defaultOpen: r = !1,
361
+ cardHeader: s,
362
+ embedded: i
363
+ }) => {
364
+ if (!e || Object.keys(e).length === 0)
365
+ return /* @__PURE__ */ t.jsxs(N, { children: [
366
+ s,
367
+ /* @__PURE__ */ t.jsx(h, { children: /* @__PURE__ */ t.jsx("div", { className: "text-sm text-muted-foreground italic", children: "No data returned" }) })
368
+ ] });
369
+ if (e.const)
370
+ return /* @__PURE__ */ t.jsx(M, { schema: e });
371
+ if (Array.isArray(e.oneOf) || Array.isArray(e.anyOf))
372
+ return /* @__PURE__ */ t.jsx(je, { schema: e, cardHeader: s });
373
+ if (B(e.type))
374
+ return ge(e, s, i);
375
+ if (m(e) && typeof e.items == "object") {
376
+ const n = {
377
+ type: "object",
378
+ properties: { "": e }
379
+ };
380
+ return /* @__PURE__ */ t.jsx(x, { schema: n, cardHeader: s, defaultOpen: !0 });
381
+ }
382
+ const o = typeof e.additionalProperties == "object" && /* @__PURE__ */ t.jsx(x, { schema: e.additionalProperties, embedded: !0 });
383
+ if (e.type === "object") {
384
+ const n = ae(
385
+ Object.entries(e.properties ?? {}),
386
+ ([a, p]) => p.deprecated ? "deprecated" : e.required?.includes(a) ? "required" : "optional"
387
+ ), c = ["required", "optional", "deprecated"].flatMap((a) => {
388
+ const p = n[a];
389
+ return p ? { group: a, properties: p } : [];
390
+ }).map(({ group: a, properties: p }, y) => /* @__PURE__ */ t.jsxs(P, { children: [
391
+ y > 0 && /* @__PURE__ */ t.jsx(F, {}),
392
+ /* @__PURE__ */ t.jsx(Z, { className: "overflow-clip", children: p.map(([C, L], T) => /* @__PURE__ */ t.jsxs(P, { children: [
393
+ T > 0 && /* @__PURE__ */ t.jsx(F, {}),
394
+ /* @__PURE__ */ t.jsx(
395
+ xe,
396
+ {
397
+ name: C,
398
+ schema: L,
399
+ group: a,
400
+ defaultOpen: r
401
+ }
402
+ )
403
+ ] }, C)) })
404
+ ] }, a));
405
+ return i ? c : /* @__PURE__ */ t.jsxs(N, { children: [
406
+ s,
407
+ e.description && /* @__PURE__ */ t.jsx(H, { children: /* @__PURE__ */ t.jsx(ee, { children: e.description }) }),
408
+ (c.length > 0 || o) && /* @__PURE__ */ t.jsxs(h, { className: "p-0!", children: [
409
+ c,
410
+ o
411
+ ] }),
412
+ e.additionalProperties === !0 && /* @__PURE__ */ t.jsx(te, { children: /* @__PURE__ */ t.jsxs(
413
+ "a",
414
+ {
415
+ className: "text-sm flex items-center gap-1 hover:underline",
416
+ href: "https://swagger.io/docs/specification/v3_0/data-models/dictionaries/",
417
+ rel: "noopener noreferrer",
418
+ target: "_blank",
419
+ children: [
420
+ "Additional properties are allowed",
421
+ /* @__PURE__ */ t.jsx(X, { size: 14 })
422
+ ]
423
+ }
424
+ ) })
425
+ ] });
426
+ }
427
+ };
428
+ export {
429
+ v as E,
430
+ Fe as P,
431
+ x as S,
432
+ I as a,
433
+ O as b,
434
+ z as c,
435
+ ae as g,
436
+ m as i
437
+ };
438
+ //# sourceMappingURL=SchemaView-BpaEKRYx.js.map