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 +1 @@
1
- {"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,CAAC,gBAAgB,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;QACvE,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK,KAAK;gBACjB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI;oBACrC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,CAAC,CAAC,SAAS,CAAC;YAElB,IAAI,MAAM,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,iBAAiB,GACrB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtE,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC;QAChC,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC;KAChD,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACxE,UAAU,EAAE,iBAAiB;KAC9B,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuContext.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { useMDXComponents as useMDXComponentsImport } from "@mdx-js/react";
2
2
  import { Helmet } from "@zudoku/react-helmet-async";
3
3
  import { RouterError as RouterErrorImport } from "../errors/RouterError.js";
4
4
  import { ServerError as ServerErrorImport } from "../errors/ServerError.js";
5
+ import { CACHE_KEYS as CACHE_KEYS_IMPORT } from "./cache.js";
5
6
  export declare const useMDXComponents: typeof useMDXComponentsImport;
6
7
  export declare const Layout: ({ children }: {
7
8
  children?: import("react").ReactNode;
@@ -18,6 +19,7 @@ export declare const BootstrapStatic: ({ router, context, queryClient, helmetCon
18
19
  queryClient: import("@tanstack/react-query").QueryClient;
19
20
  router: ReturnType<typeof import("react-router").createStaticRouter>;
20
21
  }) => import("react/jsx-runtime").JSX.Element;
22
+ export declare const RouteGuard: () => import("react/jsx-runtime").JSX.Element | null;
21
23
  export declare const Head: typeof Helmet;
22
24
  export declare const useZudoku: () => import("../core/ZudokuContext.js").ZudokuContext;
23
25
  export declare const useAuth: () => {
@@ -29,20 +31,30 @@ export declare const useAuth: () => {
29
31
  providerData: unknown;
30
32
  isAuthEnabled: boolean;
31
33
  };
34
+ export declare const useCache: () => {
35
+ invalidateCache: (key: keyof typeof CACHE_KEYS_IMPORT) => Promise<void>;
36
+ };
37
+ export declare const CACHE_KEYS: Readonly<{
38
+ API_IDENTITIES: string[];
39
+ }>;
32
40
  export declare const Zudoku: {
33
41
  (props: import("../core/ZudokuContext.js").ZudokuContextOptions): import("react/jsx-runtime").JSX.Element;
34
42
  displayName: string;
35
43
  };
44
+ export declare const StatusPage: ({ statusCode, message }: {
45
+ statusCode: number;
46
+ message?: import("react").ReactNode;
47
+ }) => import("react/jsx-runtime").JSX.Element;
36
48
  export declare const Callout: ({ type, children, title, className }: {
37
49
  type: "info" | "note" | "tip" | "caution" | "danger";
38
50
  title?: string;
39
51
  children: import("react").ReactNode;
40
52
  className?: string;
41
53
  }) => import("react/jsx-runtime").JSX.Element;
42
- export declare const Markdown: ({ content, className, }: {
54
+ export declare const Markdown: import("react").MemoExoticComponent<({ content, className }: {
43
55
  content: string;
44
56
  className?: string;
45
- }) => import("react/jsx-runtime").JSX.Element;
57
+ }) => import("react/jsx-runtime").JSX.Element>;
46
58
  export declare const Spinner: ({ size }: {
47
59
  size?: number;
48
60
  }) => import("react/jsx-runtime").JSX.Element;
@@ -2,27 +2,34 @@ import { useMDXComponents as useMDXComponentsImport } from "@mdx-js/react";
2
2
  import { Helmet } from "@zudoku/react-helmet-async";
3
3
  import { Link as LinkImport } from "react-router";
4
4
  import { useAuth as useAuthImport } from "../authentication/hook.js";
5
+ import { RouteGuard as RouteGuardImport } from "../core/RouteGuard.js";
5
6
  import { RouterError as RouterErrorImport } from "../errors/RouterError.js";
6
7
  import { ServerError as ServerErrorImport } from "../errors/ServerError.js";
7
8
  import { Button as ButtonImport } from "../ui/Button.js";
8
9
  import { Callout as CalloutImport } from "../ui/Callout.js";
9
- import { Spinner as SpinnerImport } from "./Spinner.js";
10
- import { Markdown as MarkdownImport } from "./Markdown.js";
11
10
  import { Bootstrap as BootstrapImport, BootstrapStatic as BootstrapStaticImport, } from "./Bootstrap.js";
11
+ import { CACHE_KEYS as CACHE_KEYS_IMPORT, useCache as useCacheImport, } from "./cache.js";
12
12
  import { ClientOnly as ClientOnlyImport } from "./ClientOnly.js";
13
+ import { useZudoku as useZudokuImport } from "./context/ZudokuContext.js";
13
14
  import { Layout as LayoutImport } from "./Layout.js";
15
+ import { Markdown as MarkdownImport } from "./Markdown.js";
16
+ import { Spinner as SpinnerImport } from "./Spinner.js";
17
+ import { StatusPage as StatusPageImport } from "./StatusPage.js";
14
18
  import { Zudoku as ZudokuImport } from "./Zudoku.js";
15
- import { useZudoku as useZudokuImport } from "./context/ZudokuContext.js";
16
19
  export const useMDXComponents = /*@__PURE__*/ useMDXComponentsImport;
17
20
  export const Layout = /*@__PURE__*/ LayoutImport;
18
21
  export const RouterError = /*@__PURE__*/ RouterErrorImport;
19
22
  export const ServerError = /*@__PURE__*/ ServerErrorImport;
20
23
  export const Bootstrap = /*@__PURE__*/ BootstrapImport;
21
24
  export const BootstrapStatic = /*@__PURE__*/ BootstrapStaticImport;
25
+ export const RouteGuard = /*@__PURE__*/ RouteGuardImport;
22
26
  export const Head = /*@__PURE__*/ Helmet;
23
27
  export const useZudoku = /*@__PURE__*/ useZudokuImport;
24
28
  export const useAuth = /*@__PURE__*/ useAuthImport;
29
+ export const useCache = /*@__PURE__*/ useCacheImport;
30
+ export const CACHE_KEYS = /*@__PURE__*/ CACHE_KEYS_IMPORT;
25
31
  export const Zudoku = /*@__PURE__*/ ZudokuImport;
32
+ export const StatusPage = /*@__PURE__*/ StatusPageImport;
26
33
  export const Callout = /*@__PURE__*/ CalloutImport;
27
34
  export const Markdown = /*@__PURE__*/ MarkdownImport;
28
35
  export const Spinner = /*@__PURE__*/ SpinnerImport;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,SAAS,IAAI,eAAe,EAC5B,eAAe,IAAI,qBAAqB,GACzC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC,sBAAsB,CAAC;AACrE,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB,CAAC;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB,CAAC;AAC3D,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC,eAAe,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,qBAAqB,CAAC;AAEnE,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC,eAAe,CAAC;AACvD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC;AACnD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC;AACnD,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC;AACrD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC;AACnD,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,gBAAgB,CAAC;AACzD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/components/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useRef } from "react";
2
+ import { useEffect, useRef } from "react";
3
3
  import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
4
4
  import { DrawerContent, DrawerTitle } from "../../ui/Drawer.js";
5
+ import { scrollIntoViewIfNeeded } from "../../util/scrollIntoViewIfNeeded.js";
5
6
  import { useCurrentNavigation } from "../context/ZudokuContext.js";
6
7
  import { Slotlet } from "../SlotletProvider.js";
7
8
  import { SidebarItem } from "./SidebarItem.js";
@@ -9,6 +10,10 @@ import { SidebarWrapper } from "./SidebarWrapper.js";
9
10
  export const Sidebar = ({ onRequestClose, }) => {
10
11
  const navRef = useRef(null);
11
12
  const navigation = useCurrentNavigation();
13
+ useEffect(() => {
14
+ const active = navRef.current?.querySelector('[aria-current="page"]');
15
+ scrollIntoViewIfNeeded(active ?? null);
16
+ }, []);
12
17
  return (_jsxs(_Fragment, { children: [_jsxs(SidebarWrapper, { ref: navRef, pushMainContent: navigation.sidebar.length > 0, children: [_jsx(Slotlet, { name: "zudoku-before-navigation" }), navigation.sidebar.map((item) => (_jsx(SidebarItem, { item: item }, item.label))), _jsx(Slotlet, { name: "zudoku-after-navigation" })] }), _jsx(DrawerContent, { className: "lg:hidden h-[100dvh] left-0 w-[320px] rounded-none", "aria-describedby": undefined, children: _jsxs("div", { className: "p-4 overflow-y-auto overscroll-none", children: [_jsx(VisuallyHidden, { children: _jsx(DrawerTitle, { children: "Sidebar" }) }), navigation.sidebar.map((item) => (_jsx(SidebarItem, { item: item, onRequestClose: onRequestClose }, item.label)))] }) })] }));
13
18
  };
14
19
  //# sourceMappingURL=Sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/Sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACtB,cAAc,GAGf,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;IAE1C,OAAO,CACL,8BACE,MAAC,cAAc,IACb,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,aAE9C,KAAC,OAAO,IAAC,IAAI,EAAC,0BAA0B,GAAG,EAC1C,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAChC,KAAC,WAAW,IAAkB,IAAI,EAAE,IAAI,IAAtB,IAAI,CAAC,KAAK,CAAgB,CAC7C,CAAC,EACF,KAAC,OAAO,IAAC,IAAI,EAAC,yBAAyB,GAAG,IAC3B,EACjB,KAAC,aAAa,IACZ,SAAS,EAAC,oDAAoD,sBAC5C,SAAS,YAE3B,eAAK,SAAS,EAAC,qCAAqC,aAClD,KAAC,cAAc,cACb,KAAC,WAAW,0BAAsB,GACnB,EAChB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAChC,KAAC,WAAW,IAEV,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,IAFzB,IAAI,CAAC,KAAK,CAGf,CACH,CAAC,IACE,GACQ,IACf,CACJ,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/Sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACtB,cAAc,GAGf,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACtE,sBAAsB,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IACzC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,8BACE,MAAC,cAAc,IACb,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,aAE9C,KAAC,OAAO,IAAC,IAAI,EAAC,0BAA0B,GAAG,EAC1C,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAChC,KAAC,WAAW,IAAkB,IAAI,EAAE,IAAI,IAAtB,IAAI,CAAC,KAAK,CAAgB,CAC7C,CAAC,EACF,KAAC,OAAO,IAAC,IAAI,EAAC,yBAAyB,GAAG,IAC3B,EACjB,KAAC,aAAa,IACZ,SAAS,EAAC,oDAAoD,sBAC5C,SAAS,YAE3B,eAAK,SAAS,EAAC,qCAAqC,aAClD,KAAC,cAAc,cACb,KAAC,WAAW,0BAAsB,GACnB,EAChB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAChC,KAAC,WAAW,IAEV,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,IAFzB,IAAI,CAAC,KAAK,CAGf,CACH,CAAC,IACE,GACQ,IACf,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -27,22 +27,24 @@ export const SidebarCategory = ({ category, onRequestClose, }) => {
27
27
  setOpen((prev) => !prev);
28
28
  setHasInteracted(true);
29
29
  }, children: _jsx(ChevronRightIcon, { size: 16, className: cn(hasInteracted && "transition", "shrink-0 group-data-[state=open]:rotate-90") }) }));
