zudoku 0.66.4 → 0.66.6
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 +6 -6
- package/dist/config/validators/InputNavigationSchema.d.ts +2 -0
- package/dist/config/validators/InputNavigationSchema.js +1 -0
- package/dist/config/validators/InputNavigationSchema.js.map +1 -1
- package/dist/config/validators/NavigationSchema.js +6 -1
- package/dist/config/validators/NavigationSchema.js.map +1 -1
- package/dist/flat-config.d.ts +1 -0
- package/dist/lib/authentication/components/CallbackHandler.js +1 -1
- package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
- package/dist/lib/authentication/providers/auth0.js +11 -7
- package/dist/lib/authentication/providers/auth0.js.map +1 -1
- package/dist/lib/authentication/providers/clerk.js +0 -22
- package/dist/lib/authentication/providers/clerk.js.map +1 -1
- package/dist/lib/authentication/providers/supabase.js +6 -15
- package/dist/lib/authentication/providers/supabase.js.map +1 -1
- package/dist/lib/core/RouteGuard.js +12 -7
- package/dist/lib/core/RouteGuard.js.map +1 -1
- package/dist/lib/oas/graphql/circular.d.ts +1 -0
- package/dist/lib/oas/graphql/circular.js +20 -5
- package/dist/lib/oas/graphql/circular.js.map +1 -1
- package/dist/lib/plugins/api-keys/index.d.ts +9 -5
- package/dist/lib/plugins/api-keys/index.js +18 -8
- package/dist/lib/plugins/api-keys/index.js.map +1 -1
- package/dist/lib/plugins/api-keys/settings/ApiKeyList.js +3 -0
- package/dist/lib/plugins/api-keys/settings/ApiKeyList.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +5 -1
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/utils.js +11 -3
- package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
- package/dist/lib/util/invariant.d.ts +1 -1
- package/dist/lib/util/invariant.js +2 -2
- package/dist/lib/util/invariant.js.map +1 -1
- package/dist/vite/api/SchemaManager.d.ts +1 -0
- package/dist/vite/api/SchemaManager.js +9 -3
- package/dist/vite/api/SchemaManager.js.map +1 -1
- package/dist/vite/mdx/remark-link-rewrite.js +1 -1
- package/dist/vite/plugin-api-keys.js +1 -0
- package/dist/vite/plugin-api-keys.js.map +1 -1
- package/dist/vite/prerender/utils.js +9 -3
- package/dist/vite/prerender/utils.js.map +1 -1
- package/lib/{ActionButton-BSM2oNHF.js → ActionButton-B0CXL1Lq.js} +3 -3
- package/lib/{ActionButton-BSM2oNHF.js.map → ActionButton-B0CXL1Lq.js.map} +1 -1
- package/lib/{Button-IOAeVaIH.js → Button-GUVe7pmt.js} +2 -2
- package/lib/{Button-IOAeVaIH.js.map → Button-GUVe7pmt.js.map} +1 -1
- package/lib/{Card-KFniaZn5.js → Card-DCdq37aA.js} +2 -2
- package/lib/{Card-KFniaZn5.js.map → Card-DCdq37aA.js.map} +1 -1
- package/lib/{ClaudeLogo-DgjivS8A.js → ClaudeLogo-BpqHBMS8.js} +4 -4
- package/lib/{ClaudeLogo-DgjivS8A.js.map → ClaudeLogo-BpqHBMS8.js.map} +1 -1
- package/lib/{Command-BpT1iBE6.js → Command-N6VujV30.js} +3 -3
- package/lib/{Command-BpT1iBE6.js.map → Command-N6VujV30.js.map} +1 -1
- package/lib/{Dialog-BQciPiHN.js → Dialog-hlvmmQ_c.js} +2 -2
- package/lib/{Dialog-BQciPiHN.js.map → Dialog-hlvmmQ_c.js.map} +1 -1
- package/lib/{Drawer-BRMcpfuF.js → Drawer-Ch7927PF.js} +2 -2
- package/lib/{Drawer-BRMcpfuF.js.map → Drawer-Ch7927PF.js.map} +1 -1
- package/lib/{DropdownMenu-C8SX_-S_.js → DropdownMenu-DN0jNrjj.js} +2 -2
- package/lib/{DropdownMenu-C8SX_-S_.js.map → DropdownMenu-DN0jNrjj.js.map} +1 -1
- package/lib/{Frame-DxlznfVd.js → Frame-DKlOmSkU.js} +2 -2
- package/lib/{Frame-DxlznfVd.js.map → Frame-DKlOmSkU.js.map} +1 -1
- package/lib/{IndexingDialog-DZWj_3cU.js → IndexingDialog-D0YdGfbn.js} +3 -3
- package/lib/{IndexingDialog-DZWj_3cU.js.map → IndexingDialog-D0YdGfbn.js.map} +1 -1
- package/lib/{Input-D-kqEQ5M.js → Input-B6YcAPv-.js} +39 -18
- package/lib/Input-B6YcAPv-.js.map +1 -0
- package/lib/{MdxPage-BL-HbZrv.js → MdxPage-CeFSxGb_.js} +11 -11
- package/lib/{MdxPage-BL-HbZrv.js.map → MdxPage-CeFSxGb_.js.map} +1 -1
- package/lib/{Mermaid-BjSczjLW.js → Mermaid-COVtAqcZ.js} +4 -4
- package/lib/{Mermaid-BjSczjLW.js.map → Mermaid-COVtAqcZ.js.map} +1 -1
- package/lib/{OAuthErrorPage-DQtg28Go.js → OAuthErrorPage-XTPBOMN8.js} +9 -9
- package/lib/OAuthErrorPage-XTPBOMN8.js.map +1 -0
- package/lib/{OasProvider--qcZwrKS.js → OasProvider-BS4rdzZC.js} +4 -4
- package/lib/{OasProvider--qcZwrKS.js.map → OasProvider-BS4rdzZC.js.map} +1 -1
- package/lib/{OperationList-CSJYzxQY.js → OperationList-Dg0Nm1tg.js} +136 -133
- package/lib/{OperationList-CSJYzxQY.js.map → OperationList-Dg0Nm1tg.js.map} +1 -1
- package/lib/RouteGuard-kCicqF3x.js +77 -0
- package/lib/RouteGuard-kCicqF3x.js.map +1 -0
- package/lib/{SchemaList-DtyuDrQA.js → SchemaList-DZKBH2WC.js} +9 -9
- package/lib/{SchemaList-DtyuDrQA.js.map → SchemaList-DZKBH2WC.js.map} +1 -1
- package/lib/{SchemaView-G-SVXxAG.js → SchemaView-DBaqV2yU.js} +95 -92
- package/lib/SchemaView-DBaqV2yU.js.map +1 -0
- package/lib/{Secret-BxGpIhDP.js → Secret-BDBqq4p3.js} +2 -2
- package/lib/{Secret-BxGpIhDP.js.map → Secret-BDBqq4p3.js.map} +1 -1
- package/lib/{Separator-CTPSeW1S.js → Separator-BXt1LYnm.js} +2 -2
- package/lib/{Separator-CTPSeW1S.js.map → Separator-BXt1LYnm.js.map} +1 -1
- package/lib/{SignUp-CDl7bQj3.js → SignUp-DNmOFbLD.js} +5 -5
- package/lib/{SignUp-CDl7bQj3.js.map → SignUp-DNmOFbLD.js.map} +1 -1
- package/lib/{SyntaxHighlight-Dgd0AaaX.js → SyntaxHighlight-C75W8uCn.js} +374 -365
- package/lib/SyntaxHighlight-C75W8uCn.js.map +1 -0
- package/lib/{Toc-D_Rj4jVx.js → Toc-ICilS65g.js} +3 -3
- package/lib/{Toc-D_Rj4jVx.js.map → Toc-ICilS65g.js.map} +1 -1
- package/lib/{ZudokuContext-DNHMZfcP.js → ZudokuContext-Ea7gxmGq.js} +542 -469
- package/lib/ZudokuContext-Ea7gxmGq.js.map +1 -0
- package/lib/{___vite-browser-external_commonjs-proxy-Cga3HsWk.js → ___vite-browser-external_commonjs-proxy-BttVsNON.js} +2 -2
- package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js.map +1 -0
- package/lib/chunk-EPOLDU6W-C6C8jAwd.js +8558 -0
- package/lib/chunk-EPOLDU6W-C6C8jAwd.js.map +1 -0
- package/lib/{circular-BxODTa7z.js → circular-DleWPaPP.js} +767 -747
- package/lib/{circular-BxODTa7z.js.map → circular-DleWPaPP.js.map} +1 -1
- package/lib/{cn-dYga0KKN.js → cn-5-Gd1Dss.js} +531 -498
- package/lib/cn-5-Gd1Dss.js.map +1 -0
- package/lib/{createServer-BpreIXp6.js → createServer-nqMW9kro.js} +6 -6
- package/lib/{createServer-BpreIXp6.js.map → createServer-nqMW9kro.js.map} +1 -1
- package/lib/{createVariantComponent-CQVt-H3r.js → createVariantComponent-Dc0vtOvr.js} +2 -2
- package/lib/{createVariantComponent-CQVt-H3r.js.map → createVariantComponent-Dc0vtOvr.js.map} +1 -1
- package/lib/{errors-DliW1dED.js → errors-D2FbERKl.js} +3 -3
- package/lib/{errors-DliW1dED.js.map → errors-D2FbERKl.js.map} +1 -1
- package/lib/{firebase-D4tbaCYB.js → firebase-Cn9CmB6h.js} +21 -21
- package/lib/{firebase-D4tbaCYB.js.map → firebase-Cn9CmB6h.js.map} +1 -1
- package/lib/{hook-CHw_R_xu.js → hook-B2nmfmYN.js} +3 -3
- package/lib/{hook-CHw_R_xu.js.map → hook-B2nmfmYN.js.map} +1 -1
- package/lib/{index-DXXZDuSJ.js → index-CC4L3gtM.js} +4 -4
- package/lib/{index-DXXZDuSJ.js.map → index-CC4L3gtM.js.map} +1 -1
- package/lib/{index-9MxNUgg4.js → index-CSDW7CHl.js} +21 -21
- package/lib/{index-9MxNUgg4.js.map → index-CSDW7CHl.js.map} +1 -1
- package/lib/{index-CboxZOVW.js → index-D5NeW2z6.js} +12 -12
- package/lib/{index-CboxZOVW.js.map → index-D5NeW2z6.js.map} +1 -1
- package/lib/{index-1TbL0HXQ.js → index-DSKBOdpT.js} +2 -2
- package/lib/{index-1TbL0HXQ.js.map → index-DSKBOdpT.js.map} +1 -1
- package/lib/{index.esm-ti5zvZS_.js → index.esm-B35e7P83.js} +2 -2
- package/lib/index.esm-B35e7P83.js.map +1 -0
- package/lib/{index.esm-DtzT_KoE.js → index.esm-B_0dvNjB.js} +2 -2
- package/lib/{index.esm-DtzT_KoE.js.map → index.esm-B_0dvNjB.js.map} +1 -1
- package/lib/{invariant-CGOLuIIz.js → invariant-BJAl77rw.js} +4 -4
- package/lib/invariant-BJAl77rw.js.map +1 -0
- package/lib/{mutation-DMHWqmFp.js → mutation-BOYnEDf6.js} +70 -44
- package/lib/mutation-BOYnEDf6.js.map +1 -0
- package/lib/ui/Accordion.js +1 -1
- package/lib/ui/ActionButton.js +2 -2
- package/lib/ui/Alert.js +1 -1
- package/lib/ui/AlertDialog.js +1 -1
- package/lib/ui/Badge.js +1 -1
- package/lib/ui/Breadcrumb.js +1 -1
- package/lib/ui/Button.js +1 -1
- package/lib/ui/ButtonGroup.js +1 -1
- package/lib/ui/Callout.js +1 -1
- package/lib/ui/Card.js +1 -1
- package/lib/ui/Carousel.js +1 -1
- package/lib/ui/Checkbox.js +1 -1
- package/lib/ui/CodeBlock.js +1 -1
- package/lib/ui/Command.js +2 -2
- package/lib/ui/Dialog.js +1 -1
- package/lib/ui/Drawer.js +2 -2
- package/lib/ui/DropdownMenu.js +1 -1
- package/lib/ui/EmbeddedCodeBlock.js +1 -1
- package/lib/ui/Form.js +1 -1
- package/lib/ui/Frame.js +1 -1
- package/lib/ui/HoverCard.js +1 -1
- package/lib/ui/Input.js +1 -1
- package/lib/ui/Item.js +1 -1
- package/lib/ui/Label.js +1 -1
- package/lib/ui/NativeSelect.js +1 -1
- package/lib/ui/Pagination.js +1 -1
- package/lib/ui/Popover.js +1 -1
- package/lib/ui/Progress.js +1 -1
- package/lib/ui/RadioGroup.js +1 -1
- package/lib/ui/ScrollArea.js +1 -1
- package/lib/ui/Secret.js +1 -1
- package/lib/ui/Separator.js +1 -1
- package/lib/ui/Skeleton.js +1 -1
- package/lib/ui/Slider.js +1 -1
- package/lib/ui/Switch.js +1 -1
- package/lib/ui/SyntaxHighlight.js +3 -3
- package/lib/ui/Tabs.js +1 -1
- package/lib/ui/Textarea.js +1 -1
- package/lib/ui/Toggle.js +1 -1
- package/lib/ui/ToggleGroup.js +1 -1
- package/lib/ui/Value.js +1 -1
- package/lib/ui/util.js +1 -1
- package/lib/zudoku.__internal.js +604 -602
- package/lib/zudoku.__internal.js.map +1 -1
- package/lib/zudoku.auth-auth0.js +16 -16
- package/lib/zudoku.auth-auth0.js.map +1 -1
- package/lib/zudoku.auth-azureb2c.js +4 -4
- package/lib/zudoku.auth-clerk.js +52 -75
- package/lib/zudoku.auth-clerk.js.map +1 -1
- package/lib/zudoku.auth-firebase.js +5 -5
- package/lib/zudoku.auth-openid.js +5 -5
- package/lib/zudoku.auth-supabase.js +31 -40
- package/lib/zudoku.auth-supabase.js.map +1 -1
- package/lib/zudoku.components.js +6 -6
- package/lib/zudoku.hooks.js +3 -3
- package/lib/zudoku.mermaid.js +3 -3
- package/lib/zudoku.plugin-api-catalog.js +5 -5
- package/lib/zudoku.plugin-api-keys.js +258 -240
- 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 +7 -7
- package/lib/zudoku.router.js +1130 -1404
- package/lib/zudoku.router.js.map +1 -1
- package/package.json +12 -12
- package/src/lib/authentication/components/CallbackHandler.tsx +1 -1
- package/src/lib/authentication/providers/auth0.tsx +15 -9
- package/src/lib/authentication/providers/clerk.tsx +0 -26
- package/src/lib/authentication/providers/supabase.tsx +6 -15
- package/src/lib/core/RouteGuard.tsx +30 -24
- package/src/lib/oas/graphql/circular.ts +36 -3
- package/src/lib/plugins/api-keys/index.tsx +46 -16
- package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +3 -0
- package/src/lib/plugins/openapi/OperationList.tsx +6 -1
- package/src/lib/plugins/openapi/schema/utils.ts +15 -4
- package/src/lib/util/invariant.ts +2 -1
- package/lib/Input-D-kqEQ5M.js.map +0 -1
- package/lib/OAuthErrorPage-DQtg28Go.js.map +0 -1
- package/lib/RouteGuard-D0f743SM.js +0 -77
- package/lib/RouteGuard-D0f743SM.js.map +0 -1
- package/lib/SchemaView-G-SVXxAG.js.map +0 -1
- package/lib/SyntaxHighlight-Dgd0AaaX.js.map +0 -1
- package/lib/ZudokuContext-DNHMZfcP.js.map +0 -1
- package/lib/___vite-browser-external_commonjs-proxy-Cga3HsWk.js.map +0 -1
- package/lib/chunk-PVWAREVJ-ClM0m2aJ.js +0 -7965
- package/lib/chunk-PVWAREVJ-ClM0m2aJ.js.map +0 -1
- package/lib/cn-dYga0KKN.js.map +0 -1
- package/lib/index.esm-ti5zvZS_.js.map +0 -1
- package/lib/invariant-CGOLuIIz.js.map +0 -1
- package/lib/mutation-DMHWqmFp.js.map +0 -1
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { j as t } from "./jsx-runtime-BzflLqGi.js";
|
|
2
|
-
import { H as m } from "./index.esm-DtzT_KoE.js";
|
|
3
|
-
import { createContext as p, use as f } from "react";
|
|
4
|
-
import { u as g, a as x, m as j, O as v } from "./chunk-PVWAREVJ-ClM0m2aJ.js";
|
|
5
|
-
import { B as a } from "./Button-IOAeVaIH.js";
|
|
6
|
-
import { D as C, a as R, b as D, c as w, d as T, e as b } from "./Dialog-BQciPiHN.js";
|
|
7
|
-
import { u as k } from "./hook-CHw_R_xu.js";
|
|
8
|
-
import { a as E } from "./ZudokuContext-DNHMZfcP.js";
|
|
9
|
-
import { Z as P } from "./invariant-CGOLuIIz.js";
|
|
10
|
-
import { u as y } from "./useLatest-hmRS46UF.js";
|
|
11
|
-
const O = p(!1), A = "protected", G = () => {
|
|
12
|
-
const n = k(), e = E(), o = g(), r = x(), c = y(r.pathname), u = f(O), { protectedRoutes: d } = e.options, l = !u && d ? Object.entries(d).find(
|
|
13
|
-
([s]) => j({ path: s, end: !0 }, r.pathname)
|
|
14
|
-
)?.[1] : void 0, i = l !== void 0, h = i && !l({ auth: n, context: e });
|
|
15
|
-
if (i && !n.isAuthEnabled)
|
|
16
|
-
throw new P("Authentication is not enabled", {
|
|
17
|
-
title: "Authentication is not enabled",
|
|
18
|
-
developerHint: "To use protectedRoutes you need authentication to be enabled"
|
|
19
|
-
});
|
|
20
|
-
return h && n.isPending && typeof window < "u" ? null : h ? /* @__PURE__ */ t.jsx(
|
|
21
|
-
C,
|
|
22
|
-
{
|
|
23
|
-
open: !0,
|
|
24
|
-
onOpenChange: (s) => {
|
|
25
|
-
s || o(-1);
|
|
26
|
-
},
|
|
27
|
-
children: /* @__PURE__ */ t.jsxs(R, { children: [
|
|
28
|
-
/* @__PURE__ */ t.jsx(D, { children: /* @__PURE__ */ t.jsx(w, { children: "Login to continue" }) }),
|
|
29
|
-
/* @__PURE__ */ t.jsx(T, { children: "Please wait while we log you in." }),
|
|
30
|
-
/* @__PURE__ */ t.jsxs(b, { children: [
|
|
31
|
-
/* @__PURE__ */ t.jsx(a, { variant: "outline", onClick: () => void o(-1), children: "Cancel" }),
|
|
32
|
-
/* @__PURE__ */ t.jsx("div", { className: "w-full" }),
|
|
33
|
-
/* @__PURE__ */ t.jsx(
|
|
34
|
-
a,
|
|
35
|
-
{
|
|
36
|
-
variant: "secondary",
|
|
37
|
-
onClick: () => void e.authentication?.signUp(
|
|
38
|
-
{ navigate: o },
|
|
39
|
-
{ redirectTo: c.current }
|
|
40
|
-
),
|
|
41
|
-
children: "Register"
|
|
42
|
-
}
|
|
43
|
-
),
|
|
44
|
-
/* @__PURE__ */ t.jsxs(
|
|
45
|
-
a,
|
|
46
|
-
{
|
|
47
|
-
onClick: () => void e.authentication?.signIn(
|
|
48
|
-
{ navigate: o },
|
|
49
|
-
{ redirectTo: c.current }
|
|
50
|
-
),
|
|
51
|
-
children: [
|
|
52
|
-
"Login",
|
|
53
|
-
" "
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
)
|
|
57
|
-
] })
|
|
58
|
-
] })
|
|
59
|
-
}
|
|
60
|
-
) : /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
|
|
61
|
-
u && i && /* @__PURE__ */ t.jsx(m, { children: /* @__PURE__ */ t.jsx(
|
|
62
|
-
"meta",
|
|
63
|
-
{
|
|
64
|
-
name: "pagefind",
|
|
65
|
-
"data-pagefind-filter": `section:${A}`,
|
|
66
|
-
content: "true"
|
|
67
|
-
}
|
|
68
|
-
) }),
|
|
69
|
-
/* @__PURE__ */ t.jsx(v, {})
|
|
70
|
-
] });
|
|
71
|
-
};
|
|
72
|
-
export {
|
|
73
|
-
O as B,
|
|
74
|
-
G as R,
|
|
75
|
-
A as S
|
|
76
|
-
};
|
|
77
|
-
//# sourceMappingURL=RouteGuard-D0f743SM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RouteGuard-D0f743SM.js","sources":["../src/lib/components/context/BypassProtectedRoutesContext.ts","../src/lib/core/RouteGuard.tsx"],"sourcesContent":["import { createContext } from \"react\";\n\nexport const BypassProtectedRoutesContext = createContext(false);\n","import { Helmet } from \"@zudoku/react-helmet-async\";\nimport { use } from \"react\";\nimport { matchPath, Outlet, useLocation, useNavigate } from \"react-router\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"zudoku/ui/Dialog.js\";\nimport { useAuth } from \"../authentication/hook.js\";\nimport { BypassProtectedRoutesContext } from \"../components/context/BypassProtectedRoutesContext.js\";\nimport { useZudoku } from \"../components/context/ZudokuContext.js\";\nimport { ZudokuError } from \"../util/invariant.js\";\nimport { useLatest } from \"../util/useLatest.js\";\n\nexport const SEARCH_PROTECTED_SECTION = \"protected\";\n\nexport const RouteGuard = () => {\n const auth = useAuth();\n const zudoku = useZudoku();\n const navigate = useNavigate();\n const location = useLocation();\n const latestPath = useLatest(location.pathname);\n const shouldBypass = use(BypassProtectedRoutesContext);\n const { protectedRoutes } = zudoku.options;\n\n const authCheckFn =\n !shouldBypass && protectedRoutes\n ? Object.entries(protectedRoutes).find(([path]) =>\n matchPath({ path, end: true }, location.pathname),\n )?.[1]\n : undefined;\n\n const isProtectedRoute = authCheckFn !== undefined;\n const needsToSignIn =\n isProtectedRoute && !authCheckFn({ auth, context: zudoku });\n\n if (isProtectedRoute && !auth.isAuthEnabled) {\n throw new ZudokuError(\"Authentication is not enabled\", {\n title: \"Authentication is not enabled\",\n developerHint:\n \"To use protectedRoutes you need authentication to be enabled\",\n });\n }\n\n if (needsToSignIn && auth.isPending && typeof window !== \"undefined\") {\n return null;\n }\n\n if (needsToSignIn) {\n return (\n <Dialog\n open={true}\n onOpenChange={(open) => {\n if (!open) {\n void navigate(-1);\n }\n }}\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Login to continue</DialogTitle>\n </DialogHeader>\n <DialogDescription>\n Please wait while we log you in.\n </DialogDescription>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => void navigate(-1)}>\n Cancel\n </Button>\n <div className=\"w-full\"></div>\n <Button\n variant=\"secondary\"\n onClick={() =>\n void zudoku.authentication?.signUp(\n { navigate },\n { redirectTo: latestPath.current },\n )\n }\n >\n Register\n </Button>\n <Button\n onClick={() =>\n void zudoku.authentication?.signIn(\n { navigate },\n { redirectTo: latestPath.current },\n )\n }\n >\n Login{\" \"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n }\n\n return (\n <>\n {shouldBypass && isProtectedRoute && (\n <Helmet>\n <meta\n name=\"pagefind\"\n data-pagefind-filter={`section:${SEARCH_PROTECTED_SECTION}`}\n content=\"true\"\n />\n </Helmet>\n )}\n <Outlet />\n </>\n );\n};\n"],"names":["BypassProtectedRoutesContext","createContext","SEARCH_PROTECTED_SECTION","RouteGuard","auth","useAuth","zudoku","useZudoku","navigate","useNavigate","location","useLocation","latestPath","useLatest","shouldBypass","use","protectedRoutes","authCheckFn","path","matchPath","isProtectedRoute","needsToSignIn","ZudokuError","jsx","Dialog","open","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button","jsxs","Fragment","Helmet","Outlet"],"mappings":";;;;;;;;;;AAEO,MAAMA,IAA+BC,EAAc,EAAK,GCgBlDC,IAA2B,aAE3BC,IAAa,MAAM;AAC9B,QAAMC,IAAOC,EAAA,GACPC,IAASC,EAAA,GACTC,IAAWC,EAAA,GACXC,IAAWC,EAAA,GACXC,IAAaC,EAAUH,EAAS,QAAQ,GACxCI,IAAeC,EAAIf,CAA4B,GAC/C,EAAE,iBAAAgB,MAAoBV,EAAO,SAE7BW,IACJ,CAACH,KAAgBE,IACb,OAAO,QAAQA,CAAe,EAAE;AAAA,IAAK,CAAC,CAACE,CAAI,MACzCC,EAAU,EAAE,MAAAD,GAAM,KAAK,MAAQR,EAAS,QAAQ;AAAA,EAAA,IAC9C,CAAC,IACL,QAEAU,IAAmBH,MAAgB,QACnCI,IACJD,KAAoB,CAACH,EAAY,EAAE,MAAAb,GAAM,SAASE,GAAQ;AAE5D,MAAIc,KAAoB,CAAChB,EAAK;AAC5B,UAAM,IAAIkB,EAAY,iCAAiC;AAAA,MACrD,OAAO;AAAA,MACP,eACE;AAAA,IAAA,CACH;AAGH,SAAID,KAAiBjB,EAAK,aAAa,OAAO,SAAW,MAChD,OAGLiB,IAEAE,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,cAAc,CAACC,MAAS;AACtB,QAAKA,KACEjB,EAAS,EAAE;AAAA,MAEpB;AAAA,MAEA,iCAACkB,GAAA,EACC,UAAA;AAAA,QAAAH,gBAAAA,MAACI,GAAA,EACC,UAAAJ,gBAAAA,EAAAA,IAACK,GAAA,EAAY,UAAA,oBAAA,CAAiB,GAChC;AAAA,QACAL,gBAAAA,EAAAA,IAACM,KAAkB,UAAA,mCAAA,CAEnB;AAAA,+BACCC,GAAA,EACC,UAAA;AAAA,UAAAP,gBAAAA,EAAAA,IAACQ,GAAA,EAAO,SAAQ,WAAU,SAAS,MAAM,KAAKvB,EAAS,EAAE,GAAG,UAAA,SAAA,CAE5D;AAAA,UACAe,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,SAAA,CAAS;AAAA,UACxBA,gBAAAA,EAAAA;AAAAA,YAACQ;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,SAAS,MACP,KAAKzB,EAAO,gBAAgB;AAAA,gBAC1B,EAAE,UAAAE,EAAA;AAAA,gBACF,EAAE,YAAYI,EAAW,QAAA;AAAA,cAAQ;AAAA,cAGtC,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGDoB,gBAAAA,EAAAA;AAAAA,YAACD;AAAA,YAAA;AAAA,cACC,SAAS,MACP,KAAKzB,EAAO,gBAAgB;AAAA,gBAC1B,EAAE,UAAAE,EAAA;AAAA,gBACF,EAAE,YAAYI,EAAW,QAAA;AAAA,cAAQ;AAAA,cAGtC,UAAA;AAAA,gBAAA;AAAA,gBACO;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACR,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,IAMJoB,gBAAAA,EAAAA,KAAAC,YAAA,EACG,UAAA;AAAA,IAAAnB,KAAgBM,2BACdc,GAAA,EACC,UAAAX,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,wBAAsB,WAAWrB,CAAwB;AAAA,QACzD,SAAQ;AAAA,MAAA;AAAA,IAAA,GAEZ;AAAA,0BAEDiC,GAAA,CAAA,CAAO;AAAA,EAAA,GACV;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaView-G-SVXxAG.js","sources":["../src/lib/components/PagefindSearchMeta.tsx","../src/lib/util/groupBy.ts","../src/lib/plugins/openapi/components/ConstValue.tsx","../src/lib/plugins/openapi/components/EnumValues.tsx","../src/lib/plugins/openapi/ParamInfos.tsx","../src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx","../src/lib/plugins/openapi/schema/utils.ts","../src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx","../src/lib/plugins/openapi/schema/union-helpers.ts","../src/lib/plugins/openapi/schema/UnionView.tsx","../src/lib/plugins/openapi/schema/SchemaView.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\n\n/**\n * Adds metadata to be captured by Pagefind for search results.\n * Content is visually hidden but indexed by the search engine.\n */\nexport const PagefindSearchMeta = ({\n name,\n children,\n}: PropsWithChildren<{ name?: string }>) => (\n <span data-pagefind-meta={name} className=\"sr-only\">\n {children}\n </span>\n);\n","// biome-ignore-all lint/suspicious/noExplicitAny: Allow any type\nexport const groupBy = <\n T extends Record<PropertyKey, any>,\n KeySelector extends (item: T) => PropertyKey,\n>(\n arr: T[],\n keySelector: KeySelector,\n): Partial<Record<ReturnType<KeySelector>, T[]>> => {\n return arr.reduce(\n (accumulator, val) => {\n const groupedKey = keySelector(val) as ReturnType<KeySelector>;\n if (!accumulator[groupedKey]) {\n accumulator[groupedKey] = [];\n }\n accumulator[groupedKey].push(val);\n return accumulator;\n },\n {} as Record<ReturnType<KeySelector>, T[]>,\n );\n};\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { SelectOnClick } from \"./SelectOnClick.js\";\n\nexport const ConstValue = ({\n schema,\n hideDescription = false,\n}: {\n schema: SchemaObject;\n hideDescription?: boolean;\n}) => {\n return (\n <div className=\"flex flex-col gap-1\">\n <div>\n <span className=\"text-muted-foreground\">Const value: </span>\n <SelectOnClick className=\"border rounded px-1 font-mono\">\n {schema.const}\n </SelectOnClick>\n {!hideDescription && schema.description && (\n <div className=\"text-muted-foreground\">{schema.description}</div>\n )}\n </div>\n </div>\n );\n};\n","import { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { SelectOnClick } from \"./SelectOnClick.js\";\n\nexport const EnumValues = ({\n values,\n className,\n maxVisibleValues = 8,\n}: {\n values: Array<string | number>;\n className?: string;\n maxVisibleValues?: number;\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n if (!values.length) return null;\n\n const shouldCollapse = values.length > maxVisibleValues;\n const visibleValues =\n shouldCollapse && !isOpen ? values.slice(0, maxVisibleValues) : values;\n\n return (\n <div className={cn(\"flex flex-wrap gap-1.5\", className)}>\n <span className=\"text-muted-foreground\">Enum values:</span>\n {visibleValues.map((value) => (\n <div key={value}>\n <SelectOnClick className=\"border rounded-sm px-1 font-mono\">\n {value}\n </SelectOnClick>\n </div>\n ))}\n {shouldCollapse && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-fit px-0\"\n onClick={() => setIsOpen(!isOpen)}\n >\n {isOpen ? (\n <div className=\"flex items-center gap-1\">\n <ChevronUpIcon size={12} />\n <span className=\"text-muted-foreground\">show less</span>\n </div>\n ) : (\n <div className=\"flex items-center gap-1\">\n <ChevronDownIcon size={12} />\n <span className=\"text-muted-foreground\">\n show {values.length - maxVisibleValues} more\n </span>\n </div>\n )}\n </Button>\n )}\n </div>\n );\n};\n","import { ChevronsLeftRightIcon } from \"lucide-react\";\nimport { isValidElement, useState } from \"react\";\nimport { InlineCode } from \"../../components/InlineCode.js\";\nimport type { SchemaObject } from \"../../oas/parser/index.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst Pattern = ({ pattern }: { pattern: string }) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const isExpandable = pattern.length > 20;\n const shortPattern = isExpandable ? `${pattern.slice(0, 20)}…` : pattern;\n\n return (\n <InlineCode\n className={cn(\"text-xs\", isExpandable && \"cursor-pointer\")}\n onClick={() => setIsExpanded(!isExpanded)}\n selectOnClick={false}\n >\n {isExpanded ? pattern : shortPattern}\n {isExpandable && (\n <button type=\"button\" className=\"p-1 translate-y-[2px]\">\n {!isExpanded && <ChevronsLeftRightIcon size={12} />}\n </button>\n )}\n </InlineCode>\n );\n};\n\nconst getSchemaInfos = (schema?: SchemaObject) => {\n if (!schema) return [];\n\n return [\n schema.type === \"array\" && schema.items.type\n ? Array.isArray(schema.items.type)\n ? `(${schema.items.type.join(\" | \")})[]`\n : `${schema.items.type}[]`\n : Array.isArray(schema.type)\n ? schema.type.join(\" | \")\n : schema.type,\n\n schema.enum && \"enum\",\n schema.const && \"const\",\n schema.format,\n schema.type === \"array\" && schema.items?.contentMediaType,\n schema.minimum !== undefined && `min: ${schema.minimum}`,\n schema.maximum !== undefined && `max: ${schema.maximum}`,\n schema.minLength !== undefined && `minLength: ${schema.minLength}`,\n schema.maxLength !== undefined && `maxLength: ${schema.maxLength}`,\n schema.minItems !== undefined && `minItems: ${schema.minItems}`,\n schema.maxItems !== undefined && `maxItems: ${schema.maxItems}`,\n schema.minProperties !== undefined && `minProps: ${schema.minProperties}`,\n schema.maxProperties !== undefined && `maxProps: ${schema.maxProperties}`,\n schema.uniqueItems && \"unique\",\n schema.readOnly && \"readOnly\",\n schema.writeOnly && \"writeOnly\",\n schema.deprecated && \"deprecated\",\n schema.pattern && (\n <>\n pattern: <Pattern pattern={schema.pattern} />\n </>\n ),\n ];\n};\n\nexport const ParamInfos = ({\n schema,\n extraItems = [],\n className,\n}: {\n schema?: SchemaObject;\n extraItems?: unknown[];\n className?: string;\n}) => {\n const filteredItems = [...getSchemaInfos(schema), ...extraItems].flatMap(\n (item) => (typeof item === \"string\" || isValidElement(item) ? item : []),\n );\n\n return (\n <span className={className}>\n {filteredItems.map((item, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: index should be stable\n <span className=\"text-muted-foreground\" key={index}>\n {item}\n {index < filteredItems.length - 1 && (\n <span className=\"text-muted-foreground/50\">\n · \n </span>\n )}\n </span>\n ))}\n </span>\n );\n};\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { SelectOnClick } from \"../components/SelectOnClick.js\";\n\nexport const SchemaExampleAndDefault = ({\n schema,\n}: {\n schema: SchemaObject;\n}) => {\n const example = schema.examples?.at(0);\n const defaultValue = schema.default;\n\n if (example === undefined && defaultValue === undefined) return null;\n\n return (\n <div className=\"flex flex-col gap-1\">\n {example !== undefined && (\n <div>\n <span className=\"text-muted-foreground\">Example: </span>\n <SelectOnClick className=\"border rounded-sm px-1 font-mono\">\n {typeof example === \"object\" || typeof example === \"boolean\"\n ? JSON.stringify(example)\n : example}\n </SelectOnClick>\n </div>\n )}\n {defaultValue !== undefined && (\n <div>\n <span className=\"text-muted-foreground\">Default: </span>\n <SelectOnClick className=\"border rounded-sm px-1 font-mono\">\n {typeof defaultValue === \"object\" ||\n typeof defaultValue === \"boolean\"\n ? JSON.stringify(defaultValue)\n : defaultValue}\n </SelectOnClick>\n </div>\n )}\n </div>\n );\n};\n","import { CIRCULAR_REF } from \"../../../oas/graphql/circular.js\";\nimport type {\n ArraySchemaObject,\n SchemaObject,\n} from \"../../../oas/parser/index.js\";\n\nexport const isBasicType = (\n type: unknown,\n): type is \"string\" | \"number\" | \"boolean\" | \"integer\" | \"null\" =>\n (typeof type === \"string\" &&\n [\"string\", \"number\", \"boolean\", \"integer\", \"null\"].includes(type)) ||\n (Array.isArray(type) && type.every(isBasicType));\n\nexport const isArrayType = (value: SchemaObject): value is ArraySchemaObject =>\n value.type === \"array\" ||\n // schema.type might be an array of types, so we need to check if \"array\" is one of them\n (Array.isArray(value.type) && value.type.includes(\"array\"));\n\nexport const isComplexType = (value?: SchemaObject) =>\n value &&\n ((value.type === \"object\" &&\n Object.keys(value.properties ?? {}).length > 0) ||\n (value.type === \"array\" &&\n typeof value.items === \"object\" &&\n (!value.items.type || value.items.type === \"object\")));\n\nexport const isCircularRef = (schema: unknown): schema is string =>\n typeof schema === \"string\" && schema.startsWith(CIRCULAR_REF);\n\nexport const isArrayCircularRef = (\n schema: SchemaObject,\n): schema is SchemaObject & { items: SchemaObject } =>\n isArrayType(schema) && \"items\" in schema && isCircularRef(schema.items);\n\nexport const extractCircularRefInfo = (\n ref?: string | SchemaObject,\n): string | undefined =>\n typeof ref === \"string\" ? ref.split(\":\")[1] : undefined;\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { MinusIcon, PlusIcon, RefreshCcwDotIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { Item, ItemActions, ItemContent, ItemTitle } from \"zudoku/ui/Item.js\";\nimport { InlineCode } from \"../../../components/InlineCode.js\";\nimport { Markdown } from \"../../../components/Markdown.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { ConstValue } from \"../components/ConstValue.js\";\nimport { EnumValues } from \"../components/EnumValues.js\";\nimport { ParamInfos } from \"../ParamInfos.js\";\nimport { SchemaExampleAndDefault } from \"./SchemaExampleAndDefault.js\";\nimport { SchemaView } from \"./SchemaView.js\";\nimport {\n extractCircularRefInfo,\n isArrayCircularRef,\n isArrayType,\n isCircularRef,\n isComplexType,\n} from \"./utils.js\";\n\nconst RecursiveIndicator = ({ circularProp }: { circularProp?: string }) => (\n <InlineCode\n className=\"inline-flex items-center gap-1.5 text-xs translate-y-0.5\"\n selectOnClick={false}\n >\n <RefreshCcwDotIcon size={13} />\n <span>{circularProp ? `${circularProp} (circular)` : \"circular\"}</span>\n </InlineCode>\n);\n\nexport const SchemaPropertyItem = ({\n name,\n schema,\n group,\n defaultOpen = false,\n showCollapseButton = true,\n}: {\n name: string;\n schema: SchemaObject;\n group: \"required\" | \"optional\" | \"deprecated\";\n defaultOpen?: boolean;\n showCollapseButton?: boolean;\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n if (isCircularRef(schema)) {\n return (\n <Item>\n <ItemContent className=\"gap-y-2\">\n <div>\n <ItemTitle className=\"inline me-2\">\n <code>{name}</code>\n </ItemTitle>\n <ParamInfos\n className=\"inline\"\n schema={schema}\n extraItems={[\n group !== \"optional\" && (\n <span className=\"text-primary\">required</span>\n ),\n <RecursiveIndicator key=\"circular-ref\" />,\n ]}\n />\n </div>\n <SchemaExampleAndDefault schema={schema} />\n </ItemContent>\n </Item>\n );\n }\n\n const isCollapsible = Boolean(\n (schema.allOf ||\n schema.anyOf ||\n schema.oneOf ||\n isComplexType(schema) ||\n (isArrayType(schema) &&\n \"items\" in schema &&\n isComplexType(schema.items)) ||\n schema.additionalProperties) &&\n !isArrayCircularRef(schema),\n );\n\n const shouldRenderDescription = Boolean(\n schema.description ||\n (\"items\" in schema && schema.items?.enum) ||\n schema.const ||\n schema.enum ||\n schema.example !== undefined ||\n schema.default !== undefined,\n );\n\n return (\n <Item>\n <ItemContent className=\"gap-y-2\">\n <div>\n <ItemTitle className=\"inline me-2\">\n {isCollapsible ? (\n <button\n onClick={() => setIsOpen(!isOpen)}\n type=\"button\"\n className=\"hover:underline\"\n >\n <code>{name}</code>\n </button>\n ) : (\n <code>{name}</code>\n )}\n </ItemTitle>\n <ParamInfos\n className=\"inline\"\n schema={schema}\n extraItems={[\n group !== \"optional\" && (\n <span className=\"text-primary\">required</span>\n ),\n isArrayCircularRef(schema) && (\n <RecursiveIndicator\n circularProp={extractCircularRefInfo(schema.items)}\n />\n ),\n ]}\n />\n </div>\n {shouldRenderDescription && (\n <div className=\"flex flex-col gap-1.5\">\n {schema.description && (\n <Markdown className=\"prose-sm\" content={schema.description} />\n )}\n {\"items\" in schema && schema.items?.enum && (\n <EnumValues values={schema.items.enum} />\n )}\n {schema.const && <ConstValue schema={schema} hideDescription />}\n {schema.enum && <EnumValues values={schema.enum} />}\n <SchemaExampleAndDefault schema={schema} />\n </div>\n )}\n </ItemContent>\n\n {isCollapsible && showCollapseButton && (\n <ItemActions className=\"self-start\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"rounded-full\"\n onClick={() => setIsOpen(!isOpen)}\n aria-label=\"Toggle properties\"\n >\n {isOpen ? <MinusIcon size={16} /> : <PlusIcon size={16} />}\n </Button>\n </ItemActions>\n )}\n\n {isCollapsible && (\n <Collapsible.Root\n defaultOpen={defaultOpen}\n open={isOpen}\n onOpenChange={setIsOpen}\n className={cn(\"w-full\", !isOpen && \"contents\")}\n >\n <Collapsible.Content asChild>\n <ItemContent>\n {schema.anyOf || schema.oneOf || schema.type === \"object\" ? (\n <SchemaView schema={schema} />\n ) : isArrayType(schema) && \"items\" in schema ? (\n <SchemaView schema={schema.items} />\n ) : null}\n </ItemContent>\n </Collapsible.Content>\n </Collapsible.Root>\n )}\n </Item>\n );\n};\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\n\nexport type FieldSignature = {\n type?: SchemaObject[\"type\"];\n const?: unknown;\n enum?: unknown[];\n format?: string;\n pattern?: string;\n minimum?: number;\n maximum?: number;\n exclusiveMinimum?: boolean | number;\n exclusiveMaximum?: boolean | number;\n minLength?: number;\n maxLength?: number;\n minItems?: number;\n maxItems?: number;\n itemsType?: string | string[];\n additionalProps?: \"true\" | \"false\" | \"schema\";\n};\n\nexport type FieldDoc = {\n name: string;\n humanType: string;\n description?: string;\n requiredInAll: boolean;\n};\n\nexport const unionVariants = (schema: SchemaObject): SchemaObject[] => {\n const variants = (schema.oneOf ?? schema.anyOf ?? []) as SchemaObject[];\n\n // If parent schema has properties that variants don't, merge them\n // This handles the pattern where anyOf/oneOf is used just for required field combinations\n if (schema.properties && Object.keys(schema.properties).length > 0) {\n return variants.map((variant) => {\n // If variant doesn't define its own properties or type, inherit from parent\n const shouldInherit =\n !variant.properties &&\n !variant.type &&\n !variant.oneOf &&\n !variant.anyOf;\n\n if (shouldInherit) {\n return {\n ...variant,\n type: \"object\" as const,\n properties: schema.properties,\n required: variant.required ?? schema.required,\n };\n }\n\n return variant;\n });\n }\n\n return variants;\n};\n\nexport const decideExclusivity = (\n schema: SchemaObject,\n): \"exactly-one\" | \"at-least-one\" => {\n if (Array.isArray(schema.oneOf)) return \"exactly-one\";\n\n const discriminator = schema.discriminator?.propertyName;\n if (!discriminator) return \"at-least-one\";\n\n const variants = unionVariants(schema);\n const seen = new Set<string>();\n\n for (const variant of variants) {\n const prop = variant.properties?.[discriminator];\n\n const value =\n prop?.const ??\n (Array.isArray(prop?.enum) && prop.enum.length === 1\n ? String(prop.enum[0])\n : undefined);\n\n if (value == null || seen.has(String(value))) return \"at-least-one\";\n seen.add(String(value));\n }\n\n return \"exactly-one\";\n};\n\nexport const labelForVariant = (index: number, variant: SchemaObject) =>\n variant.title?.trim() || `Variant ${index + 1}`;\n\nexport const quickGuards = (variant: SchemaObject, root?: SchemaObject) => {\n const guards: string[] = [];\n\n if (variant.type) {\n guards.push(\n `type = ${Array.isArray(variant.type) ? variant.type.join(\"|\") : variant.type}`,\n );\n }\n\n const discriminator = root?.discriminator?.propertyName;\n if (discriminator) {\n const discriminatorProp = variant.properties?.[discriminator] as\n | SchemaObject\n | undefined;\n\n const discriminatorValue =\n discriminatorProp?.const ??\n (Array.isArray(discriminatorProp?.enum) &&\n discriminatorProp.enum.length === 1\n ? discriminatorProp.enum[0]\n : undefined);\n\n if (discriminatorValue !== undefined) {\n guards.push(`${discriminator}=${JSON.stringify(discriminatorValue)}`);\n }\n }\n\n const required = (variant.required ?? []).filter((k) => k !== discriminator);\n if (required.length) {\n const head = required.slice(0, 3).join(\", \");\n const more = required.length > 3 ? ` +${required.length - 3} more` : \"\";\n guards.push(`requires: ${head}${more}`);\n }\n\n return guards;\n};\n","import { useState } from \"react\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Badge } from \"../../../ui/Badge.js\";\nimport { Frame, FramePanel } from \"../../../ui/Frame.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { SchemaView } from \"./SchemaView.js\";\nimport {\n decideExclusivity,\n labelForVariant,\n quickGuards,\n unionVariants,\n} from \"./union-helpers.js\";\n\nconst DecisionTable = ({\n variants,\n schema,\n selectedVariant,\n onSelectVariant,\n}: {\n variants: SchemaObject[];\n schema: SchemaObject;\n selectedVariant: string;\n onSelectVariant: (label: string) => void;\n}) => {\n const rows = variants.map((v, i) => ({\n label: labelForVariant(i, v),\n guards: quickGuards(v, schema),\n }));\n\n return (\n <div className=\"flex flex-col gap-2 text-sm\">\n <h4 className=\"font-medium\">Decision Table</h4>\n <div className=\"border rounded-md overflow-hidden\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th className=\"text-left p-2 font-medium\">Variant</th>\n <th className=\"text-left p-2 font-medium\">Matching Criteria</th>\n </tr>\n </thead>\n <tbody className=\"divide-y\">\n {rows.map((row) => (\n <tr key={row.label} className=\"hover:bg-muted/30\">\n <td className=\"p-2 font-medium\">\n <button\n type=\"button\"\n className={cn(\n \"hover:underline\",\n selectedVariant === row.label && \"text-primary\",\n )}\n onClick={() => onSelectVariant(row.label)}\n >\n {row.label}\n </button>\n </td>\n <td className=\"p-2 text-muted-foreground text-xs\">\n {row.guards.length > 0\n ? row.guards.join(\" · \")\n : \"No specific criteria\"}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n\nexport const UnionView = ({\n schema,\n cardHeader,\n}: {\n schema: SchemaObject;\n cardHeader?: React.ReactNode;\n}) => {\n const mode = Array.isArray(schema.oneOf)\n ? \"oneOf\"\n : Array.isArray(schema.anyOf)\n ? \"anyOf\"\n : undefined;\n\n const variants = mode ? unionVariants(schema) : [];\n const [selectedVariant, setSelectedVariant] = useState(() =>\n variants[0] ? labelForVariant(0, variants[0]) : \"\",\n );\n\n if (!mode) return null;\n\n const exclusivity = decideExclusivity(schema);\n\n const semanticsMessage =\n exclusivity === \"exactly-one\" ? (\n <>\n Exactly one variant <b>must match</b>.\n </>\n ) : (\n <>\n At least one variant <b>must match</b>. Multiple variants{\" \"}\n <i>may match</i> simultaneously.\n </>\n );\n\n const currentVariantIndex = variants.findIndex(\n (v, i) => labelForVariant(i, v) === selectedVariant,\n );\n const currentVariant =\n currentVariantIndex >= 0 ? variants[currentVariantIndex] : null;\n\n return (\n <Frame>\n {cardHeader}\n <FramePanel className=\"text-sm flex flex-col gap-4\">\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">{mode}</Badge>\n <div className=\"flex-1 p-2\">\n <span className=\"text-sm\">{semanticsMessage}</span>\n </div>\n </div>\n\n <DecisionTable\n variants={variants}\n schema={schema}\n selectedVariant={selectedVariant}\n onSelectVariant={setSelectedVariant}\n />\n <strong>Properties for {selectedVariant}:</strong>\n {currentVariant && <SchemaView schema={currentVariant} />}\n </FramePanel>\n </Frame>\n );\n};\n","import { InfoIcon } from \"lucide-react\";\nimport { Fragment } from \"react\";\nimport {\n Frame,\n FrameDescription,\n FrameFooter,\n FrameHeader,\n FramePanel,\n} from \"zudoku/ui/Frame.js\";\nimport { ItemGroup, ItemSeparator } from \"zudoku/ui/Item.js\";\nimport { Markdown } from \"../../../components/Markdown.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { groupBy } from \"../../../util/groupBy.js\";\nimport { ConstValue } from \"../components/ConstValue.js\";\nimport { EnumValues } from \"../components/EnumValues.js\";\nimport { ParamInfos } from \"../ParamInfos.js\";\nimport { SchemaExampleAndDefault } from \"./SchemaExampleAndDefault.js\";\nimport { SchemaPropertyItem } from \"./SchemaPropertyItem.js\";\nimport { UnionView } from \"./UnionView.js\";\nimport { isArrayType, isBasicType } from \"./utils.js\";\n\nconst renderMarkdown = (content?: string) =>\n content && (\n <Markdown\n className=\"text-sm leading-normal line-clamp-4\"\n content={content}\n />\n );\n\nconst renderBasicSchema = (\n schema: SchemaObject,\n cardHeader?: React.ReactNode,\n embedded?: boolean,\n) => {\n const content = (\n <>\n <span className=\"text-sm text-muted-foreground\">\n <ParamInfos schema={schema} />\n </span>\n {schema.enum && <EnumValues values={schema.enum} />}\n {renderMarkdown(schema.description)}\n <SchemaExampleAndDefault schema={schema} />\n </>\n );\n\n if (embedded) {\n return <div className=\"space-y-2 p-4\">{content}</div>;\n }\n\n return (\n <Frame>\n {cardHeader}\n <FramePanel className=\"space-y-2\">{content}</FramePanel>\n </Frame>\n );\n};\n\nexport const SchemaView = ({\n schema,\n defaultOpen = false,\n cardHeader,\n embedded,\n}: {\n schema?: SchemaObject | null;\n defaultOpen?: boolean;\n cardHeader?: React.ReactNode;\n embedded?: boolean;\n}) => {\n if (!schema || Object.keys(schema).length === 0) {\n return (\n <Frame>\n {cardHeader}\n <FramePanel>\n <div className=\"text-sm text-muted-foreground italic\">\n No data returned\n </div>\n </FramePanel>\n </Frame>\n );\n }\n\n if (schema.const) {\n return <ConstValue schema={schema} />;\n }\n\n if (Array.isArray(schema.oneOf) || Array.isArray(schema.anyOf)) {\n return <UnionView schema={schema} cardHeader={cardHeader} />;\n }\n\n if (isBasicType(schema.type)) {\n return renderBasicSchema(schema, cardHeader, embedded);\n }\n\n if (isArrayType(schema) && typeof schema.items === \"object\") {\n const wrappedSchema: SchemaObject = {\n type: \"object\",\n properties: { \"\": schema },\n };\n\n return (\n <SchemaView schema={wrappedSchema} cardHeader={cardHeader} defaultOpen />\n );\n }\n\n const additionalObjectProperties = typeof schema.additionalProperties ===\n \"object\" && <SchemaView schema={schema.additionalProperties} embedded />;\n\n if (schema.type === \"object\") {\n const groupedProperties = groupBy(\n Object.entries(schema.properties ?? {}),\n ([propertyName, property]) => {\n return property.deprecated\n ? \"deprecated\"\n : schema.required?.includes(propertyName)\n ? \"required\"\n : \"optional\";\n },\n );\n\n const groupNames = [\"required\", \"optional\", \"deprecated\"] as const;\n const groups = groupNames.flatMap((group) => {\n const properties = groupedProperties[group];\n return properties ? { group, properties } : [];\n });\n\n const itemsList = groups.map(({ group, properties }, index) => (\n <Fragment key={group}>\n {index > 0 && <ItemSeparator />}\n <ItemGroup className=\"overflow-clip\">\n {properties.map(([name, schema], index) => (\n <Fragment key={name}>\n {index > 0 && <ItemSeparator />}\n <SchemaPropertyItem\n name={name}\n schema={schema}\n group={group}\n defaultOpen={defaultOpen}\n />\n </Fragment>\n ))}\n </ItemGroup>\n </Fragment>\n ));\n\n if (embedded) {\n return itemsList;\n }\n\n return (\n <Frame>\n {cardHeader}\n {schema.description && (\n <FrameHeader>\n <FrameDescription>{schema.description}</FrameDescription>\n </FrameHeader>\n )}\n {(itemsList.length > 0 || additionalObjectProperties) && (\n <FramePanel className=\"p-0!\">\n {itemsList}\n {additionalObjectProperties}\n </FramePanel>\n )}\n {schema.additionalProperties === true && (\n <FrameFooter>\n <a\n className=\"text-sm flex items-center gap-1 hover:underline\"\n href=\"https://swagger.io/docs/specification/v3_0/data-models/dictionaries/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n Additional properties are allowed\n <InfoIcon size={14} />\n </a>\n </FrameFooter>\n )}\n </Frame>\n );\n }\n};\n"],"names":["PagefindSearchMeta","name","children","groupBy","arr","keySelector","accumulator","val","groupedKey","ConstValue","schema","hideDescription","jsx","SelectOnClick","EnumValues","values","className","maxVisibleValues","isOpen","setIsOpen","useState","shouldCollapse","visibleValues","cn","value","Button","jsxs","ChevronUpIcon","ChevronDownIcon","Pattern","pattern","isExpanded","setIsExpanded","isExpandable","shortPattern","InlineCode","ChevronsLeftRightIcon","getSchemaInfos","Fragment","ParamInfos","extraItems","filteredItems","item","isValidElement","index","SchemaExampleAndDefault","example","defaultValue","isBasicType","type","isArrayType","isComplexType","isCircularRef","CIRCULAR_REF","isArrayCircularRef","extractCircularRefInfo","ref","RecursiveIndicator","circularProp","RefreshCcwDotIcon","SchemaPropertyItem","group","defaultOpen","showCollapseButton","Item","ItemContent","ItemTitle","isCollapsible","shouldRenderDescription","Markdown","ItemActions","MinusIcon","PlusIcon","Collapsible","SchemaView","unionVariants","variants","variant","decideExclusivity","discriminator","seen","prop","labelForVariant","quickGuards","root","guards","discriminatorProp","discriminatorValue","required","k","head","more","DecisionTable","selectedVariant","onSelectVariant","rows","v","i","row","UnionView","cardHeader","mode","setSelectedVariant","semanticsMessage","currentVariantIndex","currentVariant","Frame","FramePanel","Badge","renderMarkdown","content","renderBasicSchema","embedded","wrappedSchema","additionalObjectProperties","groupedProperties","propertyName","property","itemsList","properties","ItemSeparator","ItemGroup","FrameHeader","FrameDescription","FrameFooter","InfoIcon"],"mappings":"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"}
|