zudoku 0.1.1-dev.2 → 0.1.1-dev.20
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/cli.js +2 -0
- package/dist/app/App.js +22 -0
- package/dist/app/App.js.map +1 -0
- package/dist/app/main.js +4 -16
- package/dist/app/main.js.map +1 -1
- package/dist/cli/cmds/dev.js +0 -1
- package/dist/cli/cmds/dev.js.map +1 -1
- package/dist/cli/common/logger.d.ts +1 -2
- package/dist/cli/common/logger.js +2 -4
- package/dist/cli/common/logger.js.map +1 -1
- package/dist/cli/dev/handler.d.ts +1 -1
- package/dist/cli/dev/handler.js +11 -2
- package/dist/cli/dev/handler.js.map +1 -1
- package/dist/config/config.d.ts +12 -7
- package/dist/index.d.ts +2 -6
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/{app → lib}/DevPortal.d.ts +2 -3
- package/dist/{app → lib}/DevPortal.js +6 -19
- package/dist/lib/DevPortal.js.map +1 -0
- package/dist/{app → lib}/Heading.js.map +1 -1
- package/dist/lib/Router.d.ts +4 -0
- package/dist/lib/Router.js +20 -0
- package/dist/lib/Router.js.map +1 -0
- package/dist/lib/auth.d.ts +1 -0
- package/dist/lib/auth.js +2 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/authentication/authentication.js.map +1 -0
- package/dist/{app → lib}/authentication/clerk.d.ts +1 -2
- package/dist/{app → lib}/authentication/clerk.js +1 -2
- package/dist/lib/authentication/clerk.js.map +1 -0
- package/dist/{app → lib}/authentication/openid.js +2 -2
- package/dist/lib/authentication/openid.js.map +1 -0
- package/dist/{app → lib}/components/AnchorLink.js.map +1 -1
- package/dist/{app → lib}/components/CategoryHeading.js.map +1 -1
- package/dist/lib/components/Dialog.d.ts +19 -0
- package/dist/lib/components/Dialog.js +23 -0
- package/dist/lib/components/Dialog.js.map +1 -0
- package/dist/{app → lib}/components/DynamicIcon.js.map +1 -1
- package/dist/{app → lib}/components/Header.d.ts +0 -1
- package/dist/{app → lib}/components/Header.js.map +1 -1
- package/dist/lib/components/Input.d.ts +5 -0
- package/dist/lib/components/Input.js +9 -0
- package/dist/lib/components/Input.js.map +1 -0
- package/dist/{app → lib}/components/Layout.js.map +1 -1
- package/dist/{app → lib}/components/Markdown.js.map +1 -1
- package/dist/{app → lib}/components/SyntaxHighlight.js +2 -0
- package/dist/lib/components/SyntaxHighlight.js.map +1 -0
- package/dist/{app → lib}/components/TopNavigation.js.map +1 -1
- package/dist/{app → lib}/components/context/ComponentsContext.js.map +1 -1
- package/dist/{app → lib}/components/context/DevPortalProvider.d.ts +0 -1
- package/dist/{app → lib}/components/context/DevPortalProvider.js.map +1 -1
- package/dist/lib/components/context/PluginSystem.js.map +1 -0
- package/dist/{app → lib}/components/context/ThemeContext.js.map +1 -1
- package/dist/{app → lib}/components/context/ViewportAnchorContext.js.map +1 -1
- package/dist/{app → lib}/components/navigation/SideNavigation.js.map +1 -1
- package/dist/{app → lib}/components/navigation/SideNavigationCategory.js.map +1 -1
- package/dist/{app → lib}/components/navigation/SideNavigationItem.js.map +1 -1
- package/dist/{app → lib}/components/navigation/SideNavigationWrapper.d.ts +1 -2
- package/dist/{app → lib}/components/navigation/SideNavigationWrapper.js.map +1 -1
- package/dist/{app → lib}/components/navigation/useNavigationCollapsibleState.d.ts +0 -1
- package/dist/{app → lib}/components/navigation/useNavigationCollapsibleState.js.map +1 -1
- package/dist/{app → lib}/components/navigation/util.js.map +1 -1
- package/dist/lib/components.d.ts +3 -0
- package/dist/lib/components.js +4 -0
- package/dist/lib/components.js.map +1 -0
- package/dist/{app → lib}/core/DevPortalContext.js.map +1 -1
- package/dist/{app → lib}/core/helmet.js.map +1 -1
- package/dist/lib/core/icons.js.map +1 -0
- package/dist/{app → lib}/core/plugins.js.map +1 -1
- package/dist/lib/core/router.js.map +1 -0
- package/dist/lib/core/types/combine.js.map +1 -0
- package/dist/{app → lib}/oas/graphql/index.js.map +1 -1
- package/dist/{app → lib}/oas/graphql/server.js.map +1 -1
- package/dist/{app → lib}/oas/parser/dereference/index.js.map +1 -1
- package/dist/{app → lib}/oas/parser/dereference/resolveRef.js.map +1 -1
- package/dist/{app → lib}/oas/parser/index.js.map +1 -1
- package/dist/{app → lib}/oas/parser/upgrade/index.js.map +1 -1
- package/dist/{app → lib}/plugins/api-key/SettingsApiKeys.js.map +1 -1
- package/dist/{app → lib}/plugins/api-key/index.js.map +1 -1
- package/dist/{app → lib}/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/{app → lib}/plugins/markdown/Toc.js.map +1 -1
- package/dist/{app → lib}/plugins/markdown/generateRoutes.js.map +1 -1
- package/dist/{app → lib}/plugins/markdown/index.d.ts +0 -1
- package/dist/{app → lib}/plugins/markdown/index.js.map +1 -1
- package/dist/lib/plugins/openapi/ColorizedParam.d.ts +12 -0
- package/dist/{app → lib}/plugins/openapi/ColorizedParam.js +10 -5
- package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -0
- package/dist/lib/plugins/openapi/MakeRequest.js +23 -0
- package/dist/lib/plugins/openapi/MakeRequest.js.map +1 -0
- package/dist/{app → lib}/plugins/openapi/MethodBadge.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.d.ts +4 -0
- package/dist/{app → lib}/plugins/openapi/OperationList.js +16 -16
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -0
- package/dist/{app → lib}/plugins/openapi/OperationListItem.d.ts +2 -2
- package/dist/{app → lib}/plugins/openapi/OperationListItem.js +2 -2
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -0
- package/dist/{app → lib}/plugins/openapi/ParameterList.js.map +1 -1
- package/dist/{app → lib}/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +19 -0
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -0
- package/dist/{app → lib}/plugins/openapi/ResponsesSidecarBox.js +1 -1
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -0
- package/dist/{app → lib}/plugins/openapi/Select.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +94 -0
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -0
- package/dist/lib/plugins/openapi/SidecarBox.d.ts +8 -0
- package/dist/lib/plugins/openapi/SidecarBox.js +6 -0
- package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -0
- package/dist/lib/plugins/openapi/graphql/fragment-masking.d.ts +19 -0
- package/dist/lib/plugins/openapi/graphql/fragment-masking.js +16 -0
- package/dist/lib/plugins/openapi/graphql/fragment-masking.js.map +1 -0
- package/dist/lib/plugins/openapi/graphql/gql.d.ts +58 -0
- package/dist/lib/plugins/openapi/graphql/gql.js +22 -0
- package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -0
- package/dist/lib/plugins/openapi/graphql/graphql.d.ts +282 -0
- package/dist/lib/plugins/openapi/graphql/graphql.js +526 -0
- package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -0
- package/dist/lib/plugins/openapi/graphql/index.d.ts +2 -0
- package/dist/lib/plugins/openapi/graphql/index.js +3 -0
- package/dist/lib/plugins/openapi/graphql/index.js.map +1 -0
- package/dist/{app → lib}/plugins/openapi/index.d.ts +0 -1
- package/dist/{app → lib}/plugins/openapi/index.js +1 -1
- package/dist/{app → lib}/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.d.ts +8 -0
- package/dist/lib/plugins/openapi/playground/Playground.js +98 -0
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -0
- package/dist/{app → lib}/plugins/openapi/util/generateSchemaExample.js.map +1 -1
- package/dist/{app → lib}/plugins/openapi/util/urql.d.ts +0 -1
- package/dist/{app → lib}/plugins/openapi/util/urql.js.map +1 -1
- package/dist/{app → lib}/plugins/openapi/worker/createSharedWorkerClient.js.map +1 -1
- package/dist/lib/plugins/openapi/worker/shared-worker.d.ts +1 -0
- package/dist/lib/plugins/openapi/worker/shared-worker.js +6 -0
- package/dist/lib/plugins/openapi/worker/shared-worker.js.map +1 -0
- package/dist/{app → lib}/plugins/openapi/worker/worker.js.map +1 -1
- package/dist/{app → lib}/plugins/redirect/index.js.map +1 -1
- package/dist/lib/plugins.d.ts +4 -0
- package/dist/lib/plugins.js +6 -0
- package/dist/lib/plugins.js.map +1 -0
- package/dist/lib/ui/Button.d.ts +11 -0
- package/dist/lib/ui/Button.js +34 -0
- package/dist/lib/ui/Button.js.map +1 -0
- package/dist/{app → lib}/ui/Callout.js.map +1 -1
- package/dist/{app → lib}/ui/Card.js +1 -1
- package/dist/{app → lib}/ui/Card.js.map +1 -1
- package/dist/{app → lib}/ui/Note.js.map +1 -1
- package/dist/lib/ui/Tabs.d.ts +7 -0
- package/dist/lib/ui/Tabs.js +13 -0
- package/dist/lib/ui/Tabs.js.map +1 -0
- package/dist/{app → lib}/util/MdxComponents.d.ts +2 -2
- package/dist/{app → lib}/util/MdxComponents.js.map +1 -1
- package/dist/{app → lib}/util/cn.js.map +1 -1
- package/dist/lib/util/createVariantComponent.d.ts +15 -0
- package/dist/lib/util/createVariantComponent.js +12 -0
- package/dist/lib/util/createVariantComponent.js.map +1 -0
- package/dist/lib/util/createWaitForNotify.d.ts +1 -0
- package/dist/{app → lib}/util/createWaitForNotify.js.map +1 -1
- package/dist/{app → lib}/util/groupBy.js.map +1 -1
- package/dist/{app → lib}/util/joinPath.js.map +1 -1
- package/dist/{app → lib}/util/pastellize.js.map +1 -1
- package/dist/{app → lib}/util/slugify.d.ts +0 -1
- package/dist/lib/util/slugify.js.map +1 -0
- package/dist/{app → lib}/util/traverseNavigation.js.map +1 -1
- package/dist/{app → lib}/util/useScrollToAnchor.js.map +1 -1
- package/dist/{app → lib}/util/useScrollToTop.js.map +1 -1
- package/dist/ts.d.ts +6 -0
- package/dist/ts.js +62 -0
- package/dist/ts.js.map +1 -0
- package/dist/vite/build.js +2 -8
- package/dist/vite/build.js.map +1 -1
- package/dist/vite/config.d.ts +8 -2
- package/dist/vite/config.js +103 -23
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/config.test.d.ts +1 -0
- package/dist/vite/config.test.js +10 -0
- package/dist/vite/config.test.js.map +1 -0
- package/dist/vite/dev-server.js +8 -4
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/html.d.ts +1 -1
- package/dist/vite/html.js +2 -3
- package/dist/vite/html.js.map +1 -1
- package/dist/vite/plugin-api.d.ts +4 -0
- package/dist/vite/plugin-api.js +47 -0
- package/dist/vite/plugin-api.js.map +1 -0
- package/dist/vite/plugin-auth.d.ts +4 -0
- package/dist/vite/plugin-auth.js +28 -0
- package/dist/vite/plugin-auth.js.map +1 -0
- package/dist/vite/plugin-component.d.ts +3 -0
- package/dist/vite/plugin-component.js +22 -0
- package/dist/vite/plugin-component.js.map +1 -0
- package/dist/vite/plugin-config.d.ts +6 -0
- package/dist/vite/plugin-config.js +24 -0
- package/dist/vite/plugin-config.js.map +1 -0
- package/dist/vite/plugin-docs.d.ts +4 -0
- package/dist/vite/plugin-docs.js +43 -0
- package/dist/vite/plugin-docs.js.map +1 -0
- package/dist/vite/plugin-docs.test.d.ts +1 -0
- package/dist/vite/plugin-docs.test.js +30 -0
- package/dist/vite/plugin-docs.test.js.map +1 -0
- package/dist/vite/plugin-html.d.ts +3 -0
- package/dist/vite/plugin-html.js +47 -0
- package/dist/vite/plugin-html.js.map +1 -0
- package/dist/vite/plugin-mdx.d.ts +8 -0
- package/dist/vite/plugin-mdx.js +61 -0
- package/dist/vite/plugin-mdx.js.map +1 -0
- package/dist/vite/plugin-metadata.d.ts +6 -0
- package/dist/vite/plugin-metadata.js +24 -0
- package/dist/vite/plugin-metadata.js.map +1 -0
- package/dist/vite/plugin.d.ts +2 -6
- package/dist/vite/plugin.js +14 -104
- package/dist/vite/plugin.js.map +1 -1
- package/lib/DevPortal-DqcnbwLT.js +12967 -0
- package/lib/assets/index-BPdJm2ty.js +4764 -0
- package/lib/assets/worker-CnXQsqxH.js +14511 -0
- package/lib/prism-bash.min-DadFsM4Z.js +6 -0
- package/lib/prism-java.min-d5iT_mOd.js +6 -0
- package/lib/prism-json.min-B1GJqK1k.js +1 -0
- package/lib/prism-markup-templating-DZrrEs0A.js +61 -0
- package/lib/prism-php.min-o7FpoMP_.js +10 -0
- package/lib/prism-ruby.min-C7LwcKyz.js +9 -0
- package/lib/urql-B7mLfVog.js +1611 -0
- package/lib/zudoku.auth.js +31 -0
- package/lib/zudoku.components.js +6 -0
- package/lib/zudoku.openapi-worker.js +143 -0
- package/lib/zudoku.plugins.js +15650 -0
- package/package.json +53 -35
- package/src/app/App.tsx +33 -0
- package/src/app/main.tsx +6 -19
- package/src/cli/build/handler.ts +14 -0
- package/src/cli/cli.ts +77 -0
- package/src/cli/cmds/build.ts +24 -0
- package/src/cli/cmds/dev.ts +29 -0
- package/src/cli/common/analytics/lib.ts +89 -0
- package/src/cli/common/constants.ts +10 -0
- package/src/cli/common/logger.ts +5 -0
- package/src/cli/common/machine-id/lib.ts +85 -0
- package/src/cli/common/outdated.ts +102 -0
- package/src/cli/common/output.ts +86 -0
- package/src/cli/common/utils/box.license.txt +202 -0
- package/src/cli/common/utils/box.ts +116 -0
- package/src/cli/common/utils/ports.ts +21 -0
- package/src/cli/common/validators/lib.ts +43 -0
- package/src/cli/common/xdg/lib.ts +36 -0
- package/src/cli/dev/handler.ts +42 -0
- package/src/config/config.ts +56 -0
- package/src/index.ts +8 -0
- package/src/{app → lib}/DevPortal.tsx +7 -29
- package/src/lib/Router.tsx +28 -0
- package/src/lib/auth.ts +1 -0
- package/src/{app → lib}/authentication/clerk.ts +1 -3
- package/src/lib/components/Dialog.tsx +119 -0
- package/src/lib/components/Input.tsx +24 -0
- package/src/{app → lib}/components/SyntaxHighlight.tsx +2 -0
- package/src/lib/components.ts +3 -0
- package/src/{app → lib}/plugins/openapi/ColorizedParam.tsx +18 -9
- package/src/{app → lib}/plugins/openapi/MakeRequest.tsx +19 -0
- package/src/{app → lib}/plugins/openapi/OperationList.tsx +20 -22
- package/src/{app → lib}/plugins/openapi/OperationListItem.tsx +3 -3
- package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +51 -0
- package/src/{app → lib}/plugins/openapi/ResponsesSidecarBox.tsx +1 -1
- package/src/{app → lib}/plugins/openapi/Sidecar.tsx +81 -20
- package/src/lib/plugins/openapi/SidecarBox.tsx +36 -0
- package/src/lib/plugins/openapi/graphql/fragment-masking.ts +111 -0
- package/src/lib/plugins/openapi/graphql/gql.ts +70 -0
- package/src/lib/plugins/openapi/graphql/graphql.ts +795 -0
- package/src/lib/plugins/openapi/graphql/index.ts +2 -0
- package/src/{app → lib}/plugins/openapi/index.tsx +6 -2
- package/src/lib/plugins/openapi/playground/Playground.tsx +309 -0
- package/src/lib/plugins/openapi/queries.graphql +6 -0
- package/src/lib/plugins/openapi/worker/shared-worker.ts +5 -0
- package/src/lib/plugins.ts +5 -0
- package/src/lib/ui/Button.tsx +56 -0
- package/src/{app → lib}/ui/Card.tsx +1 -1
- package/src/lib/ui/Tabs.tsx +52 -0
- package/src/lib/util/createVariantComponent.tsx +30 -0
- package/src/ts.ts +94 -0
- package/src/types.d.ts +24 -0
- package/src/vite/build.ts +33 -0
- package/src/vite/config.test.ts +10 -0
- package/src/vite/config.ts +183 -0
- package/src/vite/dev-server.ts +64 -0
- package/src/vite/html.ts +37 -0
- package/src/vite/plugin-api.ts +57 -0
- package/src/vite/plugin-auth.ts +32 -0
- package/src/vite/plugin-component.ts +26 -0
- package/src/vite/plugin-config.ts +31 -0
- package/src/vite/plugin-docs.test.ts +32 -0
- package/src/vite/plugin-docs.ts +52 -0
- package/src/vite/plugin-html.ts +50 -0
- package/src/vite/plugin-mdx.ts +74 -0
- package/src/vite/plugin-metadata.ts +30 -0
- package/src/vite/plugin.ts +23 -0
- package/dist/app/DevPortal.js.map +0 -1
- package/dist/app/app.js +0 -69
- package/dist/app/app.js.map +0 -1
- package/dist/app/authentication/authentication.js.map +0 -1
- package/dist/app/authentication/clerk.js.map +0 -1
- package/dist/app/authentication/openid.js.map +0 -1
- package/dist/app/components/SyntaxHighlight.js.map +0 -1
- package/dist/app/components/context/PluginSystem.js.map +0 -1
- package/dist/app/config.d.ts +0 -3
- package/dist/app/config.js +0 -9
- package/dist/app/config.js.map +0 -1
- package/dist/app/core/icons.js.map +0 -1
- package/dist/app/core/router.js.map +0 -1
- package/dist/app/core/types/combine.js.map +0 -1
- package/dist/app/markdowns.d.ts +0 -3
- package/dist/app/markdowns.js +0 -5
- package/dist/app/markdowns.js.map +0 -1
- package/dist/app/plugins/openapi/ColorizedParam.d.ts +0 -8
- package/dist/app/plugins/openapi/ColorizedParam.js.map +0 -1
- package/dist/app/plugins/openapi/MakeRequest.js +0 -11
- package/dist/app/plugins/openapi/MakeRequest.js.map +0 -1
- package/dist/app/plugins/openapi/OperationList.d.ts +0 -47
- package/dist/app/plugins/openapi/OperationList.js.map +0 -1
- package/dist/app/plugins/openapi/OperationListItem.js.map +0 -1
- package/dist/app/plugins/openapi/RequestBodySidecarBox.js +0 -19
- package/dist/app/plugins/openapi/RequestBodySidecarBox.js.map +0 -1
- package/dist/app/plugins/openapi/ResponsesSidecarBox.js.map +0 -1
- package/dist/app/plugins/openapi/Sidecar.js +0 -39
- package/dist/app/plugins/openapi/Sidecar.js.map +0 -1
- package/dist/app/plugins/openapi/SidecarBox.d.ts +0 -10
- package/dist/app/plugins/openapi/SidecarBox.js +0 -8
- package/dist/app/plugins/openapi/SidecarBox.js.map +0 -1
- package/dist/app/plugins/openapi/graphql/index.d.ts +0 -836
- package/dist/app/plugins/openapi/graphql/index.js +0 -4
- package/dist/app/plugins/openapi/graphql/index.js.map +0 -1
- package/dist/app/plugins/openapi/util/getCode.d.ts +0 -2
- package/dist/app/plugins/openapi/util/getCode.js +0 -54
- package/dist/app/plugins/openapi/util/getCode.js.map +0 -1
- package/dist/app/util/createWaitForNotify.d.ts +0 -1
- package/dist/app/util/slugify.js.map +0 -1
- package/dist/auth.d.ts +0 -2
- package/dist/auth.js +0 -3
- package/dist/auth.js.map +0 -1
- package/dist/plugins.d.ts +0 -4
- package/dist/plugins.js +0 -6
- package/dist/plugins.js.map +0 -1
- package/src/app/app.tsx +0 -85
- package/src/app/config.ts +0 -20
- package/src/app/markdowns.ts +0 -7
- package/src/app/plugins/openapi/RequestBodySidecarBox.tsx +0 -48
- package/src/app/plugins/openapi/SidecarBox.tsx +0 -35
- package/src/app/plugins/openapi/graphql/env.d.ts +0 -48
- package/src/app/plugins/openapi/graphql/index.ts +0 -13
- package/src/app/plugins/openapi/util/getCode.tsx +0 -69
- /package/dist/app/{app.d.ts → App.d.ts} +0 -0
- /package/dist/{app → lib}/Heading.d.ts +0 -0
- /package/dist/{app → lib}/Heading.js +0 -0
- /package/dist/{app → lib}/authentication/authentication.d.ts +0 -0
- /package/dist/{app → lib}/authentication/authentication.js +0 -0
- /package/dist/{app → lib}/authentication/openid.d.ts +0 -0
- /package/dist/{app → lib}/components/AnchorLink.d.ts +0 -0
- /package/dist/{app → lib}/components/AnchorLink.js +0 -0
- /package/dist/{app → lib}/components/CategoryHeading.d.ts +0 -0
- /package/dist/{app → lib}/components/CategoryHeading.js +0 -0
- /package/dist/{app → lib}/components/DynamicIcon.d.ts +0 -0
- /package/dist/{app → lib}/components/DynamicIcon.js +0 -0
- /package/dist/{app → lib}/components/Header.js +0 -0
- /package/dist/{app → lib}/components/Layout.d.ts +0 -0
- /package/dist/{app → lib}/components/Layout.js +0 -0
- /package/dist/{app → lib}/components/Markdown.d.ts +0 -0
- /package/dist/{app → lib}/components/Markdown.js +0 -0
- /package/dist/{app → lib}/components/SyntaxHighlight.d.ts +0 -0
- /package/dist/{app → lib}/components/TopNavigation.d.ts +0 -0
- /package/dist/{app → lib}/components/TopNavigation.js +0 -0
- /package/dist/{app → lib}/components/context/ComponentsContext.d.ts +0 -0
- /package/dist/{app → lib}/components/context/ComponentsContext.js +0 -0
- /package/dist/{app → lib}/components/context/DevPortalProvider.js +0 -0
- /package/dist/{app → lib}/components/context/PluginSystem.d.ts +0 -0
- /package/dist/{app → lib}/components/context/PluginSystem.js +0 -0
- /package/dist/{app → lib}/components/context/ThemeContext.d.ts +0 -0
- /package/dist/{app → lib}/components/context/ThemeContext.js +0 -0
- /package/dist/{app → lib}/components/context/ViewportAnchorContext.d.ts +0 -0
- /package/dist/{app → lib}/components/context/ViewportAnchorContext.js +0 -0
- /package/dist/{app → lib}/components/navigation/SideNavigation.d.ts +0 -0
- /package/dist/{app → lib}/components/navigation/SideNavigation.js +0 -0
- /package/dist/{app → lib}/components/navigation/SideNavigationCategory.d.ts +0 -0
- /package/dist/{app → lib}/components/navigation/SideNavigationCategory.js +0 -0
- /package/dist/{app → lib}/components/navigation/SideNavigationItem.d.ts +0 -0
- /package/dist/{app → lib}/components/navigation/SideNavigationItem.js +0 -0
- /package/dist/{app → lib}/components/navigation/SideNavigationWrapper.js +0 -0
- /package/dist/{app → lib}/components/navigation/useNavigationCollapsibleState.js +0 -0
- /package/dist/{app → lib}/components/navigation/util.d.ts +0 -0
- /package/dist/{app → lib}/components/navigation/util.js +0 -0
- /package/dist/{app → lib}/core/DevPortalContext.d.ts +0 -0
- /package/dist/{app → lib}/core/DevPortalContext.js +0 -0
- /package/dist/{app → lib}/core/helmet.d.ts +0 -0
- /package/dist/{app → lib}/core/helmet.js +0 -0
- /package/dist/{app → lib}/core/icons.d.ts +0 -0
- /package/dist/{app → lib}/core/icons.js +0 -0
- /package/dist/{app → lib}/core/plugins.d.ts +0 -0
- /package/dist/{app → lib}/core/plugins.js +0 -0
- /package/dist/{app → lib}/core/router.d.ts +0 -0
- /package/dist/{app → lib}/core/router.js +0 -0
- /package/dist/{app → lib}/core/types/combine.d.ts +0 -0
- /package/dist/{app → lib}/core/types/combine.js +0 -0
- /package/dist/{app → lib}/oas/graphql/index.d.ts +0 -0
- /package/dist/{app → lib}/oas/graphql/index.js +0 -0
- /package/dist/{app → lib}/oas/graphql/server.d.ts +0 -0
- /package/dist/{app → lib}/oas/graphql/server.js +0 -0
- /package/dist/{app → lib}/oas/parser/dereference/index.d.ts +0 -0
- /package/dist/{app → lib}/oas/parser/dereference/index.js +0 -0
- /package/dist/{app → lib}/oas/parser/dereference/resolveRef.d.ts +0 -0
- /package/dist/{app → lib}/oas/parser/dereference/resolveRef.js +0 -0
- /package/dist/{app → lib}/oas/parser/index.d.ts +0 -0
- /package/dist/{app → lib}/oas/parser/index.js +0 -0
- /package/dist/{app → lib}/oas/parser/upgrade/index.d.ts +0 -0
- /package/dist/{app → lib}/oas/parser/upgrade/index.js +0 -0
- /package/dist/{app → lib}/plugins/api-key/SettingsApiKeys.d.ts +0 -0
- /package/dist/{app → lib}/plugins/api-key/SettingsApiKeys.js +0 -0
- /package/dist/{app → lib}/plugins/api-key/index.d.ts +0 -0
- /package/dist/{app → lib}/plugins/api-key/index.js +0 -0
- /package/dist/{app → lib}/plugins/markdown/MdxPage.d.ts +0 -0
- /package/dist/{app → lib}/plugins/markdown/MdxPage.js +0 -0
- /package/dist/{app → lib}/plugins/markdown/Toc.d.ts +0 -0
- /package/dist/{app → lib}/plugins/markdown/Toc.js +0 -0
- /package/dist/{app → lib}/plugins/markdown/generateRoutes.d.ts +0 -0
- /package/dist/{app → lib}/plugins/markdown/generateRoutes.js +0 -0
- /package/dist/{app → lib}/plugins/markdown/index.js +0 -0
- /package/dist/{app → lib}/plugins/openapi/MakeRequest.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/MethodBadge.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/MethodBadge.js +0 -0
- /package/dist/{app → lib}/plugins/openapi/ParameterList.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/ParameterList.js +0 -0
- /package/dist/{app → lib}/plugins/openapi/ParameterListItem.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/ParameterListItem.js +0 -0
- /package/dist/{app → lib}/plugins/openapi/RequestBodySidecarBox.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/ResponsesSidecarBox.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/Select.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/Select.js +0 -0
- /package/dist/{app → lib}/plugins/openapi/Sidecar.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/util/generateSchemaExample.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/util/generateSchemaExample.js +0 -0
- /package/dist/{app → lib}/plugins/openapi/util/urql.js +0 -0
- /package/dist/{app → lib}/plugins/openapi/worker/createSharedWorkerClient.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/worker/createSharedWorkerClient.js +0 -0
- /package/dist/{app → lib}/plugins/openapi/worker/worker.d.ts +0 -0
- /package/dist/{app → lib}/plugins/openapi/worker/worker.js +0 -0
- /package/dist/{app → lib}/plugins/redirect/index.d.ts +0 -0
- /package/dist/{app → lib}/plugins/redirect/index.js +0 -0
- /package/dist/{app → lib}/ui/Callout.d.ts +0 -0
- /package/dist/{app → lib}/ui/Callout.js +0 -0
- /package/dist/{app → lib}/ui/Card.d.ts +0 -0
- /package/dist/{app → lib}/ui/Note.d.ts +0 -0
- /package/dist/{app → lib}/ui/Note.js +0 -0
- /package/dist/{app → lib}/util/MdxComponents.js +0 -0
- /package/dist/{app → lib}/util/cn.d.ts +0 -0
- /package/dist/{app → lib}/util/cn.js +0 -0
- /package/dist/{app → lib}/util/createWaitForNotify.js +0 -0
- /package/dist/{app → lib}/util/groupBy.d.ts +0 -0
- /package/dist/{app → lib}/util/groupBy.js +0 -0
- /package/dist/{app → lib}/util/joinPath.d.ts +0 -0
- /package/dist/{app → lib}/util/joinPath.js +0 -0
- /package/dist/{app → lib}/util/pastellize.d.ts +0 -0
- /package/dist/{app → lib}/util/pastellize.js +0 -0
- /package/dist/{app → lib}/util/slugify.js +0 -0
- /package/dist/{app → lib}/util/traverseNavigation.d.ts +0 -0
- /package/dist/{app → lib}/util/traverseNavigation.js +0 -0
- /package/dist/{app → lib}/util/useScrollToAnchor.d.ts +0 -0
- /package/dist/{app → lib}/util/useScrollToAnchor.js +0 -0
- /package/dist/{app → lib}/util/useScrollToTop.d.ts +0 -0
- /package/dist/{app → lib}/util/useScrollToTop.js +0 -0
- /package/src/{app → lib}/Heading.tsx +0 -0
- /package/src/{app → lib}/authentication/authentication.ts +0 -0
- /package/src/{app → lib}/authentication/openid.ts +0 -0
- /package/src/{app → lib}/components/AnchorLink.tsx +0 -0
- /package/src/{app → lib}/components/CategoryHeading.tsx +0 -0
- /package/src/{app → lib}/components/DynamicIcon.tsx +0 -0
- /package/src/{app → lib}/components/Header.tsx +0 -0
- /package/src/{app → lib}/components/Layout.tsx +0 -0
- /package/src/{app → lib}/components/Markdown.tsx +0 -0
- /package/src/{app → lib}/components/TopNavigation.tsx +0 -0
- /package/src/{app → lib}/components/context/ComponentsContext.tsx +0 -0
- /package/src/{app → lib}/components/context/DevPortalProvider.ts +0 -0
- /package/src/{app → lib}/components/context/PluginSystem.ts +0 -0
- /package/src/{app → lib}/components/context/ThemeContext.tsx +0 -0
- /package/src/{app → lib}/components/context/ViewportAnchorContext.tsx +0 -0
- /package/src/{app → lib}/components/navigation/SideNavigation.tsx +0 -0
- /package/src/{app → lib}/components/navigation/SideNavigationCategory.tsx +0 -0
- /package/src/{app → lib}/components/navigation/SideNavigationItem.tsx +0 -0
- /package/src/{app → lib}/components/navigation/SideNavigationWrapper.tsx +0 -0
- /package/src/{app → lib}/components/navigation/useNavigationCollapsibleState.ts +0 -0
- /package/src/{app → lib}/components/navigation/util.ts +0 -0
- /package/src/{app → lib}/core/DevPortalContext.ts +0 -0
- /package/src/{app → lib}/core/helmet.ts +0 -0
- /package/src/{app → lib}/core/icons.tsx +0 -0
- /package/src/{app → lib}/core/plugins.ts +0 -0
- /package/src/{app → lib}/core/router.tsx +0 -0
- /package/src/{app → lib}/core/types/combine.ts +0 -0
- /package/src/{app → lib}/oas/graphql/index.ts +0 -0
- /package/src/{app → lib}/oas/graphql/server.ts +0 -0
- /package/src/{app → lib}/oas/parser/dereference/index.ts +0 -0
- /package/src/{app → lib}/oas/parser/dereference/resolveRef.ts +0 -0
- /package/src/{app → lib}/oas/parser/index.ts +0 -0
- /package/src/{app → lib}/oas/parser/schemas/v3.0.json +0 -0
- /package/src/{app → lib}/oas/parser/schemas/v3.1.json +0 -0
- /package/src/{app → lib}/oas/parser/upgrade/index.ts +0 -0
- /package/src/{app → lib}/plugins/api-key/SettingsApiKeys.tsx +0 -0
- /package/src/{app → lib}/plugins/api-key/index.tsx +0 -0
- /package/src/{app → lib}/plugins/markdown/MdxPage.tsx +0 -0
- /package/src/{app → lib}/plugins/markdown/Toc.tsx +0 -0
- /package/src/{app → lib}/plugins/markdown/generateRoutes.tsx +0 -0
- /package/src/{app → lib}/plugins/markdown/index.tsx +0 -0
- /package/src/{app → lib}/plugins/openapi/MethodBadge.tsx +0 -0
- /package/src/{app → lib}/plugins/openapi/ParameterList.tsx +0 -0
- /package/src/{app → lib}/plugins/openapi/ParameterListItem.tsx +0 -0
- /package/src/{app → lib}/plugins/openapi/Select.tsx +0 -0
- /package/src/{app → lib}/plugins/openapi/util/generateSchemaExample.ts +0 -0
- /package/src/{app → lib}/plugins/openapi/util/urql.ts +0 -0
- /package/src/{app → lib}/plugins/openapi/worker/createSharedWorkerClient.ts +0 -0
- /package/src/{app → lib}/plugins/openapi/worker/worker.ts +0 -0
- /package/src/{app → lib}/plugins/redirect/index.tsx +0 -0
- /package/src/{app → lib}/ui/Callout.tsx +0 -0
- /package/src/{app → lib}/ui/Note.tsx +0 -0
- /package/src/{app → lib}/util/MdxComponents.tsx +0 -0
- /package/src/{app → lib}/util/cn.ts +0 -0
- /package/src/{app → lib}/util/createWaitForNotify.ts +0 -0
- /package/src/{app → lib}/util/groupBy.ts +0 -0
- /package/src/{app → lib}/util/joinPath.tsx +0 -0
- /package/src/{app → lib}/util/pastellize.ts +0 -0
- /package/src/{app → lib}/util/slugify.ts +0 -0
- /package/src/{app → lib}/util/traverseNavigation.ts +0 -0
- /package/src/{app → lib}/util/useScrollToAnchor.ts +0 -0
- /package/src/{app → lib}/util/useScrollToTop.ts +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import autoprefixer from "autoprefixer";
|
|
2
|
+
import esbuild from "esbuild";
|
|
3
|
+
import { stat } from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import tailwindcss from "tailwindcss";
|
|
6
|
+
import { InlineConfig, LogLevel } from "vite";
|
|
7
|
+
import tailwindConfig from "../app/tailwind.js";
|
|
8
|
+
import { logger } from "../cli/common/logger.js";
|
|
9
|
+
import { isPortAvailable } from "../cli/common/utils/ports.js";
|
|
10
|
+
import { ZudokuConfig } from "../config/config.js";
|
|
11
|
+
import viteComponentPlugin from "./plugin-component.js";
|
|
12
|
+
import vitePlugin from "./plugin.js";
|
|
13
|
+
|
|
14
|
+
const extensions = ["js", "jsx", "ts", "tsx", "mjs"];
|
|
15
|
+
|
|
16
|
+
export interface ZudokuViteConfig extends InlineConfig {
|
|
17
|
+
root: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const fileExists = (path: string) =>
|
|
21
|
+
stat(path)
|
|
22
|
+
.then(() => true)
|
|
23
|
+
.catch(() => false);
|
|
24
|
+
|
|
25
|
+
export async function loadZuploConfig(rootDir: string): Promise<ZudokuConfig> {
|
|
26
|
+
for (const ext of extensions) {
|
|
27
|
+
const fileName = `zudoku.config.${ext}`;
|
|
28
|
+
const configPath = path.join(rootDir, fileName);
|
|
29
|
+
|
|
30
|
+
try {
|
|
31
|
+
if (await fileExists(configPath)) {
|
|
32
|
+
logger.info(`Loading zudoku.config file: ${configPath}`);
|
|
33
|
+
const config = await loadConfig(rootDir, fileName);
|
|
34
|
+
return config.default as ZudokuConfig;
|
|
35
|
+
}
|
|
36
|
+
} catch (e) {
|
|
37
|
+
logger.error(e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Default config
|
|
42
|
+
logger.warn("No zudoku.config file found");
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function getModuleDir() {
|
|
47
|
+
// NOTE: This is relative to the /dist folder because the dev server
|
|
48
|
+
// runs the compiled JS files, but vite uses the raw TS files
|
|
49
|
+
return new URL("../../", import.meta.url).pathname;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function getAppMainTsxPath() {
|
|
53
|
+
const modDir = getModuleDir();
|
|
54
|
+
return path.join(modDir, "src", "app", "main.tsx");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export async function getViteConfig({
|
|
58
|
+
dir,
|
|
59
|
+
mode,
|
|
60
|
+
}: {
|
|
61
|
+
dir: string;
|
|
62
|
+
mode: "dev" | "build";
|
|
63
|
+
}): Promise<ZudokuViteConfig> {
|
|
64
|
+
const rootDir = path.resolve(process.cwd(), dir);
|
|
65
|
+
const moduleDir = getModuleDir();
|
|
66
|
+
const config = await loadZuploConfig(rootDir);
|
|
67
|
+
|
|
68
|
+
let websocketPort = 9800;
|
|
69
|
+
while (
|
|
70
|
+
!(await isPortAvailable("localhost", websocketPort)) &&
|
|
71
|
+
websocketPort < 9999
|
|
72
|
+
) {
|
|
73
|
+
websocketPort++;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const viteConfig: ZudokuViteConfig = {
|
|
77
|
+
root: rootDir,
|
|
78
|
+
appType: "custom",
|
|
79
|
+
configFile: false,
|
|
80
|
+
clearScreen: false,
|
|
81
|
+
logLevel: (process.env.LOG_LEVEL || "info") as LogLevel,
|
|
82
|
+
customLogger: logger,
|
|
83
|
+
envPrefix: "PUBLIC_",
|
|
84
|
+
worker: {
|
|
85
|
+
format: "es",
|
|
86
|
+
},
|
|
87
|
+
server: {
|
|
88
|
+
middlewareMode: true,
|
|
89
|
+
open: true,
|
|
90
|
+
hmr: {
|
|
91
|
+
port: websocketPort,
|
|
92
|
+
},
|
|
93
|
+
watch: {
|
|
94
|
+
ignored: [
|
|
95
|
+
`${rootDir}/dist`,
|
|
96
|
+
`${rootDir}/lib`,
|
|
97
|
+
`${rootDir}/.git`,
|
|
98
|
+
`${rootDir}/node_modules`,
|
|
99
|
+
`${rootDir}/zuplo.config.ts`,
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
// sourcemapIgnoreList: (sourcePath) => {
|
|
103
|
+
// return (
|
|
104
|
+
// sourcePath.includes("node_modules/openapi-types/") ||
|
|
105
|
+
// sourcePath.includes("node_modules/value-or-promise/")
|
|
106
|
+
// );
|
|
107
|
+
// },
|
|
108
|
+
},
|
|
109
|
+
build: {
|
|
110
|
+
outDir: path.resolve(rootDir, "dist"),
|
|
111
|
+
rollupOptions: {
|
|
112
|
+
// external: ["@mdx-js/react"],
|
|
113
|
+
input: mode === "build" ? "zudoku/app/main.tsx" : undefined,
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
optimizeDeps: {
|
|
117
|
+
entries: [getAppMainTsxPath()],
|
|
118
|
+
exclude: ["zudoku/open-api-worker"],
|
|
119
|
+
include: [
|
|
120
|
+
"hast-util-to-jsx-runtime > style-to-object",
|
|
121
|
+
"debug",
|
|
122
|
+
"extend",
|
|
123
|
+
"stringify-object",
|
|
124
|
+
"url",
|
|
125
|
+
"@zudoku/httpsnippet > qs",
|
|
126
|
+
"react-fast-compare",
|
|
127
|
+
"invariant",
|
|
128
|
+
"shallowequal",
|
|
129
|
+
"slugify",
|
|
130
|
+
"zustand",
|
|
131
|
+
],
|
|
132
|
+
},
|
|
133
|
+
plugins: [vitePlugin({ ...config, rootDir }), viteComponentPlugin()],
|
|
134
|
+
css: {
|
|
135
|
+
postcss: {
|
|
136
|
+
plugins: [
|
|
137
|
+
tailwindcss({
|
|
138
|
+
...tailwindConfig,
|
|
139
|
+
content: [
|
|
140
|
+
`${moduleDir}/src/**/*.{js,ts,jsx,tsx,md,mdx}`,
|
|
141
|
+
// Tailwind seems to crash if it tries to parse compiled .js files
|
|
142
|
+
// as a workaround, we will just ship the source file and use those
|
|
143
|
+
// `${moduleDir}/lib/**/*.{js,ts,jsx,tsx,md,mdx}`,
|
|
144
|
+
`${rootDir}/src/**/*.{js,ts,jsx,tsx,md,mdx}`,
|
|
145
|
+
],
|
|
146
|
+
}),
|
|
147
|
+
autoprefixer,
|
|
148
|
+
],
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
return viteConfig;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export async function loadConfig(rootPath: string, fileName: string) {
|
|
157
|
+
const compiledFilepath = path.join(
|
|
158
|
+
rootPath,
|
|
159
|
+
"node_modules",
|
|
160
|
+
".zudoku",
|
|
161
|
+
"zudoku.config.mjs",
|
|
162
|
+
);
|
|
163
|
+
const filepath = path.join(rootPath, fileName);
|
|
164
|
+
try {
|
|
165
|
+
await esbuild.build({
|
|
166
|
+
entryPoints: [filepath],
|
|
167
|
+
bundle: true,
|
|
168
|
+
keepNames: true,
|
|
169
|
+
treeShaking: true,
|
|
170
|
+
minifyIdentifiers: false,
|
|
171
|
+
minifySyntax: false,
|
|
172
|
+
minifyWhitespace: false,
|
|
173
|
+
platform: "node",
|
|
174
|
+
target: "es2022",
|
|
175
|
+
format: "esm",
|
|
176
|
+
outfile: compiledFilepath,
|
|
177
|
+
});
|
|
178
|
+
} catch (error) {
|
|
179
|
+
error.message = `TypeScript Error in ${filepath}:\n${error.message}`;
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
return await import(compiledFilepath);
|
|
183
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import express from "express";
|
|
2
|
+
import { Server } from "node:http";
|
|
3
|
+
import { createServer as createViteServer } from "vite";
|
|
4
|
+
|
|
5
|
+
import { createGraphQLServer } from "../lib/oas/graphql/index.js";
|
|
6
|
+
import { getAppMainTsxPath, getViteConfig } from "./config.js";
|
|
7
|
+
import { getDevHtml } from "./html.js";
|
|
8
|
+
|
|
9
|
+
export class DevServer {
|
|
10
|
+
private server: Server | undefined;
|
|
11
|
+
|
|
12
|
+
constructor(private options: { port: number; dir: string }) {}
|
|
13
|
+
|
|
14
|
+
async start() {
|
|
15
|
+
const app = express();
|
|
16
|
+
|
|
17
|
+
const viteConfig = await getViteConfig({
|
|
18
|
+
dir: this.options.dir,
|
|
19
|
+
mode: "dev",
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const vite = await createViteServer(viteConfig);
|
|
23
|
+
|
|
24
|
+
const graphql = createGraphQLServer({
|
|
25
|
+
graphqlEndpoint: "/__z/graphql",
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
app.use(graphql.graphqlEndpoint, graphql);
|
|
29
|
+
app.use(vite.middlewares);
|
|
30
|
+
|
|
31
|
+
app.use("*", async (req, res) => {
|
|
32
|
+
try {
|
|
33
|
+
const entryJs = getAppMainTsxPath();
|
|
34
|
+
const rawHtml = getDevHtml(entryJs);
|
|
35
|
+
const indexHtml = await vite.transformIndexHtml(req.url, rawHtml);
|
|
36
|
+
|
|
37
|
+
// Send the transformed index.html back to the client
|
|
38
|
+
res.status(200).set({ "Content-Type": "text/html" }).end(indexHtml);
|
|
39
|
+
} catch (e) {
|
|
40
|
+
vite.ssrFixStacktrace(e);
|
|
41
|
+
console.error(e);
|
|
42
|
+
res.status(500).end(e.message);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return new Promise<void>((resolve) => {
|
|
47
|
+
this.server = app.listen(this.options.port, resolve);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async stop() {
|
|
52
|
+
if (this.server) {
|
|
53
|
+
return new Promise<void>((resolve, reject) => {
|
|
54
|
+
this.server!.close((err) => {
|
|
55
|
+
if (err) {
|
|
56
|
+
reject(err);
|
|
57
|
+
} else {
|
|
58
|
+
resolve();
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
package/src/vite/html.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function getDevHtml(jsEntry: string) {
|
|
2
|
+
return `<!doctype html>
|
|
3
|
+
<html lang="en" class="dark">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<div id="root"></div>
|
|
10
|
+
<script type="module" src="${jsEntry}"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
13
|
+
`;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function getBuildHtml({
|
|
17
|
+
jsEntry,
|
|
18
|
+
cssEntry,
|
|
19
|
+
}: {
|
|
20
|
+
jsEntry: string;
|
|
21
|
+
cssEntry: string;
|
|
22
|
+
}) {
|
|
23
|
+
return `<!doctype html>
|
|
24
|
+
<html lang="en">
|
|
25
|
+
<head>
|
|
26
|
+
<meta charset="UTF-8" />
|
|
27
|
+
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
28
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
29
|
+
<title>Vite + React + TS</title>
|
|
30
|
+
<script type="module" crossorigin src="${jsEntry}"></script>
|
|
31
|
+
<link rel="stylesheet" crossorigin href="${cssEntry}">
|
|
32
|
+
</head>
|
|
33
|
+
<body>
|
|
34
|
+
<div id="root"></div>
|
|
35
|
+
</body>
|
|
36
|
+
</html>`;
|
|
37
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
import { ZudokuPluginOptions } from "../config/config.js";
|
|
3
|
+
import { getConfigExportCode } from "./plugin-config.js";
|
|
4
|
+
|
|
5
|
+
const viteApiPlugin = (config: ZudokuPluginOptions): Plugin => {
|
|
6
|
+
const virtualModuleId = "virtual:zudoku-api-plugins";
|
|
7
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
8
|
+
|
|
9
|
+
return {
|
|
10
|
+
name: "vite-zudoku-api-plugins",
|
|
11
|
+
resolveId(id) {
|
|
12
|
+
if (id === virtualModuleId) {
|
|
13
|
+
return resolvedVirtualModuleId;
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
load(id) {
|
|
17
|
+
if (id === resolvedVirtualModuleId) {
|
|
18
|
+
const code: string[] = [
|
|
19
|
+
// IMPORTANT! This path here is important, we MUST resolve
|
|
20
|
+
// files here as Typescript from the appDir
|
|
21
|
+
getConfigExportCode(config.rootDir),
|
|
22
|
+
`import { openApiPlugin } from "zudoku/plugins";`,
|
|
23
|
+
`const configuredApiPlugins = [];`,
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
if (config?.apis) {
|
|
27
|
+
if (Array.isArray(config.apis)) {
|
|
28
|
+
config.apis.forEach((c, i) => {
|
|
29
|
+
code.push(
|
|
30
|
+
...[
|
|
31
|
+
`// @ts-ignore`, // To make tests pass
|
|
32
|
+
`configuredApiPlugins.push(openApiPlugin(config.apis?[${i}]));`,
|
|
33
|
+
],
|
|
34
|
+
);
|
|
35
|
+
});
|
|
36
|
+
} else {
|
|
37
|
+
code.push(
|
|
38
|
+
...[
|
|
39
|
+
`// @ts-ignore`, // To make tests pass
|
|
40
|
+
`configuredApiPlugins.push(openApiPlugin(config.apis));`,
|
|
41
|
+
],
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
code.push(`export { configuredApiPlugins };`);
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
code: code.join("\n"),
|
|
50
|
+
map: null,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export default viteApiPlugin;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PluginOption } from "vite";
|
|
2
|
+
import { ZudokuPluginOptions } from "../config/config.js";
|
|
3
|
+
import { getConfigExportCode } from "./plugin-config.js";
|
|
4
|
+
|
|
5
|
+
const viteAuthPlugin = (config: ZudokuPluginOptions): PluginOption => {
|
|
6
|
+
const virtualModuleId = "virtual:zudoku-auth";
|
|
7
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
8
|
+
|
|
9
|
+
return {
|
|
10
|
+
name: "zudoku-auth-plugin", // required, will show up in warnings and errors
|
|
11
|
+
resolveId(id) {
|
|
12
|
+
if (id === virtualModuleId) {
|
|
13
|
+
return resolvedVirtualModuleId;
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
load(id) {
|
|
17
|
+
if (id === resolvedVirtualModuleId) {
|
|
18
|
+
if (!config.authentication) {
|
|
19
|
+
return `export const configuredAuthProvider = undefined;`;
|
|
20
|
+
}
|
|
21
|
+
// TODO: Validate that the authConfig.type is a valid authentication provider
|
|
22
|
+
return [
|
|
23
|
+
getConfigExportCode(config.rootDir),
|
|
24
|
+
`import { clerkAuth } from "zudoku/auth";`,
|
|
25
|
+
`export const configuredAuthProvider = clerkAuth(config.authentication);`,
|
|
26
|
+
].join("\n");
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export default viteAuthPlugin;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PluginOption } from "vite";
|
|
2
|
+
|
|
3
|
+
const viteComponentPlugin = (): PluginOption => {
|
|
4
|
+
const virtualModuleId = "virtual:zudoku-component";
|
|
5
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
name: "zudoku-component-plugin",
|
|
9
|
+
resolveId(id) {
|
|
10
|
+
if (id === virtualModuleId) {
|
|
11
|
+
return resolvedVirtualModuleId;
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
load(id) {
|
|
15
|
+
if (id === resolvedVirtualModuleId) {
|
|
16
|
+
const code: string[] = [
|
|
17
|
+
`export { DevPortal } from "zudoku/components";`,
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
return code.join("\n");
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default viteComponentPlugin;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { PluginOption } from "vite";
|
|
3
|
+
|
|
4
|
+
export function getConfigExportCode(rootDir: string) {
|
|
5
|
+
const configPath = path.join(
|
|
6
|
+
rootDir,
|
|
7
|
+
`/node_modules/.zudoku/zudoku.config.mjs`,
|
|
8
|
+
);
|
|
9
|
+
return `import config from "${configPath}"; export default config;`;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const viteConfigPlugin = ({ rootDir }: { rootDir: string }): PluginOption => {
|
|
13
|
+
const virtualModuleId = "virtual:zudoku-config";
|
|
14
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
name: "zudoku-config-plugin",
|
|
18
|
+
resolveId(id) {
|
|
19
|
+
if (id === virtualModuleId) {
|
|
20
|
+
return resolvedVirtualModuleId;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
load(id) {
|
|
24
|
+
if (id === resolvedVirtualModuleId) {
|
|
25
|
+
return getConfigExportCode(rootDir);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export default viteConfigPlugin;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import test from "node:test";
|
|
4
|
+
import { checkTypescriptString } from "../ts.js";
|
|
5
|
+
import viteDocsPlugin from "./plugin-docs.js";
|
|
6
|
+
|
|
7
|
+
test.only("Builds code", async (t) => {
|
|
8
|
+
const plugin = viteDocsPlugin({
|
|
9
|
+
docs: { files: "docs/**/*.md" },
|
|
10
|
+
} as any);
|
|
11
|
+
if (!plugin.load) {
|
|
12
|
+
throw new Error("Plugin does not have a load function");
|
|
13
|
+
}
|
|
14
|
+
if (typeof plugin.load !== "function") {
|
|
15
|
+
throw new Error("Plugin.load is not a function");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const result = await plugin.load.call(
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
+
{} as any,
|
|
21
|
+
"\0virtual:markdown-plugins",
|
|
22
|
+
);
|
|
23
|
+
if (result && typeof result === "object" && "code" in result) {
|
|
24
|
+
const diagnostics = await checkTypescriptString(result.code);
|
|
25
|
+
if (diagnostics.length > 0) {
|
|
26
|
+
console.error(diagnostics);
|
|
27
|
+
}
|
|
28
|
+
assert.equal(diagnostics.length, 0);
|
|
29
|
+
} else {
|
|
30
|
+
assert.fail("Invalid return value from plugin.load");
|
|
31
|
+
}
|
|
32
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
import { DocsConfig, ZudokuPluginOptions } from "../config/config.js";
|
|
3
|
+
|
|
4
|
+
const viteDocsPlugin = (config: ZudokuPluginOptions): Plugin => {
|
|
5
|
+
const virtualModuleId = "virtual:zudoku-docs-plugins";
|
|
6
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
7
|
+
|
|
8
|
+
return {
|
|
9
|
+
name: "vite-zudoku-docs-plugin",
|
|
10
|
+
resolveId(id) {
|
|
11
|
+
if (id === virtualModuleId) {
|
|
12
|
+
return resolvedVirtualModuleId;
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
load(id) {
|
|
16
|
+
if (id === resolvedVirtualModuleId) {
|
|
17
|
+
const code: string[] = [
|
|
18
|
+
// IMPORTANT! This path here is important, we MUST resolve
|
|
19
|
+
// files here as Typescript from the appDir
|
|
20
|
+
`import { markdownPlugin } from "zudoku/plugins";`,
|
|
21
|
+
`const configuredDocsPlugins = [];`,
|
|
22
|
+
];
|
|
23
|
+
const docsConfigs: DocsConfig[] = config?.docs
|
|
24
|
+
? Array.isArray(config.docs)
|
|
25
|
+
? config.docs
|
|
26
|
+
: [config.docs]
|
|
27
|
+
: [];
|
|
28
|
+
|
|
29
|
+
docsConfigs.forEach((docsConfig) => {
|
|
30
|
+
code.push(
|
|
31
|
+
...[
|
|
32
|
+
`// @ts-ignore`, // To make tests pass
|
|
33
|
+
`const markdownFiles = import.meta.glob(${JSON.stringify(docsConfig.files)}, {`,
|
|
34
|
+
` eager: false,`,
|
|
35
|
+
`});`,
|
|
36
|
+
`configuredDocsPlugins.push(markdownPlugin({ markdownFiles }));`,
|
|
37
|
+
],
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
code.push(`export { configuredDocsPlugins };`);
|
|
42
|
+
|
|
43
|
+
return {
|
|
44
|
+
code: code.join("\n"),
|
|
45
|
+
map: null,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export default viteDocsPlugin;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
const themeScript = `
|
|
4
|
+
if (
|
|
5
|
+
localStorage.getItem("theme") === "dark" ||
|
|
6
|
+
(!("theme" in localStorage) &&
|
|
7
|
+
window.matchMedia("(prefers-color-scheme: dark)").matches)
|
|
8
|
+
) {
|
|
9
|
+
document.documentElement.classList.add("dark");
|
|
10
|
+
} else {
|
|
11
|
+
document.documentElement.classList.remove("dark");
|
|
12
|
+
}
|
|
13
|
+
`.trim();
|
|
14
|
+
|
|
15
|
+
const viteHtmlPlugin = (): Plugin => {
|
|
16
|
+
return {
|
|
17
|
+
name: "vite-zudoku-core-plugin",
|
|
18
|
+
transformIndexHtml: (html) => {
|
|
19
|
+
return {
|
|
20
|
+
html,
|
|
21
|
+
tags: [
|
|
22
|
+
{
|
|
23
|
+
tag: "script",
|
|
24
|
+
attrs: { type: "module" },
|
|
25
|
+
children: themeScript,
|
|
26
|
+
injectTo: "head",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
tag: "link",
|
|
30
|
+
attrs: {
|
|
31
|
+
rel: "preconnect",
|
|
32
|
+
href: "https://cdn.zuplo.com/",
|
|
33
|
+
},
|
|
34
|
+
injectTo: "head",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
tag: "link",
|
|
38
|
+
attrs: {
|
|
39
|
+
rel: "stylesheet",
|
|
40
|
+
href: "https://cdn.zuplo.com/static/fonts/geist.css",
|
|
41
|
+
},
|
|
42
|
+
injectTo: "head",
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export default viteHtmlPlugin;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import rehypeMetaAsAttributes from "@lekoarts/rehype-meta-as-attributes";
|
|
2
|
+
import mdx, { type Options } from "@mdx-js/rollup";
|
|
3
|
+
import withToc from "@stefanprobst/rehype-extract-toc";
|
|
4
|
+
import withTocExport from "@stefanprobst/rehype-extract-toc/mdx";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import rehypeSlug from "rehype-slug";
|
|
7
|
+
import remarkComment from "remark-comment";
|
|
8
|
+
import remarkDirective from "remark-directive";
|
|
9
|
+
import remarkDirectiveRehype from "remark-directive-rehype";
|
|
10
|
+
import remarkFrontmatter from "remark-frontmatter";
|
|
11
|
+
import remarkGfm from "remark-gfm";
|
|
12
|
+
import remarkMdxFrontmatter from "remark-mdx-frontmatter";
|
|
13
|
+
import { visit } from "unist-util-visit";
|
|
14
|
+
import { Plugin } from "vite";
|
|
15
|
+
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
+
const rehypeCodeBlockPlugin = () => (tree: any) => {
|
|
18
|
+
visit(tree, "element", (node, index, parent) => {
|
|
19
|
+
if (node.tagName === "code") {
|
|
20
|
+
node.properties.inline = `${parent?.tagName !== "pre"}`;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
const remarkLinkRewritePlugin = () => (tree: any) => {
|
|
27
|
+
visit(tree, "link", (node) => {
|
|
28
|
+
if (!node.url) return;
|
|
29
|
+
|
|
30
|
+
if (!node.url.startsWith("http") && !node.url.startsWith("/")) {
|
|
31
|
+
node.url = path.join("../", node.url);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
node.url = node.url.replace(/\.mdx?(#.*?)?/, "$1");
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export type DevPortalPluginOptions = {
|
|
39
|
+
remarkPlugins?: Options["remarkPlugins"];
|
|
40
|
+
rehypePlugins?: Options["rehypePlugins"];
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const viteMdxPlugin = ({
|
|
44
|
+
remarkPlugins,
|
|
45
|
+
rehypePlugins,
|
|
46
|
+
}: DevPortalPluginOptions = {}): Plugin => {
|
|
47
|
+
return {
|
|
48
|
+
enforce: "pre",
|
|
49
|
+
...mdx({
|
|
50
|
+
providerImportSource: "@mdx-js/react",
|
|
51
|
+
remarkPlugins: [
|
|
52
|
+
remarkComment,
|
|
53
|
+
remarkGfm,
|
|
54
|
+
remarkFrontmatter,
|
|
55
|
+
remarkMdxFrontmatter,
|
|
56
|
+
remarkDirective,
|
|
57
|
+
remarkDirectiveRehype,
|
|
58
|
+
remarkLinkRewritePlugin,
|
|
59
|
+
...(remarkPlugins ?? []),
|
|
60
|
+
],
|
|
61
|
+
rehypePlugins: [
|
|
62
|
+
rehypeSlug,
|
|
63
|
+
rehypeCodeBlockPlugin,
|
|
64
|
+
rehypeMetaAsAttributes,
|
|
65
|
+
withToc,
|
|
66
|
+
withTocExport,
|
|
67
|
+
...(rehypePlugins ?? []),
|
|
68
|
+
],
|
|
69
|
+
}),
|
|
70
|
+
name: "vite-zudoku-mdx-plugin",
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export default viteMdxPlugin;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { writeFileSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { Plugin } from "vite";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Used for debugging, writes metadata to build.
|
|
7
|
+
*/
|
|
8
|
+
const viteBuildMetadata = (): Plugin => {
|
|
9
|
+
return {
|
|
10
|
+
name: "vite-zudoku-build-metadata-plugin",
|
|
11
|
+
buildEnd() {
|
|
12
|
+
const deps = [];
|
|
13
|
+
for (const id of this.getModuleIds()) {
|
|
14
|
+
const m = this.getModuleInfo(id);
|
|
15
|
+
if (m != null && !m.isExternal) {
|
|
16
|
+
for (const target of m.importedIds) {
|
|
17
|
+
deps.push({ source: m.id, target });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
writeFileSync(
|
|
23
|
+
path.join(__dirname, "graph.json"),
|
|
24
|
+
JSON.stringify(deps, null, 2),
|
|
25
|
+
);
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default viteBuildMetadata;
|