30
- return (_jsxs(Collapsible.Root, { className: "flex flex-col", defaultOpen: isDefaultOpen, open: open, onOpenChange: () => setOpen(true), children: [_jsx(Collapsible.Trigger, { className: "group", asChild: true, disabled: !isCollapsible, children: _jsxs("div", { onClick: () => setHasInteracted(true), className: navigationListItem({
31
- isActive: false,
32
- className: [
33
- "text-start font-medium",
34
- isCollapsible
35
- ? "cursor-pointer"
36
- : "cursor-default hover:bg-transparent",
37
- ],
38
- }), children: [category.icon && (_jsx(category.icon, { size: 16, className: cn("align-[-0.125em] ", isActive && "text-primary") })), category.link?.type === "doc" ? (_jsx(NavLink, { to: joinPath(category.link.id), className: "flex-1", onClick: () => {
39
- // if it is the current path and closed then open it because there's no path change to trigger the open
40
- if (isActive && !open) {
41
- setOpen(true);
42
- }
43
- }, children: _jsxs("div", { className: cn("flex items-center gap-2 justify-between w-full", isActive ? "text-primary" : "text-foreground/80"), children: [_jsx("div", { className: "truncate", children: category.label }), ToggleButton] }) })) : (_jsxs("div", { className: "flex items-center justify-between w-full", children: [_jsx("div", { className: "flex gap-2 truncate w-full", children: category.label }), ToggleButton] }))] }) }), _jsx(Collapsible.Content, { className: cn(
30
+ const icon = category.icon && (_jsx(category.icon, { size: 16, className: cn("align-[-0.125em] ", isActive && "text-primary") }));
31
+ const styles = navigationListItem({
32
+ className: [
33
+ "text-start font-medium",
34
+ isCollapsible || typeof category.link !== "undefined"
35
+ ? "cursor-pointer"
36
+ : "cursor-default hover:bg-transparent",
37
+ ],
38
+ });
39
+ return (_jsxs(Collapsible.Root, { className: "flex flex-col", defaultOpen: isDefaultOpen, open: open, onOpenChange: () => setOpen(true), children: [_jsx(Collapsible.Trigger, { className: "group", asChild: true, disabled: !isCollapsible, children: category.link?.type === "doc" ? (_jsxs(NavLink, { to: joinPath(category.link.id), className: styles, onClick: () => {
40
+ setHasInteracted(true);
41
+ // if it is the current path and closed then open it because there's no path change to trigger the open
42
+ if (isActive && !open) {
43
+ setOpen(true);
44
+ }
45
+ }, children: [icon, _jsxs("div", { className: cn("flex items-center gap-2 justify-between w-full", isActive ? "text-primary" : "text-foreground/80"), children: [_jsx("div", { className: "truncate", children: category.label }), ToggleButton] })] })) : (_jsxs("div", { onClick: () => setHasInteracted(true), className: styles, children: [icon, _jsxs("div", { className: "flex items-center justify-between w-full", children: [_jsx("div", { className: "flex gap-2 truncate w-full", children: category.label }), ToggleButton] })] })) }), _jsx(Collapsible.Content, { className: cn(
44
46
  // CollapsibleContent class is used to animate and it should only be applied when the user has triggered the toggle
45
- hasInteracted && "CollapsibleContent", "my-1"), children: _jsx("ul", { className: "relative", children: category.items.map((item) => (_jsx(SidebarItem, { onRequestClose: onRequestClose, item: item }, ("id" in item ? item.id : "") +
47
+ hasInteracted && "CollapsibleContent", category.items.length === 0 && "hidden", "ms-6 my-1"), children: _jsx("ul", { className: "relative after:absolute after:-left-[--padding-nav-item] after:translate-x-[1.5px] after:top-0 after:bottom-0 after:w-px after:bg-border", children: category.items.map((item) => (_jsx(SidebarItem, { onRequestClose: onRequestClose, item: item }, ("id" in item ? item.id : "") +
46
48
  ("href" in item ? item.href : "") +
47
49
  item.label))) }) })] }));
48
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarCategory.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SidebarCategory.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SidebarCategory.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SidebarCategory.tsx"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ export const SidebarItem = ({ item, onRequestClose, }) => {
36
36
  isActive: item.href.slice(1) === activeAnchor,
37
37
  className: item.badge?.placement !== "start" && "justify-between",
38
38
  }), onClick: onRequestClose, children: item.badge ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "truncate", title: item.label, children: item.label }), _jsx(SidebarBadge, { ...item.badge })] })) : (_jsx("span", { className: "break-all", children: item.label })) })) : !item.href.startsWith("http") ? (_jsx(NavLink, { className: navigationListItem({
39
+ isActive: item.href.split("#")[1] === activeAnchor,
39
40
  className: item.badge?.placement !== "start" && "justify-between",
40
41
  }), to: item.href, children: item.badge ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "truncate", title: item.label, children: item.label }), _jsx(SidebarBadge, { ...item.badge })] })) : (_jsx("span", { className: "break-all", children: item.label })) })) : (_jsxs("a", { className: navigationListItem(), href: item.href, target: "_blank", rel: "noopener noreferrer", onClick: onRequestClose, children: [_jsx("span", { className: "whitespace-normal", children: item.label }), _jsx("span", { className: "whitespace-nowrap", children: _jsx(ExternalLinkIcon, { className: "inline -translate-y-0.5", size: 12 }) })] }));
