zudoku 0.37.1 → 0.39.0
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.js +2 -0
- package/dist/app/main.js.map +1 -1
- package/dist/app/tailwind.js +14 -0
- package/dist/app/tailwind.js.map +1 -1
- package/dist/config/validators/common.d.ts +287 -18
- package/dist/config/validators/common.js +2 -0
- package/dist/config/validators/common.js.map +1 -1
- package/dist/config/validators/validate.d.ts +107 -7
- package/dist/lib/authentication/authentication.d.ts +1 -0
- package/dist/lib/authentication/providers/clerk.js +19 -0
- package/dist/lib/authentication/providers/clerk.js.map +1 -1
- package/dist/lib/authentication/providers/openid.d.ts +1 -0
- package/dist/lib/authentication/providers/openid.js +5 -0
- package/dist/lib/authentication/providers/openid.js.map +1 -1
- package/dist/lib/authentication/providers/supabase.js +5 -0
- package/dist/lib/authentication/providers/supabase.js.map +1 -1
- package/dist/lib/authentication/state.d.ts +0 -26
- package/dist/lib/authentication/state.js +1 -16
- package/dist/lib/authentication/state.js.map +1 -1
- package/dist/lib/components/Heading.d.ts +1 -1
- package/dist/lib/components/Layout.js +5 -10
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/components/Main.js +3 -1
- package/dist/lib/components/Main.js.map +1 -1
- package/dist/lib/components/Pagination.d.ts +10 -0
- package/dist/lib/components/Pagination.js +10 -0
- package/dist/lib/components/Pagination.js.map +1 -0
- package/dist/lib/components/TopNavigation.js +18 -2
- package/dist/lib/components/TopNavigation.js.map +1 -1
- package/dist/lib/components/navigation/SidebarItem.d.ts +1 -0
- package/dist/lib/components/navigation/SidebarItem.js +7 -3
- package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
- package/dist/lib/{plugins/markdown → components/navigation}/Toc.js +5 -7
- package/dist/lib/components/navigation/Toc.js.map +1 -0
- package/dist/lib/core/ZudokuContext.d.ts +7 -0
- package/dist/lib/core/ZudokuContext.js +8 -3
- package/dist/lib/core/ZudokuContext.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +1 -1
- package/dist/lib/oas/graphql/index.d.ts +2 -1
- package/dist/lib/oas/graphql/index.js +74 -14
- package/dist/lib/oas/graphql/index.js.map +1 -1
- package/dist/lib/oas/parser/dereference/index.js +2 -0
- package/dist/lib/oas/parser/dereference/index.js.map +1 -1
- package/dist/lib/oas/parser/index.d.ts +5 -3
- package/dist/lib/oas/parser/index.js +0 -22
- package/dist/lib/oas/parser/index.js.map +1 -1
- package/dist/lib/plugins/api-catalog/index.js +19 -17
- package/dist/lib/plugins/api-catalog/index.js.map +1 -1
- package/dist/lib/plugins/markdown/MdxPage.js +3 -9
- package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/lib/plugins/openapi/ColorizedParam.js +1 -1
- package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -1
- package/dist/lib/plugins/openapi/Endpoint.js +1 -1
- package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.d.ts +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +29 -9
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.js +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js +2 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/SchemaList.d.ts +1 -0
- package/dist/lib/plugins/openapi/SchemaList.js +52 -0
- package/dist/lib/plugins/openapi/SchemaList.js.map +1 -0
- package/dist/lib/plugins/openapi/Sidecar.js +29 -5
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/client/GraphQLClient.d.ts +1 -1
- package/dist/lib/plugins/openapi/client/GraphQLClient.js +1 -1
- package/dist/lib/plugins/openapi/client/GraphQLClient.js.map +1 -1
- package/dist/lib/plugins/openapi/client/useCreateQuery.d.ts +6 -2
- package/dist/lib/plugins/openapi/client/useCreateQuery.js +5 -5
- package/dist/lib/plugins/openapi/client/useCreateQuery.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/graphql/gql.d.ts +6 -2
- package/dist/lib/plugins/openapi/graphql/gql.js +3 -2
- package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
- package/dist/lib/plugins/openapi/graphql/graphql.d.ts +67 -11
- package/dist/lib/plugins/openapi/graphql/graphql.js +34 -5
- package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
- package/dist/lib/plugins/openapi/index.js +12 -0
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +26 -0
- package/dist/lib/plugins/openapi/playground/Playground.js +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +2 -2
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroup.d.ts +1 -2
- package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroup.js +2 -2
- package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroup.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.d.ts +0 -1
- package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.js +1 -1
- package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.d.ts +4 -0
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +12 -0
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -0
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.d.ts +2 -4
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +12 -9
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +1 -2
- package/dist/lib/plugins/openapi/schema/SchemaView.js +30 -52
- package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/utils.d.ts +1 -0
- package/dist/lib/plugins/openapi/schema/utils.js +3 -1
- package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
- package/dist/lib/plugins/openapi/state.d.ts +25 -0
- package/dist/lib/plugins/openapi/state.js +18 -0
- package/dist/lib/plugins/openapi/state.js.map +1 -0
- package/dist/lib/plugins/openapi/util/getRoutes.js +9 -3
- package/dist/lib/plugins/openapi/util/getRoutes.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js +13 -4
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/ResultList.js +19 -12
- package/dist/lib/plugins/search-pagefind/ResultList.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/get-results.d.ts +8 -1
- package/dist/lib/plugins/search-pagefind/get-results.js +9 -4
- package/dist/lib/plugins/search-pagefind/get-results.js.map +1 -1
- package/dist/lib/util/traverse.d.ts +2 -8
- package/dist/lib/util/traverse.js.map +1 -1
- package/dist/lib/util/types.d.ts +7 -0
- package/dist/lib/util/types.js +2 -0
- package/dist/lib/util/types.js.map +1 -0
- package/dist/lib/util/useOnScreen.d.ts +3 -2
- package/dist/lib/util/useOnScreen.js +3 -3
- package/dist/lib/util/useOnScreen.js.map +1 -1
- package/dist/lib/util/useScrollToAnchor.js +18 -12
- package/dist/lib/util/useScrollToAnchor.js.map +1 -1
- package/dist/vite/api/schema-codegen.js +2 -2
- package/dist/vite/api/schema-codegen.js.map +1 -1
- package/dist/vite/api/schema-codegen.test.js +5 -0
- package/dist/vite/api/schema-codegen.test.js.map +1 -1
- package/dist/vite/plugin-api.js +12 -8
- package/dist/vite/plugin-api.js.map +1 -1
- package/lib/{AuthenticationPlugin-Cij2tPWa.js → AuthenticationPlugin-foqdvvkf.js} +3 -3
- package/lib/{AuthenticationPlugin-Cij2tPWa.js.map → AuthenticationPlugin-foqdvvkf.js.map} +1 -1
- package/lib/{Callout-B2vsR09t.js → Callout-D5frCCJ0.js} +2 -2
- package/lib/{Callout-B2vsR09t.js.map → Callout-D5frCCJ0.js.map} +1 -1
- package/lib/{Dialog-sbgekbjb.js → Dialog-Dv6WG8RN.js} +5 -5
- package/lib/{Dialog-sbgekbjb.js.map → Dialog-Dv6WG8RN.js.map} +1 -1
- package/lib/{Markdown-DT5Rrq8_.js → Markdown-aF5FdsNi.js} +1945 -1937
- package/lib/{Markdown-DT5Rrq8_.js.map → Markdown-aF5FdsNi.js.map} +1 -1
- package/lib/MdxPage-ZW1StNhp.js +83 -0
- package/lib/MdxPage-ZW1StNhp.js.map +1 -0
- package/lib/{OasProvider-DdEBf2qS.js → OasProvider-Cld9RAMQ.js} +4 -4
- package/lib/{OasProvider-DdEBf2qS.js.map → OasProvider-Cld9RAMQ.js.map} +1 -1
- package/lib/OperationList-D-OfzJm6.js +5065 -0
- package/lib/OperationList-D-OfzJm6.js.map +1 -0
- package/lib/Pagination-CYB3nVYx.js +46 -0
- package/lib/Pagination-CYB3nVYx.js.map +1 -0
- package/lib/SchemaList-Ci1WxRh0.js +148 -0
- package/lib/SchemaList-Ci1WxRh0.js.map +1 -0
- package/lib/SchemaView-Brn-YxHY.js +345 -0
- package/lib/SchemaView-Brn-YxHY.js.map +1 -0
- package/lib/{Select-z1Lwl0-J.js → Select-DVFRKf1R.js} +8 -8
- package/lib/{Select-z1Lwl0-J.js.map → Select-DVFRKf1R.js.map} +1 -1
- package/lib/{SlotletProvider-D8OBnr77.js → SlotletProvider-DXvc0aY6.js} +4 -4
- package/lib/{SlotletProvider-D8OBnr77.js.map → SlotletProvider-DXvc0aY6.js.map} +1 -1
- package/lib/Toc-YBsgI72s.js +92 -0
- package/lib/Toc-YBsgI72s.js.map +1 -0
- package/lib/{chunk-HA7DTUK3-ZGg2W6yV.js → chunk-HA7DTUK3-C4gP41vD.js} +5 -5
- package/lib/{chunk-HA7DTUK3-ZGg2W6yV.js.map → chunk-HA7DTUK3-C4gP41vD.js.map} +1 -1
- package/lib/{createServer-DjgKDpGV.js → createServer-mMau3eV_.js} +1732 -1664
- package/lib/{createServer-DjgKDpGV.js.map → createServer-mMau3eV_.js.map} +1 -1
- package/lib/hook-CqpVYDqN.js +1483 -0
- package/lib/hook-CqpVYDqN.js.map +1 -0
- package/lib/index-Bt7MKhZq.js +2514 -0
- package/lib/index-Bt7MKhZq.js.map +1 -0
- package/lib/{index-DdQSV2RF.js → index-CjPMxpOV.js} +809 -750
- package/lib/index-CjPMxpOV.js.map +1 -0
- package/lib/{mutation-_Z5C2wFZ.js → mutation-8LjrN7uz.js} +2 -2
- package/lib/{mutation-_Z5C2wFZ.js.map → mutation-8LjrN7uz.js.map} +1 -1
- package/lib/post-processors/traverse.js.map +1 -1
- package/lib/ui/Command.js +1 -1
- package/lib/{useExposedProps-BslIn-FE.js → useExposedProps-B9qXJedG.js} +2 -2
- package/lib/{useExposedProps-BslIn-FE.js.map → useExposedProps-B9qXJedG.js.map} +1 -1
- package/lib/zudoku.auth-auth0.js +1 -1
- package/lib/zudoku.auth-clerk.js +59 -41
- package/lib/zudoku.auth-clerk.js.map +1 -1
- package/lib/zudoku.auth-openid.js +76 -73
- package/lib/zudoku.auth-openid.js.map +1 -1
- package/lib/zudoku.components.js +31 -1440
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.hooks.js +1 -1
- package/lib/zudoku.plugin-api-catalog.js +81 -79
- package/lib/zudoku.plugin-api-catalog.js.map +1 -1
- package/lib/zudoku.plugin-api-keys.js +15 -16
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-custom-pages.js +2 -2
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +5 -6
- package/lib/zudoku.plugin-openapi.js.map +1 -1
- package/lib/zudoku.plugin-redirect.js +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +133 -98
- package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
- package/lib/zudoku.plugins.js.map +1 -1
- package/package.json +4 -3
- package/src/app/main.tsx +2 -0
- package/src/app/tailwind.ts +14 -0
- package/src/lib/authentication/authentication.ts +2 -0
- package/src/lib/authentication/providers/clerk.tsx +20 -0
- package/src/lib/authentication/providers/openid.tsx +6 -0
- package/src/lib/authentication/providers/supabase.tsx +6 -0
- package/src/lib/authentication/state.ts +1 -35
- package/src/lib/components/Layout.tsx +17 -17
- package/src/lib/components/Main.tsx +3 -1
- package/src/lib/components/Pagination.tsx +47 -0
- package/src/lib/components/TopNavigation.tsx +29 -2
- package/src/lib/components/navigation/SidebarItem.tsx +10 -4
- package/src/lib/{plugins/markdown → components/navigation}/Toc.tsx +5 -14
- package/src/lib/core/ZudokuContext.ts +13 -6
- package/src/lib/core/plugins.ts +1 -1
- package/src/lib/oas/graphql/index.ts +118 -45
- package/src/lib/oas/parser/dereference/index.ts +2 -0
- package/src/lib/oas/parser/index.ts +7 -29
- package/src/lib/plugins/api-catalog/index.tsx +40 -35
- package/src/lib/plugins/markdown/MdxPage.tsx +6 -43
- package/src/lib/plugins/openapi/ColorizedParam.tsx +1 -1
- package/src/lib/plugins/openapi/Endpoint.tsx +1 -1
- package/src/lib/plugins/openapi/OperationList.tsx +37 -16
- package/src/lib/plugins/openapi/OperationListItem.tsx +7 -2
- package/src/lib/plugins/openapi/ParameterListItem.tsx +2 -0
- package/src/lib/plugins/openapi/SchemaList.tsx +151 -0
- package/src/lib/plugins/openapi/Sidecar.tsx +36 -7
- package/src/lib/plugins/openapi/client/GraphQLClient.tsx +1 -1
- package/src/lib/plugins/openapi/client/useCreateQuery.ts +12 -5
- package/src/lib/plugins/openapi/components/EnumValues.tsx +1 -1
- package/src/lib/plugins/openapi/graphql/gql.ts +15 -6
- package/src/lib/plugins/openapi/graphql/graphql.ts +104 -15
- package/src/lib/plugins/openapi/index.tsx +13 -0
- package/src/lib/plugins/openapi/interfaces.ts +29 -0
- package/src/lib/plugins/openapi/playground/Playground.tsx +1 -1
- package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +2 -1
- package/src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroup.tsx +1 -8
- package/src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.tsx +1 -2
- package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +36 -0
- package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +20 -21
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +69 -141
- package/src/lib/plugins/openapi/schema/utils.ts +7 -1
- package/src/lib/plugins/openapi/state.ts +36 -0
- package/src/lib/plugins/openapi/util/getRoutes.tsx +9 -6
- package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +26 -4
- package/src/lib/plugins/search-pagefind/ResultList.tsx +59 -47
- package/src/lib/plugins/search-pagefind/get-results.tsx +31 -10
- package/src/lib/util/traverse.ts +2 -6
- package/src/lib/util/types.ts +7 -0
- package/src/lib/util/useOnScreen.ts +6 -4
- package/src/lib/util/useScrollToAnchor.ts +20 -12
- package/dist/lib/plugins/markdown/Toc.js.map +0 -1
- package/lib/MdxPage-D2rD1vC4.js +0 -200
- package/lib/MdxPage-D2rD1vC4.js.map +0 -1
- package/lib/OperationList-DT4-gm_S.js +0 -5363
- package/lib/OperationList-DT4-gm_S.js.map +0 -1
- package/lib/hook-DzQC8PzJ.js +0 -355
- package/lib/hook-DzQC8PzJ.js.map +0 -1
- package/lib/index-DdQSV2RF.js.map +0 -1
- package/lib/index.esm-CltAN0Tf.js +0 -711
- package/lib/index.esm-CltAN0Tf.js.map +0 -1
- package/lib/joinUrl-BjDooT-T.js +0 -1154
- package/lib/joinUrl-BjDooT-T.js.map +0 -1
- /package/dist/lib/{plugins/markdown → components/navigation}/Toc.d.ts +0 -0
|
@@ -1,64 +1,42 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Markdown, ProseClasses } from "../../../components/Markdown.js";
|
|
3
3
|
import { Card, CardContent, CardHeader, CardTitle } from "../../../ui/Card.js";
|
|
4
4
|
import { cn } from "../../../util/cn.js";
|
|
5
5
|
import { groupBy } from "../../../util/groupBy.js";
|
|
6
6
|
import { EnumValues } from "../components/EnumValues.js";
|
|
7
7
|
import { ParamInfos } from "../ParamInfos.js";
|
|
8
|
+
import { SchemaExampleAndDefault } from "./SchemaExampleAndDefault.js";
|
|
8
9
|
import { SchemaLogicalGroup, SchemaPropertyItem, } from "./SchemaPropertyItem.js";
|
|
9
|
-
import { hasLogicalGroupings } from "./utils.js";
|
|
10
|
+
import { hasLogicalGroupings, isBasicType } from "./utils.js";
|
|
10
11
|
const renderMarkdown = (content) => content && (_jsx(Markdown, { className: cn(ProseClasses, "text-sm leading-normal line-clamp-4"), content: content }));
|
|
11
|
-
|
|
12
|
+
const renderBasicSchema = (schema) => (_jsxs(Card, { className: "p-4 space-y-2", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: _jsx(ParamInfos, { schema: schema }) }), schema.enum && _jsx(EnumValues, { values: schema.enum }), renderMarkdown(schema.description), _jsx(SchemaExampleAndDefault, { schema: schema })] }));
|
|
13
|
+
export const SchemaView = ({ schema, defaultOpen = false, }) => {
|
|
12
14
|
if (!schema || Object.keys(schema).length === 0) {
|
|
13
|
-
return (_jsx(Card, { className: "p-4", children: _jsx("span", { className: "text-sm text-muted-foreground italic", children: "No
|
|
15
|
+
return (_jsx(Card, { className: "p-4", children: _jsx("span", { className: "text-sm text-muted-foreground italic", children: "No schema specified" }) }));
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(!schema.properties || Object.keys(schema.properties).length === 0)) {
|
|
40
|
-
return (_jsxs(Card, { className: "p-4 flex gap-2 items-baseline", children: ["name" in schema && _jsx(_Fragment, { children: schema.name }), _jsx("span", { className: "text-sm text-muted-foreground", children: _jsx(ParamInfos, { schema: schema }) }), renderMarkdown(schema.description)] }));
|
|
41
|
-
}
|
|
42
|
-
if (schema.properties) {
|
|
43
|
-
const groupedProperties = groupBy(Object.entries(schema.properties), ([propertyName, property]) => {
|
|
44
|
-
return property.deprecated
|
|
45
|
-
? "deprecated"
|
|
46
|
-
: schema.required?.includes(propertyName)
|
|
47
|
-
? "required"
|
|
48
|
-
: "optional";
|
|
49
|
-
});
|
|
50
|
-
const groupNames = ["required", "optional", "deprecated"];
|
|
51
|
-
return (_jsx(Card, { className: "divide-y overflow-hidden", children: groupNames.map((group) => groupedProperties[group] && (_jsx("ul", { className: "divide-y", children: groupedProperties[group].map(([name, schema]) => (_jsx(SchemaPropertyItem, { name: name, schema: schema, group: group, level: level, defaultOpen: defaultOpen }, name))) }, group))) }));
|
|
52
|
-
}
|
|
53
|
-
if (typeof schema.type === "string" &&
|
|
54
|
-
["string", "number", "boolean", "integer", "null"].includes(schema.type)) {
|
|
55
|
-
return (_jsxs(Card, { className: "p-4 space-y-2", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: _jsx(ParamInfos, { schema: schema }) }), schema.enum && _jsx(EnumValues, { values: schema.enum }), renderMarkdown(schema.description)] }));
|
|
56
|
-
}
|
|
57
|
-
if (schema.additionalProperties) {
|
|
58
|
-
return (_jsxs(Card, { className: "my-2", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Additional Properties:" }) }), _jsx(CardContent, { children: renderSchema(schema.additionalProperties, level + 1) })] }));
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
};
|
|
62
|
-
return renderSchema(schema, level);
|
|
17
|
+
if (hasLogicalGroupings(schema)) {
|
|
18
|
+
return _jsx(SchemaLogicalGroup, { schema: schema });
|
|
19
|
+
}
|
|
20
|
+
if (isBasicType(schema.type)) {
|
|
21
|
+
return renderBasicSchema(schema);
|
|
22
|
+
}
|
|
23
|
+
if (schema.type === "array" && typeof schema.items === "object") {
|
|
24
|
+
return renderBasicSchema(schema.items);
|
|
25
|
+
}
|
|
26
|
+
if (schema.type === "object") {
|
|
27
|
+
const groupedProperties = groupBy(Object.entries(schema.properties ?? {}), ([propertyName, property]) => {
|
|
28
|
+
return property.deprecated
|
|
29
|
+
? "deprecated"
|
|
30
|
+
: schema.required?.includes(propertyName)
|
|
31
|
+
? "required"
|
|
32
|
+
: "optional";
|
|
33
|
+
});
|
|
34
|
+
const groupNames = ["required", "optional", "deprecated"];
|
|
35
|
+
return (_jsx(Card, { className: "divide-y overflow-hidden", children: groupNames.map((group) => groupedProperties[group] && (_jsx("ul", { className: "divide-y", children: groupedProperties[group].map(([name, schema]) => (_jsx(SchemaPropertyItem, { name: name, schema: schema, group: group, defaultOpen: defaultOpen }, name))) }, group))) }));
|
|
36
|
+
}
|
|
37
|
+
if (schema.additionalProperties) {
|
|
38
|
+
return (_jsxs(Card, { className: "my-2", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Additional Properties:" }) }), _jsx(CardContent, { children: _jsx(SchemaView, { schema: schema.additionalProperties }) })] }));
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
63
41
|
};
|
|
64
42
|
//# sourceMappingURL=SchemaView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaView.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/schema/SchemaView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaView.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/schema/SchemaView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SchemaObject } from "../../../oas/parser/index.js";
|
|
2
|
+
export declare const isBasicType: (type: unknown) => type is "string" | "number" | "boolean" | "integer" | "null";
|
|
2
3
|
export declare const isComplexType: (value: SchemaObject) => boolean;
|
|
3
4
|
export declare const hasLogicalGroupings: (value: SchemaObject) => boolean;
|
|
4
5
|
export declare const LogicalSchemaTypeMap: {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CIRCULAR_REF } from "../../../oas/graphql/circular.js";
|
|
2
|
-
export const
|
|
2
|
+
export const isBasicType = (type) => typeof type === "string" &&
|
|
3
|
+
["string", "number", "boolean", "integer", "null"].includes(type);
|
|
4
|
+
export const isComplexType = (value) => (value.type === "object" && Object.keys(value.properties ?? {}).length > 0) ||
|
|
3
5
|
(value.type === "array" &&
|
|
4
6
|
typeof value.items === "object" &&
|
|
5
7
|
(!value.items.type || value.items.type === "object"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/schema/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE,CACnD,KAAK,CAAC,IAAI,KAAK,QAAQ;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/schema/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAa,EACiD,EAAE,CAChE,OAAO,IAAI,KAAK,QAAQ;IACxB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE,CACnD,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;QACrB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAmB,EAAE,EAAE,CACzD,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAe,EAAoB,EAAE,CACjE,MAAM,KAAK,YAAY,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface SelectedServerState {
|
|
2
|
+
selectedServer?: string;
|
|
3
|
+
setSelectedServer: (newServer: string) => void;
|
|
4
|
+
}
|
|
5
|
+
export declare const useSelectedServerStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<SelectedServerState>, "persist"> & {
|
|
6
|
+
persist: {
|
|
7
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<SelectedServerState, SelectedServerState>>) => void;
|
|
8
|
+
clearStorage: () => void;
|
|
9
|
+
rehydrate: () => Promise<void> | void;
|
|
10
|
+
hasHydrated: () => boolean;
|
|
11
|
+
onHydrate: (fn: (state: SelectedServerState) => void) => () => void;
|
|
12
|
+
onFinishHydration: (fn: (state: SelectedServerState) => void) => () => void;
|
|
13
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<SelectedServerState, SelectedServerState>>;
|
|
14
|
+
};
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Simple wrapper for `useSelectedServerStore` to fall back to first of the provided servers
|
|
18
|
+
*/
|
|
19
|
+
export declare const useSelectedServer: (servers: Array<{
|
|
20
|
+
url: string;
|
|
21
|
+
}>) => {
|
|
22
|
+
selectedServer: string;
|
|
23
|
+
setSelectedServer: (newServer: string) => void;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { create } from "zustand";
|
|
3
|
+
import { persist } from "zustand/middleware";
|
|
4
|
+
export const useSelectedServerStore = create()(persist((set) => ({
|
|
5
|
+
selectedServer: undefined,
|
|
6
|
+
setSelectedServer: (newServer) => set({ selectedServer: newServer }),
|
|
7
|
+
}), { name: "zudoku-selected-server" }));
|
|
8
|
+
/**
|
|
9
|
+
* Simple wrapper for `useSelectedServerStore` to fall back to first of the provided servers
|
|
10
|
+
*/
|
|
11
|
+
export const useSelectedServer = (servers) => {
|
|
12
|
+
const { selectedServer, setSelectedServer } = useSelectedServerStore();
|
|
13
|
+
const finalSelectedServer = useMemo(() => selectedServer && servers.some((s) => s.url === selectedServer)
|
|
14
|
+
? selectedServer
|
|
15
|
+
: (servers.at(0)?.url ?? ""), [selectedServer, servers]);
|
|
16
|
+
return { selectedServer: finalSelectedServer, setSelectedServer };
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAO7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,EAAuB,CACjE,OAAO,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACR,cAAc,EAAE,SAAS;IACzB,iBAAiB,EAAE,CAAC,SAAiB,EAAE,EAAE,CACvC,GAAG,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;CACrC,CAAC,EACF,EAAE,IAAI,EAAE,wBAAwB,EAAE,CACnC,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA+B,EAAE,EAAE;IACnE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAEvE,MAAM,mBAAmB,GAAG,OAAO,CACjC,GAAG,EAAE,CACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC;QAC7D,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAChC,CAAC,cAAc,EAAE,OAAO,CAAC,CAC1B,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AACpE,CAAC,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import slugify from "@sindresorhus/slugify";
|
|
3
2
|
import { redirect } from "react-router";
|
|
4
3
|
import { joinUrl } from "../../../util/joinUrl.js";
|
|
5
4
|
import { UNTAGGED_PATH } from "../index.js";
|
|
@@ -24,13 +23,13 @@ const createRoute = ({ path, tag, untagged, }) => ({
|
|
|
24
23
|
});
|
|
25
24
|
// Creates routes for a specific version, including tag-based routes and the untagged operations route.
|
|
26
25
|
const createVersionRoutes = (versionPath, tagPages) => {
|
|
27
|
-
const firstTagRoute = joinUrl(versionPath, tagPages
|
|
26
|
+
const firstTagRoute = joinUrl(versionPath, tagPages.at(0) ?? UNTAGGED_PATH);
|
|
28
27
|
return [
|
|
29
28
|
// Redirect to first tag on the index route
|
|
30
29
|
{ index: true, loader: () => redirect(firstTagRoute) },
|
|
31
30
|
// Create routes for each tag
|
|
32
31
|
...tagPages.map((tag) => createRoute({
|
|
33
|
-
path: joinUrl(versionPath,
|
|
32
|
+
path: joinUrl(versionPath, tag),
|
|
34
33
|
tag,
|
|
35
34
|
})),
|
|
36
35
|
// Category without tagged operations
|
|
@@ -38,6 +37,13 @@ const createVersionRoutes = (versionPath, tagPages) => {
|
|
|
38
37
|
path: joinUrl(versionPath, UNTAGGED_PATH),
|
|
39
38
|
untagged: true,
|
|
40
39
|
}),
|
|
40
|
+
{
|
|
41
|
+
path: joinUrl(versionPath, "~schemas"),
|
|
42
|
+
lazy: async () => {
|
|
43
|
+
const { SchemaList } = await import("../SchemaList.js");
|
|
44
|
+
return { element: _jsx(SchemaList, {}) };
|
|
45
|
+
},
|
|
46
|
+
},
|
|
41
47
|
];
|
|
42
48
|
};
|
|
43
49
|
export const getVersions = (config) => config.type === "file" ? Object.keys(config.input) : [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRoutes.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/util/getRoutes.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getRoutes.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/util/getRoutes.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
|
|
3
3
|
import { keepPreviousData, useQuery } from "@tanstack/react-query";
|
|
4
|
-
import { useState } from "react";
|
|
4
|
+
import { useRef, useState } from "react";
|
|
5
|
+
import { Button } from "zudoku/ui/Button.js";
|
|
5
6
|
import { Callout } from "zudoku/ui/Callout.js";
|
|
6
7
|
import { CommandDialog, CommandEmpty, CommandInput, } from "zudoku/ui/Command.js";
|
|
7
8
|
import { DialogTitle } from "zudoku/ui/Dialog.js";
|
|
9
|
+
import { useAuthState } from "../../authentication/state.js";
|
|
10
|
+
import { useZudoku } from "../../components/context/ZudokuContext.js";
|
|
8
11
|
import { joinUrl } from "../../util/joinUrl.js";
|
|
9
12
|
import { getResults } from "./get-results.js";
|
|
10
13
|
import { ResultList } from "./ResultList.js";
|
|
@@ -41,7 +44,7 @@ const usePagefind = (options) => {
|
|
|
41
44
|
},
|
|
42
45
|
enabled: typeof window !== "undefined",
|
|
43
46
|
});
|
|
44
|
-
if (result.isError) {
|
|
47
|
+
if (result.isError && result.error.message !== "NOT_BUILT_YET") {
|
|
45
48
|
// eslint-disable-next-line no-console
|
|
46
49
|
console.error(result.error);
|
|
47
50
|
}
|
|
@@ -50,17 +53,23 @@ const usePagefind = (options) => {
|
|
|
50
53
|
export const PagefindSearch = ({ isOpen, onClose, options, }) => {
|
|
51
54
|
const { pagefind, error, isError } = usePagefind(options);
|
|
52
55
|
const [searchTerm, setSearchTerm] = useState("");
|
|
56
|
+
const auth = useAuthState();
|
|
57
|
+
const context = useZudoku();
|
|
58
|
+
const inputRef = useRef(null);
|
|
53
59
|
const { data: searchResults } = useQuery({
|
|
54
60
|
queryKey: ["pagefind-search", searchTerm],
|
|
55
61
|
queryFn: async () => {
|
|
56
62
|
const search = await pagefind?.search(searchTerm);
|
|
57
63
|
if (!search)
|
|
58
64
|
return [];
|
|
59
|
-
return getResults(search, options);
|
|
65
|
+
return getResults({ search, options, auth, context });
|
|
60
66
|
},
|
|
61
67
|
placeholderData: keepPreviousData,
|
|
62
68
|
enabled: !!pagefind && !!searchTerm,
|
|
63
69
|
});
|
|
64
|
-
return (_jsxs(CommandDialog, { command: { shouldFilter: false }, content: { className: "max-w-[750px]" }, open: isOpen, onOpenChange: onClose, children: [_jsx(VisuallyHidden, { children: _jsx(DialogTitle, { children: "Search" }) }), _jsx(CommandInput, { placeholder: "Search...", value: searchTerm, onValueChange: setSearchTerm, disabled: isError }), _jsx(CommandEmpty, { children: searchTerm ?
|
|
70
|
+
return (_jsxs(CommandDialog, { command: { shouldFilter: false }, content: { className: "max-w-[750px]" }, open: isOpen, onOpenChange: onClose, children: [_jsx(VisuallyHidden, { children: _jsx(DialogTitle, { children: "Search" }) }), _jsx(CommandInput, { ref: inputRef, placeholder: "Search...", value: searchTerm, onValueChange: setSearchTerm, disabled: isError }), _jsx(CommandEmpty, { children: searchTerm ? (_jsxs("div", { className: "flex flex-col items-center", children: ["No results found.", _jsx(Button, { variant: "link", onClick: () => {
|
|
71
|
+
setSearchTerm("");
|
|
72
|
+
inputRef.current?.focus();
|
|
73
|
+
}, children: "Clear search" })] })) : ("Start typing to search") }), isError ? (_jsx("div", { className: "p-4 text-sm", children: error.message === "NOT_BUILT_YET" ? (_jsxs(Callout, { type: "info", children: ["Search is currently not available in development mode by default.", _jsx("br", {}), "To still use search in development, run ", _jsx("code", { children: "zudoku build" }), " ", "and copy the ", _jsx("code", { children: "dist/pagefind" }), " directory to your", " ", _jsx("code", { children: "public" }), " directory."] })) : ("An error occurred while loading search.") })) : (_jsx(ResultList, { basePath: options.basePath, searchResults: searchResults ?? [], searchTerm: searchTerm, onClose: onClose, maxSubResults: options.maxSubResults }))] }));
|
|
65
74
|
};
|
|
66
75
|
//# sourceMappingURL=PagefindSearch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PagefindSearch.js","sourceRoot":"","sources":["../../../../src/lib/plugins/search-pagefind/PagefindSearch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PagefindSearch.js","sourceRoot":"","sources":["../../../../src/lib/plugins/search-pagefind/PagefindSearch.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { FileTextIcon } from "lucide-react";
|
|
3
|
-
import { useCallback } from "react";
|
|
2
|
+
import { BracketsIcon, FileTextIcon } from "lucide-react";
|
|
3
|
+
import { useCallback, useLayoutEffect, useRef } from "react";
|
|
4
4
|
import { Link, useNavigate } from "react-router";
|
|
5
5
|
import { CommandGroup, CommandItem, CommandList } from "zudoku/ui/Command.js";
|
|
6
6
|
const sortSubResults = (a, b) => {
|
|
@@ -11,21 +11,28 @@ const sortSubResults = (a, b) => {
|
|
|
11
11
|
const hoverClassname = `cursor-pointer border border-transparent data-[selected=true]:border-border`;
|
|
12
12
|
export const ResultList = ({ basePath, searchResults, searchTerm, onClose, maxSubResults = 4, }) => {
|
|
13
13
|
const navigate = useNavigate();
|
|
14
|
+
const commandListRef = useRef(null);
|
|
14
15
|
const cleanResultUrl = useCallback((url) => {
|
|
15
16
|
const clean = url.replace(".html", "");
|
|
16
17
|
return basePath && clean.startsWith(basePath)
|
|
17
18
|
? clean.slice(basePath.length)
|
|
18
19
|
: clean;
|
|
19
20
|
}, [basePath]);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
useLayoutEffect(() => {
|
|
22
|
+
requestIdleCallback(() => {
|
|
23
|
+
commandListRef.current?.scrollTo({ top: 0 });
|
|
24
|
+
});
|
|
25
|
+
}, [searchTerm]);
|
|
26
|
+
return (_jsxs(CommandList, { className: "max-h-[450px]", ref: commandListRef, children: [searchTerm && searchResults.length > 0 && (_jsx(CommandGroup, { className: "text-sm text-muted-foreground", heading: `${searchResults.length} results for "${searchTerm}"` })), searchTerm &&
|
|
27
|
+
searchResults.map((result) => (_jsxs(CommandGroup, { children: [_jsx(CommandItem, { asChild: true, value: `${result.meta.title}-${result.url}`, className: hoverClassname, onSelect: () => {
|
|
28
|
+
void navigate(cleanResultUrl(result.url));
|
|
29
|
+
onClose();
|
|
30
|
+
}, children: _jsxs(Link, { to: cleanResultUrl(result.url), children: [result.meta.section === "openapi" ? (_jsx(BracketsIcon, {})) : (_jsx(FileTextIcon, {})), result.meta.title] }) }), result.sub_results
|
|
31
|
+
.sort(sortSubResults)
|
|
32
|
+
.slice(0, maxSubResults)
|
|
33
|
+
.map((subResult) => (_jsx(CommandItem, { asChild: true, value: `sub-${result.meta.title}-${subResult.url}`, className: hoverClassname, onSelect: () => {
|
|
34
|
+
void navigate(cleanResultUrl(subResult.url));
|
|
35
|
+
onClose();
|
|
36
|
+
}, children: _jsx(Link, { to: cleanResultUrl(subResult.url), onClick: onClose, children: _jsxs("div", { className: "flex flex-col items-start gap-2 ms-2.5 ps-5 border-l border-muted-foreground/50", children: [_jsx("span", { className: "font-bold", children: subResult.title }), _jsx("span", { className: "text-[13px] [&_mark]:bg-primary [&_mark]:text-primary-foreground", dangerouslySetInnerHTML: { __html: subResult.excerpt } })] }) }) }, `sub-${result.meta.title}-${subResult.url}`)))] }, [result.meta.title ?? result.excerpt, result.url].join("-"))))] }));
|
|
30
37
|
};
|
|
31
38
|
//# sourceMappingURL=ResultList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResultList.js","sourceRoot":"","sources":["../../../../src/lib/plugins/search-pagefind/ResultList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ResultList.js","sourceRoot":"","sources":["../../../../src/lib/plugins/search-pagefind/ResultList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import type { AuthState } from "../../authentication/state.js";
|
|
2
|
+
import type { ZudokuContext } from "../../core/ZudokuContext.js";
|
|
1
3
|
import type { PagefindOptions } from "./index.js";
|
|
2
4
|
import type { PagefindSearchFragment, PagefindSearchResults } from "./types.js";
|
|
3
|
-
export declare const getResults: (search
|
|
5
|
+
export declare const getResults: ({ search, options, auth, context, }: {
|
|
6
|
+
search: PagefindSearchResults;
|
|
7
|
+
options: PagefindOptions;
|
|
8
|
+
auth: AuthState;
|
|
9
|
+
context: ZudokuContext;
|
|
10
|
+
}) => Promise<PagefindSearchFragment[]>;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
export const getResults = async (search, options) => {
|
|
1
|
+
export const getResults = async ({ search, options, auth, context, }) => {
|
|
2
2
|
const maxResults = options.maxResults ?? 10;
|
|
3
3
|
const transformFn = options.transformResults ?? (() => true);
|
|
4
4
|
const transformedResults = [];
|
|
5
|
-
const generator = searchResultGenerator(
|
|
5
|
+
const generator = searchResultGenerator({
|
|
6
|
+
search,
|
|
7
|
+
transformFn,
|
|
8
|
+
auth,
|
|
9
|
+
context,
|
|
10
|
+
});
|
|
6
11
|
for await (const result of generator) {
|
|
7
12
|
transformedResults.push(result);
|
|
8
13
|
if (transformedResults.length >= maxResults)
|
|
@@ -10,7 +15,7 @@ export const getResults = async (search, options) => {
|
|
|
10
15
|
}
|
|
11
16
|
return transformedResults;
|
|
12
17
|
};
|
|
13
|
-
async function* searchResultGenerator(search, transformFn) {
|
|
18
|
+
async function* searchResultGenerator({ search, transformFn, auth, context, }) {
|
|
14
19
|
const batchSize = 5;
|
|
15
20
|
let processedCount = 0;
|
|
16
21
|
while (processedCount < search.results.length) {
|
|
@@ -18,7 +23,7 @@ async function* searchResultGenerator(search, transformFn) {
|
|
|
18
23
|
processedCount += batch.length;
|
|
19
24
|
const batchData = await Promise.all(batch.map((result) => result.data()));
|
|
20
25
|
for (const result of batchData) {
|
|
21
|
-
const transformed = transformFn(result);
|
|
26
|
+
const transformed = transformFn({ result, auth, context });
|
|
22
27
|
if (transformed === false) {
|
|
23
28
|
// Skip this result
|
|
24
29
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-results.js","sourceRoot":"","sources":["../../../../src/lib/plugins/search-pagefind/get-results.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-results.js","sourceRoot":"","sources":["../../../../src/lib/plugins/search-pagefind/get-results.tsx"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,EAC/B,MAAM,EACN,OAAO,EACP,IAAI,EACJ,OAAO,GAMR,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,kBAAkB,GAA6B,EAAE,CAAC;IAExD,MAAM,SAAS,GAAG,qBAAqB,CAAC;QACtC,MAAM;QACN,WAAW;QACX,IAAI;QACJ,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QACrC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,kBAAkB,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;IACrD,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAEF,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAAC,EACpC,MAAM,EACN,WAAW,EACX,IAAI,EACJ,OAAO,GAMR;IACC,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,OAAO,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAChC,cAAc,EACd,cAAc,GAAG,SAAS,CAC3B,CAAC;QACF,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;QAE/B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE1E,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAE3D,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;gBAC1B,mBAAmB;gBACnB,SAAS;YACX,CAAC;iBAAM,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;gBACvD,2BAA2B;gBAC3B,MAAM,MAAM,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,gCAAgC;gBAChC,MAAM,WAAW,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
type
|
|
3
|
-
type JsonArray = JsonValue[];
|
|
4
|
-
type JsonObject = {
|
|
5
|
-
[key: string]: JsonValue;
|
|
6
|
-
};
|
|
7
|
-
type JsonValue = JsonPrimitive | JsonArray | JsonObject;
|
|
1
|
+
import type { JsonValue, RecordAny } from "./types.js";
|
|
2
|
+
export type { RecordAny };
|
|
8
3
|
export declare const traverse: <T extends JsonValue = RecordAny>(specification: RecordAny, transform: (specification: RecordAny) => T) => RecordAny | T;
|
|
9
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../../src/lib/util/traverse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../../src/lib/util/traverse.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,aAAwB,EACxB,SAA0C,EAC1C,EAAE;IACF,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC5D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAc,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI;gBACtC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBAC3B,CAAC,CAAC,IAAI,CACT,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type RecordAny = Record<string, any>;
|
|
2
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
3
|
+
export type JsonArray = JsonValue[];
|
|
4
|
+
export type JsonObject = {
|
|
5
|
+
[key: string]: JsonValue;
|
|
6
|
+
};
|
|
7
|
+
export type JsonValue = JsonPrimitive | JsonArray | JsonObject;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/util/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export declare const useOnScreen: ({ rootMargin, threshold, }?: {
|
|
1
|
+
export declare const useOnScreen: <E extends Element = HTMLElement>({ rootMargin, threshold, root, }?: {
|
|
2
2
|
rootMargin?: string;
|
|
3
3
|
threshold?: number;
|
|
4
|
-
|
|
4
|
+
root?: Element | null;
|
|
5
|
+
}) => readonly [import("react").RefObject<E | null>, boolean];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
|
-
export const useOnScreen = ({ rootMargin = "0px", threshold, } = {}) => {
|
|
2
|
+
export const useOnScreen = ({ rootMargin = "0px", threshold, root, } = {}) => {
|
|
3
3
|
const [isVisible, setIsVisible] = useState(false);
|
|
4
4
|
const ref = useRef(null);
|
|
5
5
|
useEffect(() => {
|
|
@@ -7,13 +7,13 @@ export const useOnScreen = ({ rootMargin = "0px", threshold, } = {}) => {
|
|
|
7
7
|
if (!entry)
|
|
8
8
|
return;
|
|
9
9
|
setIsVisible(entry.isIntersecting);
|
|
10
|
-
}, { rootMargin, threshold });
|
|
10
|
+
}, { rootMargin, threshold, root });
|
|
11
11
|
const currentElement = ref.current;
|
|
12
12
|
if (!currentElement)
|
|
13
13
|
return;
|
|
14
14
|
observer.observe(currentElement);
|
|
15
15
|
return () => observer.unobserve(currentElement);
|
|
16
|
-
}, [rootMargin, threshold]);
|
|
16
|
+
}, [root, rootMargin, threshold]);
|
|
17
17
|
return [ref, isVisible];
|
|
18
18
|
};
|
|
19
19
|
//# sourceMappingURL=useOnScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnScreen.js","sourceRoot":"","sources":["../../../src/lib/util/useOnScreen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"useOnScreen.js","sourceRoot":"","sources":["../../../src/lib/util/useOnScreen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAkC,EAC3D,UAAU,GAAG,KAAK,EAClB,SAAS,EACT,IAAI,MAKF,EAAE,EAAE,EAAE;IACR,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACvC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,EACD,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAChC,CAAC;QAEF,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,cAAc;YAAE,OAAO;QAE5B,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEjC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAElC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAU,CAAC;AACnC,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useEffect } from "react";
|
|
1
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
2
2
|
import { useLocation } from "react-router";
|
|
3
3
|
import { useViewportAnchor } from "../components/context/ViewportAnchorContext.js";
|
|
4
4
|
import { DATA_ANCHOR_ATTR } from "../components/navigation/SidebarItem.js";
|
|
@@ -27,20 +27,26 @@ export const useScrollToHash = () => {
|
|
|
27
27
|
};
|
|
28
28
|
export const useScrollToAnchor = () => {
|
|
29
29
|
const location = useLocation();
|
|
30
|
-
const { setActiveAnchor } = useViewportAnchor();
|
|
31
30
|
const scrollToHash = useScrollToHash();
|
|
31
|
+
const initialScrolled = useRef(false);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!location.hash || !initialScrolled.current)
|
|
34
|
+
return;
|
|
35
|
+
scrollToHash(location.hash);
|
|
36
|
+
}, [location.hash, scrollToHash]);
|
|
32
37
|
useEffect(() => {
|
|
33
|
-
if (!location.hash)
|
|
38
|
+
if (!location.hash) {
|
|
39
|
+
initialScrolled.current = true;
|
|
34
40
|
return;
|
|
35
|
-
if (!scrollToHash(location.hash)) {
|
|
36
|
-
const observer = new MutationObserver((_, obs) => {
|
|
37
|
-
if (!scrollToHash(location.hash))
|
|
38
|
-
return;
|
|
39
|
-
obs.disconnect();
|
|
40
|
-
});
|
|
41
|
-
observer.observe(document.body, { childList: true, subtree: true });
|
|
42
|
-
return () => observer.disconnect();
|
|
43
41
|
}
|
|
44
|
-
|
|
42
|
+
const observer = new MutationObserver((_, obs) => {
|
|
43
|
+
if (!scrollToHash(location.hash))
|
|
44
|
+
return;
|
|
45
|
+
initialScrolled.current = true;
|
|
46
|
+
obs.disconnect();
|
|
47
|
+
});
|
|
48
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
49
|
+
return () => observer.disconnect();
|
|
50
|
+
}, [location.hash, scrollToHash]);
|
|
45
51
|
};
|
|
46
52
|
//# sourceMappingURL=useScrollToAnchor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollToAnchor.js","sourceRoot":"","sources":["../../../src/lib/util/useScrollToAnchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useScrollToAnchor.js","sourceRoot":"","sources":["../../../src/lib/util/useScrollToAnchor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEhD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,IAAY,EAAE,EAAE;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEzC,8EAA8E;QAC9E,8HAA8H;QAC9H,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;QAEvE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CACjC,IAAI,gBAAgB,KAAK,QAAQ,IAAI,CACtC,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC7B,sDAAsD;YACtD,2DAA2D;YAC3D,mBAAmB,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uBAAuB;QACvB,OAAO,KAAK,CAAC;IACf,CAAC,EACD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO;YAAE,OAAO;QAEvD,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAElC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO;YACzC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;YAC/B,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpE,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC"}
|