zudoku 0.35.6 → 0.36.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/entry.server.js +5 -1
- package/dist/app/entry.server.js.map +1 -1
- package/dist/config/validators/common.d.ts +176 -176
- package/dist/config/validators/common.js +8 -6
- package/dist/config/validators/common.js.map +1 -1
- package/dist/config/validators/validate.d.ts +63 -63
- package/dist/lib/components/Layout.js +3 -14
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/components/Zudoku.js +3 -1
- package/dist/lib/components/Zudoku.js.map +1 -1
- package/dist/lib/components/cache.d.ts +7 -0
- package/dist/lib/components/cache.js +7 -0
- package/dist/lib/components/cache.js.map +1 -1
- package/dist/lib/components/context/ViewportAnchorContext.js +3 -6
- package/dist/lib/components/context/ViewportAnchorContext.js.map +1 -1
- package/dist/lib/components/context/ZudokuContext.d.ts +1 -1
- package/dist/lib/components/context/ZudokuContext.js +4 -3
- package/dist/lib/components/context/ZudokuContext.js.map +1 -1
- package/dist/lib/core/ZudokuContext.d.ts +8 -6
- package/dist/lib/core/ZudokuContext.js +4 -2
- package/dist/lib/core/ZudokuContext.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +3 -3
- package/dist/lib/hooks/useEvent.test.js +1 -1
- package/dist/lib/hooks/useEvent.test.js.map +1 -1
- package/dist/lib/oas/graphql/index.d.ts +13 -2
- package/dist/lib/oas/graphql/index.js +59 -39
- package/dist/lib/oas/graphql/index.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +19 -5
- 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/Sidecar.js +2 -2
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/client/useCreateQuery.d.ts +1 -1
- package/dist/lib/plugins/openapi/client/useCreateQuery.js +2 -1
- package/dist/lib/plugins/openapi/client/useCreateQuery.js.map +1 -1
- package/dist/lib/plugins/openapi/graphql/gql.d.ts +4 -4
- package/dist/lib/plugins/openapi/graphql/gql.js +3 -3
- package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
- package/dist/lib/plugins/openapi/graphql/graphql.d.ts +33 -44
- package/dist/lib/plugins/openapi/graphql/graphql.js +19 -29
- package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
- package/dist/lib/plugins/openapi/index.d.ts +5 -10
- package/dist/lib/plugins/openapi/index.js +29 -60
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +3 -1
- package/dist/lib/plugins/openapi/util/createSidebarCategory.js +5 -7
- package/dist/lib/plugins/openapi/util/createSidebarCategory.js.map +1 -1
- package/dist/lib/util/traverse.js +2 -2
- package/dist/lib/util/traverse.js.map +1 -1
- package/dist/lib/util/useScrollToAnchor.js +2 -0
- package/dist/lib/util/useScrollToAnchor.js.map +1 -1
- package/dist/vite/api/schema-codegen.js +19 -4
- package/dist/vite/api/schema-codegen.js.map +1 -1
- package/dist/vite/api/schema-codegen.test.js +61 -0
- package/dist/vite/api/schema-codegen.test.js.map +1 -1
- package/dist/vite/plugin-api.js +3 -11
- package/dist/vite/plugin-api.js.map +1 -1
- package/lib/{AuthenticationPlugin-4ip08maU.js → AuthenticationPlugin-Cr6xjOJD.js} +2 -2
- package/lib/{AuthenticationPlugin-4ip08maU.js.map → AuthenticationPlugin-Cr6xjOJD.js.map} +1 -1
- package/lib/{Markdown-C0eXdzGn.js → Markdown-BlioIqkZ.js} +8 -6
- package/lib/Markdown-BlioIqkZ.js.map +1 -0
- package/lib/{MdxPage-BKkG1cm1.js → MdxPage-7XnN9J9R.js} +3 -3
- package/lib/{MdxPage-BKkG1cm1.js.map → MdxPage-7XnN9J9R.js.map} +1 -1
- package/lib/{OasProvider-CwhKwrwl.js → OasProvider-BaRRMSsD.js} +3 -3
- package/lib/{OasProvider-CwhKwrwl.js.map → OasProvider-BaRRMSsD.js.map} +1 -1
- package/lib/{OperationList-DGYoFitT.js → OperationList-BjL1hzSx.js} +987 -960
- package/lib/OperationList-BjL1hzSx.js.map +1 -0
- package/lib/{SlotletProvider-BJC58V32.js → SlotletProvider-CXb3wQiR.js} +2 -2
- package/lib/{SlotletProvider-BJC58V32.js.map → SlotletProvider-CXb3wQiR.js.map} +1 -1
- package/lib/{circular-v7K6lDDh.js → circular-ByJI6Mci.js} +4887 -4419
- package/lib/circular-ByJI6Mci.js.map +1 -0
- package/lib/{createServer-CbL1Uh2Q.js → createServer-DjgKDpGV.js} +3301 -3747
- package/lib/createServer-DjgKDpGV.js.map +1 -0
- package/lib/{hook-CfCFKZ-2.js → hook-Bo80UX00.js} +75 -74
- package/lib/hook-Bo80UX00.js.map +1 -0
- package/lib/{index-Dm1QJHVl.js → index-D5m8_oyY.js} +605 -645
- package/lib/index-D5m8_oyY.js.map +1 -0
- package/lib/post-processors/traverse.js +2 -2
- package/lib/post-processors/traverse.js.map +1 -1
- package/lib/zudoku.auth-auth0.js +1 -1
- package/lib/zudoku.auth-clerk.js +2 -2
- package/lib/zudoku.auth-openid.js +2 -2
- package/lib/zudoku.components.js +395 -397
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.hooks.js +1 -1
- package/lib/zudoku.plugin-api-catalog.js +2 -2
- package/lib/zudoku.plugin-api-keys.js +2 -2
- package/lib/zudoku.plugin-custom-pages.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +4 -5
- package/lib/zudoku.plugin-openapi.js.map +1 -1
- package/lib/zudoku.plugins.js.map +1 -1
- package/package.json +1 -1
- package/src/app/entry.server.tsx +7 -1
- package/src/lib/components/Layout.tsx +3 -16
- package/src/lib/components/Zudoku.tsx +5 -1
- package/src/lib/components/cache.ts +8 -0
- package/src/lib/components/context/ViewportAnchorContext.tsx +3 -6
- package/src/lib/components/context/ZudokuContext.ts +5 -4
- package/src/lib/core/ZudokuContext.ts +11 -8
- package/src/lib/core/plugins.ts +4 -4
- package/src/lib/hooks/useEvent.test.tsx +1 -1
- package/src/lib/oas/graphql/index.ts +104 -64
- package/src/lib/plugins/openapi/OperationList.tsx +30 -36
- package/src/lib/plugins/openapi/OperationListItem.tsx +1 -1
- package/src/lib/plugins/openapi/Sidecar.tsx +2 -2
- package/src/lib/plugins/openapi/client/useCreateQuery.ts +2 -1
- package/src/lib/plugins/openapi/graphql/gql.ts +17 -17
- package/src/lib/plugins/openapi/graphql/graphql.ts +57 -75
- package/src/lib/plugins/openapi/index.tsx +40 -84
- package/src/lib/plugins/openapi/interfaces.ts +4 -1
- package/src/lib/plugins/openapi/util/createSidebarCategory.tsx +5 -7
- package/src/lib/util/traverse.ts +2 -2
- package/src/lib/util/useScrollToAnchor.ts +2 -0
- package/lib/Markdown-C0eXdzGn.js.map +0 -1
- package/lib/OperationList-DGYoFitT.js.map +0 -1
- package/lib/circular-v7K6lDDh.js.map +0 -1
- package/lib/createServer-CbL1Uh2Q.js.map +0 -1
- package/lib/hook-CfCFKZ-2.js.map +0 -1
- package/lib/index-Dm1QJHVl.js.map +0 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Helmet } from "@zudoku/react-helmet-async";
|
|
3
|
-
import { Suspense, useEffect
|
|
4
|
-
import { Outlet,
|
|
3
|
+
import { Suspense, useEffect } from "react";
|
|
4
|
+
import { Outlet, useNavigation } from "react-router";
|
|
5
5
|
import { useSpinDelay } from "spin-delay";
|
|
6
6
|
import { useScrollToAnchor } from "../util/useScrollToAnchor.js";
|
|
7
7
|
import { useScrollToTop } from "../util/useScrollToTop.js";
|
|
8
|
-
import { useViewportAnchor } from "./context/ViewportAnchorContext.js";
|
|
9
8
|
import { useZudoku } from "./context/ZudokuContext.js";
|
|
10
9
|
import { Header } from "./Header.js";
|
|
11
10
|
import { Main } from "./Main.js";
|
|
@@ -13,24 +12,14 @@ import { Slotlet } from "./SlotletProvider.js";
|
|
|
13
12
|
import { Spinner } from "./Spinner.js";
|
|
14
13
|
const LoadingFallback = () => (_jsx("main", { className: "col-span-full row-span-full grid place-items-center", children: _jsx(Spinner, {}) }));
|
|
15
14
|
export const Layout = ({ children }) => {
|
|
16
|
-
const location = useLocation();
|
|
17
|
-
const { setActiveAnchor } = useViewportAnchor();
|
|
18
15
|
const { meta, authentication } = useZudoku();
|
|
19
16
|
useScrollToAnchor();
|
|
20
17
|
useScrollToTop();
|
|
21
|
-
const previousLocationPath = useRef(location.pathname);
|
|
22
18
|
useEffect(() => {
|
|
23
19
|
// Initialize the authentication plugin
|
|
24
20
|
authentication?.onPageLoad?.();
|
|
25
21
|
}, [authentication]);
|
|
26
|
-
|
|
27
|
-
// always reset on location change
|
|
28
|
-
if (location.pathname !== previousLocationPath.current) {
|
|
29
|
-
setActiveAnchor("");
|
|
30
|
-
}
|
|
31
|
-
previousLocationPath.current = location.pathname;
|
|
32
|
-
}, [location.pathname, setActiveAnchor]);
|
|
33
|
-
// Page transition is happening: https://reactrouter.com/start/framework/pending-ui#global-pending-navigation
|
|
22
|
+
// Page transition is happening: https://reactrouter.com/start/framework/pending-navigation
|
|
34
23
|
const isNavigating = Boolean(useNavigation().location);
|
|
35
24
|
const showSpinner = useSpinDelay(isNavigating, {
|
|
36
25
|
delay: 300,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/lib/components/Layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/lib/components/Layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,CAC5B,eAAM,SAAS,EAAC,qDAAqD,YACnE,KAAC,OAAO,KAAG,GACN,CACR,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAA4B,EAAE,EAAE;IAC/D,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,CAAC;IAE7C,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,CAAC;IAEjB,SAAS,CAAC,GAAG,EAAE;QACb,uCAAuC;QACvC,cAAc,EAAE,UAAU,EAAE,EAAE,CAAC;IACjC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,2FAA2F;IAC3F,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,EAAE;QAC7C,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,GAAG;KACjB,CAAC,CAAC;IAEH,OAAO,CACL,8BACG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,CACxC,0BAAQ,kCAAkC,GAAS,CACpD,EACD,MAAC,MAAM,IAAC,aAAa,EAAE,IAAI,EAAE,KAAK,aAC/B,IAAI,EAAE,WAAW,IAAI,CACpB,eAAM,IAAI,EAAC,aAAa,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,GAAI,CACvD,EACA,IAAI,EAAE,OAAO,IAAI,eAAM,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,GAAI,IAClD,EACT,KAAC,OAAO,IAAC,IAAI,EAAC,oBAAoB,GAAG,EACrC,KAAC,MAAM,KAAG,EACV,KAAC,OAAO,IAAC,IAAI,EAAC,mBAAmB,GAAG,EAEpC,cAAK,SAAS,EAAC,oJAAoJ,YAChK,WAAW,CAAC,CAAC,CAAC,CACb,KAAC,eAAe,KAAG,CACpB,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,eAAe,KAAG,YACrC,KAAC,IAAI,cAAE,QAAQ,IAAI,KAAC,MAAM,KAAG,GAAQ,GAC5B,CACZ,GACG,IACL,CACJ,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { MDXProvider } from "@mdx-js/react";
|
|
3
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
3
4
|
import { Helmet } from "@zudoku/react-helmet-async";
|
|
4
5
|
import { ThemeProvider } from "next-themes";
|
|
5
6
|
import { memo, useContext, useEffect, useMemo, useState, } from "react";
|
|
@@ -32,13 +33,14 @@ const ZudokoInner = memo(({ children, ...props }) => {
|
|
|
32
33
|
const [didNavigate, setDidNavigate] = useState(false);
|
|
33
34
|
const staggeredValue = useMemo(() => (didNavigate ? { stagger: true } : { stagger }), [stagger, didNavigate]);
|
|
34
35
|
const navigation = useNavigation();
|
|
36
|
+
const queryClient = useQueryClient();
|
|
35
37
|
useEffect(() => {
|
|
36
38
|
if (didNavigate) {
|
|
37
39
|
return;
|
|
38
40
|
}
|
|
39
41
|
setDidNavigate(true);
|
|
40
42
|
}, [didNavigate, navigation.location]);
|
|
41
|
-
const [zudokuContext] = useState(() => new ZudokuContext(props));
|
|
43
|
+
const [zudokuContext] = useState(() => new ZudokuContext(props, queryClient));
|
|
42
44
|
const heads = props.plugins
|
|
43
45
|
?.flatMap((plugin) => (hasHead(plugin) ? (plugin.getHead?.() ?? []) : []))
|
|
44
46
|
// eslint-disable-next-line react/no-array-index-key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Zudoku.js","sourceRoot":"","sources":["../../../src/lib/components/Zudoku.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,IAAI,EAEJ,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,aAAa,GAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,wCAAwC,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,GAAG,IAAI,CACtB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAA2C,EAAE,EAAE;IAClE,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,EACrD,CAAC,KAAK,CAAC,SAAS,CAAC,CAClB,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,MAAM,qBAAqB,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;aAChD,MAAM,CAAC,mBAAmB,CAAC;aAC3B,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3D,CAAC;QAEJ,OAAO;YACL,GAAG,qBAAqB,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,EACpC,EAAE,CACH;YACD,GAAG,aAAa;YAChB,GAAG,KAAK,CAAC,GAAG,EAAE,UAAU;SACzB,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACvD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,cAAc,GAAG,OAAO,CAC5B,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EACrD,CAAC,OAAO,EAAE,WAAW,CAAC,CACvB,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Zudoku.js","sourceRoot":"","sources":["../../../src/lib/components/Zudoku.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,3 +4,10 @@ export declare const CACHE_KEYS: Readonly<{
|
|
|
4
4
|
export declare const useCache: () => {
|
|
5
5
|
invalidateCache: (key: keyof typeof CACHE_KEYS) => Promise<void>;
|
|
6
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* If a query has this key in its queryKey, it will not put its result in the dehydrated state in the SSR.
|
|
9
|
+
*
|
|
10
|
+
* This is useful if the query should only be suspended and not included in the initial HTML response.
|
|
11
|
+
* (e.g. too large in size, or not needed for the initial page load)
|
|
12
|
+
*/
|
|
13
|
+
export declare const NO_DEHYDRATE = "no-dehydrate";
|
|
@@ -10,4 +10,11 @@ export const useCache = () => {
|
|
|
10
10
|
},
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* If a query has this key in its queryKey, it will not put its result in the dehydrated state in the SSR.
|
|
15
|
+
*
|
|
16
|
+
* This is useful if the query should only be suspended and not included in the initial HTML response.
|
|
17
|
+
* (e.g. too large in size, or not needed for the initial page load)
|
|
18
|
+
*/
|
|
19
|
+
export const NO_DEHYDRATE = "no-dehydrate";
|
|
13
20
|
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/lib/components/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,cAAc,EAAE,CAAC,gBAAgB,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO;QACL,eAAe,EAAE,KAAK,EAAE,GAA4B,EAAE,EAAE;YACtD,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/lib/components/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,cAAc,EAAE,CAAC,gBAAgB,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO;QACL,eAAe,EAAE,KAAK,EAAE,GAA4B,EAAE,EAAE;YACtD,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC"}
|
|
@@ -55,15 +55,12 @@ export const ViewportAnchorProvider = ({ children }) => {
|
|
|
55
55
|
const hasReachedTop = window.scrollY === 0;
|
|
56
56
|
const hasReachedBottom = window.innerHeight + window.scrollY >= document.body.scrollHeight;
|
|
57
57
|
if (hasReachedTop) {
|
|
58
|
-
// reset the active anchor when we reach the top
|
|
59
58
|
setActiveAnchor("");
|
|
60
59
|
}
|
|
61
60
|
else if (hasReachedBottom) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
setActiveAnchor(lastItem?.id ?? "");
|
|
66
|
-
});
|
|
61
|
+
const lastItem = Array.from(elements).pop();
|
|
62
|
+
const lastId = lastItem?.id ?? "";
|
|
63
|
+
setActiveAnchor(lastId);
|
|
67
64
|
}
|
|
68
65
|
};
|
|
69
66
|
document.addEventListener("scroll", handleScroll);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewportAnchorContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ViewportAnchorContext.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ViewportAnchorContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ViewportAnchorContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,GAET,MAAM,OAAO,CAAC;AASf,MAAM,qBAAqB,GAAG,aAAa,CACzC,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,OAAO,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEpD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEnD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,OAAO,CAAC,OAAO,CAAC,CAAC;QAEjB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,EAAsB,EAAE,EAAE;QACpD,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACxE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,CAA8B,IAAI,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,GAAG,EAAe,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,GAAG,EAAe,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,IAAI,oBAAoB,CAC5C,CAAC,OAAO,EAAE,EAAE;YACV,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBAC5C,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC,EACD;YACE,UAAU,EAAE,kBAAkB;YAC9B,SAAS,EAAE,IAAI;SAChB,CACF,CAAC;QAEF,wEAAwE;QACxE,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC5C,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;YAC3C,MAAM,gBAAgB,GACpB,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;YAEpE,IAAI,aAAa,EAAE,CAAC;gBAClB,eAAe,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;iBAAM,IAAI,gBAAgB,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC;gBAClC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO;YACL,OAAO,EAAE,CAAC,OAA2B,EAAE,EAAE;gBACvC,IAAI,CAAC,OAAO;oBAAE,OAAO;gBAErB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBACzB,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACrC,OAAO;gBACT,CAAC;gBAED,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,SAAS,EAAE,CAAC,OAA2B,EAAE,EAAE;gBACzC,IAAI,CAAC,OAAO;oBAAE,OAAO;gBAErB,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACxC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3C,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;SACF,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAAC,EACxD,CAAC,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,CAC5C,CAAC;IAEF,OAAO,CACL,KAAC,qBAAqB,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CACxE,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ZudokuContext } from "../../core/ZudokuContext.js";
|
|
1
|
+
import type { ZudokuContext } from "../../core/ZudokuContext.js";
|
|
2
2
|
export declare const ZudokuReactContext: import("react").Context<ZudokuContext | undefined>;
|
|
3
3
|
export declare const useZudoku: () => ZudokuContext;
|
|
4
4
|
export declare const useApiIdentities: () => import("@tanstack/react-query").UseQueryResult<import("../../core/ZudokuContext.js").ApiIdentity[], Error>;
|
|
@@ -3,7 +3,7 @@ import { createContext, useContext } from "react";
|
|
|
3
3
|
import { matchPath, useLocation } from "react-router";
|
|
4
4
|
import { useAuth } from "../../authentication/hook.js";
|
|
5
5
|
import { joinPath } from "../../util/joinPath.js";
|
|
6
|
-
import { CACHE_KEYS } from "../cache.js";
|
|
6
|
+
import { CACHE_KEYS, NO_DEHYDRATE } from "../cache.js";
|
|
7
7
|
import { traverseSidebar } from "../navigation/utils.js";
|
|
8
8
|
export const ZudokuReactContext = createContext(undefined);
|
|
9
9
|
export const useZudoku = () => {
|
|
@@ -17,7 +17,7 @@ export const useApiIdentities = () => {
|
|
|
17
17
|
const { getApiIdentities } = useZudoku();
|
|
18
18
|
return useQuery({
|
|
19
19
|
queryFn: getApiIdentities,
|
|
20
|
-
queryKey:
|
|
20
|
+
queryKey: CACHE_KEYS.API_IDENTITIES,
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
23
|
export const useCurrentNavigation = () => {
|
|
@@ -41,7 +41,8 @@ export const useCurrentNavigation = () => {
|
|
|
41
41
|
topNavigation.find((item) => matchPath(item.id, location.pathname));
|
|
42
42
|
const { data } = useSuspenseQuery({
|
|
43
43
|
queryFn: () => getPluginSidebar(location.pathname),
|
|
44
|
-
|
|
44
|
+
// We just want to suspend here and don't store in SSR dehydrated state
|
|
45
|
+
queryKey: ["plugin-sidebar", NO_DEHYDRATE, location.pathname],
|
|
45
46
|
});
|
|
46
47
|
const hideSidebar = auth.isAuthEnabled && !auth.isAuthenticated && isProtectedRoute;
|
|
47
48
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { QueryClient } from "@tanstack/react-query";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import type { Location } from "react-router";
|
|
4
|
+
import type { TopNavigationItem } from "../../config/validators/common.js";
|
|
4
5
|
import type { SidebarConfig } from "../../config/validators/SidebarSchema.js";
|
|
5
|
-
import {
|
|
6
|
+
import type { AuthenticationProvider } from "../authentication/authentication.js";
|
|
6
7
|
import type { ComponentsContextType } from "../components/context/ComponentsContext.js";
|
|
7
|
-
import { Slotlets } from "../components/SlotletProvider.js";
|
|
8
|
+
import type { Slotlets } from "../components/SlotletProvider.js";
|
|
8
9
|
import type { MdxComponentsType } from "../util/MdxComponents.js";
|
|
9
10
|
import { type ZudokuPlugin } from "./plugins.js";
|
|
10
11
|
export interface ZudokuEvents {
|
|
@@ -68,6 +69,7 @@ export type ZudokuContextOptions = {
|
|
|
68
69
|
};
|
|
69
70
|
export declare class ZudokuContext {
|
|
70
71
|
readonly options: ZudokuContextOptions;
|
|
72
|
+
readonly queryClient: QueryClient;
|
|
71
73
|
plugins: NonNullable<ZudokuContextOptions["plugins"]>;
|
|
72
74
|
sidebars: SidebarConfig;
|
|
73
75
|
topNavigation: NonNullable<ZudokuContextOptions["topNavigation"]>;
|
|
@@ -76,7 +78,7 @@ export declare class ZudokuContext {
|
|
|
76
78
|
authentication?: ZudokuContextOptions["authentication"];
|
|
77
79
|
private readonly navigationPlugins;
|
|
78
80
|
private emitter;
|
|
79
|
-
constructor(options: ZudokuContextOptions);
|
|
81
|
+
constructor(options: ZudokuContextOptions, queryClient: QueryClient);
|
|
80
82
|
initialize: () => Promise<void>;
|
|
81
83
|
getApiIdentities: () => Promise<ApiIdentity[]>;
|
|
82
84
|
addEventListener<E extends keyof ZudokuEvents>(event: E, callback: ZudokuEvents[E]): import("nanoevents").Unsubscribe;
|
|
@@ -4,6 +4,7 @@ import { objectEntries } from "../util/objectEntries.js";
|
|
|
4
4
|
import { isApiIdentityPlugin, isEventConsumerPlugin, isNavigationPlugin, needsInitialization, } from "./plugins.js";
|
|
5
5
|
export class ZudokuContext {
|
|
6
6
|
options;
|
|
7
|
+
queryClient;
|
|
7
8
|
plugins;
|
|
8
9
|
sidebars;
|
|
9
10
|
topNavigation;
|
|
@@ -12,8 +13,9 @@ export class ZudokuContext {
|
|
|
12
13
|
authentication;
|
|
13
14
|
navigationPlugins;
|
|
14
15
|
emitter = createNanoEvents();
|
|
15
|
-
constructor(options) {
|
|
16
|
+
constructor(options, queryClient) {
|
|
16
17
|
this.options = options;
|
|
18
|
+
this.queryClient = queryClient;
|
|
17
19
|
this.plugins = options.plugins ?? [];
|
|
18
20
|
this.topNavigation = options.topNavigation ?? [];
|
|
19
21
|
this.sidebars = options.sidebars ?? {};
|
|
@@ -47,7 +49,7 @@ export class ZudokuContext {
|
|
|
47
49
|
return this.emitter.emit(event, ...data);
|
|
48
50
|
};
|
|
49
51
|
getPluginSidebar = async (path) => {
|
|
50
|
-
const navigations = await Promise.all(this.navigationPlugins.map((plugin) => plugin.getSidebar?.(joinPath(path))));
|
|
52
|
+
const navigations = await Promise.all(this.navigationPlugins.map((plugin) => plugin.getSidebar?.(joinPath(path), this)));
|
|
51
53
|
return navigations.flatMap((nav) => nav ?? []);
|
|
52
54
|
};
|
|
53
55
|
signRequest = async (request) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../src/lib/core/ZudokuContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../src/lib/core/ZudokuContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@ import type { LucideIcon } from "lucide-react";
|
|
|
2
2
|
import { type ReactElement } from "react";
|
|
3
3
|
import { type RouteObject } from "react-router";
|
|
4
4
|
import type { Sidebar } from "../../config/validators/SidebarSchema.js";
|
|
5
|
-
import { MdxComponentsType } from "../util/MdxComponents.js";
|
|
6
|
-
import {
|
|
5
|
+
import { type MdxComponentsType } from "../util/MdxComponents.js";
|
|
6
|
+
import { type ApiIdentity, type ZudokuContext, type ZudokuEvents } from "./ZudokuContext.js";
|
|
7
7
|
export type ZudokuPlugin = CommonPlugin | ProfileMenuPlugin | NavigationPlugin | ApiIdentityPlugin | SearchProviderPlugin | EventConsumerPlugin;
|
|
8
8
|
export type { RouteObject };
|
|
9
9
|
export interface NavigationPlugin {
|
|
10
10
|
getRoutes: () => RouteObject[];
|
|
11
|
-
getSidebar?: (path: string) => Promise<Sidebar>;
|
|
11
|
+
getSidebar?: (path: string, context: ZudokuContext) => Promise<Sidebar>;
|
|
12
12
|
}
|
|
13
13
|
export declare const createApiIdentityPlugin: (plugin: ApiIdentityPlugin) => ApiIdentityPlugin;
|
|
14
14
|
export declare const createProfileMenuPlugin: (plugin: ProfileMenuPlugin) => ProfileMenuPlugin;
|
|
@@ -9,8 +9,8 @@ import { useEvent } from "./useEvent.js";
|
|
|
9
9
|
* @vitest-environment happy-dom
|
|
10
10
|
*/
|
|
11
11
|
const createTestContext = () => {
|
|
12
|
-
const context = new ZudokuContext({});
|
|
13
12
|
const queryClient = new QueryClient();
|
|
13
|
+
const context = new ZudokuContext({}, queryClient);
|
|
14
14
|
const wrapper = ({ children }) => (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(ZudokuProvider, { context: context, children: children }) }));
|
|
15
15
|
return { context, wrapper };
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEvent.test.js","sourceRoot":"","sources":["../../../src/lib/hooks/useEvent.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGlE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAqB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AAEH,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC7B,MAAM,
|
|
1
|
+
{"version":3,"file":"useEvent.test.js","sourceRoot":"","sources":["../../../src/lib/hooks/useEvent.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,9 @@ type OperationLike = {
|
|
|
9
9
|
method: string;
|
|
10
10
|
};
|
|
11
11
|
export declare const createOperationSlug: (slugify: CountableSlugify, operation: OperationLike) => string;
|
|
12
|
-
type SchemaImport = () => Promise<{
|
|
12
|
+
export type SchemaImport = () => Promise<{
|
|
13
13
|
schema: OpenAPIDocument;
|
|
14
|
+
slugs: ReturnType<typeof getAllSlugs>;
|
|
14
15
|
}>;
|
|
15
16
|
export type SchemaImports = Record<string, SchemaImport>;
|
|
16
17
|
type GraphQLOperationObject = OperationObject & {
|
|
@@ -19,7 +20,17 @@ type GraphQLOperationObject = OperationObject & {
|
|
|
19
20
|
slug?: string;
|
|
20
21
|
parentTag?: string;
|
|
21
22
|
};
|
|
22
|
-
export declare const getAllTags: (schema: OpenAPIDocument) => TagObject
|
|
23
|
+
export declare const getAllTags: (schema: OpenAPIDocument, slugs: ReturnType<typeof getAllSlugs>["tags"]) => Array<TagObject & {
|
|
24
|
+
slug?: string;
|
|
25
|
+
}>;
|
|
26
|
+
export declare const getAllSlugs: (ops: GraphQLOperationObject[], schemaTags?: TagObject[]) => {
|
|
27
|
+
operations: {
|
|
28
|
+
[k: string]: string;
|
|
29
|
+
};
|
|
30
|
+
tags: {
|
|
31
|
+
[k: string]: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
23
34
|
export declare const getAllOperations: (paths?: PathsObject) => GraphQLOperationObject[];
|
|
24
35
|
export declare const schema: import("graphql").GraphQLSchema;
|
|
25
36
|
export declare const createGraphQLServer: (options?: Omit<YogaServerOptions<any, any>, "schema">) => import("graphql-yoga").YogaServerInstance<any, any>;
|
|
@@ -17,34 +17,38 @@ const builder = new SchemaBuilder({
|
|
|
17
17
|
const JSONScalar = builder.addScalarType("JSON", GraphQLJSON);
|
|
18
18
|
const JSONObjectScalar = builder.addScalarType("JSONObject", GraphQLJSONObject);
|
|
19
19
|
const JSONSchemaScalar = builder.addScalarType("JSONSchema", GraphQLJSONSchema);
|
|
20
|
-
const resolveExtensions = (obj) =>
|
|
21
|
-
|
|
22
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
23
|
-
if (key.startsWith("x-")) {
|
|
24
|
-
extensions[key] = value;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return extensions;
|
|
28
|
-
};
|
|
29
|
-
export const getAllTags = (schema) => {
|
|
20
|
+
const resolveExtensions = (obj) => Object.fromEntries(Object.entries(obj).filter(([key]) => key.startsWith("x-")));
|
|
21
|
+
export const getAllTags = (schema, slugs) => {
|
|
30
22
|
const rootTags = schema.tags ?? [];
|
|
31
23
|
const operationTags = new Set(Object.values(schema.paths ?? {})
|
|
32
24
|
.flatMap((path) => Object.values(path ?? {}))
|
|
33
25
|
.flatMap((op) => op.tags ?? []));
|
|
34
26
|
return [
|
|
35
27
|
// Keep root tags that are actually used in operations
|
|
36
|
-
...rootTags
|
|
28
|
+
...rootTags
|
|
29
|
+
.filter((tag) => operationTags.has(tag.name))
|
|
30
|
+
.map((tag) => ({ ...tag, slug: slugs[tag.name] })),
|
|
37
31
|
// Add tags found in operations but not defined in root tags
|
|
38
32
|
...[...operationTags]
|
|
39
33
|
.filter((tag) => !rootTags.some((rt) => rt.name === tag))
|
|
40
|
-
.map((tag) => ({ name: tag })),
|
|
34
|
+
.map((tag) => ({ name: tag, slug: slugs[tag] })),
|
|
41
35
|
];
|
|
42
36
|
};
|
|
43
|
-
const getAllSlugs = (
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
])
|
|
47
|
-
|
|
37
|
+
export const getAllSlugs = (ops, schemaTags = []) => {
|
|
38
|
+
const slugify = slugifyWithCounter();
|
|
39
|
+
const tags = Array.from(new Set([
|
|
40
|
+
...ops.flatMap((op) => op.tags ?? []),
|
|
41
|
+
...schemaTags.map((tag) => tag.name),
|
|
42
|
+
]));
|
|
43
|
+
return {
|
|
44
|
+
operations: Object.fromEntries(ops.map((op) => [
|
|
45
|
+
getOperationSlugKey(op),
|
|
46
|
+
createOperationSlug(slugify, op),
|
|
47
|
+
])),
|
|
48
|
+
tags: Object.fromEntries(tags.map((tag) => [tag, slugify(tag)])),
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
const getOperationSlugKey = (op) => [op.path, op.method, op.operationId, op.summary].filter(Boolean).join("-");
|
|
48
52
|
export const getAllOperations = (paths) => {
|
|
49
53
|
const operations = Object.entries(paths ?? {}).flatMap(([path, value]) => HttpMethods.flatMap((method) => {
|
|
50
54
|
if (!value?.[method])
|
|
@@ -70,9 +74,12 @@ export const getAllOperations = (paths) => {
|
|
|
70
74
|
}));
|
|
71
75
|
return operations;
|
|
72
76
|
};
|
|
73
|
-
const SchemaTag = builder
|
|
77
|
+
const SchemaTag = builder
|
|
78
|
+
.objectRef("SchemaTag")
|
|
79
|
+
.implement({
|
|
74
80
|
fields: (t) => ({
|
|
75
|
-
name: t.exposeString("name"),
|
|
81
|
+
name: t.exposeString("name", { nullable: true }),
|
|
82
|
+
slug: t.exposeString("slug", { nullable: true }),
|
|
76
83
|
description: t.exposeString("description", { nullable: true }),
|
|
77
84
|
operations: t.field({
|
|
78
85
|
type: [OperationItem],
|
|
@@ -84,12 +91,14 @@ const SchemaTag = builder.objectRef("SchemaTag").implement({
|
|
|
84
91
|
: item.tags?.length === 0 ||
|
|
85
92
|
// If none of the tags are present in the root tags, then show them here
|
|
86
93
|
item.tags?.every((tag) => !rootTags.includes(tag)))
|
|
87
|
-
.map((item) => ({
|
|
88
|
-
...item,
|
|
89
|
-
parentTag: parent.name,
|
|
90
|
-
}));
|
|
94
|
+
.map((item) => ({ ...item, parentTag: parent.name }));
|
|
91
95
|
},
|
|
92
96
|
}),
|
|
97
|
+
extensions: t.field({
|
|
98
|
+
type: JSONObjectScalar,
|
|
99
|
+
resolve: (parent) => resolveExtensions(parent),
|
|
100
|
+
nullable: true,
|
|
101
|
+
}),
|
|
93
102
|
}),
|
|
94
103
|
});
|
|
95
104
|
const ServerItem = builder.objectRef("Server").implement({
|
|
@@ -216,7 +225,13 @@ const OperationItem = builder
|
|
|
216
225
|
fields: (t) => ({
|
|
217
226
|
slug: t.field({
|
|
218
227
|
type: "String",
|
|
219
|
-
resolve: (parent, _, ctx) =>
|
|
228
|
+
resolve: (parent, _, ctx) => {
|
|
229
|
+
const slug = ctx.slugs.operations[getOperationSlugKey(parent)];
|
|
230
|
+
if (!slug) {
|
|
231
|
+
throw new Error(`No slug found for operation: ${getOperationSlugKey(parent)}`);
|
|
232
|
+
}
|
|
233
|
+
return slug;
|
|
234
|
+
},
|
|
220
235
|
}),
|
|
221
236
|
path: t.exposeString("path"),
|
|
222
237
|
method: t.exposeString("method"),
|
|
@@ -320,10 +335,15 @@ const Schema = builder.objectRef("Schema").implement({
|
|
|
320
335
|
name: t.arg.string(),
|
|
321
336
|
},
|
|
322
337
|
type: [SchemaTag],
|
|
323
|
-
resolve: (
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
338
|
+
resolve: (_root, args, ctx) => {
|
|
339
|
+
if (args.name) {
|
|
340
|
+
return ctx.tags.filter((tag) => tag.name === args.name);
|
|
341
|
+
}
|
|
342
|
+
// Append empty tag which will be used to display untagged operations
|
|
343
|
+
if (ctx.operations.some((op) => !op.tags?.length)) {
|
|
344
|
+
return [...ctx.tags, { name: undefined, slug: undefined }];
|
|
345
|
+
}
|
|
346
|
+
return ctx.tags;
|
|
327
347
|
},
|
|
328
348
|
}),
|
|
329
349
|
operations: t.field({
|
|
@@ -362,28 +382,28 @@ builder.queryType({
|
|
|
362
382
|
input: t.arg({ type: JSONScalar, required: true }),
|
|
363
383
|
},
|
|
364
384
|
resolve: async (_, args, ctx) => {
|
|
365
|
-
let schema;
|
|
366
385
|
if (args.type === "file" && typeof args.input === "string") {
|
|
367
386
|
const loadSchema = ctx.schemaImports?.[args.input];
|
|
368
387
|
if (!loadSchema) {
|
|
369
388
|
throw new Error(`No schema loader found for path: ${args.input}`);
|
|
370
389
|
}
|
|
371
|
-
const
|
|
372
|
-
schema =
|
|
390
|
+
const { schema, slugs } = await loadSchema();
|
|
391
|
+
ctx.schema = schema;
|
|
392
|
+
ctx.operations = getAllOperations(schema.paths);
|
|
393
|
+
ctx.slugs = slugs;
|
|
394
|
+
ctx.tags = getAllTags(schema, ctx.slugs.tags);
|
|
373
395
|
}
|
|
374
396
|
else {
|
|
375
|
-
schema = await validate(args.input);
|
|
397
|
+
ctx.schema = await validate(args.input);
|
|
398
|
+
ctx.operations = getAllOperations(ctx.schema.paths);
|
|
399
|
+
ctx.slugs = getAllSlugs(ctx.operations);
|
|
400
|
+
ctx.tags = getAllTags(ctx.schema, ctx.slugs.tags);
|
|
376
401
|
}
|
|
377
|
-
ctx.schema
|
|
378
|
-
ctx.operations = getAllOperations(schema.paths);
|
|
379
|
-
ctx.slugify = slugifyWithCounter();
|
|
380
|
-
ctx.tags = getAllTags(schema);
|
|
381
|
-
ctx.slugs = getAllSlugs(ctx.operations);
|
|
382
|
-
return schema;
|
|
402
|
+
return ctx.schema;
|
|
383
403
|
},
|
|
384
404
|
}),
|
|
385
405
|
}),
|
|
386
406
|
});
|
|
387
407
|
export const schema = builder.toSchema();
|
|
388
|
-
export const createGraphQLServer = (options) => createYoga({ schema, ...options });
|
|
408
|
+
export const createGraphQLServer = (options) => createYoga({ schema, batching: true, ...options });
|
|
389
409
|
//# sourceMappingURL=index.js.map
|