41
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarItem.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SidebarItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SidebarItem.js","sourceRoot":"","sources":["../../../../src/lib/components/navigation/SidebarItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CACnC,mFAAmF,EACnF;IACE,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,IAAI,EAAE,0BAA0B;YAChC,KAAK,EAAE,oBAAoB;SAC5B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,KAAK;KAChB;CACF,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,IAAI,EACJ,cAAc,GAIf,EAAE,EAAE;IACH,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC7C,MAAM,CAAC,YAAY,CAAC,GAAG,eAAe,EAAE,CAAC;IAEzC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,CACL,KAAC,eAAe,IAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,GAAI,CACpE,CAAC;QACJ,KAAK,KAAK;YACR,OAAO,CACL,MAAC,OAAO,IACN,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAC7D,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EACrB,OAAO,EAAE,cAAc,aAEtB,IAAI,CAAC,IAAI,IAAI,KAAC,IAAI,CAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,kBAAkB,GAAG,EACjE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,8BACE,eAAM,SAAS,EAAC,iBAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,YAChD,IAAI,CAAC,KAAK,GACN,EACP,KAAC,YAAY,OAAK,IAAI,CAAC,KAAK,GAAI,IAC/B,CACJ,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,KAAK,CACX,IACO,CACX,CAAC;QACJ,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACjC,KAAC,UAAU,IACT,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,EAClD,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAC5C,SAAS,EAAE,kBAAkB,CAAC;oBAC5B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY;oBAC7C,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,IAAI,iBAAiB;iBAClE,CAAC,EACF,OAAO,EAAE,cAAc,YAEtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,8BACE,eAAM,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,YACzC,IAAI,CAAC,KAAK,GACN,EACP,KAAC,YAAY,OAAK,IAAI,CAAC,KAAK,GAAI,IAC/B,CACJ,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,WAAW,YAAE,IAAI,CAAC,KAAK,GAAQ,CAChD,GACU,CACd,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAClC,KAAC,OAAO,IACN,SAAS,EAAE,kBAAkB,CAAC;oBAC5B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY;oBAClD,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,IAAI,iBAAiB;iBAClE,CAAC,EACF,EAAE,EAAE,IAAI,CAAC,IAAI,YAEZ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACZ,8BACE,eAAM,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,YACzC,IAAI,CAAC,KAAK,GACN,EACP,KAAC,YAAY,OAAK,IAAI,CAAC,KAAK,GAAI,IAC/B,CACJ,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,WAAW,YAAE,IAAI,CAAC,KAAK,GAAQ,CAChD,GACO,CACX,CAAC,CAAC,CAAC,CACF,aACE,SAAS,EAAE,kBAAkB,EAAE,EAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,OAAO,EAAE,cAAc,aAEvB,eAAM,SAAS,EAAC,mBAAmB,YAAE,IAAI,CAAC,KAAK,GAAQ,EAEvD,eAAM,SAAS,EAAC,mBAAmB,YACjC,KAAC,gBAAgB,IAAC,SAAS,EAAC,yBAAyB,EAAC,IAAI,EAAE,EAAE,GAAI,GAC7D,IACL,CACL,CAAC;IACN,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const RouteGuard: () => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect } from "react";
3
+ import { matchPath, Outlet, useLocation } from "react-router";
4
+ import { useAuth } from "../authentication/hook.js";
5
+ import { useZudoku } from "../components/context/ZudokuContext.js";
6
+ import { ZudokuError } from "../util/invariant.js";
7
+ import { useLatest } from "../util/useLatest.js";
8
+ export const RouteGuard = () => {
9
+ const auth = useAuth();
10
+ const zudoku = useZudoku();
11
+ const location = useLocation();
12
+ const latestPath = useLatest(location.pathname);
13
+ const isProtected = zudoku.options.protectedRoutes?.some((path) => matchPath({ path, end: true }, location.pathname));
14
+ useEffect(() => {
15
+ if (isProtected && !auth.isAuthenticated) {
16
+ void zudoku.authentication?.signIn({
17
+ redirectTo: latestPath.current,
18
+ });
19
+ }
20
+ }, [isProtected, auth.isAuthenticated, zudoku.authentication, latestPath]);
21
+ if (isProtected && !auth.isAuthenticated) {
22
+ return null;
23
+ }
24
+ if (isProtected && !auth.isAuthEnabled) {
25
+ throw new ZudokuError("Authentication is not enabled", {
26
+ title: "Authentication is not enabled",
27
+ developerHint: "To use protectedRoutes you need authentication to be enabled",
28
+ });
29
+ }
30
+ return _jsx(Outlet, {});
31
+ };
32
+ //# sourceMappingURL=RouteGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteGuard.js","sourceRoot":"","sources":["../../../src/lib/core/RouteGuard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChE,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAClD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;gBACjC,UAAU,EAAE,UAAU,CAAC,OAAO;aAC/B,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3E,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,IAAI,WAAW,CAAC,+BAA+B,EAAE;YACrD,KAAK,EAAE,+BAA+B;YACtC,aAAa,EACX,8DAA8D;SACjE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAC,MAAM,KAAG,CAAC;AACpB,CAAC,CAAC"}
@@ -53,16 +53,18 @@ export type ZudokuContextOptions = {
53
53
  components?: MdxComponentsType;
54
54
  };
