zudoku 0.0.0-fix-downgrade-openapi-parser.aac00796 → 0.0.0-fix-prevent-full-deref-allof.b02efbe5
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.
- package/dist/app/main.d.ts +91 -1
- package/dist/app/main.js +5 -1
- package/dist/app/main.js.map +1 -1
- package/dist/config/config.d.ts +15 -46
- package/dist/config/validators/BuildSchema.js +18 -3
- package/dist/config/validators/BuildSchema.js.map +1 -1
- package/dist/config/validators/InputNavigationSchema.d.ts +61 -61
- package/dist/config/validators/NavigationSchema.js +2 -4
- package/dist/config/validators/NavigationSchema.js.map +1 -1
- package/dist/config/validators/ProtectedRoutesSchema.d.ts +1 -1
- package/dist/config/validators/validate.d.ts +203 -5
- package/dist/config/validators/validate.js +44 -1
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/config/validators/validate.test.js +43 -0
- package/dist/config/validators/validate.test.js.map +1 -1
- package/dist/flat-config.d.ts +31 -2
- package/dist/lib/auth/issuer.js +3 -0
- package/dist/lib/auth/issuer.js.map +1 -1
- package/dist/lib/authentication/authentication.d.ts +1 -1
- package/dist/lib/authentication/providers/auth0.js +6 -1
- package/dist/lib/authentication/providers/auth0.js.map +1 -1
- package/dist/lib/authentication/providers/firebase.d.ts +4 -0
- package/dist/lib/authentication/providers/firebase.js +215 -0
- package/dist/lib/authentication/providers/firebase.js.map +1 -0
- package/dist/lib/authentication/providers/supabase.js +1 -6
- package/dist/lib/authentication/providers/supabase.js.map +1 -1
- package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +24 -0
- package/dist/lib/authentication/ui/ZudokuAuthUi.js +124 -0
- package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Apple.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Apple.js +4 -0
- package/dist/lib/authentication/ui/icons/Apple.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Facebook.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Facebook.js +4 -0
- package/dist/lib/authentication/ui/icons/Facebook.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Github.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Github.js +4 -0
- package/dist/lib/authentication/ui/icons/Github.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Google.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Google.js +4 -0
- package/dist/lib/authentication/ui/icons/Google.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Microsoft.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Microsoft.js +4 -0
- package/dist/lib/authentication/ui/icons/Microsoft.js.map +1 -0
- package/dist/lib/authentication/ui/icons/X.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/X.js +4 -0
- package/dist/lib/authentication/ui/icons/X.js.map +1 -0
- package/dist/lib/components/Autocomplete.d.ts +3 -1
- package/dist/lib/components/Autocomplete.js +6 -2
- package/dist/lib/components/Autocomplete.js.map +1 -1
- package/dist/lib/components/Heading.d.ts +1 -1
- package/dist/lib/components/Layout.js +3 -2
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/components/Mermaid.d.ts +7 -0
- package/dist/lib/components/Mermaid.js +42 -0
- package/dist/lib/components/Mermaid.js.map +1 -0
- package/dist/lib/components/PagefindSearchMeta.d.ts +8 -0
- package/dist/lib/components/PagefindSearchMeta.js +7 -0
- package/dist/lib/components/PagefindSearchMeta.js.map +1 -0
- package/dist/lib/components/Zudoku.js +2 -5
- package/dist/lib/components/Zudoku.js.map +1 -1
- package/dist/lib/components/navigation/NavigationItem.js +2 -2
- package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
- package/dist/lib/core/RouteGuard.js +7 -7
- package/dist/lib/core/RouteGuard.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +3 -3
- package/dist/lib/errors/ErrorAlert.js +1 -1
- package/dist/lib/errors/RouterError.d.ts +3 -1
- package/dist/lib/errors/RouterError.js +3 -2
- package/dist/lib/errors/RouterError.js.map +1 -1
- package/dist/lib/oas/parser/index.d.ts +1 -0
- package/dist/lib/oas/parser/index.js +7 -3
- package/dist/lib/oas/parser/index.js.map +1 -1
- package/dist/lib/plugins/api-keys/ProtectedRoute.js +4 -1
- package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -1
- package/dist/lib/plugins/openapi/CollapsibleCode.d.ts +1 -0
- package/dist/lib/plugins/openapi/CollapsibleCode.js +2 -1
- package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -1
- package/dist/lib/plugins/openapi/DownloadSchemaButton.d.ts +3 -0
- package/dist/lib/plugins/openapi/DownloadSchemaButton.js +47 -0
- package/dist/lib/plugins/openapi/DownloadSchemaButton.js.map +1 -0
- package/dist/lib/plugins/openapi/Endpoint.js +3 -6
- package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
- package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.d.ts +5 -0
- package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js +10 -0
- package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js.map +1 -0
- package/dist/lib/plugins/openapi/OasProvider.js +22 -13
- package/dist/lib/plugins/openapi/OasProvider.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +16 -6
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.d.ts +2 -1
- package/dist/lib/plugins/openapi/OperationListItem.js +4 -3
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterList.js +7 -4
- package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js +17 -6
- package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +9 -2
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +5 -2
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.d.ts +4 -2
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +26 -4
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/SchemaList.js +2 -1
- package/dist/lib/plugins/openapi/SchemaList.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.d.ts +2 -2
- package/dist/lib/plugins/openapi/Sidecar.js +61 -26
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarBox.js +4 -4
- package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarExamples.d.ts +9 -2
- package/dist/lib/plugins/openapi/SidecarExamples.js +24 -43
- package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
- package/dist/lib/plugins/openapi/components/ConstValue.js +1 -1
- package/dist/lib/plugins/openapi/components/ConstValue.js.map +1 -1
- package/dist/lib/plugins/openapi/components/EnumValues.js +1 -1
- package/dist/lib/plugins/openapi/components/EnumValues.js.map +1 -1
- package/dist/lib/plugins/openapi/components/NonHighlightedCode.d.ts +4 -0
- package/dist/lib/plugins/openapi/components/NonHighlightedCode.js +5 -0
- package/dist/lib/plugins/openapi/components/NonHighlightedCode.js.map +1 -0
- package/dist/lib/plugins/openapi/components/ResponseContent.js +5 -6
- package/dist/lib/plugins/openapi/components/ResponseContent.js.map +1 -1
- package/dist/lib/plugins/openapi/index.js +11 -5
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +29 -13
- package/dist/lib/plugins/openapi/playground/BodyPanel.js +67 -15
- package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js +2 -2
- package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +1 -1
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Headers.js +23 -83
- package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +10 -2
- package/dist/lib/plugins/openapi/playground/ParamsGrid.js +8 -1
- package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/PathParams.js +2 -3
- package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.d.ts +7 -0
- package/dist/lib/plugins/openapi/playground/Playground.js +57 -25
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -2
- package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/QueryParams.js +16 -40
- package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.d.ts +8 -0
- package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js +19 -0
- package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js +1 -1
- package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.d.ts +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js +540 -0
- package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.d.ts +40 -0
- package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js +205 -0
- package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +2 -2
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +17 -8
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.js +31 -16
- package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/UnionView.js +2 -5
- package/dist/lib/plugins/openapi/schema/UnionView.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/union-helpers.js +0 -1
- package/dist/lib/plugins/openapi/schema/union-helpers.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/utils.d.ts +2 -2
- package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
- package/dist/lib/plugins/openapi/util/generateSchemaExample.js +9 -11
- package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
- package/dist/lib/plugins/openapi/util/getRoutes.d.ts +6 -1
- package/dist/lib/plugins/openapi/util/getRoutes.js +29 -2
- package/dist/lib/plugins/openapi/util/getRoutes.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/IndexingDialog.d.ts +3 -0
- package/dist/lib/plugins/search-pagefind/IndexingDialog.js +64 -0
- package/dist/lib/plugins/search-pagefind/IndexingDialog.js.map +1 -0
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js +22 -5
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/ResultList.js +5 -4
- package/dist/lib/plugins/search-pagefind/ResultList.js.map +1 -1
- package/dist/lib/shiki.d.ts +1 -1
- package/dist/lib/shiki.js +18 -12
- package/dist/lib/shiki.js.map +1 -1
- package/dist/lib/ui/Badge.d.ts +3 -3
- package/dist/lib/ui/Badge.js +9 -7
- package/dist/lib/ui/Badge.js.map +1 -1
- package/dist/lib/ui/Button.d.ts +2 -2
- package/dist/lib/ui/Button.js +9 -7
- package/dist/lib/ui/Button.js.map +1 -1
- package/dist/lib/ui/ButtonGroup.d.ts +11 -0
- package/dist/lib/ui/ButtonGroup.js +28 -0
- package/dist/lib/ui/ButtonGroup.js.map +1 -0
- package/dist/lib/ui/Checkbox.d.ts +2 -2
- package/dist/lib/ui/Checkbox.js +4 -4
- package/dist/lib/ui/Checkbox.js.map +1 -1
- package/dist/lib/ui/CodeBlock.d.ts +0 -1
- package/dist/lib/ui/CodeBlock.js +1 -1
- package/dist/lib/ui/CodeBlock.js.map +1 -1
- package/dist/lib/ui/Collapsible.d.ts +4 -4
- package/dist/lib/ui/Collapsible.js +11 -4
- package/dist/lib/ui/Collapsible.js.map +1 -1
- package/dist/lib/ui/Command.d.ts +3 -3
- package/dist/lib/ui/Command.js +2 -2
- package/dist/lib/ui/Command.js.map +1 -1
- package/dist/lib/ui/DropdownMenu.d.ts +21 -23
- package/dist/lib/ui/DropdownMenu.js +47 -32
- package/dist/lib/ui/DropdownMenu.js.map +1 -1
- package/dist/lib/ui/EmbeddedCodeBlock.d.ts +0 -1
- package/dist/lib/ui/EmbeddedCodeBlock.js +3 -2
- package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
- package/dist/lib/ui/Frame.d.ts +8 -0
- package/dist/lib/ui/Frame.js +22 -0
- package/dist/lib/ui/Frame.js.map +1 -0
- package/dist/lib/ui/Item.d.ts +23 -0
- package/dist/lib/ui/Item.js +67 -0
- package/dist/lib/ui/Item.js.map +1 -0
- package/dist/lib/ui/Kbd.d.ts +3 -0
- package/dist/lib/ui/Kbd.js +10 -0
- package/dist/lib/ui/Kbd.js.map +1 -0
- package/dist/lib/ui/NativeSelect.d.ts +5 -0
- package/dist/lib/ui/NativeSelect.js +14 -0
- package/dist/lib/ui/NativeSelect.js.map +1 -0
- package/dist/lib/ui/Select.d.ts +13 -11
- package/dist/lib/ui/Select.js +34 -23
- package/dist/lib/ui/Select.js.map +1 -1
- package/dist/lib/ui/Separator.d.ts +4 -0
- package/dist/lib/ui/Separator.js +8 -0
- package/dist/lib/ui/Separator.js.map +1 -0
- package/dist/lib/ui/Tooltip.d.ts +7 -7
- package/dist/lib/ui/Tooltip.js +16 -10
- package/dist/lib/ui/Tooltip.js.map +1 -1
- package/dist/lib/util/MdxComponents.d.ts +1 -0
- package/dist/lib/util/MdxComponents.js +2 -0
- package/dist/lib/util/MdxComponents.js.map +1 -1
- package/dist/lib/util/createVariantComponent.d.ts +5 -2
- package/dist/lib/util/createVariantComponent.js +5 -2
- package/dist/lib/util/createVariantComponent.js.map +1 -1
- package/dist/lib/util/flattenAllOf.d.ts +4 -0
- package/dist/lib/util/flattenAllOf.js +88 -0
- package/dist/lib/util/flattenAllOf.js.map +1 -0
- package/dist/lib/util/flattenAllOf.test.d.ts +1 -0
- package/dist/lib/util/flattenAllOf.test.js +532 -0
- package/dist/lib/util/flattenAllOf.test.js.map +1 -0
- package/dist/lib/util/readFrontmatter.d.ts +6 -0
- package/dist/lib/util/readFrontmatter.js +12 -0
- package/dist/lib/util/readFrontmatter.js.map +1 -0
- package/dist/vite/api/SchemaManager.d.ts +5 -0
- package/dist/vite/api/SchemaManager.js +30 -18
- package/dist/vite/api/SchemaManager.js.map +1 -1
- package/dist/vite/config.js +7 -1
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/dev-server.js +25 -0
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/mdx/remark-last-modified.js +57 -3
- package/dist/vite/mdx/remark-last-modified.js.map +1 -1
- package/dist/vite/pagefind-dev-index.d.ts +16 -0
- package/dist/vite/pagefind-dev-index.js +68 -0
- package/dist/vite/pagefind-dev-index.js.map +1 -0
- package/dist/vite/plugin-api.js +41 -3
- package/dist/vite/plugin-api.js.map +1 -1
- package/dist/vite/plugin-frontmatter.js +3 -5
- package/dist/vite/plugin-frontmatter.js.map +1 -1
- package/dist/vite/plugin-markdown-export.js +3 -4
- package/dist/vite/plugin-markdown-export.js.map +1 -1
- package/dist/vite/plugin-theme.js +10 -1
- package/dist/vite/plugin-theme.js.map +1 -1
- package/dist/vite/prerender/prerender.js +1 -19
- package/dist/vite/prerender/prerender.js.map +1 -1
- package/dist/vite/prerender/utils.d.ts +2 -0
- package/dist/vite/prerender/utils.js +24 -0
- package/dist/vite/prerender/utils.js.map +1 -0
- package/lib/Button-CynVW1JV.js +53 -0
- package/lib/Button-CynVW1JV.js.map +1 -0
- package/lib/ClaudeLogo-PxFjou9w.js +69 -0
- package/lib/ClaudeLogo-PxFjou9w.js.map +1 -0
- package/lib/{Command-CUcrW3qs.js → Command-BpT1iBE6.js} +25 -25
- package/lib/Command-BpT1iBE6.js.map +1 -0
- package/lib/Drawer-Ci7XwhqT.js.map +1 -1
- package/lib/DropdownMenu-C8SX_-S_.js +104 -0
- package/lib/DropdownMenu-C8SX_-S_.js.map +1 -0
- package/lib/{ErrorAlert-DE3Sf66a.js → ErrorAlert-BqjbNHIn.js} +475 -456
- package/lib/ErrorAlert-BqjbNHIn.js.map +1 -0
- package/lib/IndexingDialog-B5zCiUKr.js +100 -0
- package/lib/IndexingDialog-B5zCiUKr.js.map +1 -0
- package/lib/MdxPage-CVFatbHw.js +210 -0
- package/lib/MdxPage-CVFatbHw.js.map +1 -0
- package/lib/Mermaid-CIFixY6C.js +102 -0
- package/lib/Mermaid-CIFixY6C.js.map +1 -0
- package/lib/{OAuthErrorPage-BycMozgn.js → OAuthErrorPage-Dup79DJk.js} +7 -7
- package/lib/{OAuthErrorPage-BycMozgn.js.map → OAuthErrorPage-Dup79DJk.js.map} +1 -1
- package/lib/OasProvider-C10RPbY8.js +40 -0
- package/lib/OasProvider-C10RPbY8.js.map +1 -0
- package/lib/OperationList--zX7OAlH.js +5824 -0
- package/lib/OperationList--zX7OAlH.js.map +1 -0
- package/lib/RouteGuard-BXy13JSz.js +77 -0
- package/lib/RouteGuard-BXy13JSz.js.map +1 -0
- package/lib/RouterError-CKOZTsDD.js +42 -0
- package/lib/RouterError-CKOZTsDD.js.map +1 -0
- package/lib/{SchemaList-xZSf3IMh.js → SchemaList-CxafJA_P.js} +28 -27
- package/lib/SchemaList-CxafJA_P.js.map +1 -0
- package/lib/SchemaView-j0PtjY8U.js +597 -0
- package/lib/SchemaView-j0PtjY8U.js.map +1 -0
- package/lib/Select-VmDZ-nKe.js +337 -0
- package/lib/Select-VmDZ-nKe.js.map +1 -0
- package/lib/{SignUp-6SGx9Yyq.js → SignUp-Pm_LGm6T.js} +13 -13
- package/lib/{SignUp-6SGx9Yyq.js.map → SignUp-Pm_LGm6T.js.map} +1 -1
- package/lib/{SyntaxHighlight-zvlnSnHB.js → SyntaxHighlight-bkmst3oV.js} +710 -662
- package/lib/{SyntaxHighlight-zvlnSnHB.js.map → SyntaxHighlight-bkmst3oV.js.map} +1 -1
- package/lib/{Toc-Da9yp7lo.js → Toc-TUXNFbKl.js} +2 -2
- package/lib/{Toc-Da9yp7lo.js.map → Toc-TUXNFbKl.js.map} +1 -1
- package/lib/{ZudokuContext-BUZ5hkWB.js → ZudokuContext-np1wheDl.js} +8 -8
- package/lib/{ZudokuContext-BUZ5hkWB.js.map → ZudokuContext-np1wheDl.js.map} +1 -1
- package/lib/___vite-browser-external_commonjs-proxy-Cga3HsWk.js +9 -0
- package/lib/___vite-browser-external_commonjs-proxy-Cga3HsWk.js.map +1 -0
- package/lib/{chunk-PVWAREVJ-BMhpCH5D.js → chunk-PVWAREVJ-dLIqswPy.js} +5 -5
- package/lib/{chunk-PVWAREVJ-BMhpCH5D.js.map → chunk-PVWAREVJ-dLIqswPy.js.map} +1 -1
- package/lib/{circular-DvuimBGQ.js → circular-GQ_uaom2.js} +6360 -5953
- package/lib/circular-GQ_uaom2.js.map +1 -0
- package/lib/createServer-sU0O9wfJ.js +16693 -0
- package/lib/createServer-sU0O9wfJ.js.map +1 -0
- package/lib/{errors-CuGgh3hf.js → errors-B0hNTPFO.js} +3 -3
- package/lib/{errors-CuGgh3hf.js.map → errors-B0hNTPFO.js.map} +1 -1
- package/lib/{hook-CMeoxziF.js → hook-CvSwcbk6.js} +3 -3
- package/lib/{hook-CMeoxziF.js.map → hook-CvSwcbk6.js.map} +1 -1
- package/lib/index-B6SRNBIt.js +3700 -0
- package/lib/index-B6SRNBIt.js.map +1 -0
- package/lib/index-CrcNWbel.js.map +1 -1
- package/lib/index-DnMgJWrI.js +133 -0
- package/lib/index-DnMgJWrI.js.map +1 -0
- package/lib/{index-rYHsvtTo.js → index-DscsS121.js} +2 -2
- package/lib/{index-rYHsvtTo.js.map → index-DscsS121.js.map} +1 -1
- package/lib/{index-B1rmok4X.js → index-mfkNWYG-.js} +10 -10
- package/lib/{index-B1rmok4X.js.map → index-mfkNWYG-.js.map} +1 -1
- package/lib/{index.esm-BnYHxCYC.js → index.esm-DtzT_KoE.js} +20 -20
- package/lib/{index.esm-BnYHxCYC.js.map → index.esm-DtzT_KoE.js.map} +1 -1
- package/lib/{invariant-Bm-FVUQE.js → invariant-CGOLuIIz.js} +3 -3
- package/lib/{invariant-Bm-FVUQE.js.map → invariant-CGOLuIIz.js.map} +1 -1
- package/lib/{mutation-BSU0xu4m.js → mutation-BlmnL5qL.js} +2 -2
- package/lib/{mutation-BSU0xu4m.js.map → mutation-BlmnL5qL.js.map} +1 -1
- package/lib/ui/ActionButton.js +1 -1
- package/lib/ui/Badge.js +27 -13
- package/lib/ui/Badge.js.map +1 -1
- package/lib/ui/Button.js +26 -24
- package/lib/ui/Button.js.map +1 -1
- package/lib/ui/ButtonGroup.js +77 -0
- package/lib/ui/ButtonGroup.js.map +1 -0
- package/lib/ui/Checkbox.js +29 -26
- package/lib/ui/Checkbox.js.map +1 -1
- package/lib/ui/CodeBlock.js +7 -7
- package/lib/ui/CodeBlock.js.map +1 -1
- package/lib/ui/Collapsible.js +32 -5
- package/lib/ui/Collapsible.js.map +1 -1
- package/lib/ui/Command.js +3 -3
- package/lib/ui/Command.js.map +1 -1
- package/lib/ui/DropdownMenu.js +227 -140
- package/lib/ui/DropdownMenu.js.map +1 -1
- package/lib/ui/EmbeddedCodeBlock.js +26 -25
- package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
- package/lib/ui/Frame.js +81 -0
- package/lib/ui/Frame.js.map +1 -0
- package/lib/ui/Item.js +188 -0
- package/lib/ui/Item.js.map +1 -0
- package/lib/ui/Kbd.js +32 -0
- package/lib/ui/Kbd.js.map +1 -0
- package/lib/ui/NativeSelect.js +57 -0
- package/lib/ui/NativeSelect.js.map +1 -0
- package/lib/ui/Select.js +166 -116
- package/lib/ui/Select.js.map +1 -1
- package/lib/ui/Separator.js +27 -0
- package/lib/ui/Separator.js.map +1 -0
- package/lib/ui/SyntaxHighlight.js +3 -3
- package/lib/ui/Tabs.js +10 -10
- package/lib/ui/Tooltip.js +55 -28
- package/lib/ui/Tooltip.js.map +1 -1
- package/lib/zudoku.__internal.js +349 -349
- package/lib/zudoku.__internal.js.map +1 -1
- package/lib/zudoku.auth-auth0.js +7 -7
- package/lib/zudoku.auth-auth0.js.map +1 -1
- package/lib/zudoku.auth-azureb2c.js +4 -4
- package/lib/zudoku.auth-clerk.js +2 -2
- package/lib/zudoku.auth-openid.js +5 -5
- package/lib/zudoku.auth-supabase.js +31 -34
- package/lib/zudoku.auth-supabase.js.map +1 -1
- package/lib/zudoku.components.js +7 -7
- package/lib/zudoku.hooks.js +11 -24
- package/lib/zudoku.hooks.js.map +1 -1
- package/lib/zudoku.mermaid.js +10 -0
- package/lib/zudoku.mermaid.js.map +1 -0
- package/lib/zudoku.plugin-api-catalog.js +6 -6
- package/lib/zudoku.plugin-api-keys.js +223 -198
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-custom-pages.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +3 -3
- package/lib/zudoku.plugin-redirect.js +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +184 -226
- package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
- package/lib/zudoku.plugins.js.map +1 -1
- package/lib/zudoku.router.js +2 -2
- package/package.json +36 -23
- package/src/app/main.css +1 -1
- package/src/app/main.tsx +5 -1
- package/src/lib/auth/issuer.ts +3 -0
- package/src/lib/authentication/authentication.ts +1 -1
- package/src/lib/authentication/providers/auth0.tsx +6 -1
- package/src/lib/authentication/providers/firebase.tsx +284 -0
- package/src/lib/authentication/providers/supabase.tsx +2 -7
- package/src/lib/authentication/ui/ZudokuAuthUi.tsx +335 -0
- package/src/lib/authentication/ui/icons/Apple.tsx +10 -0
- package/src/lib/authentication/ui/icons/Facebook.tsx +15 -0
- package/src/lib/authentication/ui/icons/Github.tsx +16 -0
- package/src/lib/authentication/ui/icons/Google.tsx +16 -0
- package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -0
- package/src/lib/authentication/ui/icons/X.tsx +10 -0
- package/src/lib/components/Autocomplete.tsx +11 -2
- package/src/lib/components/Layout.tsx +3 -2
- package/src/lib/components/Mermaid.tsx +68 -0
- package/src/lib/components/PagefindSearchMeta.tsx +14 -0
- package/src/lib/components/Zudoku.tsx +4 -7
- package/src/lib/components/navigation/NavigationItem.tsx +7 -20
- package/src/lib/core/RouteGuard.tsx +9 -9
- package/src/lib/core/plugins.ts +2 -2
- package/src/lib/errors/ErrorAlert.tsx +1 -1
- package/src/lib/errors/RouterError.tsx +7 -2
- package/src/lib/oas/parser/index.ts +10 -3
- package/src/lib/plugins/api-keys/ProtectedRoute.tsx +11 -7
- package/src/lib/plugins/openapi/CollapsibleCode.tsx +5 -3
- package/src/lib/plugins/openapi/DownloadSchemaButton.tsx +115 -0
- package/src/lib/plugins/openapi/Endpoint.tsx +20 -27
- package/src/lib/plugins/openapi/GeneratedExampleSidecarBox.tsx +52 -0
- package/src/lib/plugins/openapi/OasProvider.tsx +30 -17
- package/src/lib/plugins/openapi/OperationList.tsx +46 -21
- package/src/lib/plugins/openapi/OperationListItem.tsx +15 -12
- package/src/lib/plugins/openapi/ParameterList.tsx +37 -23
- package/src/lib/plugins/openapi/ParameterListItem.tsx +105 -54
- package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +48 -7
- package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +101 -33
- package/src/lib/plugins/openapi/SchemaList.tsx +4 -0
- package/src/lib/plugins/openapi/Sidecar.tsx +145 -65
- package/src/lib/plugins/openapi/SidecarBox.tsx +26 -4
- package/src/lib/plugins/openapi/SidecarExamples.tsx +91 -79
- package/src/lib/plugins/openapi/components/ConstValue.tsx +1 -1
- package/src/lib/plugins/openapi/components/EnumValues.tsx +2 -2
- package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -0
- package/src/lib/plugins/openapi/components/ResponseContent.tsx +63 -53
- package/src/lib/plugins/openapi/index.tsx +16 -7
- package/src/lib/plugins/openapi/interfaces.ts +28 -7
- package/src/lib/plugins/openapi/playground/BodyPanel.tsx +246 -30
- package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +10 -6
- package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +3 -2
- package/src/lib/plugins/openapi/playground/Headers.tsx +103 -219
- package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +33 -1
- package/src/lib/plugins/openapi/playground/PathParams.tsx +26 -34
- package/src/lib/plugins/openapi/playground/Playground.tsx +74 -32
- package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +9 -30
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +82 -136
- package/src/lib/plugins/openapi/playground/request-panel/MultipartField.tsx +91 -0
- package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +1 -1
- package/src/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.tsx +872 -0
- package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +349 -0
- package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +2 -6
- package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +1 -1
- package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +89 -55
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +98 -60
- package/src/lib/plugins/openapi/schema/UnionView.tsx +6 -17
- package/src/lib/plugins/openapi/schema/union-helpers.ts +0 -1
- package/src/lib/plugins/openapi/schema/utils.ts +5 -2
- package/src/lib/plugins/openapi/util/generateSchemaExample.ts +11 -11
- package/src/lib/plugins/openapi/util/getRoutes.tsx +35 -3
- package/src/lib/plugins/search-pagefind/IndexingDialog.tsx +163 -0
- package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +61 -22
- package/src/lib/plugins/search-pagefind/ResultList.tsx +8 -3
- package/src/lib/shiki.ts +21 -12
- package/src/lib/ui/Badge.tsx +21 -12
- package/src/lib/ui/Button.tsx +10 -9
- package/src/lib/ui/ButtonGroup.tsx +82 -0
- package/src/lib/ui/Checkbox.tsx +23 -24
- package/src/lib/ui/CodeBlock.tsx +3 -4
- package/src/lib/ui/Collapsible.tsx +26 -4
- package/src/lib/ui/Command.tsx +3 -3
- package/src/lib/ui/DropdownMenu.tsx +226 -170
- package/src/lib/ui/EmbeddedCodeBlock.tsx +21 -19
- package/src/lib/ui/Frame.tsx +81 -0
- package/src/lib/ui/Item.tsx +192 -0
- package/src/lib/ui/Kbd.tsx +28 -0
- package/src/lib/ui/NativeSelect.tsx +47 -0
- package/src/lib/ui/Select.tsx +153 -126
- package/src/lib/ui/Separator.tsx +25 -0
- package/src/lib/ui/Tooltip.tsx +54 -32
- package/src/lib/util/MdxComponents.tsx +2 -0
- package/src/lib/util/createVariantComponent.tsx +31 -5
- package/src/lib/util/flattenAllOf.test.ts +637 -0
- package/src/lib/util/flattenAllOf.ts +122 -0
- package/src/lib/util/readFrontmatter.ts +13 -0
- package/src/shiki/langs/markdown-nix.js +1 -0
- package/src/shiki/langs/openscad.js +1 -0
- package/dist/lib/plugins/openapi/playground/InlineInput.d.ts +0 -4
- package/dist/lib/plugins/openapi/playground/InlineInput.js +0 -3
- package/dist/lib/plugins/openapi/playground/InlineInput.js.map +0 -1
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.d.ts +0 -5
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js +0 -7
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js.map +0 -1
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.d.ts +0 -4
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js +0 -10
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js.map +0 -1
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.d.ts +0 -5
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js +0 -16
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js.map +0 -1
- package/dist/vite/create-pagefind-index.d.ts +0 -4
- package/dist/vite/create-pagefind-index.js +0 -12
- package/dist/vite/create-pagefind-index.js.map +0 -1
- package/lib/Button-DmS4u8Lj.js +0 -51
- package/lib/Button-DmS4u8Lj.js.map +0 -1
- package/lib/Command-CUcrW3qs.js.map +0 -1
- package/lib/DropdownMenu-BZ2NKQ3K.js +0 -126
- package/lib/DropdownMenu-BZ2NKQ3K.js.map +0 -1
- package/lib/ErrorAlert-DE3Sf66a.js.map +0 -1
- package/lib/MdxPage-DZfeC0QY.js +0 -240
- package/lib/MdxPage-DZfeC0QY.js.map +0 -1
- package/lib/OasProvider-Bf5zBDBY.js +0 -36
- package/lib/OasProvider-Bf5zBDBY.js.map +0 -1
- package/lib/OperationList-Cmiw1xm2.js +0 -5446
- package/lib/OperationList-Cmiw1xm2.js.map +0 -1
- package/lib/Pagination-CJszmeSA.js +0 -37
- package/lib/Pagination-CJszmeSA.js.map +0 -1
- package/lib/RouteGuard-DhU3LRr1.js +0 -81
- package/lib/RouteGuard-DhU3LRr1.js.map +0 -1
- package/lib/RouterError-VDLnrFqF.js +0 -41
- package/lib/RouterError-VDLnrFqF.js.map +0 -1
- package/lib/SchemaList-xZSf3IMh.js.map +0 -1
- package/lib/SchemaView-tHXTm5oM.js +0 -458
- package/lib/SchemaView-tHXTm5oM.js.map +0 -1
- package/lib/Select-C1DeCqKv.js +0 -372
- package/lib/Select-C1DeCqKv.js.map +0 -1
- package/lib/circular-DvuimBGQ.js.map +0 -1
- package/lib/createServer-D9UvCoDf.js +0 -12559
- package/lib/createServer-D9UvCoDf.js.map +0 -1
- package/lib/index-Cr9_YzOZ.js +0 -3364
- package/lib/index-Cr9_YzOZ.js.map +0 -1
- package/lib/useExposedProps-U3pmsHaG.js +0 -113
- package/lib/useExposedProps-U3pmsHaG.js.map +0 -1
- package/src/lib/plugins/openapi/playground/InlineInput.tsx +0 -6
- package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.tsx +0 -36
- package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.tsx +0 -25
- package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.tsx +0 -42
package/src/lib/core/plugins.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LucideIcon } from "lucide-react";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
3
|
import type { Location, RouteObject } from "react-router";
|
|
4
4
|
import type { Navigation } from "../../config/validators/NavigationSchema.js";
|
|
5
5
|
import type { ProtectedRoutesInput } from "../../config/validators/ProtectedRoutesSchema.js";
|
|
@@ -64,7 +64,7 @@ export interface CommonPlugin {
|
|
|
64
64
|
initialize?: (
|
|
65
65
|
context: ZudokuContext,
|
|
66
66
|
) => Promise<void | boolean> | void | boolean;
|
|
67
|
-
getHead?: (
|
|
67
|
+
getHead?: (args: { location: Location }) => ReactNode | undefined;
|
|
68
68
|
getMdxComponents?: () => MdxComponentsType;
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -17,7 +17,7 @@ export function ErrorAlert({ error }: { error: unknown }) {
|
|
|
17
17
|
const stringError = cause instanceof Error ? String(cause.stack) : stack;
|
|
18
18
|
|
|
19
19
|
return (
|
|
20
|
-
<Typography className="grid grid-cols-1
|
|
20
|
+
<Typography className="grid grid-cols-1 max-w-none! pt-(--padding-content-top)">
|
|
21
21
|
<Heading level={1}>{title}</Heading>
|
|
22
22
|
Error: {message}
|
|
23
23
|
{hint && <DeveloperHint className="mb-4">{hint}</DeveloperHint>}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { isRouteErrorResponse, useRouteError } from "react-router";
|
|
2
2
|
import { NotFoundPage } from "../components/NotFoundPage.js";
|
|
3
|
+
import { cn } from "../util/cn.js";
|
|
3
4
|
import { ErrorAlert } from "./ErrorAlert.js";
|
|
4
5
|
|
|
5
|
-
export function RouterError() {
|
|
6
|
+
export function RouterError({ className }: { className?: string }) {
|
|
6
7
|
const error = useRouteError();
|
|
7
8
|
|
|
8
9
|
if (isRouteErrorResponse(error) && error.status === 404) {
|
|
9
10
|
return <NotFoundPage />;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
return
|
|
13
|
+
return (
|
|
14
|
+
<div className={cn("mx-4 max-w-2xl", className)}>
|
|
15
|
+
<ErrorAlert error={error} />
|
|
16
|
+
</div>
|
|
17
|
+
);
|
|
13
18
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { merge as mergeAllOf } from "allof-merge";
|
|
2
1
|
import { GraphQLError } from "graphql/error/index.js";
|
|
3
2
|
import { OpenAPIV3, type OpenAPIV3_1 } from "openapi-types";
|
|
3
|
+
import { flattenAllOfProcessor } from "../../util/flattenAllOf.js";
|
|
4
4
|
import { dereference, type JSONSchema } from "./dereference/index.js";
|
|
5
5
|
import { upgradeSchema } from "./upgrade/index.js";
|
|
6
6
|
|
|
@@ -25,6 +25,8 @@ export type TagObject = DeepOmitReference<OpenAPIV3_1.TagObject>;
|
|
|
25
25
|
export type ExampleObject = DeepOmitReference<OpenAPIV3_1.ExampleObject>;
|
|
26
26
|
export type EncodingObject = DeepOmitReference<OpenAPIV3_1.EncodingObject>;
|
|
27
27
|
export type SchemaObject = DeepOmitReference<OpenAPIV3_1.SchemaObject>;
|
|
28
|
+
export type ArraySchemaObject =
|
|
29
|
+
DeepOmitReference<OpenAPIV3_1.ArraySchemaObject>;
|
|
28
30
|
export type ServerObject = DeepOmitReference<OpenAPIV3_1.ServerObject>;
|
|
29
31
|
|
|
30
32
|
export const HttpMethods = Object.values(OpenAPIV3.HttpMethods);
|
|
@@ -101,7 +103,12 @@ export const validate = async (schemaInput: unknown) => {
|
|
|
101
103
|
|
|
102
104
|
const dereferenced = await dereference(schema);
|
|
103
105
|
const upgraded = upgradeSchema(dereferenced);
|
|
104
|
-
const merged = mergeAllOf(upgraded) as OpenAPIDocument;
|
|
105
106
|
|
|
106
|
-
|
|
107
|
+
const flattened = await flattenAllOfProcessor({
|
|
108
|
+
schema: upgraded,
|
|
109
|
+
file: "schema.json",
|
|
110
|
+
dereference: async (schema) => schema,
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
return flattened;
|
|
107
114
|
};
|
|
@@ -11,15 +11,19 @@ export const ProtectedRoute = () => {
|
|
|
11
11
|
return null;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
if (!auth.isAuthEnabled) {
|
|
15
|
+
return (
|
|
16
|
+
<div className="flex flex-col justify-center gap-2 items-center h-1/2">
|
|
17
|
+
<DeveloperHint className="max-w-[600px]">
|
|
18
|
+
Authentication needs to be enabled for API keys to work. Enable it in
|
|
19
|
+
your Zudoku configuration under <code>authentication</code>.
|
|
20
|
+
</DeveloperHint>
|
|
21
|
+
</div>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
14
25
|
return auth.isAuthenticated ? (
|
|
15
26
|
<Outlet />
|
|
16
|
-
) : !auth.isAuthEnabled ? (
|
|
17
|
-
<div className="flex flex-col justify-center gap-2 items-center h-1/2">
|
|
18
|
-
<DeveloperHint className="max-w-[600px]">
|
|
19
|
-
Authentication needs to be enabled for API keys to work. Enable it in
|
|
20
|
-
your Zudoku configuration under <code>authentication</code>.
|
|
21
|
-
</DeveloperHint>
|
|
22
|
-
</div>
|
|
23
27
|
) : (
|
|
24
28
|
<div className="flex flex-col justify-center gap-2 items-center h-1/2">
|
|
25
29
|
Please login first to view this page
|
|
@@ -9,6 +9,10 @@ import {
|
|
|
9
9
|
import { cn } from "../../util/cn.js";
|
|
10
10
|
import useIsomorphicLayoutEffect from "../../util/useIsomorphicLayoutEffect.js";
|
|
11
11
|
|
|
12
|
+
export const OverflowOverlay = () => (
|
|
13
|
+
<div className="absolute inset-0 bg-linear-to-b from-transparent to-zinc-50/60 dark:to-zinc-950/90 z-10 transition-all group-hover:to-transparent" />
|
|
14
|
+
);
|
|
15
|
+
|
|
12
16
|
export const CollapsibleCode = ({
|
|
13
17
|
children,
|
|
14
18
|
maxHeight = 250,
|
|
@@ -48,9 +52,7 @@ export const CollapsibleCode = ({
|
|
|
48
52
|
!open && isOverflowing && "max-h-(--max-height)",
|
|
49
53
|
)}
|
|
50
54
|
>
|
|
51
|
-
{!open && isOverflowing &&
|
|
52
|
-
<div className=" absolute inset-0 bg-gradient-to-b from-transparent to-zinc-50/60 dark:to-zinc-950/90 z-10 transition-all group-hover:to-transparent"></div>
|
|
53
|
-
)}
|
|
55
|
+
{!open && isOverflowing && <OverflowOverlay />}
|
|
54
56
|
<div ref={contentRef}>{children}</div>
|
|
55
57
|
{!open && isOverflowing && (
|
|
56
58
|
<CollapsibleTrigger
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ChevronDownIcon,
|
|
3
|
+
CopyIcon,
|
|
4
|
+
DownloadIcon,
|
|
5
|
+
ExternalLinkIcon,
|
|
6
|
+
} from "lucide-react";
|
|
7
|
+
import type { MouseEventHandler } from "react";
|
|
8
|
+
import { Button } from "zudoku/components";
|
|
9
|
+
import { ButtonGroup } from "zudoku/ui/ButtonGroup.js";
|
|
10
|
+
import {
|
|
11
|
+
DropdownMenu,
|
|
12
|
+
DropdownMenuContent,
|
|
13
|
+
DropdownMenuItem,
|
|
14
|
+
DropdownMenuTrigger,
|
|
15
|
+
} from "zudoku/ui/DropdownMenu.js";
|
|
16
|
+
import { useCopyToClipboard } from "../../util/useCopyToClipboard.js";
|
|
17
|
+
import { ChatGPTLogo } from "../markdown/assets/ChatGPTLogo.js";
|
|
18
|
+
import { ClaudeLogo } from "../markdown/assets/ClaudeLogo.js";
|
|
19
|
+
|
|
20
|
+
export const DownloadSchemaButton = ({
|
|
21
|
+
downloadUrl,
|
|
22
|
+
}: {
|
|
23
|
+
downloadUrl: string;
|
|
24
|
+
}) => {
|
|
25
|
+
const [, copyToClipboard] = useCopyToClipboard();
|
|
26
|
+
|
|
27
|
+
const handleDownload: MouseEventHandler<HTMLAnchorElement> = async (e) => {
|
|
28
|
+
const isExternal = downloadUrl.includes("://");
|
|
29
|
+
|
|
30
|
+
if (!isExternal) return;
|
|
31
|
+
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
try {
|
|
34
|
+
const response = await fetch(downloadUrl);
|
|
35
|
+
if (!response.ok)
|
|
36
|
+
throw new Error(`Failed to fetch: ${response.statusText}`);
|
|
37
|
+
|
|
38
|
+
const blob = await response.blob();
|
|
39
|
+
const url = window.URL.createObjectURL(blob);
|
|
40
|
+
const a = document.createElement("a");
|
|
41
|
+
a.href = url;
|
|
42
|
+
a.download = downloadUrl.split("/").pop() || "schema.json";
|
|
43
|
+
document.body.appendChild(a);
|
|
44
|
+
a.click();
|
|
45
|
+
document.body.removeChild(a);
|
|
46
|
+
window.URL.revokeObjectURL(url);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
// biome-ignore lint/suspicious/noConsole: Logging error
|
|
49
|
+
console.error("Failed to download schema:", error);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<ButtonGroup>
|
|
55
|
+
<Button
|
|
56
|
+
variant="outline"
|
|
57
|
+
size="sm"
|
|
58
|
+
className="flex items-center gap-1.5"
|
|
59
|
+
asChild
|
|
60
|
+
>
|
|
61
|
+
<a href={downloadUrl} download onClick={handleDownload}>
|
|
62
|
+
<DownloadIcon size={14} />
|
|
63
|
+
Download schema
|
|
64
|
+
</a>
|
|
65
|
+
</Button>
|
|
66
|
+
<DropdownMenu>
|
|
67
|
+
<DropdownMenuTrigger asChild>
|
|
68
|
+
<Button size="sm" variant="outline" className="px-1.5">
|
|
69
|
+
<ChevronDownIcon size={14} />
|
|
70
|
+
</Button>
|
|
71
|
+
</DropdownMenuTrigger>
|
|
72
|
+
<DropdownMenuContent align="end">
|
|
73
|
+
<DropdownMenuItem asChild>
|
|
74
|
+
<a href={downloadUrl} target="_blank" rel="noopener noreferrer">
|
|
75
|
+
<ExternalLinkIcon size={14} />
|
|
76
|
+
Open in new tab
|
|
77
|
+
</a>
|
|
78
|
+
</DropdownMenuItem>
|
|
79
|
+
<DropdownMenuItem
|
|
80
|
+
onClick={async () => {
|
|
81
|
+
const response = await fetch(downloadUrl);
|
|
82
|
+
const schema = await response.text();
|
|
83
|
+
copyToClipboard(schema);
|
|
84
|
+
}}
|
|
85
|
+
>
|
|
86
|
+
<CopyIcon size={14} />
|
|
87
|
+
Copy to clipboard
|
|
88
|
+
</DropdownMenuItem>
|
|
89
|
+
<DropdownMenuItem
|
|
90
|
+
onClick={() => {
|
|
91
|
+
const prompt = encodeURIComponent(
|
|
92
|
+
`Help me understand this API: ${new URL(downloadUrl, window.location.href).href}`,
|
|
93
|
+
);
|
|
94
|
+
window.open(`https://claude.ai/new?q=${prompt}`, "_blank");
|
|
95
|
+
}}
|
|
96
|
+
>
|
|
97
|
+
<ClaudeLogo className="size-4" />
|
|
98
|
+
Use in Claude
|
|
99
|
+
</DropdownMenuItem>
|
|
100
|
+
<DropdownMenuItem
|
|
101
|
+
onClick={() => {
|
|
102
|
+
const prompt = encodeURIComponent(
|
|
103
|
+
`Help me understand this API: ${new URL(downloadUrl, window.location.href).href}`,
|
|
104
|
+
);
|
|
105
|
+
window.open(`https://chatgpt.com/?q=${prompt}`, "_blank");
|
|
106
|
+
}}
|
|
107
|
+
>
|
|
108
|
+
<ChatGPTLogo className="size-4" />
|
|
109
|
+
Use in ChatGPT
|
|
110
|
+
</DropdownMenuItem>
|
|
111
|
+
</DropdownMenuContent>
|
|
112
|
+
</DropdownMenu>
|
|
113
|
+
</ButtonGroup>
|
|
114
|
+
);
|
|
115
|
+
};
|
|
@@ -32,7 +32,7 @@ const CopyButton = ({ url }: { url: string }) => {
|
|
|
32
32
|
});
|
|
33
33
|
}}
|
|
34
34
|
variant="ghost"
|
|
35
|
-
size="icon"
|
|
35
|
+
size="icon-xs"
|
|
36
36
|
>
|
|
37
37
|
{isCopied ? (
|
|
38
38
|
<CheckIcon className="text-green-600" size={14} />
|
|
@@ -53,40 +53,33 @@ export const Endpoint = () => {
|
|
|
53
53
|
);
|
|
54
54
|
|
|
55
55
|
const { servers } = result.data.schema;
|
|
56
|
-
|
|
57
56
|
const firstServer = servers.at(0);
|
|
58
57
|
|
|
59
58
|
if (!firstServer) return null;
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
<
|
|
64
|
-
|
|
60
|
+
return (
|
|
61
|
+
<div className="flex items-center gap-1.5 flex-nowrap">
|
|
62
|
+
<span className="font-medium text-sm">Endpoint</span>
|
|
63
|
+
{servers.length > 1 ? (
|
|
64
|
+
<SimpleSelect
|
|
65
|
+
className="font-mono text-xs border-input bg-transparent dark:bg-input/30 dark:hover:bg-input/50 py-1.5 max-w-[450px] truncate"
|
|
66
|
+
onChange={(e) =>
|
|
67
|
+
startTransition(() => setSelectedServer(e.target.value))
|
|
68
|
+
}
|
|
69
|
+
value={selectedServer}
|
|
70
|
+
showChevrons={servers.length > 1}
|
|
71
|
+
options={servers.map((server) => ({
|
|
72
|
+
value: server.url,
|
|
73
|
+
label: server.url,
|
|
74
|
+
}))}
|
|
75
|
+
/>
|
|
76
|
+
) : (
|
|
65
77
|
<InlineCode className="text-xs px-2 py-1.5" selectOnClick>
|
|
66
78
|
{firstServer.url}
|
|
67
79
|
</InlineCode>
|
|
68
|
-
|
|
69
|
-
</div>
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return (
|
|
74
|
-
<div className="flex flex-wrap items-center gap-2">
|
|
75
|
-
<span className="font-medium text-sm">Endpoint</span>
|
|
80
|
+
)}
|
|
76
81
|
|
|
77
|
-
<
|
|
78
|
-
className="font-mono text-xs bg-border/50 dark:bg-border/70 py-1.5 max-w-[450px] truncate"
|
|
79
|
-
onChange={(e) =>
|
|
80
|
-
startTransition(() => setSelectedServer(e.target.value))
|
|
81
|
-
}
|
|
82
|
-
value={selectedServer}
|
|
83
|
-
showChevrons={servers.length > 1}
|
|
84
|
-
options={servers.map((server) => ({
|
|
85
|
-
value: server.url,
|
|
86
|
-
label: server.url,
|
|
87
|
-
}))}
|
|
88
|
-
/>
|
|
89
|
-
<CopyButton url={selectedServer} />
|
|
82
|
+
<CopyButton url={servers.length > 1 ? selectedServer : firstServer.url} />
|
|
90
83
|
</div>
|
|
91
84
|
);
|
|
92
85
|
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { InfoIcon } from "lucide-react";
|
|
2
|
+
import { SyntaxHighlight } from "zudoku/ui/SyntaxHighlight.js";
|
|
3
|
+
import {
|
|
4
|
+
Tooltip,
|
|
5
|
+
TooltipContent,
|
|
6
|
+
TooltipProvider,
|
|
7
|
+
TooltipTrigger,
|
|
8
|
+
} from "zudoku/ui/Tooltip.js";
|
|
9
|
+
import { NonHighlightedCode } from "./components/NonHighlightedCode.js";
|
|
10
|
+
import * as SidecarBox from "./SidecarBox.js";
|
|
11
|
+
|
|
12
|
+
export const GeneratedExampleSidecarBox = ({
|
|
13
|
+
code,
|
|
14
|
+
isOnScreen,
|
|
15
|
+
shouldLazyHighlight,
|
|
16
|
+
}: {
|
|
17
|
+
code: string;
|
|
18
|
+
isOnScreen: boolean;
|
|
19
|
+
shouldLazyHighlight?: boolean;
|
|
20
|
+
}) => {
|
|
21
|
+
return (
|
|
22
|
+
<SidecarBox.Root>
|
|
23
|
+
<SidecarBox.Head className="text-xs flex justify-between items-center">
|
|
24
|
+
<div className="flex items-center gap-1.5">
|
|
25
|
+
<span className="font-medium">Example Request Body</span>
|
|
26
|
+
<TooltipProvider>
|
|
27
|
+
<Tooltip>
|
|
28
|
+
<TooltipTrigger asChild>
|
|
29
|
+
<InfoIcon size={13} />
|
|
30
|
+
</TooltipTrigger>
|
|
31
|
+
<TooltipContent>
|
|
32
|
+
This example is auto-generated from the schema.
|
|
33
|
+
</TooltipContent>
|
|
34
|
+
</Tooltip>
|
|
35
|
+
</TooltipProvider>
|
|
36
|
+
</div>
|
|
37
|
+
</SidecarBox.Head>
|
|
38
|
+
<SidecarBox.Body className="p-0">
|
|
39
|
+
{shouldLazyHighlight && !isOnScreen ? (
|
|
40
|
+
<NonHighlightedCode code={code} />
|
|
41
|
+
) : (
|
|
42
|
+
<SyntaxHighlight
|
|
43
|
+
embedded
|
|
44
|
+
language="json"
|
|
45
|
+
code={code}
|
|
46
|
+
className="[--scrollbar-color:gray] rounded-none text-xs max-h-[200px]"
|
|
47
|
+
/>
|
|
48
|
+
)}
|
|
49
|
+
</SidecarBox.Body>
|
|
50
|
+
</SidecarBox.Root>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
2
|
import { Outlet } from "react-router";
|
|
3
|
-
import {
|
|
3
|
+
import { joinUrl } from "../../util/joinUrl.js";
|
|
4
4
|
import type { GraphQLClient } from "./client/GraphQLClient.js";
|
|
5
5
|
import { GraphQLProvider } from "./client/GraphQLContext.js";
|
|
6
6
|
import { OasConfigProvider } from "./context.js";
|
|
7
7
|
import type { OasPluginConfig } from "./interfaces.js";
|
|
8
|
-
import {
|
|
8
|
+
import { getVersionMetadata } from "./util/getRoutes.js";
|
|
9
9
|
|
|
10
10
|
export const OasProvider = ({
|
|
11
11
|
basePath,
|
|
@@ -19,25 +19,38 @@ export const OasProvider = ({
|
|
|
19
19
|
client: GraphQLClient;
|
|
20
20
|
}) => {
|
|
21
21
|
const value = useMemo(() => {
|
|
22
|
-
const versions =
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
const { versions: availableVersions, labels } = getVersionMetadata(config);
|
|
23
|
+
const currentVersion = version ?? availableVersions.at(0);
|
|
24
|
+
|
|
25
|
+
const versionLinks = Object.fromEntries(
|
|
26
|
+
availableVersions.map((id) => [
|
|
27
|
+
id,
|
|
28
|
+
{ path: joinUrl(basePath, id), label: labels[id] ?? id },
|
|
29
|
+
]),
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const resolveInput = (): string | (() => Promise<unknown>) => {
|
|
33
|
+
if (!Array.isArray(config.input)) {
|
|
34
|
+
return config.input;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const versionConfig = currentVersion
|
|
38
|
+
? config.input.find((v) => v.path === currentVersion)
|
|
39
|
+
: config.input[0];
|
|
40
|
+
|
|
41
|
+
if (!versionConfig) {
|
|
42
|
+
throw new Error(`No input found for version: ${currentVersion}`);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return versionConfig.input;
|
|
46
|
+
};
|
|
32
47
|
|
|
33
48
|
return {
|
|
34
49
|
config: {
|
|
35
50
|
...config,
|
|
36
|
-
version:
|
|
37
|
-
versions:
|
|
38
|
-
|
|
39
|
-
),
|
|
40
|
-
...input,
|
|
51
|
+
version: currentVersion,
|
|
52
|
+
versions: versionLinks,
|
|
53
|
+
input: resolveInput(),
|
|
41
54
|
},
|
|
42
55
|
};
|
|
43
56
|
}, [config, basePath, version]);
|
|
@@ -18,9 +18,12 @@ import { CategoryHeading } from "../../components/CategoryHeading.js";
|
|
|
18
18
|
import { useApiIdentities } from "../../components/context/ZudokuContext.js";
|
|
19
19
|
import { Heading } from "../../components/Heading.js";
|
|
20
20
|
import { Markdown } from "../../components/Markdown.js";
|
|
21
|
+
import { PagefindSearchMeta } from "../../components/PagefindSearchMeta.js";
|
|
21
22
|
import { Pagination } from "../../components/Pagination.js";
|
|
23
|
+
import { joinUrl } from "../../util/joinUrl.js";
|
|
22
24
|
import { useCreateQuery } from "./client/useCreateQuery.js";
|
|
23
25
|
import { useOasConfig } from "./context.js";
|
|
26
|
+
import { DownloadSchemaButton } from "./DownloadSchemaButton.js";
|
|
24
27
|
import { Endpoint } from "./Endpoint.js";
|
|
25
28
|
import { graphql } from "./graphql/index.js";
|
|
26
29
|
import { UNTAGGED_PATH } from "./index.js";
|
|
@@ -146,6 +149,8 @@ const OperationsForTagQuery = graphql(/* GraphQL */ `
|
|
|
146
149
|
}
|
|
147
150
|
`);
|
|
148
151
|
|
|
152
|
+
const LAZY_OPERATION_LIST_THRESHOLD = 30;
|
|
153
|
+
|
|
149
154
|
export const OperationList = ({
|
|
150
155
|
tag,
|
|
151
156
|
untagged,
|
|
@@ -153,7 +158,7 @@ export const OperationList = ({
|
|
|
153
158
|
tag?: string;
|
|
154
159
|
untagged?: boolean;
|
|
155
160
|
}) => {
|
|
156
|
-
const { input, type, versions, version, options } = useOasConfig();
|
|
161
|
+
const { path, input, type, versions, version, options } = useOasConfig();
|
|
157
162
|
const { tag: tagFromParams } = useParams<"tag">();
|
|
158
163
|
const query = useCreateQuery(OperationsForTagQuery, {
|
|
159
164
|
input,
|
|
@@ -200,6 +205,10 @@ export const OperationList = ({
|
|
|
200
205
|
|
|
201
206
|
const { operations, next, prev, description: tagDescription } = schema.tag;
|
|
202
207
|
|
|
208
|
+
// Simple heuristic to determine if we should lazy highlight the code
|
|
209
|
+
// This is to avoid the performance issues when there are a lot of operations
|
|
210
|
+
const shouldLazyHighlight = operations.length > LAZY_OPERATION_LIST_THRESHOLD;
|
|
211
|
+
|
|
203
212
|
// The summary property is preferable here as it is a short description of
|
|
204
213
|
// the API, whereas the description property is typically longer and supports
|
|
205
214
|
// commonmark formatting, making it ill-suited for use in the meta description
|
|
@@ -238,12 +247,20 @@ export const OperationList = ({
|
|
|
238
247
|
const tagTitle = schema.tag.extensions?.["x-displayName"] ?? schema.tag.name;
|
|
239
248
|
const helmetTitle = [tagTitle, title].filter(Boolean).join(" - ");
|
|
240
249
|
|
|
250
|
+
const downloadUrl =
|
|
251
|
+
typeof input === "string"
|
|
252
|
+
? type === "url"
|
|
253
|
+
? input
|
|
254
|
+
: joinUrl(path, version, input.split("/").pop())
|
|
255
|
+
: undefined;
|
|
256
|
+
|
|
241
257
|
return (
|
|
242
258
|
<div
|
|
243
259
|
className="pt-(--padding-content-top)"
|
|
244
260
|
data-pagefind-filter="section:openapi"
|
|
245
261
|
data-pagefind-meta="section:openapi"
|
|
246
262
|
>
|
|
263
|
+
<PagefindSearchMeta name="category">{title}</PagefindSearchMeta>
|
|
247
264
|
<Helmet>
|
|
248
265
|
{helmetTitle && <title>{helmetTitle}</title>}
|
|
249
266
|
{metaDescription && (
|
|
@@ -256,7 +273,7 @@ export const OperationList = ({
|
|
|
256
273
|
className="w-full"
|
|
257
274
|
defaultOpen={options?.expandApiInformation}
|
|
258
275
|
>
|
|
259
|
-
<div className="flex flex-col gap-
|
|
276
|
+
<div className="flex flex-col gap-4 sm:flex-row justify-around items-start sm:items-end">
|
|
260
277
|
<div className="flex flex-col flex-1 gap-2">
|
|
261
278
|
<CategoryHeading>{title}</CategoryHeading>
|
|
262
279
|
<Heading
|
|
@@ -276,25 +293,32 @@ export const OperationList = ({
|
|
|
276
293
|
<Endpoint />
|
|
277
294
|
</div>
|
|
278
295
|
<div className="flex flex-col gap-4 sm:items-end">
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
296
|
+
<div className="flex gap-2 items-center">
|
|
297
|
+
{showVersions && (
|
|
298
|
+
<Select
|
|
299
|
+
onValueChange={(version) =>
|
|
300
|
+
// biome-ignore lint/style/noNonNullAssertion: is guaranteed to be defined
|
|
301
|
+
navigate(versions[version]!.path)
|
|
302
|
+
}
|
|
303
|
+
defaultValue={version}
|
|
304
|
+
disabled={!hasMultipleVersions}
|
|
305
|
+
>
|
|
306
|
+
<SelectTrigger className="w-[180px]" size="sm">
|
|
307
|
+
<SelectValue placeholder="Select version" />
|
|
308
|
+
</SelectTrigger>
|
|
309
|
+
<SelectContent>
|
|
310
|
+
{Object.entries(versions).map(([version, { label }]) => (
|
|
311
|
+
<SelectItem key={version} value={version}>
|
|
312
|
+
{label}
|
|
313
|
+
</SelectItem>
|
|
314
|
+
))}
|
|
315
|
+
</SelectContent>
|
|
316
|
+
</Select>
|
|
317
|
+
)}
|
|
318
|
+
{options?.schemaDownload?.enabled && downloadUrl && (
|
|
319
|
+
<DownloadSchemaButton downloadUrl={downloadUrl} />
|
|
320
|
+
)}
|
|
321
|
+
</div>
|
|
298
322
|
{schema.description && (
|
|
299
323
|
<CollapsibleTrigger className="flex items-center gap-1 text-sm font-medium text-muted-foreground group">
|
|
300
324
|
<span>API information</span>
|
|
@@ -337,6 +361,7 @@ export const OperationList = ({
|
|
|
337
361
|
<OperationListItem
|
|
338
362
|
operationFragment={fragment}
|
|
339
363
|
globalSelectedServer={globalSelectedServer}
|
|
364
|
+
shouldLazyHighlight={shouldLazyHighlight}
|
|
340
365
|
/>
|
|
341
366
|
<hr className="my-10" />
|
|
342
367
|
</div>
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
|
|
2
1
|
import { useState } from "react";
|
|
3
2
|
import { Badge } from "zudoku/ui/Badge.js";
|
|
3
|
+
import { Separator } from "zudoku/ui/Separator.js";
|
|
4
4
|
import { Heading } from "../../components/Heading.js";
|
|
5
5
|
import { Markdown } from "../../components/Markdown.js";
|
|
6
|
+
import { PagefindSearchMeta } from "../../components/PagefindSearchMeta.js";
|
|
6
7
|
import { cn } from "../../util/cn.js";
|
|
7
8
|
import { groupBy } from "../../util/groupBy.js";
|
|
8
9
|
import { renderIf } from "../../util/renderIf.js";
|
|
@@ -23,9 +24,11 @@ export type ParameterGroup = (typeof PARAM_GROUPS)[number];
|
|
|
23
24
|
export const OperationListItem = ({
|
|
24
25
|
operationFragment,
|
|
25
26
|
globalSelectedServer,
|
|
27
|
+
shouldLazyHighlight,
|
|
26
28
|
}: {
|
|
27
29
|
operationFragment: FragmentType<typeof OperationsFragment>;
|
|
28
30
|
globalSelectedServer?: string;
|
|
31
|
+
shouldLazyHighlight?: boolean;
|
|
29
32
|
}) => {
|
|
30
33
|
const operation = useFragment(OperationsFragment, operationFragment);
|
|
31
34
|
const groupedParameters = groupBy(
|
|
@@ -118,19 +121,22 @@ export const OperationListItem = ({
|
|
|
118
121
|
[]
|
|
119
122
|
),
|
|
120
123
|
)}
|
|
124
|
+
{renderIf(operation.requestBody?.content?.at(0)?.schema, () => (
|
|
125
|
+
<Separator className="my-4" />
|
|
126
|
+
))}
|
|
121
127
|
{renderIf(
|
|
122
128
|
operation.requestBody?.content?.at(0)?.schema,
|
|
123
129
|
(schema) => (
|
|
124
|
-
<div className="
|
|
130
|
+
<div className="flex flex-col gap-4">
|
|
125
131
|
<Heading
|
|
126
132
|
level={3}
|
|
127
133
|
className="capitalize flex items-center gap-2"
|
|
128
134
|
id={`${operation.slug}/request-body`}
|
|
129
135
|
>
|
|
130
136
|
{operation.summary && (
|
|
131
|
-
<
|
|
137
|
+
<PagefindSearchMeta>
|
|
132
138
|
{operation.summary} ›{" "}
|
|
133
|
-
</
|
|
139
|
+
</PagefindSearchMeta>
|
|
134
140
|
)}
|
|
135
141
|
Request Body{" "}
|
|
136
142
|
{operation.requestBody?.required === false ? (
|
|
@@ -143,17 +149,14 @@ export const OperationListItem = ({
|
|
|
143
149
|
</div>
|
|
144
150
|
),
|
|
145
151
|
)}
|
|
152
|
+
<Separator className="my-4" />
|
|
146
153
|
{operation.responses.length > 0 && (
|
|
147
154
|
<>
|
|
148
|
-
<Heading
|
|
149
|
-
level={3}
|
|
150
|
-
className="capitalize mt-8 pt-8 border-t"
|
|
151
|
-
id={`${operation.slug}/responses`}
|
|
152
|
-
>
|
|
155
|
+
<Heading level={3} id={`${operation.slug}/responses`}>
|
|
153
156
|
{operation.summary && (
|
|
154
|
-
<
|
|
157
|
+
<PagefindSearchMeta>
|
|
155
158
|
{operation.summary} ›{" "}
|
|
156
|
-
</
|
|
159
|
+
</PagefindSearchMeta>
|
|
157
160
|
)}
|
|
158
161
|
Responses
|
|
159
162
|
</Heading>
|
|
@@ -170,9 +173,9 @@ export const OperationListItem = ({
|
|
|
170
173
|
{renderIf(!options?.disableSidecar && !isMCPEndpoint, () => (
|
|
171
174
|
<Sidecar
|
|
172
175
|
selectedResponse={selectedResponse}
|
|
173
|
-
onSelectResponse={setSelectedResponse}
|
|
174
176
|
operation={operation}
|
|
175
177
|
globalSelectedServer={globalSelectedServer}
|
|
178
|
+
shouldLazyHighlight={shouldLazyHighlight}
|
|
176
179
|
/>
|
|
177
180
|
))}
|
|
178
181
|
</div>
|