@lukoweb/apitogo 0.2.23 → 0.2.25
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/README.md +94 -94
- package/cli.js +13 -13
- package/client.d.ts +8 -8
- package/dist/cli/cli.js +318 -20
- package/dist/declarations/cli/platform/client/platform-api.d.ts +18 -0
- package/dist/declarations/config/validators/InputNavigationSchema.d.ts +7 -7
- package/dist/declarations/config/validators/ZudokuConfig.d.ts +1 -1
- package/docs/cli/commands.md +75 -75
- package/docs/cli/go-live.md +123 -123
- package/docs/cli/overview.md +91 -91
- package/docs/cli/setup.md +141 -141
- package/docs/cli/shape.md +127 -127
- package/docs/components/alert.mdx +130 -130
- package/docs/components/badge.mdx +70 -70
- package/docs/components/button.mdx +132 -132
- package/docs/components/callout.mdx +112 -112
- package/docs/components/card.mdx +104 -104
- package/docs/components/checkbox.mdx +72 -72
- package/docs/components/client-only.mdx +79 -79
- package/docs/components/code-tabs.mdx +179 -179
- package/docs/components/dialog.mdx +167 -167
- package/docs/components/head.mdx +200 -200
- package/docs/components/icons.mdx +27 -27
- package/docs/components/input.mdx +96 -96
- package/docs/components/label.mdx +86 -86
- package/docs/components/link.mdx +242 -242
- package/docs/components/markdown.mdx +151 -151
- package/docs/components/mermaid.mdx +81 -81
- package/docs/components/playground.mdx +85 -85
- package/docs/components/secret.mdx +79 -79
- package/docs/components/select.mdx +176 -176
- package/docs/components/shadcn.mdx +73 -73
- package/docs/components/slider.mdx +108 -108
- package/docs/components/slot.mdx +119 -119
- package/docs/components/stepper.mdx +138 -138
- package/docs/components/switch.mdx +96 -96
- package/docs/components/syntax-highlight.mdx +602 -602
- package/docs/components/textarea.mdx +78 -78
- package/docs/components/tooltip.mdx +195 -195
- package/docs/components/typography.mdx +61 -61
- package/docs/components.mdx +60 -60
- package/docs/concepts/auth-provider-api-identities.md +105 -105
- package/docs/configuration/ai-assistants.md +65 -65
- package/docs/configuration/api-catalog.md +109 -109
- package/docs/configuration/api-reference.md +397 -397
- package/docs/configuration/authentication-auth0.md +181 -181
- package/docs/configuration/authentication-azure-ad.md +245 -245
- package/docs/configuration/authentication-clerk.md +117 -117
- package/docs/configuration/authentication-firebase.md +69 -69
- package/docs/configuration/authentication-pingfederate.md +143 -143
- package/docs/configuration/authentication-supabase.md +233 -233
- package/docs/configuration/authentication.md +159 -159
- package/docs/configuration/build-configuration.mdx +147 -147
- package/docs/configuration/docs.md +282 -282
- package/docs/configuration/footer.mdx +118 -118
- package/docs/configuration/gateway.md +221 -221
- package/docs/configuration/llms.md +90 -90
- package/docs/configuration/make-config.mdx +124 -124
- package/docs/configuration/manifest.md +128 -128
- package/docs/configuration/navigation.mdx +421 -421
- package/docs/configuration/overview.md +166 -166
- package/docs/configuration/plans.md +153 -153
- package/docs/configuration/protected-routes.md +150 -150
- package/docs/configuration/search.md +164 -164
- package/docs/configuration/sentry.mdx +44 -44
- package/docs/configuration/site.md +124 -124
- package/docs/configuration/slots.mdx +125 -125
- package/docs/configuration/vite-config.md +18 -18
- package/docs/custom-plugins.md +285 -285
- package/docs/customization/colors-theme.mdx +278 -278
- package/docs/customization/fonts.md +110 -110
- package/docs/customization/landing-page.md +188 -188
- package/docs/deploy/apache-nginx.md +41 -41
- package/docs/deploy/apitogo.md +17 -17
- package/docs/deploy/cloudflare-pages.md +74 -74
- package/docs/deploy/direct-upload.md +17 -17
- package/docs/deploy/github-pages.md +49 -49
- package/docs/deploy/vercel.md +101 -101
- package/docs/deployment.md +9 -9
- package/docs/extending/events.md +124 -124
- package/docs/guides/custom-pages.md +110 -110
- package/docs/guides/environment-variables.md +94 -94
- package/docs/guides/managing-api-keys-and-identities.md +89 -89
- package/docs/guides/mermaid.mdx +70 -70
- package/docs/guides/navigation-rules.mdx +203 -203
- package/docs/guides/processors.mdx +234 -234
- package/docs/guides/static-files.md +55 -55
- package/docs/guides/transforming-examples.md +156 -156
- package/docs/guides/using-multiple-apis.md +87 -87
- package/docs/markdown/admonitions.md +128 -128
- package/docs/markdown/code-blocks.md +196 -196
- package/docs/markdown/frontmatter.md +173 -173
- package/docs/markdown/mdx.md +68 -68
- package/docs/markdown/overview.md +275 -275
- package/docs/mcp/go-live.md +100 -100
- package/docs/mcp/overview.md +76 -76
- package/docs/mcp/setup.md +173 -173
- package/docs/mcp/shape.md +77 -77
- package/docs/mcp/tools.md +102 -102
- package/docs/plugins.md +24 -24
- package/docs/quickstart.md +72 -72
- package/docs/writing.mdx +72 -72
- package/package.json +3 -1
- package/src/app/ZuploBuildConfig.ts +36 -36
- package/src/app/apitogoBrandTheme.ts +47 -47
- package/src/app/defaultTheme.css +77 -77
- package/src/app/demo-cdn.html +37 -37
- package/src/app/demo.html +21 -21
- package/src/app/demo.tsx +77 -77
- package/src/app/entry.client.tsx +107 -107
- package/src/app/entry.server.tsx +160 -160
- package/src/app/env.ts +40 -40
- package/src/app/main.css +400 -400
- package/src/app/main.tsx +167 -167
- package/src/app/polyfills.ts +47 -47
- package/src/app/processRoutes.tsx +51 -51
- package/src/app/sentry.ts +24 -24
- package/src/app/standalone.html +23 -23
- package/src/app/standalone.tsx +60 -60
- package/src/app/utils/createRedirectRoutes.ts +11 -11
- package/src/config/apitogo-config-core.ts +7 -3
- package/src/config/apitogo-config-loader.browser.ts +17 -17
- package/src/config/apitogo-config-loader.node.ts +88 -88
- package/src/config/apitogo-config-loader.ts +6 -6
- package/src/config/build-apitogo-config.ts +61 -61
- package/src/config/config.ts +74 -74
- package/src/config/create-plugin.ts +71 -71
- package/src/config/default-landing-content.ts +149 -149
- package/src/config/file-exists.ts +6 -6
- package/src/config/gateway-limits.ts +128 -128
- package/src/config/landing-manifest.ts +11 -11
- package/src/config/landing-openapi-showcase.ts +124 -124
- package/src/config/loader.ts +375 -375
- package/src/config/local-manifest.ts +545 -545
- package/src/config/resolve-modules.ts +354 -354
- package/src/config/v2/__fixtures__/scenario-a-docs-only.json +6 -6
- package/src/config/v2/__fixtures__/scenario-b-managed-origin.json +14 -14
- package/src/config/v2/__fixtures__/scenario-c-proxy-oidc.json +15 -15
- package/src/config/v2/__fixtures__/scenario-h-full-stack.json +28 -28
- package/src/config/v2/docs-navigation.ts +72 -72
- package/src/config/v2/errors.ts +42 -42
- package/src/config/v2/gateway-reference.ts +220 -220
- package/src/config/v2/gateway-request.ts +123 -123
- package/src/config/v2/home-redirect.ts +98 -98
- package/src/config/v2/index.ts +126 -126
- package/src/config/v2/init.ts +273 -273
- package/src/config/v2/layout.ts +237 -237
- package/src/config/v2/ledger.ts +235 -235
- package/src/config/v2/link-directory.ts +34 -0
- package/src/config/v2/load.ts +70 -70
- package/src/config/v2/manifest.ts +452 -452
- package/src/config/v2/parse.ts +214 -214
- package/src/config/v2/paths.ts +54 -54
- package/src/config/v2/portal-profile.ts +88 -88
- package/src/config/v2/resolve.ts +188 -188
- package/src/config/v2/rules.ts +714 -714
- package/src/config/v2/schema.ts +245 -245
- package/src/config/v2/services.ts +663 -663
- package/src/config/v2/workspace.ts +3 -2
- package/src/config/v2/wrapper.ts +24 -2
- package/src/config/validators/BuildSchema.ts +95 -95
- package/src/config/validators/HeaderNavigationSchema.ts +44 -44
- package/src/config/validators/InputNavigationSchema.test-d.ts +178 -178
- package/src/config/validators/InputNavigationSchema.ts +206 -206
- package/src/config/validators/ModulesSchema.ts +502 -502
- package/src/config/validators/NavigationSchema.ts +352 -352
- package/src/config/validators/ProtectedRoutesSchema.ts +35 -35
- package/src/config/validators/ZudokuConfig.ts +792 -792
- package/src/config/validators/auth.ts +3 -3
- package/src/config/validators/reason-codes.ts +7 -7
- package/src/env.d.ts +11 -11
- package/src/index.ts +83 -83
- package/src/lib/MissingIcon.tsx +22 -22
- package/src/lib/assets/language-icons/bun.tsx +50 -50
- package/src/lib/assets/language-icons/c.tsx +31 -31
- package/src/lib/assets/language-icons/commonlisp.tsx +22 -22
- package/src/lib/assets/language-icons/cpp.tsx +35 -35
- package/src/lib/assets/language-icons/csharp.tsx +35 -35
- package/src/lib/assets/language-icons/css.tsx +36 -36
- package/src/lib/assets/language-icons/dart.tsx +39 -39
- package/src/lib/assets/language-icons/elixir.tsx +19 -19
- package/src/lib/assets/language-icons/go.tsx +19 -19
- package/src/lib/assets/language-icons/graphql.tsx +19 -19
- package/src/lib/assets/language-icons/html.tsx +24 -24
- package/src/lib/assets/language-icons/java.tsx +35 -35
- package/src/lib/assets/language-icons/javascript.tsx +11 -11
- package/src/lib/assets/language-icons/json.tsx +19 -19
- package/src/lib/assets/language-icons/kotlin.tsx +30 -30
- package/src/lib/assets/language-icons/markdown.tsx +19 -19
- package/src/lib/assets/language-icons/mdx.tsx +23 -23
- package/src/lib/assets/language-icons/npm.tsx +15 -15
- package/src/lib/assets/language-icons/objectivec.tsx +23 -23
- package/src/lib/assets/language-icons/ocaml.tsx +34 -34
- package/src/lib/assets/language-icons/php.tsx +19 -19
- package/src/lib/assets/language-icons/pnpm.tsx +32 -32
- package/src/lib/assets/language-icons/powershell.tsx +27 -27
- package/src/lib/assets/language-icons/python.tsx +23 -23
- package/src/lib/assets/language-icons/react.tsx +21 -21
- package/src/lib/assets/language-icons/ruby.tsx +19 -19
- package/src/lib/assets/language-icons/rust.tsx +19 -19
- package/src/lib/assets/language-icons/scala.tsx +19 -19
- package/src/lib/assets/language-icons/shell.tsx +19 -19
- package/src/lib/assets/language-icons/swift.tsx +19 -19
- package/src/lib/assets/language-icons/toml.tsx +23 -23
- package/src/lib/assets/language-icons/typescript.tsx +23 -23
- package/src/lib/assets/language-icons/xml.tsx +19 -19
- package/src/lib/assets/language-icons/yaml.tsx +23 -23
- package/src/lib/assets/language-icons/yarn.tsx +17 -17
- package/src/lib/assets/language-icons/zig.tsx +32 -32
- package/src/lib/auth/issuer.ts +34 -34
- package/src/lib/authentication/AuthenticationPlugin.tsx +33 -33
- package/src/lib/authentication/auth-header-nav.ts +46 -46
- package/src/lib/authentication/authentication.ts +51 -51
- package/src/lib/authentication/components/CallbackHandler.tsx +45 -45
- package/src/lib/authentication/components/OAuthErrorPage.tsx +197 -197
- package/src/lib/authentication/components/ProductionUnlockPage.tsx +26 -26
- package/src/lib/authentication/components/SignIn.tsx +46 -46
- package/src/lib/authentication/components/SignOut.tsx +15 -15
- package/src/lib/authentication/components/SignUp.tsx +48 -48
- package/src/lib/authentication/constants.ts +1 -1
- package/src/lib/authentication/errors.ts +34 -34
- package/src/lib/authentication/header-nav-filter.ts +35 -35
- package/src/lib/authentication/hook.ts +141 -141
- package/src/lib/authentication/providers/auth0.tsx +91 -91
- package/src/lib/authentication/providers/azureb2c.tsx +223 -223
- package/src/lib/authentication/providers/clerk.tsx +224 -224
- package/src/lib/authentication/providers/dev-portal-auth-pages.tsx +602 -602
- package/src/lib/authentication/providers/dev-portal-constants.ts +38 -38
- package/src/lib/authentication/providers/dev-portal-demo.ts +151 -151
- package/src/lib/authentication/providers/dev-portal-utils.ts +279 -279
- package/src/lib/authentication/providers/dev-portal.tsx +448 -448
- package/src/lib/authentication/providers/firebase.tsx +486 -486
- package/src/lib/authentication/providers/openid.tsx +516 -516
- package/src/lib/authentication/providers/supabase.tsx +412 -412
- package/src/lib/authentication/providers/util.ts +26 -26
- package/src/lib/authentication/state.ts +180 -180
- package/src/lib/authentication/ui/AuthCard.tsx +7 -7
- package/src/lib/authentication/ui/EmailLinkCallbackUi.tsx +129 -129
- package/src/lib/authentication/ui/EmailLinkSentUi.tsx +105 -105
- package/src/lib/authentication/ui/EmailLinkSignInUi.tsx +100 -100
- package/src/lib/authentication/ui/EmailVerificationUi.tsx +128 -128
- package/src/lib/authentication/ui/ZudokuAuthUi.tsx +620 -620
- package/src/lib/authentication/ui/icons/Apple.tsx +10 -10
- package/src/lib/authentication/ui/icons/Facebook.tsx +15 -15
- package/src/lib/authentication/ui/icons/Github.tsx +16 -16
- package/src/lib/authentication/ui/icons/Google.tsx +16 -16
- package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -12
- package/src/lib/authentication/ui/icons/X.tsx +10 -10
- package/src/lib/authentication/utils/relativeRedirectUrl.ts +16 -16
- package/src/lib/components/AiAssistantMenuItems.tsx +102 -102
- package/src/lib/components/AnchorLink.tsx +24 -24
- package/src/lib/components/Autocomplete.tsx +123 -123
- package/src/lib/components/Banner.tsx +52 -52
- package/src/lib/components/Bootstrap.tsx +77 -77
- package/src/lib/components/BuildCheck.tsx +87 -87
- package/src/lib/components/CategoryHeading.tsx +19 -19
- package/src/lib/components/ClientOnly.tsx +19 -19
- package/src/lib/components/DeveloperHint.tsx +39 -39
- package/src/lib/components/ErrorPage.tsx +26 -26
- package/src/lib/components/Footer.tsx +146 -146
- package/src/lib/components/Framed.tsx +51 -51
- package/src/lib/components/Header.tsx +261 -261
- package/src/lib/components/HeaderAuthActions.tsx +32 -32
- package/src/lib/components/HeaderNavigation.tsx +176 -176
- package/src/lib/components/Heading.tsx +84 -84
- package/src/lib/components/InlineCode.tsx +15 -15
- package/src/lib/components/LandingLayout.tsx +27 -27
- package/src/lib/components/LanguageIcon.tsx +199 -199
- package/src/lib/components/Layout.tsx +59 -59
- package/src/lib/components/Main.tsx +52 -52
- package/src/lib/components/Markdown.tsx +55 -55
- package/src/lib/components/Mermaid.tsx +74 -74
- package/src/lib/components/Meta.tsx +46 -46
- package/src/lib/components/MobileTopNavigation.tsx +283 -283
- package/src/lib/components/MultiSelect.tsx +86 -86
- package/src/lib/components/NotFoundPage.tsx +37 -37
- package/src/lib/components/PageProgress.tsx +28 -28
- package/src/lib/components/PagefindSearchMeta.tsx +14 -14
- package/src/lib/components/Pagination.tsx +44 -44
- package/src/lib/components/PathRenderer.tsx +61 -61
- package/src/lib/components/PluginHeads.tsx +17 -17
- package/src/lib/components/Search.tsx +70 -70
- package/src/lib/components/SiteTitle.tsx +58 -58
- package/src/lib/components/Slot.tsx +65 -65
- package/src/lib/components/Spinner.tsx +5 -5
- package/src/lib/components/StatusPage.tsx +96 -96
- package/src/lib/components/ThemeSwitch.tsx +99 -99
- package/src/lib/components/TopNavigation.tsx +90 -90
- package/src/lib/components/Typography.tsx +12 -12
- package/src/lib/components/Zudoku.tsx +105 -105
- package/src/lib/components/cache.ts +27 -27
- package/src/lib/components/context/RenderContext.ts +11 -11
- package/src/lib/components/context/RouterEventsEmitter.tsx +19 -19
- package/src/lib/components/context/SlotProvider.tsx +149 -149
- package/src/lib/components/context/ViewportAnchorContext.tsx +137 -137
- package/src/lib/components/context/ZudokuContext.ts +140 -140
- package/src/lib/components/context/ZudokuProvider.tsx +20 -20
- package/src/lib/components/context/ZudokuReactContext.tsx +17 -17
- package/src/lib/components/index.ts +36 -36
- package/src/lib/components/navigation/Navigation.tsx +51 -51
- package/src/lib/components/navigation/NavigationBadge.tsx +48 -48
- package/src/lib/components/navigation/NavigationCategory.tsx +157 -157
- package/src/lib/components/navigation/NavigationFilterContext.tsx +28 -28
- package/src/lib/components/navigation/NavigationFilterInput.tsx +35 -35
- package/src/lib/components/navigation/NavigationItem.tsx +181 -181
- package/src/lib/components/navigation/NavigationWrapper.tsx +49 -49
- package/src/lib/components/navigation/PoweredByZudoku.tsx +39 -39
- package/src/lib/components/navigation/Toc.tsx +137 -137
- package/src/lib/components/navigation/ZudokuLogo.tsx +25 -25
- package/src/lib/components/navigation/ZuploLogo.tsx +14 -14
- package/src/lib/components/navigation/utils.ts +234 -234
- package/src/lib/core/RouteGuard.tsx +260 -260
- package/src/lib/core/ZudokuContext.ts +272 -272
- package/src/lib/core/plugins.ts +139 -139
- package/src/lib/core/react-query.ts +1 -1
- package/src/lib/core/router.ts +1 -1
- package/src/lib/core/transform-config.ts +67 -67
- package/src/lib/demo/DemoAnnouncement.tsx +17 -17
- package/src/lib/errors/ErrorAlert.tsx +28 -28
- package/src/lib/errors/ErrorMessage.tsx +50 -50
- package/src/lib/errors/RouterError.tsx +18 -18
- package/src/lib/errors/ServerError.tsx +5 -5
- package/src/lib/errors/TopLevelError.tsx +6 -6
- package/src/lib/hooks/index.ts +13 -13
- package/src/lib/hooks/useEvent.ts +41 -41
- package/src/lib/hooks/useHighlighter.ts +15 -15
- package/src/lib/hooks/useHotkey.ts +70 -70
- package/src/lib/icons.ts +2 -2
- package/src/lib/navigation/applyRules.ts +127 -127
- package/src/lib/navigation/pathMatcher.ts +81 -81
- package/src/lib/oas/graphql/circular.ts +69 -69
- package/src/lib/oas/graphql/constants.ts +2 -2
- package/src/lib/oas/graphql/index.ts +791 -791
- package/src/lib/oas/parser/dereference/index.ts +84 -84
- package/src/lib/oas/parser/dereference/resolveRef.ts +32 -32
- package/src/lib/oas/parser/index.ts +129 -129
- package/src/lib/oas/parser/schemas/v3.0.json +1489 -1489
- package/src/lib/oas/parser/schemas/v3.1.json +1298 -1298
- package/src/lib/oas/parser/upgrade/index.ts +174 -174
- package/src/lib/plugins/api-catalog/Catalog.tsx +80 -80
- package/src/lib/plugins/api-catalog/index.tsx +119 -119
- package/src/lib/plugins/api-keys/CreateApiKey.tsx +128 -128
- package/src/lib/plugins/api-keys/CreateApiKeyDialog.tsx +49 -49
- package/src/lib/plugins/api-keys/ProtectedRoute.tsx +33 -33
- package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +72 -72
- package/src/lib/plugins/api-keys/index.tsx +274 -274
- package/src/lib/plugins/api-keys/settings/ApiKeyItem.tsx +342 -342
- package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -67
- package/src/lib/plugins/api-keys/settings/RevealApiKey.tsx +127 -127
- package/src/lib/plugins/custom-pages/index.tsx +32 -32
- package/src/lib/plugins/markdown/MdxPage.tsx +260 -260
- package/src/lib/plugins/markdown/assets/ChatGPTLogo.tsx +11 -11
- package/src/lib/plugins/markdown/assets/ClaudeLogo.tsx +19 -19
- package/src/lib/plugins/markdown/index.tsx +82 -82
- package/src/lib/plugins/openapi/ApiHeader.tsx +96 -96
- package/src/lib/plugins/openapi/CollapsibleCode.tsx +88 -88
- package/src/lib/plugins/openapi/ColorizedParam.tsx +115 -115
- package/src/lib/plugins/openapi/DownloadSchemaButton.tsx +94 -94
- package/src/lib/plugins/openapi/Endpoint.tsx +85 -85
- package/src/lib/plugins/openapi/GeneratedExampleSidecarBox.tsx +52 -52
- package/src/lib/plugins/openapi/MCPEndpoint.tsx +273 -273
- package/src/lib/plugins/openapi/OasProvider.tsx +74 -74
- package/src/lib/plugins/openapi/OperationList.tsx +275 -275
- package/src/lib/plugins/openapi/OperationListItem.tsx +183 -183
- package/src/lib/plugins/openapi/ParamInfos.tsx +96 -96
- package/src/lib/plugins/openapi/ParameterList.tsx +53 -53
- package/src/lib/plugins/openapi/ParameterListItem.tsx +161 -161
- package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +67 -67
- package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +63 -63
- package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +120 -120
- package/src/lib/plugins/openapi/SchemaInfo.tsx +344 -344
- package/src/lib/plugins/openapi/SchemaList.tsx +113 -113
- package/src/lib/plugins/openapi/Sidecar.tsx +314 -314
- package/src/lib/plugins/openapi/SidecarBox.tsx +57 -57
- package/src/lib/plugins/openapi/SidecarExamples.tsx +177 -177
- package/src/lib/plugins/openapi/SimpleSelect.tsx +46 -46
- package/src/lib/plugins/openapi/client/GraphQLClient.tsx +73 -73
- package/src/lib/plugins/openapi/client/GraphQLContext.tsx +16 -16
- package/src/lib/plugins/openapi/client/createServer.ts +35 -35
- package/src/lib/plugins/openapi/client/useCreateQuery.ts +44 -44
- package/src/lib/plugins/openapi/components/ConstValue.tsx +24 -24
- package/src/lib/plugins/openapi/components/EnumValues.tsx +58 -58
- package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -22
- package/src/lib/plugins/openapi/components/ResponseContent.tsx +117 -117
- package/src/lib/plugins/openapi/components/SelectOnClick.tsx +29 -29
- package/src/lib/plugins/openapi/context.tsx +16 -16
- package/src/lib/plugins/openapi/graphql/fragment-masking.ts +104 -104
- package/src/lib/plugins/openapi/graphql/gql.ts +95 -95
- package/src/lib/plugins/openapi/graphql/graphql.ts +835 -835
- package/src/lib/plugins/openapi/graphql/index.ts +2 -2
- package/src/lib/plugins/openapi/index.tsx +221 -221
- package/src/lib/plugins/openapi/interfaces.ts +100 -100
- package/src/lib/plugins/openapi/playground/BodyPanel.tsx +274 -274
- package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +51 -51
- package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +60 -60
- package/src/lib/plugins/openapi/playground/Headers.tsx +194 -194
- package/src/lib/plugins/openapi/playground/IdentityDialog.tsx +75 -75
- package/src/lib/plugins/openapi/playground/IdentitySelector.tsx +38 -38
- package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +45 -45
- package/src/lib/plugins/openapi/playground/PathParams.tsx +53 -53
- package/src/lib/plugins/openapi/playground/Playground.tsx +602 -602
- package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +62 -62
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +151 -151
- package/src/lib/plugins/openapi/playground/RequestLoginDialog.tsx +70 -70
- package/src/lib/plugins/openapi/playground/Spinner.tsx +87 -87
- package/src/lib/plugins/openapi/playground/createUrl.ts +25 -25
- package/src/lib/plugins/openapi/playground/fileUtils.ts +36 -36
- package/src/lib/plugins/openapi/playground/rememberedIdentity.ts +26 -26
- package/src/lib/plugins/openapi/playground/request-panel/MultipartField.tsx +91 -91
- package/src/lib/plugins/openapi/playground/request-panel/UrlPath.tsx +31 -31
- package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +29 -29
- package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +340 -340
- package/src/lib/plugins/openapi/playground/result-panel/AudioPlayer.tsx +50 -50
- package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +117 -117
- package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +355 -355
- package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +106 -106
- package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -36
- package/src/lib/plugins/openapi/playground/serializeQueryParams.ts +125 -125
- package/src/lib/plugins/openapi/playground/useRememberSkipLoginDialog.tsx +23 -23
- package/src/lib/plugins/openapi/processors/injectApitogoGatewayServer.ts +36 -36
- package/src/lib/plugins/openapi/processors/removeExtensions.ts +29 -29
- package/src/lib/plugins/openapi/processors/removeParameters.ts +103 -103
- package/src/lib/plugins/openapi/processors/removePaths.ts +57 -57
- package/src/lib/plugins/openapi/processors/traverse.ts +1 -1
- package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +39 -39
- package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +189 -189
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +299 -299
- package/src/lib/plugins/openapi/schema/UnionView.tsx +132 -132
- package/src/lib/plugins/openapi/schema/union-helpers.ts +123 -123
- package/src/lib/plugins/openapi/schema/utils.ts +49 -49
- package/src/lib/plugins/openapi/state.ts +36 -36
- package/src/lib/plugins/openapi/util/buildTagCategories.ts +54 -54
- package/src/lib/plugins/openapi/util/createHttpSnippet.ts +135 -135
- package/src/lib/plugins/openapi/util/createNavigationCategory.tsx +39 -39
- package/src/lib/plugins/openapi/util/generateSchemaExample.ts +191 -191
- package/src/lib/plugins/openapi/util/getRoutes.tsx +265 -265
- package/src/lib/plugins/openapi/util/methodColorMap.tsx +11 -11
- package/src/lib/plugins/openapi/util/methodToColor.ts +27 -27
- package/src/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.tsx +32 -32
- package/src/lib/plugins/openapi/util/useWarmupSchema.ts +23 -23
- package/src/lib/plugins/search-inkeep/index.tsx +108 -108
- package/src/lib/plugins/search-inkeep/inkeep.ts +24 -24
- package/src/lib/plugins/search-pagefind/IndexingDialog.tsx +162 -162
- package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +202 -202
- package/src/lib/plugins/search-pagefind/ResultList.tsx +122 -122
- package/src/lib/plugins/search-pagefind/get-results.tsx +74 -74
- package/src/lib/plugins/search-pagefind/index.tsx +21 -21
- package/src/lib/plugins/search-pagefind/types.ts +118 -118
- package/src/lib/shiki-constants.ts +24 -24
- package/src/lib/shiki.ts +179 -179
- package/src/lib/testing/index.tsx +147 -147
- package/src/lib/ui/Accordion.tsx +55 -55
- package/src/lib/ui/ActionButton.tsx +21 -21
- package/src/lib/ui/Alert.tsx +84 -84
- package/src/lib/ui/AlertDialog.tsx +195 -195
- package/src/lib/ui/AspectRatio.tsx +5 -5
- package/src/lib/ui/Badge.tsx +48 -48
- package/src/lib/ui/Breadcrumb.tsx +115 -115
- package/src/lib/ui/Button.tsx +65 -65
- package/src/lib/ui/ButtonGroup.tsx +80 -80
- package/src/lib/ui/Callout.tsx +113 -113
- package/src/lib/ui/Card.tsx +95 -95
- package/src/lib/ui/Carousel.tsx +259 -259
- package/src/lib/ui/Checkbox.tsx +28 -28
- package/src/lib/ui/CodeBlock.tsx +92 -92
- package/src/lib/ui/CodeTabPanel.tsx +13 -13
- package/src/lib/ui/CodeTabs.tsx +161 -161
- package/src/lib/ui/Collapsible.tsx +31 -31
- package/src/lib/ui/Command.tsx +191 -191
- package/src/lib/ui/Dialog.tsx +138 -138
- package/src/lib/ui/DismissibleAlert.tsx +74 -74
- package/src/lib/ui/Drawer.tsx +121 -121
- package/src/lib/ui/DropdownMenu.tsx +254 -254
- package/src/lib/ui/EmbeddedCodeBlock.tsx +99 -99
- package/src/lib/ui/Form.tsx +176 -176
- package/src/lib/ui/Frame.tsx +81 -81
- package/src/lib/ui/HoverCard.tsx +26 -26
- package/src/lib/ui/Input.tsx +23 -23
- package/src/lib/ui/InputGroup.tsx +168 -168
- package/src/lib/ui/Item.tsx +213 -213
- package/src/lib/ui/Kbd.tsx +28 -28
- package/src/lib/ui/Label.tsx +23 -23
- package/src/lib/ui/NativeSelect.tsx +48 -48
- package/src/lib/ui/NavigationMenu.tsx +169 -169
- package/src/lib/ui/Pagination.tsx +115 -115
- package/src/lib/ui/Popover.tsx +28 -28
- package/src/lib/ui/Progress.tsx +25 -25
- package/src/lib/ui/RadioGroup.tsx +41 -41
- package/src/lib/ui/ReactComponentDoc.tsx +68 -68
- package/src/lib/ui/ScrollArea.tsx +45 -45
- package/src/lib/ui/Secret.tsx +133 -133
- package/src/lib/ui/Select.tsx +184 -184
- package/src/lib/ui/Separator.tsx +25 -25
- package/src/lib/ui/Skeleton.tsx +15 -15
- package/src/lib/ui/Slider.tsx +25 -25
- package/src/lib/ui/Stepper.tsx +8 -8
- package/src/lib/ui/Switch.tsx +26 -26
- package/src/lib/ui/SyntaxHighlight.tsx +54 -54
- package/src/lib/ui/Tabs.tsx +52 -52
- package/src/lib/ui/Textarea.tsx +22 -22
- package/src/lib/ui/Toggle.tsx +42 -42
- package/src/lib/ui/ToggleGroup.tsx +58 -58
- package/src/lib/ui/Tooltip.tsx +65 -65
- package/src/lib/ui/Value.tsx +42 -42
- package/src/lib/ui/util.tsx +8 -8
- package/src/lib/util/MdxComponents.tsx +150 -150
- package/src/lib/util/cn.ts +6 -6
- package/src/lib/util/createVariantComponent.tsx +61 -61
- package/src/lib/util/ensureArray.ts +3 -3
- package/src/lib/util/flattenAllOf.ts +72 -72
- package/src/lib/util/flattenAllOfProcessor.ts +74 -74
- package/src/lib/util/hastToJsx.tsx +67 -67
- package/src/lib/util/humanFileSize.ts +15 -15
- package/src/lib/util/invariant.ts +52 -52
- package/src/lib/util/joinUrl.ts +60 -60
- package/src/lib/util/logInit.ts +9 -9
- package/src/lib/util/objectEntries.ts +5 -5
- package/src/lib/util/os.ts +18 -18
- package/src/lib/util/pastellize.ts +25 -25
- package/src/lib/util/problemJson.ts +63 -63
- package/src/lib/util/readFrontmatter.ts +14 -14
- package/src/lib/util/renderIf.ts +4 -4
- package/src/lib/util/scrollIntoViewIfNeeded.ts +18 -18
- package/src/lib/util/slugify.ts +21 -21
- package/src/lib/util/syncZustandState.ts +22 -22
- package/src/lib/util/traverse.ts +70 -70
- package/src/lib/util/types.ts +7 -7
- package/src/lib/util/url.ts +18 -18
- package/src/lib/util/useCopyToClipboard.ts +17 -17
- package/src/lib/util/useExposedProps.tsx +27 -27
- package/src/lib/util/useIsomorphicLayoutEffect.ts +6 -6
- package/src/lib/util/useLatest.ts +18 -18
- package/src/lib/util/useOnScreen.ts +34 -34
- package/src/lib/util/useScrollToAnchor.ts +75 -75
- package/src/lib/util/useScrollToTop.ts +18 -18
- package/src/types.d.ts +66 -66
- package/src/vite/api/SchemaManager.ts +371 -371
- package/src/vite/api/schema-codegen.ts +163 -163
- package/src/vite/build.ts +237 -237
- package/src/vite/config.ts +273 -273
- package/src/vite/css/collect.ts +42 -42
- package/src/vite/css/plugin.ts +105 -105
- package/src/vite/debug.ts +18 -18
- package/src/vite/dev-portal-env.ts +29 -29
- package/src/vite/dev-server.ts +294 -294
- package/src/vite/html.ts +52 -52
- package/src/vite/index.ts +2 -2
- package/src/vite/llms.ts +99 -99
- package/src/vite/mdx/rehype-extract-toc-with-jsx-export.ts +19 -19
- package/src/vite/mdx/rehype-extract-toc-with-jsx.ts +70 -70
- package/src/vite/mdx/remark-code-tabs.ts +47 -47
- package/src/vite/mdx/remark-inject-filepath.ts +13 -13
- package/src/vite/mdx/remark-last-modified.ts +103 -103
- package/src/vite/mdx/remark-link-rewrite.ts +23 -23
- package/src/vite/mdx/remark-normalize-image-url.ts +15 -15
- package/src/vite/mdx/remark-static-generation.ts +149 -149
- package/src/vite/mdx/utils.ts +32 -32
- package/src/vite/output.ts +261 -261
- package/src/vite/package-root.ts +12 -12
- package/src/vite/pagefind-dev-index.ts +100 -100
- package/src/vite/pagefind-dev-stub.ts +17 -17
- package/src/vite/plugin-api-keys.ts +55 -55
- package/src/vite/plugin-api.ts +328 -328
- package/src/vite/plugin-auth.ts +41 -41
- package/src/vite/plugin-component.ts +45 -45
- package/src/vite/plugin-config-reload.ts +47 -47
- package/src/vite/plugin-config.ts +131 -131
- package/src/vite/plugin-custom-pages.ts +36 -36
- package/src/vite/plugin-doc-metadata.ts +45 -45
- package/src/vite/plugin-docs.ts +205 -205
- package/src/vite/plugin-local-manifest.ts +100 -100
- package/src/vite/plugin-markdown-export.ts +214 -214
- package/src/vite/plugin-mdx.ts +149 -149
- package/src/vite/plugin-metadata.ts +30 -30
- package/src/vite/plugin-modules.ts +188 -188
- package/src/vite/plugin-navigation.ts +106 -106
- package/src/vite/plugin-offroot-resolve.ts +67 -67
- package/src/vite/plugin-search.ts +59 -59
- package/src/vite/plugin-shiki-register.ts +97 -97
- package/src/vite/plugin-theme.ts +458 -458
- package/src/vite/plugin.ts +48 -48
- package/src/vite/prerender/prerender.ts +242 -242
- package/src/vite/prerender/utils.ts +76 -76
- package/src/vite/prerender/worker.ts +118 -118
- package/src/vite/reporter.ts +34 -34
- package/src/vite/shadcn-registry.ts +48 -48
- package/src/vite/sitemap.ts +78 -78
- package/src/vite/ssr-templates/cloudflare.ts +19 -19
- package/src/vite/ssr-templates/node.ts +25 -25
- package/src/vite/ssr-templates/vercel.ts +22 -22
- package/src/vite/watch-ignore.ts +70 -70
- package/src/vite/zuplo.ts +30 -30
- package/src/vite-env.d.ts +6 -6
- package/src/zuplo/enrich-with-zuplo-mcp.ts +168 -168
- package/src/zuplo/enrich-with-zuplo.ts +256 -256
- package/src/zuplo/policy-types.ts +46 -46
- package/src/zuplo/with-zuplo-processors.ts +36 -36
- package/src/zuplo/with-zuplo.ts +14 -14
- package/dist/declarations/cli/platform/client/deploy-server.d.ts +0 -16
|
@@ -1,233 +1,233 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Supabase Setup
|
|
3
|
-
sidebar_label: Supabase
|
|
4
|
-
description:
|
|
5
|
-
Learn how to set up Supabase authentication for APIToGo, leveraging Supabase's built-in auth
|
|
6
|
-
providers for secure documentation access.
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
:::caution{title="SPA / advanced"}
|
|
10
|
-
|
|
11
|
-
Portal products on APItoGo use [`dev-portal`](./authentication.md) authentication. Use Supabase SPA
|
|
12
|
-
integration only for standalone docs sites that talk to Supabase directly.
|
|
13
|
-
|
|
14
|
-
:::
|
|
15
|
-
|
|
16
|
-
Supabase is an open-source Firebase alternative that provides authentication, database, and storage
|
|
17
|
-
services. This guide shows you how to integrate Supabase authentication with your APIToGo
|
|
18
|
-
documentation site.
|
|
19
|
-
|
|
20
|
-
## Prerequisites
|
|
21
|
-
|
|
22
|
-
You'll need a Supabase project. If you don't have one,
|
|
23
|
-
[create a free Supabase project](https://supabase.com/dashboard) to get started.
|
|
24
|
-
|
|
25
|
-
## Setup Steps
|
|
26
|
-
|
|
27
|
-
<Stepper>
|
|
28
|
-
|
|
29
|
-
1. **Configure Authentication Provider**
|
|
30
|
-
|
|
31
|
-
In your [Supabase Dashboard](https://supabase.com/dashboard):
|
|
32
|
-
- Navigate to **Authentication** → **Providers**
|
|
33
|
-
- Enable your preferred authentication provider (GitHub, Google, Azure, etc.)
|
|
34
|
-
- Configure the provider settings:
|
|
35
|
-
- **Redirect URL**: `https://your-project.supabase.co/auth/v1/callback`
|
|
36
|
-
- Copy any required credentials (Client ID, Client Secret) from the provider
|
|
37
|
-
|
|
38
|
-
2. **Get Your Project Credentials**
|
|
39
|
-
|
|
40
|
-
From your Supabase project dashboard:
|
|
41
|
-
- Go to **Settings** → **Data API**
|
|
42
|
-
- Copy your **Project URL** (looks like `https://your-project.supabase.co`)
|
|
43
|
-
- Go to **Settings** → **API Keys**
|
|
44
|
-
- Copy your **anon public** API key
|
|
45
|
-
|
|
46
|
-
3. **Configure APIToGo**
|
|
47
|
-
|
|
48
|
-
Add the Supabase configuration to your [APIToGo configuration file](./overview.md):
|
|
49
|
-
|
|
50
|
-
```ts title="config"
|
|
51
|
-
export default {
|
|
52
|
-
// ... other configuration
|
|
53
|
-
authentication: {
|
|
54
|
-
type: "supabase",
|
|
55
|
-
providers: ["github"], // one or more providers
|
|
56
|
-
supabaseUrl: "https://your-project.supabase.co",
|
|
57
|
-
supabaseKey: "<your-anon-public-key>",
|
|
58
|
-
},
|
|
59
|
-
// ... other configuration
|
|
60
|
-
};
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
You can configure multiple providers:
|
|
64
|
-
|
|
65
|
-
```ts title="config"
|
|
66
|
-
export default {
|
|
67
|
-
// ... other configuration
|
|
68
|
-
authentication: {
|
|
69
|
-
type: "supabase",
|
|
70
|
-
providers: ["github", "google", "azure"],
|
|
71
|
-
supabaseUrl: "https://your-project.supabase.co",
|
|
72
|
-
supabaseKey: "<your-anon-public-key>",
|
|
73
|
-
},
|
|
74
|
-
// ... other configuration
|
|
75
|
-
};
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
4. **Install Supabase Dependencies**
|
|
79
|
-
|
|
80
|
-
Add `@supabase/supabase-js` to your project dependencies:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
npm install @supabase/supabase-js @supabase/auth-ui-shared @supabase/auth-ui-react
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
</Stepper>
|
|
87
|
-
|
|
88
|
-
## Supported Providers
|
|
89
|
-
|
|
90
|
-
Supabase supports numerous authentication providers. Use any of these values in the `providers`
|
|
91
|
-
array:
|
|
92
|
-
|
|
93
|
-
- `apple` - Sign in with Apple
|
|
94
|
-
- `azure` - Microsoft Azure AD
|
|
95
|
-
- `bitbucket` - Bitbucket
|
|
96
|
-
- `discord` - Discord
|
|
97
|
-
- `facebook` - Facebook
|
|
98
|
-
- `figma` - Figma
|
|
99
|
-
- `github` - GitHub
|
|
100
|
-
- `gitlab` - GitLab
|
|
101
|
-
- `google` - Google
|
|
102
|
-
- `kakao` - Kakao
|
|
103
|
-
- `keycloak` - Keycloak
|
|
104
|
-
- `linkedin` / `linkedin_oidc` - LinkedIn
|
|
105
|
-
- `notion` - Notion
|
|
106
|
-
- `slack` / `slack_oidc` - Slack
|
|
107
|
-
- `spotify` - Spotify
|
|
108
|
-
- `twitch` - Twitch
|
|
109
|
-
- `twitter` - Twitter/X
|
|
110
|
-
- `workos` - WorkOS
|
|
111
|
-
- `zoom` - Zoom
|
|
112
|
-
- `fly` - Fly.io
|
|
113
|
-
|
|
114
|
-
:::info
|
|
115
|
-
|
|
116
|
-
Email/password authentication does not need to be specified as a provider because it is enabled by
|
|
117
|
-
default in Supabase. To disable email/password authentication and only use OAuth providers, set
|
|
118
|
-
`onlyThirdPartyProviders: true` in your configuration.
|
|
119
|
-
|
|
120
|
-
:::
|
|
121
|
-
|
|
122
|
-
## Configuration Options
|
|
123
|
-
|
|
124
|
-
All available configuration options for Supabase authentication:
|
|
125
|
-
|
|
126
|
-
```ts title="config"
|
|
127
|
-
authentication: {
|
|
128
|
-
type: "supabase",
|
|
129
|
-
|
|
130
|
-
// Provider configuration (required)
|
|
131
|
-
// Array of one or more OAuth providers to enable
|
|
132
|
-
providers: ["google", "github"],
|
|
133
|
-
|
|
134
|
-
// Supabase credentials (required)
|
|
135
|
-
supabaseUrl: "https://your-project.supabase.co",
|
|
136
|
-
supabaseKey: "<your-anon-public-key>",
|
|
137
|
-
|
|
138
|
-
// Optional: Custom base path for auth routes (default: "/")
|
|
139
|
-
basePath: "/docs",
|
|
140
|
-
|
|
141
|
-
// Optional: Disable email/password authentication, only use OAuth providers
|
|
142
|
-
onlyThirdPartyProviders: true,
|
|
143
|
-
|
|
144
|
-
// Optional: Redirect URLs after authentication events
|
|
145
|
-
redirectToAfterSignUp: "/welcome",
|
|
146
|
-
redirectToAfterSignIn: "/dashboard",
|
|
147
|
-
redirectToAfterSignOut: "/",
|
|
148
|
-
}
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Authentication Routes
|
|
152
|
-
|
|
153
|
-
The Supabase authentication provider automatically creates the following routes:
|
|
154
|
-
|
|
155
|
-
- `/signin` - Sign in page with configured providers
|
|
156
|
-
- `/signup` - Sign up page with configured providers
|
|
157
|
-
- `/signout` - Sign out endpoint
|
|
158
|
-
|
|
159
|
-
If you configure a custom `basePath`, these routes will be prefixed with that path (e.g.,
|
|
160
|
-
`/docs/signin`).
|
|
161
|
-
|
|
162
|
-
## Advanced Configuration
|
|
163
|
-
|
|
164
|
-
### User Profile Data
|
|
165
|
-
|
|
166
|
-
APIToGo automatically extracts the following user information from Supabase authentication:
|
|
167
|
-
|
|
168
|
-
- `sub` - User ID from Supabase
|
|
169
|
-
- `email` - User's email address
|
|
170
|
-
- `name` - User's full name (from `user_metadata.full_name` or `user_metadata.name`)
|
|
171
|
-
- `emailVerified` - Whether the email has been confirmed
|
|
172
|
-
- `pictureUrl` - User's avatar URL (from `user_metadata.avatar_url`)
|
|
173
|
-
|
|
174
|
-
### Additional User Metadata
|
|
175
|
-
|
|
176
|
-
To store and access additional user information beyond what's provided by Supabase authentication:
|
|
177
|
-
|
|
178
|
-
1. Create a `profiles` table in your Supabase database
|
|
179
|
-
2. Set up a database trigger to create profile records on user signup
|
|
180
|
-
3. Use the Supabase client to query this data in your application
|
|
181
|
-
|
|
182
|
-
Example profile table structure:
|
|
183
|
-
|
|
184
|
-
```sql
|
|
185
|
-
CREATE TABLE profiles (
|
|
186
|
-
id UUID REFERENCES auth.users ON DELETE CASCADE,
|
|
187
|
-
username TEXT UNIQUE,
|
|
188
|
-
bio TEXT,
|
|
189
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
190
|
-
PRIMARY KEY (id)
|
|
191
|
-
);
|
|
192
|
-
|
|
193
|
-
-- Create trigger to automatically create profile on user signup
|
|
194
|
-
CREATE OR REPLACE FUNCTION public.handle_new_user()
|
|
195
|
-
RETURNS TRIGGER AS $$
|
|
196
|
-
BEGIN
|
|
197
|
-
INSERT INTO public.profiles (id)
|
|
198
|
-
VALUES (new.id);
|
|
199
|
-
RETURN new;
|
|
200
|
-
END;
|
|
201
|
-
$$ LANGUAGE plpgsql SECURITY DEFINER;
|
|
202
|
-
|
|
203
|
-
CREATE TRIGGER on_auth_user_created
|
|
204
|
-
AFTER INSERT ON auth.users
|
|
205
|
-
FOR EACH ROW EXECUTE PROCEDURE public.handle_new_user();
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Troubleshooting
|
|
209
|
-
|
|
210
|
-
### Common Issues
|
|
211
|
-
|
|
212
|
-
1. **"At least one provider must be provided" Error**: You must configure the `providers` option in
|
|
213
|
-
your authentication configuration with at least one authentication provider in the array.
|
|
214
|
-
|
|
215
|
-
2. **Invalid API Key**: Ensure you're using the `anon public` key, not the `service_role` key from
|
|
216
|
-
your Supabase project settings.
|
|
217
|
-
|
|
218
|
-
3. **Provider Not Working**: Verify the provider is enabled in your Supabase dashboard and properly
|
|
219
|
-
configured with the correct redirect URLs.
|
|
220
|
-
|
|
221
|
-
4. **Redirect URLs**: For local development, update your redirect URLs in both Supabase and the
|
|
222
|
-
OAuth provider to include `http://localhost:3000`.
|
|
223
|
-
|
|
224
|
-
5. **CORS Errors**: Check that your site's domain is properly configured in Supabase's allowed URLs
|
|
225
|
-
under **Authentication** → **URL Configuration**.
|
|
226
|
-
|
|
227
|
-
6. **Authentication Not Working**: Make sure you have installed all required dependencies:
|
|
228
|
-
`@supabase/supabase-js`, `@supabase/auth-ui-react`, and `@supabase/auth-ui-shared`.
|
|
229
|
-
|
|
230
|
-
## Next Steps
|
|
231
|
-
|
|
232
|
-
- Explore [Supabase Auth documentation](https://supabase.com/docs/guides/auth) for advanced features
|
|
233
|
-
- Learn about [protecting routes](./authentication.md#protected-routes) in your documentation
|
|
1
|
+
---
|
|
2
|
+
title: Supabase Setup
|
|
3
|
+
sidebar_label: Supabase
|
|
4
|
+
description:
|
|
5
|
+
Learn how to set up Supabase authentication for APIToGo, leveraging Supabase's built-in auth
|
|
6
|
+
providers for secure documentation access.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
:::caution{title="SPA / advanced"}
|
|
10
|
+
|
|
11
|
+
Portal products on APItoGo use [`dev-portal`](./authentication.md) authentication. Use Supabase SPA
|
|
12
|
+
integration only for standalone docs sites that talk to Supabase directly.
|
|
13
|
+
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
Supabase is an open-source Firebase alternative that provides authentication, database, and storage
|
|
17
|
+
services. This guide shows you how to integrate Supabase authentication with your APIToGo
|
|
18
|
+
documentation site.
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
You'll need a Supabase project. If you don't have one,
|
|
23
|
+
[create a free Supabase project](https://supabase.com/dashboard) to get started.
|
|
24
|
+
|
|
25
|
+
## Setup Steps
|
|
26
|
+
|
|
27
|
+
<Stepper>
|
|
28
|
+
|
|
29
|
+
1. **Configure Authentication Provider**
|
|
30
|
+
|
|
31
|
+
In your [Supabase Dashboard](https://supabase.com/dashboard):
|
|
32
|
+
- Navigate to **Authentication** → **Providers**
|
|
33
|
+
- Enable your preferred authentication provider (GitHub, Google, Azure, etc.)
|
|
34
|
+
- Configure the provider settings:
|
|
35
|
+
- **Redirect URL**: `https://your-project.supabase.co/auth/v1/callback`
|
|
36
|
+
- Copy any required credentials (Client ID, Client Secret) from the provider
|
|
37
|
+
|
|
38
|
+
2. **Get Your Project Credentials**
|
|
39
|
+
|
|
40
|
+
From your Supabase project dashboard:
|
|
41
|
+
- Go to **Settings** → **Data API**
|
|
42
|
+
- Copy your **Project URL** (looks like `https://your-project.supabase.co`)
|
|
43
|
+
- Go to **Settings** → **API Keys**
|
|
44
|
+
- Copy your **anon public** API key
|
|
45
|
+
|
|
46
|
+
3. **Configure APIToGo**
|
|
47
|
+
|
|
48
|
+
Add the Supabase configuration to your [APIToGo configuration file](./overview.md):
|
|
49
|
+
|
|
50
|
+
```ts title="config"
|
|
51
|
+
export default {
|
|
52
|
+
// ... other configuration
|
|
53
|
+
authentication: {
|
|
54
|
+
type: "supabase",
|
|
55
|
+
providers: ["github"], // one or more providers
|
|
56
|
+
supabaseUrl: "https://your-project.supabase.co",
|
|
57
|
+
supabaseKey: "<your-anon-public-key>",
|
|
58
|
+
},
|
|
59
|
+
// ... other configuration
|
|
60
|
+
};
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
You can configure multiple providers:
|
|
64
|
+
|
|
65
|
+
```ts title="config"
|
|
66
|
+
export default {
|
|
67
|
+
// ... other configuration
|
|
68
|
+
authentication: {
|
|
69
|
+
type: "supabase",
|
|
70
|
+
providers: ["github", "google", "azure"],
|
|
71
|
+
supabaseUrl: "https://your-project.supabase.co",
|
|
72
|
+
supabaseKey: "<your-anon-public-key>",
|
|
73
|
+
},
|
|
74
|
+
// ... other configuration
|
|
75
|
+
};
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
4. **Install Supabase Dependencies**
|
|
79
|
+
|
|
80
|
+
Add `@supabase/supabase-js` to your project dependencies:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm install @supabase/supabase-js @supabase/auth-ui-shared @supabase/auth-ui-react
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
</Stepper>
|
|
87
|
+
|
|
88
|
+
## Supported Providers
|
|
89
|
+
|
|
90
|
+
Supabase supports numerous authentication providers. Use any of these values in the `providers`
|
|
91
|
+
array:
|
|
92
|
+
|
|
93
|
+
- `apple` - Sign in with Apple
|
|
94
|
+
- `azure` - Microsoft Azure AD
|
|
95
|
+
- `bitbucket` - Bitbucket
|
|
96
|
+
- `discord` - Discord
|
|
97
|
+
- `facebook` - Facebook
|
|
98
|
+
- `figma` - Figma
|
|
99
|
+
- `github` - GitHub
|
|
100
|
+
- `gitlab` - GitLab
|
|
101
|
+
- `google` - Google
|
|
102
|
+
- `kakao` - Kakao
|
|
103
|
+
- `keycloak` - Keycloak
|
|
104
|
+
- `linkedin` / `linkedin_oidc` - LinkedIn
|
|
105
|
+
- `notion` - Notion
|
|
106
|
+
- `slack` / `slack_oidc` - Slack
|
|
107
|
+
- `spotify` - Spotify
|
|
108
|
+
- `twitch` - Twitch
|
|
109
|
+
- `twitter` - Twitter/X
|
|
110
|
+
- `workos` - WorkOS
|
|
111
|
+
- `zoom` - Zoom
|
|
112
|
+
- `fly` - Fly.io
|
|
113
|
+
|
|
114
|
+
:::info
|
|
115
|
+
|
|
116
|
+
Email/password authentication does not need to be specified as a provider because it is enabled by
|
|
117
|
+
default in Supabase. To disable email/password authentication and only use OAuth providers, set
|
|
118
|
+
`onlyThirdPartyProviders: true` in your configuration.
|
|
119
|
+
|
|
120
|
+
:::
|
|
121
|
+
|
|
122
|
+
## Configuration Options
|
|
123
|
+
|
|
124
|
+
All available configuration options for Supabase authentication:
|
|
125
|
+
|
|
126
|
+
```ts title="config"
|
|
127
|
+
authentication: {
|
|
128
|
+
type: "supabase",
|
|
129
|
+
|
|
130
|
+
// Provider configuration (required)
|
|
131
|
+
// Array of one or more OAuth providers to enable
|
|
132
|
+
providers: ["google", "github"],
|
|
133
|
+
|
|
134
|
+
// Supabase credentials (required)
|
|
135
|
+
supabaseUrl: "https://your-project.supabase.co",
|
|
136
|
+
supabaseKey: "<your-anon-public-key>",
|
|
137
|
+
|
|
138
|
+
// Optional: Custom base path for auth routes (default: "/")
|
|
139
|
+
basePath: "/docs",
|
|
140
|
+
|
|
141
|
+
// Optional: Disable email/password authentication, only use OAuth providers
|
|
142
|
+
onlyThirdPartyProviders: true,
|
|
143
|
+
|
|
144
|
+
// Optional: Redirect URLs after authentication events
|
|
145
|
+
redirectToAfterSignUp: "/welcome",
|
|
146
|
+
redirectToAfterSignIn: "/dashboard",
|
|
147
|
+
redirectToAfterSignOut: "/",
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Authentication Routes
|
|
152
|
+
|
|
153
|
+
The Supabase authentication provider automatically creates the following routes:
|
|
154
|
+
|
|
155
|
+
- `/signin` - Sign in page with configured providers
|
|
156
|
+
- `/signup` - Sign up page with configured providers
|
|
157
|
+
- `/signout` - Sign out endpoint
|
|
158
|
+
|
|
159
|
+
If you configure a custom `basePath`, these routes will be prefixed with that path (e.g.,
|
|
160
|
+
`/docs/signin`).
|
|
161
|
+
|
|
162
|
+
## Advanced Configuration
|
|
163
|
+
|
|
164
|
+
### User Profile Data
|
|
165
|
+
|
|
166
|
+
APIToGo automatically extracts the following user information from Supabase authentication:
|
|
167
|
+
|
|
168
|
+
- `sub` - User ID from Supabase
|
|
169
|
+
- `email` - User's email address
|
|
170
|
+
- `name` - User's full name (from `user_metadata.full_name` or `user_metadata.name`)
|
|
171
|
+
- `emailVerified` - Whether the email has been confirmed
|
|
172
|
+
- `pictureUrl` - User's avatar URL (from `user_metadata.avatar_url`)
|
|
173
|
+
|
|
174
|
+
### Additional User Metadata
|
|
175
|
+
|
|
176
|
+
To store and access additional user information beyond what's provided by Supabase authentication:
|
|
177
|
+
|
|
178
|
+
1. Create a `profiles` table in your Supabase database
|
|
179
|
+
2. Set up a database trigger to create profile records on user signup
|
|
180
|
+
3. Use the Supabase client to query this data in your application
|
|
181
|
+
|
|
182
|
+
Example profile table structure:
|
|
183
|
+
|
|
184
|
+
```sql
|
|
185
|
+
CREATE TABLE profiles (
|
|
186
|
+
id UUID REFERENCES auth.users ON DELETE CASCADE,
|
|
187
|
+
username TEXT UNIQUE,
|
|
188
|
+
bio TEXT,
|
|
189
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
190
|
+
PRIMARY KEY (id)
|
|
191
|
+
);
|
|
192
|
+
|
|
193
|
+
-- Create trigger to automatically create profile on user signup
|
|
194
|
+
CREATE OR REPLACE FUNCTION public.handle_new_user()
|
|
195
|
+
RETURNS TRIGGER AS $$
|
|
196
|
+
BEGIN
|
|
197
|
+
INSERT INTO public.profiles (id)
|
|
198
|
+
VALUES (new.id);
|
|
199
|
+
RETURN new;
|
|
200
|
+
END;
|
|
201
|
+
$$ LANGUAGE plpgsql SECURITY DEFINER;
|
|
202
|
+
|
|
203
|
+
CREATE TRIGGER on_auth_user_created
|
|
204
|
+
AFTER INSERT ON auth.users
|
|
205
|
+
FOR EACH ROW EXECUTE PROCEDURE public.handle_new_user();
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Troubleshooting
|
|
209
|
+
|
|
210
|
+
### Common Issues
|
|
211
|
+
|
|
212
|
+
1. **"At least one provider must be provided" Error**: You must configure the `providers` option in
|
|
213
|
+
your authentication configuration with at least one authentication provider in the array.
|
|
214
|
+
|
|
215
|
+
2. **Invalid API Key**: Ensure you're using the `anon public` key, not the `service_role` key from
|
|
216
|
+
your Supabase project settings.
|
|
217
|
+
|
|
218
|
+
3. **Provider Not Working**: Verify the provider is enabled in your Supabase dashboard and properly
|
|
219
|
+
configured with the correct redirect URLs.
|
|
220
|
+
|
|
221
|
+
4. **Redirect URLs**: For local development, update your redirect URLs in both Supabase and the
|
|
222
|
+
OAuth provider to include `http://localhost:3000`.
|
|
223
|
+
|
|
224
|
+
5. **CORS Errors**: Check that your site's domain is properly configured in Supabase's allowed URLs
|
|
225
|
+
under **Authentication** → **URL Configuration**.
|
|
226
|
+
|
|
227
|
+
6. **Authentication Not Working**: Make sure you have installed all required dependencies:
|
|
228
|
+
`@supabase/supabase-js`, `@supabase/auth-ui-react`, and `@supabase/auth-ui-shared`.
|
|
229
|
+
|
|
230
|
+
## Next Steps
|
|
231
|
+
|
|
232
|
+
- Explore [Supabase Auth documentation](https://supabase.com/docs/guides/auth) for advanced features
|
|
233
|
+
- Learn about [protecting routes](./authentication.md#protected-routes) in your documentation
|