55
55
  overrides?: ComponentsContextType;
56
+ protectedRoutes?: string[];
56
57
  };
57
58
  export declare class ZudokuContext {
59
+ readonly options: ZudokuContextOptions;
58
60
  plugins: NonNullable<ZudokuContextOptions["plugins"]>;
59
61
  sidebars: SidebarConfig;
60
62
  topNavigation: NonNullable<ZudokuContextOptions["topNavigation"]>;
61
63
  meta: ZudokuContextOptions["metadata"];
62
64
  page: ZudokuContextOptions["page"];
63
65
  authentication?: ZudokuContextOptions["authentication"];
64
- private navigationPlugins;
65
- constructor(config: ZudokuContextOptions);
66
+ private readonly navigationPlugins;
67
+ constructor(options: ZudokuContextOptions);
66
68
  initialize: () => Promise<void>;
67
69
  getApiIdentities: () => Promise<ApiIdentity[]>;
68
70
  getPluginSidebar: (path: string) => Promise<import("../../config/validators/SidebarSchema.js").SidebarItem[]>;
@@ -1,6 +1,7 @@
1
1
  import { joinPath } from "../util/joinPath.js";
2
2
  import { isApiIdentityPlugin, isNavigationPlugin, needsInitialization, } from "./plugins.js";
3
3
  export class ZudokuContext {
4
+ options;
4
5
  plugins;
5
6
  sidebars;
6
7
  topNavigation;
@@ -8,14 +9,15 @@ export class ZudokuContext {
8
9
  page;
9
10
  authentication;
10
11
  navigationPlugins;
11
- constructor(config) {
12
- this.plugins = config.plugins ?? [];
13
- this.topNavigation = config.topNavigation ?? [];
14
- this.sidebars = config.sidebars ?? {};
12
+ constructor(options) {
13
+ this.options = options;
14
+ this.plugins = options.plugins ?? [];
15
+ this.topNavigation = options.topNavigation ?? [];
16
+ this.sidebars = options.sidebars ?? {};
15
17
  this.navigationPlugins = this.plugins.filter(isNavigationPlugin);
16
- this.authentication = config.authentication;
17
- this.meta = config.metadata;
18
- this.page = config.page;
18
+ this.authentication = options.authentication;
19
+ this.meta = options.metadata;
20
+ this.page = options.page;
19
21
  }
20
22
  initialize = async () => {
21
23
  await Promise.all(this.plugins
@@ -1 +1 @@
1
- {"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../src/lib/core/ZudokuContext.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAElB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AAuDtB,MAAM,OAAO,aAAa;IACjB,OAAO,CAA+C;IACtD,QAAQ,CAAgB;IACxB,aAAa,CAAqD;IAClE,IAAI,CAAmC;IACvC,IAAI,CAA+B;IACnC,cAAc,CAA0C;IACvD,iBAAiB,CAAqB;IAE9C,YAAY,MAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,UAAU,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;IACJ,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACxC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACpC,CACF,CAAC;QAEF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,WAAW,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QAE/D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../src/lib/core/ZudokuContext.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAElB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AAwDtB,MAAM,OAAO,aAAa;IASI;IARrB,OAAO,CAA+C;IACtD,QAAQ,CAAgB;IACxB,aAAa,CAAqD;IAClE,IAAI,CAAmC;IACvC,IAAI,CAA+B;IACnC,cAAc,CAA0C;IAC9C,iBAAiB,CAAqB;IAEvD,YAA4B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;QACvD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,UAAU,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;IACJ,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACxC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACpC,CACF,CAAC;QAEF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,WAAW,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QAE/D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;CACH"}
@@ -0,0 +1,3 @@
1
+ import { GraphQLScalarType } from "graphql/index.js";
2
+ export declare const CIRCULAR_REF = "$[Circular Reference]";
3
+ export declare const GraphQLJSONSchema: GraphQLScalarType<unknown, unknown>;
@@ -0,0 +1,38 @@
1
+ import { GraphQLJSON } from "graphql-type-json";
2
+ import { GraphQLScalarType } from "graphql/index.js";
3
+ export const CIRCULAR_REF = "$[Circular Reference]";
4
+ const handleCircularRefs = (obj, visited = new Map(), path = []) => {
5
+ if (obj === CIRCULAR_REF)
6
+ return CIRCULAR_REF;
7
+ if (obj === null || typeof obj !== "object")
8
+ return obj;
9
+ const currentPath = path.join(".");
10
+ if (obj.type === "object" && obj.properties) {
11
+ const schemaKey = Object.keys(obj.properties).sort().join("-");
12
+ if (visited.has(schemaKey)) {
13
+ const prevPaths = visited.get(schemaKey);
14
+ if (prevPaths.some((prev) => currentPath.startsWith(prev))) {
15
+ return CIRCULAR_REF;
16
+ }
17
+ visited.set(schemaKey, [...prevPaths, currentPath]);
18
+ }
19
+ else {
20
+ visited.set(schemaKey, [currentPath]);
21
+ }
22
+ }
23
+ if (Array.isArray(obj)) {
24
+ return obj.map((item, index) => handleCircularRefs(item, visited, [...path, `${index}`]));
25
+ }
26
+ const result = {};
27
+ for (const [key, value] of Object.entries(obj)) {
28
+ result[key] = handleCircularRefs(value, visited, [...path, key]);
29
+ }
30
+ return result;
31
+ };
32
+ export const GraphQLJSONSchema = new GraphQLScalarType({
33
+ ...GraphQLJSON,
34
+ name: "JSONSchema",
35
+ description: "OpenAPI schema scalar type that handles circular references",
36
+ serialize: (value) => GraphQLJSON.serialize(handleCircularRefs(value)),
37
+ });
38
+ //# sourceMappingURL=circular.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circular.js","sourceRoot":"","sources":["../../../../src/lib/oas/graphql/circular.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,CAAC,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAEpD,MAAM,kBAAkB,GAAG,CACzB,GAAQ,EACR,UAAU,IAAI,GAAG,EAAoB,EACrC,OAAiB,EAAE,EACd,EAAE;IACP,IAAI,GAAG,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC9C,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAExD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/D,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC3D,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC7B,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;IACrD,GAAG,WAAW;IACd,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,6DAA6D;IAC1E,SAAS,EAAE,CAAC,KAAc,EAAE,EAAE,CAC5B,WAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;CACnD,CAAC,CAAC"}
@@ -12,5 +12,13 @@ export declare const createOperationSlug: (slugify: CountableSlugify, operation:
12
12
  export type SchemaImports = Record<string, () => Promise<{
13
13
  schema: OpenAPIDocument;
14
14
  }>>;
15
+ type GraphQLOperationObject = OperationObject & {
16
+ path: string;
17
+ method: string;
18
+ slug?: string;
19
+ parentTag?: string;
20
+ };
21
+ export declare const getAllTags: (schema: OpenAPIDocument) => TagObject[];
22
+ export declare const getAllOperations: (paths?: PathsObject) => GraphQLOperationObject[];
15
23
  export declare const schema: import("graphql").GraphQLSchema;
16
24
  export declare const createGraphQLServer: (options?: Omit<YogaServerOptions<any, any>, "schema">) => import("graphql-yoga").YogaServerInstance<any, any>;
@@ -4,33 +4,34 @@ import { slugifyWithCounter, } from "@sindresorhus/slugify";
4
4
  import { GraphQLJSON, GraphQLJSONObject } from "graphql-type-json";
5
5
  import { createYoga } from "graphql-yoga";
6
6
  import { HttpMethods, validate, } from "../parser/index.js";
7
+ import { GraphQLJSONSchema } from "./circular.js";
7
8
  export const createOperationSlug = (slugify, operation, tag) => {
8
- const summary = (operation.summary ?? "") +
9
- (operation.operationId
10
- ? "-" +
11
- operation.operationId.slice(0, operation.summary ? Infinity : Infinity)
12
- : "");
13
- return slugify((tag ? tag + "-" : "") +
14
- (summary || `${operation.method}-${operation.path}`));
9
+ const summary = operation.summary ||
10
+ operation.operationId ||
11
+ `${operation.method}-${operation.path}`;
12
+ const prefix = tag ? `${tag}-` : "";
13
+ return slugify(prefix + summary);
15
14
  };
16
15
  const builder = new SchemaBuilder({});
17
16
  const JSONScalar = builder.addScalarType("JSON", GraphQLJSON);
18
17
  const JSONObjectScalar = builder.addScalarType("JSONObject", GraphQLJSONObject);
19
- const getAllTags = (schema) => {
20
- const tags = schema.tags ?? [];
21
- // Extract tags from operations
22
- const operationTags = Object.values(schema.paths ?? {})
18
+ const JSONSchemaScalar = builder.addScalarType("JSONSchema", GraphQLJSONSchema);
19
+ export const getAllTags = (schema) => {
20
+ const rootTags = schema.tags ?? [];
21
+ const operationTags = new Set(Object.values(schema.paths ?? {})
23
22
  .flatMap((path) => Object.values(path ?? {}))
24
- .flatMap((operation) => typeof operation === "object" && "tags" in operation
25
- ? (operation.tags ?? [])
26
- : []);
27
- // Remove duplicates and tags that appear in the schema
28
- const uniqueOperationTags = [...new Set(operationTags)].filter((tag) => !tags.some((rootTag) => rootTag.name === tag));
29
- return [...tags, ...uniqueOperationTags.map((tag) => ({ name: tag }))];
23
+ .flatMap((op) => op.tags ?? []));
24
+ return [
25
+ // Keep root tags that are actually used in operations
26
+ ...rootTags.filter((tag) => operationTags.has(tag.name)),
27
+ // Add tags found in operations but not defined in root tags
28
+ ...[...operationTags]
29
+ .filter((tag) => !rootTags.some((rt) => rt.name === tag))
30
+ .map((tag) => ({ name: tag })),
31
+ ];
30
32
  };
31
- const getAllOperations = (paths, tag) => {
32
- const slugify = slugifyWithCounter();
33
- return Object.entries(paths ?? {}).flatMap(([path, value]) => HttpMethods.flatMap((method) => {
33
+ export const getAllOperations = (paths) => {
34
+ const operations = Object.entries(paths ?? {}).flatMap(([path, value]) => HttpMethods.flatMap((method) => {
34
35
  if (!value?.[method])
35
36
  return [];
36
37
  const operation = value[method];
@@ -44,35 +45,34 @@ const getAllOperations = (paths, tag) => {
44
45
  (pp) => !operationParameters.some((op) => op.name === pp.name && op.in === pp.in)),
45
46
  ...operationParameters,
46
47
  ];
47
- const slugData = {
48
- summary: operation.summary,
49
- operationId: operation.operationId,
50
- path,
51
- method,
52
- };
53
48
  return {
54
49
  ...operation,
55
50
  method,
56
51
  path,
57
52
  parameters,
58
53
  tags: operation.tags ?? [],
59
- slug: createOperationSlug(slugify, slugData, tag),
60
54
  };
61
55
  }));
56
+ return operations;
62
57
  };
63
58
  const SchemaTag = builder.objectRef("SchemaTag").implement({
64
59
  fields: (t) => ({
65
- name: t.exposeString("name", { nullable: true }),
60
+ name: t.exposeString("name"),
66
61
  description: t.exposeString("description", { nullable: true }),
67
62
  operations: t.field({
68
63
  type: [OperationItem],
69
64
  resolve: (parent, _args, ctx) => {
70
- const rootTags = getAllTags(ctx.schema).map((tag) => tag.name);
71
- return getAllOperations(ctx.schema.paths, parent.name).filter((item) => parent.name
72
- ? item.tags.includes(parent.name)
73
- : item.tags.length === 0 ||
65
+ const rootTags = ctx.tags.map((tag) => tag.name);
66
+ return ctx.operations
67
+ .filter((item) => parent.name
68
+ ? item.tags?.includes(parent.name)
69
+ : item.tags?.length === 0 ||
74
70
  // If none of the tags are present in the root tags, then show them here
75
- item.tags.every((tag) => !rootTags.includes(tag)));
71
+ item.tags?.every((tag) => !rootTags.includes(tag)))
72
+ .map((item) => ({
73
+ ...item,
74
+ parentTag: parent.name,
75
+ }));
76
76
  },
77
77
  }),
78
78
  }),
@@ -147,7 +147,7 @@ const ParameterItem = builder
147
147
  })),
148
148
  nullable: true,
149
149
  }),
150
- schema: t.expose("schema", { type: JSONScalar, nullable: true }),
150
+ schema: t.expose("schema", { type: JSONSchemaScalar, nullable: true }),
151
151
  }),
152
152
  });
153
153
  const MediaTypeItem = builder
@@ -155,7 +155,7 @@ const MediaTypeItem = builder
155
155
  .implement({
156
156
  fields: (t) => ({
157
157
  mediaType: t.exposeString("mediaType"),
158
- schema: t.expose("schema", { type: JSONScalar, nullable: true }),
158
+ schema: t.expose("schema", { type: JSONSchemaScalar, nullable: true }),
159
159
  examples: t.expose("examples", { type: [ExampleItem], nullable: true }),
160
160
  encoding: t.expose("encoding", { type: [EncodingItem], nullable: true }),
161
161
  }),
@@ -184,7 +184,19 @@ const OperationItem = builder
184
184
  .objectRef("OperationItem")
185
185
  .implement({
186
186
  fields: (t) => ({
187
- slug: t.exposeString("slug"),
187
+ slug: t.field({
188
+ type: "String",
189
+ resolve: (parent, _, ctx) => {
190
+ const slugData = {
191
+ summary: parent.summary,
192
+ operationId: parent.operationId,
193
+ path: parent.path,
194
+ method: parent.method,
195
+ };
196
+ //TODO: fix parent tag parent.tags
197
+ return createOperationSlug(ctx.slugify, slugData, parent.parentTag);
198
+ },
199
+ }),
188
200
  path: t.exposeString("path"),
189
201
  method: t.exposeString("method"),
190
202
  operationId: t.exposeString("operationId", { nullable: true }),
@@ -282,8 +294,8 @@ const Schema = builder.objectRef("Schema").implement({
282
294
  name: t.arg.string(),
283
295
  },
284
296
  type: [SchemaTag],
285
- resolve: (root, args) => {
286
- const tags = [...getAllTags(root), { name: "" }];
297
+ resolve: (root, args, ctx) => {
298
+ const tags = [...ctx.tags, { name: "" }];
287
299
  return args.name ? tags.filter((tag) => tag.name === args.name) : tags;
288
300
  },
289
301
  }),
@@ -294,11 +306,15 @@ const Schema = builder.objectRef("Schema").implement({
294
306
  method: t.arg.string(),
295
307
  operationId: t.arg.string(),
296
308
  tag: t.arg.string(),
309
+ untagged: t.arg.boolean(),
297
310
  },
298
- resolve: (parent, args) => getAllOperations(parent.paths).filter((item) => (!args.operationId || item.operationId === args.operationId) &&
299
- (!args.path || item.path === args.path) &&
300
- (!args.method || item.method === args.method) &&
301
- (!args.tag || item.tags.includes(args.tag))),
311
+ resolve: (parent, args, ctx) => ctx.operations.filter((op) => {
312
+ return ((!args.operationId || op.operationId === args.operationId) &&
313
+ (!args.path || op.path === args.path) &&
314
+ (!args.method || op.method === args.method) &&
315
+ (!args.tag || op.tags?.some((tag) => args.tag?.includes(tag))) &&
316
+ (!args.untagged || (op.tags ?? []).length === 0));
317
+ }),
302
318
  }),
303
319
  }),
304
320
  });
@@ -327,6 +343,9 @@ builder.queryType({
327
343
  schema = await validate(args.input);
328
344
  }
329
345
  ctx.schema = schema;
346
+ ctx.operations = getAllOperations(schema.paths);
347
+ ctx.slugify = slugifyWithCounter();
348
+ ctx.tags = getAllTags(schema);
330
349
  return schema;
331
350
  },
332
351
  }),