diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts
index 7e2226dab9..1b3b1f5b95 100644
--- a/website/docusaurus.config.ts
+++ b/website/docusaurus.config.ts
@@ -42,882 +42,936 @@ const addDocsRoutePrefix = ({ from, ...rest }) => {
};
};
-const config: Config = {
- title: 'Unleash Documentation',
- tagline: 'The enterprise ready feature flag service',
- url: 'https://docs.getunleash.io',
- baseUrl: '/',
- onBrokenLinks: 'throw',
- onBrokenMarkdownLinks: 'throw',
- favicon: 'img/favicon.ico',
- organizationName: 'Unleash', // Usually your GitHub org/user name.
- projectName: 'unleash.github.io', // Usually your repo name.
- trailingSlash: false,
- customFields: {
- // expose env vars etc here
- environment: process.env.NODE_ENV,
- },
- themeConfig: {
- defaultMode: 'light',
- disableSwitch: true,
- respectPrefersColorScheme: false,
- algolia: {
- appId: '5U05JI5NE1',
- apiKey: 'dc9c4491fcf9143ee34015f22d1dd9d6',
- indexName: 'getunleash',
- },
- navbar: {
- logo: {
- alt: 'Unleash logo',
- src: 'img/unleash_logo_white.svg',
- href: 'https://www.getunleash.io',
- },
- items: [
- {
- type: 'doc',
- position: 'right',
- docId: 'quickstart',
- html: 'Quickstart',
- },
- {
- type: 'doc',
- position: 'right',
- docId: 'welcome',
- html: 'Docs',
- },
- {
- type: 'html',
- value: 'Product',
- position: 'right',
- },
- {
- type: 'html',
- value: 'Plans',
- position: 'right',
- },
- {
- type: 'html',
- value: 'Blog',
- position: 'right',
- },
- {
- type: 'html',
- position: 'right',
- value: '',
- },
- {
- type: 'dropdown',
- position: 'right',
- html: 'Unleash Academy',
- to: 'unleash-academy/introduction',
- items: [
- {
- type: 'doc',
- docId: 'unleash-academy/foundational',
- label: 'Foundational',
- },
- {
- type: 'doc',
- docId: 'unleash-academy/advanced-for-devs',
- label: 'Advanced for Developers',
- },
- {
- type: 'doc',
- docId: 'unleash-academy/managing-unleash-for-devops',
- label: 'Managing Unleash for DevOps/Admins',
- },
- ],
- },
+const getUnleashRepoStars = async () => {
+ const response = await fetch(
+ `https://api.github.com/repos/unleash/unleash`,
+ );
+ const data = await response.json();
+ const unleashRepoStars = data.stargazers_count;
+ const formattedStars =
+ unleashRepoStars >= 1000
+ ? `${(unleashRepoStars / 1000).toFixed(1)}k`
+ : unleashRepoStars.toString();
+ return formattedStars;
+};
+
+export default async function createConfigAsync(): Promise {
+ const stars = await getUnleashRepoStars();
+ return {
+ title: 'Unleash Documentation',
+ tagline: 'The enterprise ready feature flag service',
+ url: 'https://docs.getunleash.io',
+ baseUrl: '/',
+ onBrokenLinks: 'throw',
+ onBrokenMarkdownLinks: 'throw',
+ favicon: 'img/favicon.ico',
+ organizationName: 'Unleash', // Usually your GitHub org/user name.
+ projectName: 'unleash.github.io', // Usually your repo name.
+ trailingSlash: false,
+ customFields: {
+ // expose env vars etc here
+ environment: process.env.NODE_ENV,
+ },
+ themeConfig: {
+ defaultMode: 'light',
+ disableSwitch: true,
+ respectPrefersColorScheme: false,
+ algolia: {
+ appId: '5U05JI5NE1',
+ apiKey: 'dc9c4491fcf9143ee34015f22d1dd9d6',
+ indexName: 'getunleash',
+ },
+ navbar: {
+ logo: {
+ alt: 'Unleash logo',
+ src: 'https://getunleash.io/logos/unleash_pos.svg',
+ srcDark: 'img/unleash_logo_white.svg',
+ href: 'https://www.getunleash.io',
+ height: '2rem',
+ },
+ items: [
+ {
+ label: 'Product',
+ href: 'https://www.getunleash.io/enterprise-feature-management-platform',
+ position: 'left',
+ },
+ {
+ label: 'Plans',
+ href: 'https://www.getunleash.io/plans',
+ position: 'left',
+ },
+ {
+ label: 'Blog',
+ href: 'https://www.getunleash.io/blog',
+ position: 'left',
+ },
+ {
+ type: 'dropdown',
+ position: 'left',
+ html: 'Unleash Academy',
+ to: 'unleash-academy/introduction',
+ items: [
+ {
+ type: 'doc',
+ docId: 'unleash-academy/foundational',
+ label: 'Foundational',
+ },
+ {
+ type: 'doc',
+ docId: 'unleash-academy/advanced-for-devs',
+ label: 'Advanced for Developers',
+ },
+ {
+ type: 'doc',
+ docId: 'unleash-academy/managing-unleash-for-devops',
+ label: 'Managing Unleash for DevOps/Admins',
+ },
+ ],
+ },
+ {
+ type: 'dropdown',
+ position: 'left',
+ html: 'Unleash Certification',
+ items: [
+ {
+ label: 'Foundational Unleash',
+ href: 'https://docs.google.com/forms/d/1iPUk2I0k5xMzicn9aLMcPF3b9ub3ZwdVjRxCxWxV7js/viewform',
+ },
+ {
+ label: 'Advanced Unleash for Developers',
+ href: 'https://docs.google.com/forms/d/1NUL9hyO8Ys916TB6fPV3-jkvD97OmPXZ8_TO84Wjqgc/viewform',
+ },
+ {
+ label: 'Managing Unleash for DevOps/Admins',
+ href: 'https://docs.google.com/forms/d/1JlIqmXI3P7dj0n-OiUs2IYsYXgmqw23BChaemlSgHJA/viewform',
+ },
+ ],
+ },
+ {
+ type: 'search',
+ position: 'right',
+ },
+ {
+ label: 'Sign in',
+ href: 'https://app.unleash-hosted.com/sign-in',
+ position: 'right',
+ },
+ {
+ type: 'html',
+ position: 'right',
+ value: ``,
+ },
+ {
+ label: 'Get a demo',
+ href: 'https://www.getunleash.io/plans/enterprise',
+ position: 'right',
+ },
+ ],
+ },
+ prism: {
+ additionalLanguages: [
+ 'csharp',
+ 'dart',
+ 'java',
+ 'php',
+ 'ruby',
+ 'bash',
+ 'diff',
+ ],
+ },
+ languageTabs: [
{
- type: 'dropdown',
- position: 'right',
- html: 'Unleash Certification',
- items: [
- {
- label: 'Foundational Unleash',
- href: 'https://docs.google.com/forms/d/1iPUk2I0k5xMzicn9aLMcPF3b9ub3ZwdVjRxCxWxV7js/viewform',
- },
- {
- label: 'Advanced Unleash for Developers',
- href: 'https://docs.google.com/forms/d/1NUL9hyO8Ys916TB6fPV3-jkvD97OmPXZ8_TO84Wjqgc/viewform',
- },
- {
- label: 'Managing Unleash for DevOps/Admins',
- href: 'https://docs.google.com/forms/d/1JlIqmXI3P7dj0n-OiUs2IYsYXgmqw23BChaemlSgHJA/viewform',
- },
- ],
+ highlight: 'bash',
+ language: 'curl',
},
{
- type: 'html',
- position: 'right',
- value: '',
+ highlight: 'python',
+ language: 'python',
+ variant: 'requests',
},
{
- type: 'html',
- value: 'Sign in',
- position: 'right',
+ highlight: 'go',
+ language: 'go',
},
{
- type: 'html',
- position: 'right',
- value: '',
+ highlight: 'javascript',
+ language: 'nodejs',
+ variant: 'native',
},
{
- href: 'https://github.com/Unleash/unleash',
- position: 'right',
- className: 'header-github-link',
- 'aria-label': 'Unleash GitHub repository',
+ highlight: 'ruby',
+ language: 'ruby',
+ },
+ {
+ highlight: 'csharp',
+ language: 'csharp',
+ variant: 'httpclient',
+ },
+ {
+ highlight: 'php',
+ language: 'php',
+ },
+ {
+ highlight: 'java',
+ language: 'java',
+ },
+ {
+ highlight: 'powershell',
+ language: 'powershell',
},
],
+ footer: {
+ links: [
+ {
+ title: 'Feature Flag use cases',
+ items: [
+ {
+ label: 'Secure, scalable feature flags',
+ to: 'https://getunleash.io/TBD',
+ },
+ {
+ label: 'Rollbacks',
+ to: 'https://getunleash.io/TBD',
+ },
+ {
+ label: 'Fedramp, SOC2, ISO2700 compliance',
+ to: 'https://getunleash.io/TBD',
+ },
+ {
+ label: 'Progressive or gradual rollouts',
+ to: 'https://getunleash.io/TBD',
+ },
+ {
+ label: 'Trunk-based development',
+ to: 'https://getunleash.io/TBD',
+ },
+ {
+ label: 'Software kill switches',
+ to: 'https://getunleash.io/TBD',
+ },
+ {
+ label: 'A/B testing',
+ to: 'https://getunleash.io/TBD',
+ },
+ {
+ label: 'Feature Management',
+ to: 'https://getunleash.io/TBD',
+ },
+ {
+ label: 'Canary releases',
+ to: 'https://getunleash.io/TBD',
+ },
+ ],
+ },
+ {
+ title: 'Product',
+ items: [
+ {
+ label: 'Docs',
+ to: '/',
+ },
+ {
+ label: 'Unleash on GitHub',
+ href: 'https://github.com/Unleash/unleash',
+ },
+ {
+ label: 'Roadmap',
+ href: 'https://github.com/orgs/Unleash/projects/10',
+ },
+ {
+ label: 'Unleash help center',
+ href: 'https://getunleash.zendesk.com/hc/en-gb',
+ },
+ ],
+ },
+ {
+ title: 'Community',
+ items: [
+ {
+ label: 'GitHub discussions',
+ href: 'https://github.com/unleash/unleash/discussions/',
+ },
+ {
+ label: 'Slack',
+ href: 'https://slack.unleash.run/',
+ },
+ {
+ label: 'Stack Overflow',
+ href: 'https://stackoverflow.com/questions/tagged/unleash',
+ },
+ {
+ label: 'Twitter',
+ href: 'https://twitter.com/getunleash',
+ },
+ ],
+ },
+ ],
+ },
+ image: 'img/logo.png',
+ imageZoom: {
+ // Optional medium-zoom options at
+ // https://www.npmjs.com/package/medium-zoom#options
+ options: {
+ background: 'var(--ifm-background-color)',
+ },
+ },
},
- prism: {
- additionalLanguages: [
- 'csharp',
- 'dart',
- 'java',
- 'php',
- 'ruby',
- 'bash',
- 'diff',
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ // Please change this to your repo.
+ editUrl:
+ 'https://github.com/Unleash/unleash/edit/main/website/',
+ routeBasePath: '/',
+ remarkPlugins: [[pluginNpm2Yarn, { sync: true }]],
+ docItemComponent: '@theme/ApiItem',
+ sidebarPath: './sidebars.ts',
+ },
+ theme: {
+ customCss: './src/css/custom.css',
+ },
+ googleAnalytics: {
+ trackingID: 'UA-134882379-1',
+ },
+ googleTagManager: {
+ containerId: 'GTM-KV5PRR2',
+ },
+ sitemap: {
+ changefreq: 'weekly',
+ lastmod: 'date',
+ priority: 0.5,
+ createSitemapItems: async (params) => {
+ const { defaultCreateSitemapItems, ...rest } =
+ params;
+ const items = await defaultCreateSitemapItems(rest);
+ return items.filter(
+ (item) => !item.url.includes('/page/'),
+ );
+ },
+ },
+ },
],
- },
- languageTabs: [
- {
- highlight: 'bash',
- language: 'curl',
- },
- {
- highlight: 'python',
- language: 'python',
- variant: 'requests',
- },
- {
- highlight: 'go',
- language: 'go',
- },
- {
- highlight: 'javascript',
- language: 'nodejs',
- variant: 'native',
- },
- {
- highlight: 'ruby',
- language: 'ruby',
- },
- {
- highlight: 'csharp',
- language: 'csharp',
- variant: 'httpclient',
- },
- {
- highlight: 'php',
- language: 'php',
- },
- {
- highlight: 'java',
- language: 'java',
- },
- {
- highlight: 'powershell',
- language: 'powershell',
- },
],
- footer: {
- style: 'dark',
- links: [
+ plugins: [
+ [
+ // heads up to anyone making redirects:
+ //
+ // remember that redirects only work in production and not in
+ // development, as mentioned in the docs
+ // https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-client-redirects/
+ '@docusaurus/plugin-client-redirects',
{
- title: 'Product',
- items: [
+ fromExtensions: ['html', 'htm'],
+ redirects: [
{
- label: 'Docs',
+ to: '/how-to/how-to-create-api-tokens',
+ from: [
+ '/user_guide/api-token',
+ '/deploy/user_guide/api-token',
+ ],
+ },
+ {
+ from: '/advanced/audit_log',
+ to: '/reference/events',
+ },
+ {
+ from: '/reference/event-log',
+ to: '/reference/events',
+ },
+ {
+ from: '/reference/event-types',
+ to: '/reference/events',
+ },
+ {
+ from: '/advanced/api_access',
+ to: '/how-to/how-to-use-the-admin-api',
+ },
+ {
+ from: '/advanced/archived_toggles',
+ to: '/reference/feature-toggles',
+ },
+ {
+ from: [
+ '/advanced/custom-activation-strategy',
+ '/advanced/custom_activation_strategy',
+ ],
+ to: '/reference/custom-activation-strategies',
+ },
+ {
+ from: '/advanced/feature_toggle_types',
+ to: '/reference/feature-toggles',
+ },
+ {
+ from: [
+ '/toggle_variants',
+ '/advanced/feature_toggle_variants',
+ '/advanced/toggle_variants',
+ ],
+ to: '/reference/feature-toggle-variants',
+ },
+ {
+ from: [
+ '/advanced/impression-data',
+ '/advanced/impression_data',
+ ],
+ to: '/reference/impression-data',
+ },
+ {
+ from: '/advanced/stickiness',
+ to: '/reference/stickiness',
+ },
+ {
+ from: '/advanced/sso-google',
+ to: '/how-to/how-to-add-sso-google',
+ },
+ {
+ from: '/advanced/sso-open-id-connect',
+ to: '/how-to/how-to-add-sso-open-id-connect',
+ },
+ {
+ from: '/advanced/sso-saml-keycloak',
+ to: '/how-to/how-to-add-sso-saml-keycloak',
+ },
+ {
+ from: '/advanced/sso-saml',
+ to: '/how-to/how-to-add-sso-saml',
+ },
+ {
+ from: '/advanced/enterprise-authentication',
+ to: '/reference/sso',
+ },
+ {
+ from: ['/addons', '/reference/addons'],
+ to: '/reference/integrations',
+ },
+ {
+ from: [
+ '/addons/datadog',
+ '/reference/addons/datadog',
+ ],
+ to: '/reference/integrations/datadog',
+ },
+ {
+ from: ['/addons/slack', '/reference/addons/slack'],
+ to: '/reference/integrations/slack',
+ },
+ {
+ from: [
+ '/addons/slack-app',
+ '/reference/addons/slack-app',
+ ],
+ to: '/reference/integrations/slack-app',
+ },
+ {
+ from: ['/addons/teams', '/reference/addons/teams'],
+ to: '/reference/integrations/teams',
+ },
+ {
+ from: [
+ '/addons/webhook',
+ '/reference/addons/webhook',
+ ],
+ to: '/reference/integrations/webhook',
+ },
+ {
+ from: '/guides/feature_updates_to_slack',
+ to: '/how-to/how-to-send-feature-updates-to-slack-deprecated',
+ },
+ {
+ from: [
+ '/integrations/integrations',
+ '/integrations',
+ ],
+ to: '/reference/integrations',
+ },
+ {
+ from: '/integrations/jira_server_plugin_installation',
+ to: '/reference/integrations/jira-server-plugin-installation',
+ },
+ {
+ from: '/integrations/jira_server_plugin_usage',
+ to: '/reference/integrations/jira-server-plugin-usage',
+ },
+ {
+ from: [
+ '/sdks',
+ '/user_guide/client-sdk',
+ '/client-sdk',
+ '/user_guide/connect_sdk',
+ '/sdks/community',
+ ],
+ to: '/reference/sdks',
+ },
+ {
+ from: '/sdks/go_sdk',
+ to: '/reference/sdks/go',
+ },
+ {
+ from: '/sdks/java_sdk',
+ to: '/reference/sdks/java',
+ },
+ {
+ from: '/sdks/node_sdk',
+ to: '/reference/sdks/node',
+ },
+ {
+ from: '/sdks/php_sdk',
+ to: '/reference/sdks/php',
+ },
+ {
+ from: '/sdks/python_sdk',
+ to: '/reference/sdks/python',
+ },
+ {
+ from: '/sdks/dot_net_sdk',
+ to: '/reference/sdks/dotnet',
+ },
+ {
+ from: '/sdks/ruby_sdk',
+ to: '/reference/sdks/ruby',
+ },
+ {
+ from: '/sdks/android_proxy_sdk',
+ to: '/reference/sdks/android-proxy',
+ },
+ {
+ from: '/sdks/proxy-ios',
+ to: '/reference/sdks/ios-proxy',
+ },
+ {
+ from: [
+ '/sdks/proxy-javascript',
+ '/sdks/javascript-browser',
+ ],
+ to: '/reference/sdks/javascript-browser',
+ },
+ {
+ from: ['/sdks/proxy-react', '/sdks/react'],
+ to: '/reference/sdks/react',
+ },
+ {
+ from: '/sdks/proxy-vue',
+ to: '/reference/sdks/vue',
+ },
+ {
+ from: '/sdks/proxy-svelte',
+ to: '/reference/sdks/svelte',
+ },
+ {
+ from: [
+ '/user_guide/native_apps',
+ '/user_guide/proxy-api',
+ '/sdks/unleash-proxy',
+ ],
+ to: '/reference/unleash-proxy',
+ },
+ {
+ to: '/reference/activation-strategies',
+ from: [
+ '/user_guide/control_rollout',
+ '/user_guide/activation_strategy',
+ ],
+ },
+ {
+ from: '/user_guide/environments',
+ to: '/reference/environments',
+ },
+ {
+ from: '/user_guide/projects',
+ to: '/reference/projects',
+ },
+ {
+ from: ['/user_guide/rbac', '/advanced/groups'],
+ to: '/reference/rbac',
+ },
+ {
+ from: '/user_guide/technical_debt',
+ to: '/reference/technical-debt',
+ },
+ {
+ from: '/user_guide/unleash_context',
+ to: '/reference/unleash-context',
+ },
+ {
+ from: '/user_guide/user-management',
+ to: '/how-to/how-to-add-users-to-unleash',
+ },
+ {
+ from: '/user_guide/v4-whats-new',
+ to: '/reference/whats-new-v4',
+ },
+ {
+ from: [
+ '/user_guide/important-concepts',
+ '/tutorials/important-concepts',
+ '/reference/concepts/',
+ ],
+ to: '/reference',
+ },
+ {
+ from: [
+ '/user_guide/quickstart',
+ '/docs/getting_started',
+ '/tutorials/quickstart',
+ '/tutorials/getting-started',
+ ],
+ to: '/quickstart',
+ },
+ {
+ from: '/api/basic-auth',
+ to: '/reference/api/legacy/unleash/basic-auth',
+ },
+ {
+ from: '/api',
+ to: '/reference/api/legacy/unleash',
+ },
+ {
+ from: '/api/admin/addons',
+ to: '/reference/api/legacy/unleash/admin/addons',
+ },
+ {
+ from: '/api/admin/context',
+ to: '/reference/api/legacy/unleash/admin/context',
+ },
+ {
+ from: '/api/admin/events',
+ to: '/reference/api/legacy/unleash/admin/events',
+ },
+ {
+ from: '/api/admin/feature-toggles-v2',
+ to: '/reference/api/legacy/unleash/admin/features-v2',
+ },
+ {
+ from: '/api/admin/feature-types',
+ to: '/reference/api/legacy/unleash/admin/feature-types',
+ },
+ {
+ from: '/api/admin/features',
+ to: '/reference/api/legacy/unleash/admin/features',
+ },
+ {
+ from: '/api/admin/features-archive',
+ to: '/reference/api/legacy/unleash/admin/archive',
+ },
+ {
+ from: '/api/admin/metrics',
+ to: '/reference/api/legacy/unleash/admin/metrics',
+ },
+ {
+ from: '/api/admin/projects',
+ to: '/reference/api/legacy/unleash/admin/projects',
+ },
+ {
+ from: '/api/admin/segments',
+ to: '/reference/api/legacy/unleash/admin/segments',
+ },
+ {
+ from: '/api/admin/state',
+ to: '/reference/api/legacy/unleash/admin/state',
+ },
+ {
+ from: '/api/admin/strategies',
+ to: '/reference/api/legacy/unleash/admin/strategies',
+ },
+ {
+ from: '/api/admin/tags',
+ to: '/reference/api/legacy/unleash/admin/tags',
+ },
+ {
+ from: '/api/admin/user-admin',
+ to: '/reference/api/legacy/unleash/admin/user-admin',
+ },
+ {
+ from: '/api/client/features',
+ to: '/reference/api/legacy/unleash/client/features',
+ },
+ {
+ from: '/api/client/metrics',
+ to: '/reference/api/legacy/unleash/client/metrics',
+ },
+ {
+ from: '/api/client/register',
+ to: '/reference/api/legacy/unleash/client/register',
+ },
+ {
+ from: '/api/internal/internal',
+ to: '/reference/api/legacy/unleash/internal/prometheus',
+ },
+ {
+ from: '/api/internal/health',
+ to: '/reference/api/legacy/unleash/internal/health',
+ },
+ {
+ from: '/help',
to: '/',
},
{
- label: 'Unleash on GitHub',
- href: 'https://github.com/Unleash/unleash',
+ from: [
+ '/topics/feature-flags/tutorials',
+ '/tutorials',
+ ],
+ to: '/feature-flag-tutorials',
},
{
- label: 'Roadmap',
- href: 'https://github.com/orgs/Unleash/projects/10',
+ from: ['/tutorials/academy', '/unleash-academy'],
+ to: '/unleash-academy/introduction',
},
{
- label: 'Unleash help center',
- href: 'https://getunleash.zendesk.com/hc/en-gb',
- },
- ],
- },
- {
- title: 'Community',
- items: [
- {
- label: 'GitHub discussions',
- href: 'https://github.com/unleash/unleash/discussions/',
+ from: '/tutorials/academy-foundational',
+ to: '/unleash-academy/foundational',
},
{
- label: 'Slack',
- href: 'https://slack.unleash.run/',
+ from: '/tutorials/academy-advanced-for-devs',
+ to: '/unleash-academy/advanced-for-devs',
},
{
- label: 'Stack Overflow',
- href: 'https://stackoverflow.com/questions/tagged/unleash',
+ from: '/tutorials/academy-managing-unleash-for-devops',
+ to: '/unleash-academy/managing-unleash-for-devops',
},
{
- label: 'Twitter',
- href: 'https://twitter.com/getunleash',
+ from: '/developer-guide',
+ to: '/contributing',
},
- ],
+ {
+ from: [
+ '/tutorials/unleash-overview',
+ '/user_guide/unleash_overview',
+ ],
+ to: '/understanding-unleash/unleash-overview',
+ },
+ {
+ from: [
+ '/tutorials/managing-constraints',
+ '/topics/managing-constraints',
+ ],
+ to: '/understanding-unleash/managing-constraints',
+ },
+ {
+ from: [
+ '/tutorials/the-anatomy-of-unleash',
+ '/topics/the-anatomy-of-unleash',
+ ],
+ to: '/understanding-unleash/the-anatomy-of-unleash',
+ },
+ {
+ from: [
+ '/tutorials/proxy-hosting',
+ '/topics/proxy-hosting',
+ ],
+ to: '/understanding-unleash/proxy-hosting',
+ },
+ {
+ from: [
+ '/tutorials/data-collection',
+ '/topics/data-collection',
+ ],
+ to: '/understanding-unleash/data-collection',
+ },
+
+ {
+ from: '/how-to/how-to-troubleshoot-flag-exposure',
+ to: '/using-unleash/troubleshooting/flag-exposure',
+ },
+ {
+ from: '/how-to/how-to-troubleshoot-flag-not-returned',
+ to: '/using-unleash/troubleshooting/flag-not-returned',
+ },
+ {
+ from: '/how-to/how-to-troubleshoot-cors',
+ to: '/using-unleash/troubleshooting/cors',
+ },
+ {
+ from: '/how-to/how-to-troubleshoot-https',
+ to: '/using-unleash/troubleshooting/https',
+ },
+ {
+ from: '/how-to/how-to-troubleshoot-feature-not-available',
+ to: '/using-unleash/troubleshooting/feature-not-available',
+ },
+ {
+ from: ['/reference/deploy', '/deploy'],
+ to: '/using-unleash/deploy',
+ },
+ {
+ from: [
+ '/reference/deploy/getting-started',
+ '/deploy/getting_started',
+ ],
+ to: '/using-unleash/deploy/getting-started',
+ },
+ {
+ from: [
+ '/reference/deploy/configuring-unleash',
+ '/deploy/configuring_unleash',
+ ],
+ to: '/using-unleash/deploy/configuring-unleash',
+ },
+ {
+ from: [
+ '/reference/deploy/database-setup',
+ '/deploy/database-setup',
+ ],
+ to: '/using-unleash/deploy/database-setup',
+ },
+ {
+ from: [
+ '/reference/deploy/database-backup',
+ '/deploy/database-backup',
+ ],
+ to: '/using-unleash/deploy/database-backup',
+ },
+ {
+ from: [
+ '/reference/deploy/email-service',
+ '/deploy/email',
+ ],
+ to: '/using-unleash/deploy/email-service',
+ },
+ {
+ from: [
+ '/reference/deploy/google-auth-hook',
+ '/deploy/google_auth',
+ ],
+ to: '/using-unleash/deploy/google-auth-hook',
+ },
+ {
+ from: [
+ '/deploy/migration_guide',
+ '/reference/deploy/migration-guide',
+ ],
+ to: '/using-unleash/deploy/upgrading-unleash',
+ },
+ {
+ from: [
+ '/reference/deploy/securing-unleash',
+ '/deploy/securing_unleash',
+ ],
+ to: '/using-unleash/deploy/securing-unleash',
+ },
+ {
+ from: [
+ '/reference/deploy/import-export',
+ '/deploy/import_export',
+ ],
+ to: '/how-to/how-to-import-export',
+ },
+ {
+ from: [
+ '/reference/deploy/environment-import-export',
+ '/deploy/environment-import-export',
+ ],
+ to: '/how-to/how-to-environment-import-export',
+ },
+ {
+ from: [
+ '/topics/feature-flags/runtime-control',
+ '/topics/feature-flags/never-expose-pii',
+ '/topics/feature-flags/evaluate-flags-close-to-user',
+ '/topics/feature-flags/scale-horizontally',
+ '/topics/feature-flags/limit-payloads',
+ '/topics/feature-flags/availability-over-consistency',
+ '/topics/feature-flags/short-lived-feature-flags',
+ '/topics/feature-flags/unique-names',
+ '/topics/feature-flags/democratize-feature-flag-access',
+ '/topics/feature-flags/prioritize-ux',
+ '/topics/feature-flags/enable-traceability',
+ ],
+ to: '/topics/feature-flags/feature-flag-best-practices',
+ },
+ {
+ from: [
+ '/topics/feature-flag-migration/feature-flag-migration-scope',
+ '/topics/feature-flag-migration/business-case-feature-flag-migration',
+ '/topics/feature-flag-migration/planning-feature-flag-migration',
+ '/topics/feature-flag-migration/how-to-execute-feature-flag-migration',
+ '/topics/feature-flag-migration/onbording-users-to-feature-flag-service',
+ ],
+ to: '/topics/feature-flag-migration/feature-flag-migration-best-practices',
+ },
+ {
+ from: '/topics/a-b-testing',
+ to: '/feature-flag-tutorials/use-cases/a-b-testing',
+ },
+ ].map(addDocsRoutePrefix), // add /docs prefixes
+ createRedirects: (toPath) => {
+ if (
+ toPath.indexOf('/docs/') === -1 &&
+ toPath.indexOf('index.html') === -1
+ ) {
+ return `/docs/${toPath}`;
+ }
+ },
},
],
- copyright: `Copyright © ${new Date().getFullYear()} Unleash. Built with Docusaurus.`,
- logo: {
- src: 'img/logo.svg',
- alt: 'Unleash logo',
- },
- },
- image: 'img/logo.png',
- imageZoom: {
- // Optional medium-zoom options at
- // https://www.npmjs.com/package/medium-zoom#options
- options: {
- background: 'var(--ifm-background-color)',
- },
- },
- },
- presets: [
- [
- '@docusaurus/preset-classic',
- {
- docs: {
- // Please change this to your repo.
- editUrl:
- 'https://github.com/Unleash/unleash/edit/main/website/',
- routeBasePath: '/',
- remarkPlugins: [[pluginNpm2Yarn, { sync: true }]],
- docItemComponent: '@theme/ApiItem',
- sidebarPath: './sidebars.ts',
- },
- theme: {
- customCss: './src/css/custom.css',
- },
- googleAnalytics: {
- trackingID: 'UA-134882379-1',
- },
- googleTagManager: {
- containerId: 'GTM-KV5PRR2',
- },
- sitemap: {
- changefreq: 'weekly',
- lastmod: 'date',
- priority: 0.5,
- createSitemapItems: async (params) => {
- const { defaultCreateSitemapItems, ...rest } = params;
- const items = await defaultCreateSitemapItems(rest);
- return items.filter(
- (item) => !item.url.includes('/page/'),
- );
- },
- },
- },
- ],
- ],
- plugins: [
- [
- // heads up to anyone making redirects:
- //
- // remember that redirects only work in production and not in
- // development, as mentioned in the docs
- // https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-client-redirects/
- '@docusaurus/plugin-client-redirects',
- {
- fromExtensions: ['html', 'htm'],
- redirects: [
- {
- to: '/how-to/how-to-create-api-tokens',
- from: [
- '/user_guide/api-token',
- '/deploy/user_guide/api-token',
- ],
- },
- {
- from: '/advanced/audit_log',
- to: '/reference/events',
- },
- {
- from: '/reference/event-log',
- to: '/reference/events',
- },
- {
- from: '/reference/event-types',
- to: '/reference/events',
- },
- {
- from: '/advanced/api_access',
- to: '/how-to/how-to-use-the-admin-api',
- },
- {
- from: '/advanced/archived_toggles',
- to: '/reference/feature-toggles',
- },
- {
- from: [
- '/advanced/custom-activation-strategy',
- '/advanced/custom_activation_strategy',
- ],
- to: '/reference/custom-activation-strategies',
- },
- {
- from: '/advanced/feature_toggle_types',
- to: '/reference/feature-toggles',
- },
- {
- from: [
- '/toggle_variants',
- '/advanced/feature_toggle_variants',
- '/advanced/toggle_variants',
- ],
- to: '/reference/feature-toggle-variants',
- },
- {
- from: [
- '/advanced/impression-data',
- '/advanced/impression_data',
- ],
- to: '/reference/impression-data',
- },
- {
- from: '/advanced/stickiness',
- to: '/reference/stickiness',
- },
- {
- from: '/advanced/sso-google',
- to: '/how-to/how-to-add-sso-google',
- },
- {
- from: '/advanced/sso-open-id-connect',
- to: '/how-to/how-to-add-sso-open-id-connect',
- },
- {
- from: '/advanced/sso-saml-keycloak',
- to: '/how-to/how-to-add-sso-saml-keycloak',
- },
- {
- from: '/advanced/sso-saml',
- to: '/how-to/how-to-add-sso-saml',
- },
- {
- from: '/advanced/enterprise-authentication',
- to: '/reference/sso',
- },
- {
- from: ['/addons', '/reference/addons'],
- to: '/reference/integrations',
- },
- {
- from: ['/addons/datadog', '/reference/addons/datadog'],
- to: '/reference/integrations/datadog',
- },
- {
- from: ['/addons/slack', '/reference/addons/slack'],
- to: '/reference/integrations/slack',
- },
- {
- from: [
- '/addons/slack-app',
- '/reference/addons/slack-app',
- ],
- to: '/reference/integrations/slack-app',
- },
- {
- from: ['/addons/teams', '/reference/addons/teams'],
- to: '/reference/integrations/teams',
- },
- {
- from: ['/addons/webhook', '/reference/addons/webhook'],
- to: '/reference/integrations/webhook',
- },
- {
- from: '/guides/feature_updates_to_slack',
- to: '/how-to/how-to-send-feature-updates-to-slack-deprecated',
- },
- {
- from: ['/integrations/integrations', '/integrations'],
- to: '/reference/integrations',
- },
- {
- from: '/integrations/jira_server_plugin_installation',
- to: '/reference/integrations/jira-server-plugin-installation',
- },
- {
- from: '/integrations/jira_server_plugin_usage',
- to: '/reference/integrations/jira-server-plugin-usage',
- },
- {
- from: [
- '/sdks',
- '/user_guide/client-sdk',
- '/client-sdk',
- '/user_guide/connect_sdk',
- '/sdks/community',
- ],
- to: '/reference/sdks',
- },
- {
- from: '/sdks/go_sdk',
- to: '/reference/sdks/go',
- },
- {
- from: '/sdks/java_sdk',
- to: '/reference/sdks/java',
- },
- {
- from: '/sdks/node_sdk',
- to: '/reference/sdks/node',
- },
- {
- from: '/sdks/php_sdk',
- to: '/reference/sdks/php',
- },
- {
- from: '/sdks/python_sdk',
- to: '/reference/sdks/python',
- },
- {
- from: '/sdks/dot_net_sdk',
- to: '/reference/sdks/dotnet',
- },
- {
- from: '/sdks/ruby_sdk',
- to: '/reference/sdks/ruby',
- },
- {
- from: '/sdks/android_proxy_sdk',
- to: '/reference/sdks/android-proxy',
- },
- {
- from: '/sdks/proxy-ios',
- to: '/reference/sdks/ios-proxy',
- },
- {
- from: [
- '/sdks/proxy-javascript',
- '/sdks/javascript-browser',
- ],
- to: '/reference/sdks/javascript-browser',
- },
- {
- from: ['/sdks/proxy-react', '/sdks/react'],
- to: '/reference/sdks/react',
- },
- {
- from: '/sdks/proxy-vue',
- to: '/reference/sdks/vue',
- },
- {
- from: '/sdks/proxy-svelte',
- to: '/reference/sdks/svelte',
- },
- {
- from: [
- '/user_guide/native_apps',
- '/user_guide/proxy-api',
- '/sdks/unleash-proxy',
- ],
- to: '/reference/unleash-proxy',
- },
- {
- to: '/reference/activation-strategies',
- from: [
- '/user_guide/control_rollout',
- '/user_guide/activation_strategy',
- ],
- },
- {
- from: '/user_guide/environments',
- to: '/reference/environments',
- },
- {
- from: '/user_guide/projects',
- to: '/reference/projects',
- },
- {
- from: ['/user_guide/rbac', '/advanced/groups'],
- to: '/reference/rbac',
- },
- {
- from: '/user_guide/technical_debt',
- to: '/reference/technical-debt',
- },
- {
- from: '/user_guide/unleash_context',
- to: '/reference/unleash-context',
- },
- {
- from: '/user_guide/user-management',
- to: '/how-to/how-to-add-users-to-unleash',
- },
- {
- from: '/user_guide/v4-whats-new',
- to: '/reference/whats-new-v4',
- },
- {
- from: [
- '/user_guide/important-concepts',
- '/tutorials/important-concepts',
- '/reference/concepts/',
- ],
- to: '/reference',
- },
- {
- from: [
- '/user_guide/quickstart',
- '/docs/getting_started',
- '/tutorials/quickstart',
- '/tutorials/getting-started',
- ],
- to: '/quickstart',
- },
- {
- from: '/api/basic-auth',
- to: '/reference/api/legacy/unleash/basic-auth',
- },
- {
- from: '/api',
- to: '/reference/api/legacy/unleash',
- },
- {
- from: '/api/admin/addons',
- to: '/reference/api/legacy/unleash/admin/addons',
- },
- {
- from: '/api/admin/context',
- to: '/reference/api/legacy/unleash/admin/context',
- },
- {
- from: '/api/admin/events',
- to: '/reference/api/legacy/unleash/admin/events',
- },
- {
- from: '/api/admin/feature-toggles-v2',
- to: '/reference/api/legacy/unleash/admin/features-v2',
- },
- {
- from: '/api/admin/feature-types',
- to: '/reference/api/legacy/unleash/admin/feature-types',
- },
- {
- from: '/api/admin/features',
- to: '/reference/api/legacy/unleash/admin/features',
- },
- {
- from: '/api/admin/features-archive',
- to: '/reference/api/legacy/unleash/admin/archive',
- },
- {
- from: '/api/admin/metrics',
- to: '/reference/api/legacy/unleash/admin/metrics',
- },
- {
- from: '/api/admin/projects',
- to: '/reference/api/legacy/unleash/admin/projects',
- },
- {
- from: '/api/admin/segments',
- to: '/reference/api/legacy/unleash/admin/segments',
- },
- {
- from: '/api/admin/state',
- to: '/reference/api/legacy/unleash/admin/state',
- },
- {
- from: '/api/admin/strategies',
- to: '/reference/api/legacy/unleash/admin/strategies',
- },
- {
- from: '/api/admin/tags',
- to: '/reference/api/legacy/unleash/admin/tags',
- },
- {
- from: '/api/admin/user-admin',
- to: '/reference/api/legacy/unleash/admin/user-admin',
- },
- {
- from: '/api/client/features',
- to: '/reference/api/legacy/unleash/client/features',
- },
- {
- from: '/api/client/metrics',
- to: '/reference/api/legacy/unleash/client/metrics',
- },
- {
- from: '/api/client/register',
- to: '/reference/api/legacy/unleash/client/register',
- },
- {
- from: '/api/internal/internal',
- to: '/reference/api/legacy/unleash/internal/prometheus',
- },
- {
- from: '/api/internal/health',
- to: '/reference/api/legacy/unleash/internal/health',
- },
- {
- from: '/help',
- to: '/',
- },
- {
- from: ['/topics/feature-flags/tutorials', '/tutorials'],
- to: '/feature-flag-tutorials',
- },
- {
- from: ['/tutorials/academy', '/unleash-academy'],
- to: '/unleash-academy/introduction',
- },
- {
- from: '/tutorials/academy-foundational',
- to: '/unleash-academy/foundational',
- },
- {
- from: '/tutorials/academy-advanced-for-devs',
- to: '/unleash-academy/advanced-for-devs',
- },
- {
- from: '/tutorials/academy-managing-unleash-for-devops',
- to: '/unleash-academy/managing-unleash-for-devops',
- },
- {
- from: '/developer-guide',
- to: '/contributing',
- },
- {
- from: [
- '/tutorials/unleash-overview',
- '/user_guide/unleash_overview',
- ],
- to: '/understanding-unleash/unleash-overview',
- },
- {
- from: [
- '/tutorials/managing-constraints',
- '/topics/managing-constraints',
- ],
- to: '/understanding-unleash/managing-constraints',
- },
- {
- from: [
- '/tutorials/the-anatomy-of-unleash',
- '/topics/the-anatomy-of-unleash',
- ],
- to: '/understanding-unleash/the-anatomy-of-unleash',
- },
- {
- from: [
- '/tutorials/proxy-hosting',
- '/topics/proxy-hosting',
- ],
- to: '/understanding-unleash/proxy-hosting',
- },
- {
- from: [
- '/tutorials/data-collection',
- '/topics/data-collection',
- ],
- to: '/understanding-unleash/data-collection',
- },
-
- {
- from: '/how-to/how-to-troubleshoot-flag-exposure',
- to: '/using-unleash/troubleshooting/flag-exposure',
- },
- {
- from: '/how-to/how-to-troubleshoot-flag-not-returned',
- to: '/using-unleash/troubleshooting/flag-not-returned',
- },
- {
- from: '/how-to/how-to-troubleshoot-cors',
- to: '/using-unleash/troubleshooting/cors',
- },
- {
- from: '/how-to/how-to-troubleshoot-https',
- to: '/using-unleash/troubleshooting/https',
- },
- {
- from: '/how-to/how-to-troubleshoot-feature-not-available',
- to: '/using-unleash/troubleshooting/feature-not-available',
- },
- {
- from: ['/reference/deploy', '/deploy'],
- to: '/using-unleash/deploy',
- },
- {
- from: [
- '/reference/deploy/getting-started',
- '/deploy/getting_started',
- ],
- to: '/using-unleash/deploy/getting-started',
- },
- {
- from: [
- '/reference/deploy/configuring-unleash',
- '/deploy/configuring_unleash',
- ],
- to: '/using-unleash/deploy/configuring-unleash',
- },
- {
- from: [
- '/reference/deploy/database-setup',
- '/deploy/database-setup',
- ],
- to: '/using-unleash/deploy/database-setup',
- },
- {
- from: [
- '/reference/deploy/database-backup',
- '/deploy/database-backup',
- ],
- to: '/using-unleash/deploy/database-backup',
- },
- {
- from: [
- '/reference/deploy/email-service',
- '/deploy/email',
- ],
- to: '/using-unleash/deploy/email-service',
- },
- {
- from: [
- '/reference/deploy/google-auth-hook',
- '/deploy/google_auth',
- ],
- to: '/using-unleash/deploy/google-auth-hook',
- },
- {
- from: [
- '/deploy/migration_guide',
- '/reference/deploy/migration-guide',
- ],
- to: '/using-unleash/deploy/upgrading-unleash',
- },
- {
- from: [
- '/reference/deploy/securing-unleash',
- '/deploy/securing_unleash',
- ],
- to: '/using-unleash/deploy/securing-unleash',
- },
- {
- from: [
- '/reference/deploy/import-export',
- '/deploy/import_export',
- ],
- to: '/how-to/how-to-import-export',
- },
- {
- from: [
- '/reference/deploy/environment-import-export',
- '/deploy/environment-import-export',
- ],
- to: '/how-to/how-to-environment-import-export',
- },
- {
- from: [
- '/topics/feature-flags/runtime-control',
- '/topics/feature-flags/never-expose-pii',
- '/topics/feature-flags/evaluate-flags-close-to-user',
- '/topics/feature-flags/scale-horizontally',
- '/topics/feature-flags/limit-payloads',
- '/topics/feature-flags/availability-over-consistency',
- '/topics/feature-flags/short-lived-feature-flags',
- '/topics/feature-flags/unique-names',
- '/topics/feature-flags/democratize-feature-flag-access',
- '/topics/feature-flags/prioritize-ux',
- '/topics/feature-flags/enable-traceability',
- ],
- to: '/topics/feature-flags/feature-flag-best-practices',
- },
- {
- from: [
- '/topics/feature-flag-migration/feature-flag-migration-scope',
- '/topics/feature-flag-migration/business-case-feature-flag-migration',
- '/topics/feature-flag-migration/planning-feature-flag-migration',
- '/topics/feature-flag-migration/how-to-execute-feature-flag-migration',
- '/topics/feature-flag-migration/onbording-users-to-feature-flag-service',
- ],
- to: '/topics/feature-flag-migration/feature-flag-migration-best-practices',
- },
- {
- from: '/topics/a-b-testing',
- to: '/feature-flag-tutorials/use-cases/a-b-testing',
- },
- ].map(addDocsRoutePrefix), // add /docs prefixes
- createRedirects: (toPath) => {
- if (
- toPath.indexOf('/docs/') === -1 &&
- toPath.indexOf('index.html') === -1
- ) {
- return `/docs/${toPath}`;
- }
- },
- },
- ],
- [
- 'docusaurus-plugin-openapi-docs',
- {
- id: 'api-operations',
- docsPluginId: 'classic',
- config: {
- server: {
- specPath: 'docs/generated/openapi.json',
- outputDir: 'docs/reference/api/unleash',
- sidebarOptions: {
- groupPathsBy: 'tag',
- categoryLinkSource: 'tag',
+ [
+ 'docusaurus-plugin-openapi-docs',
+ {
+ id: 'api-operations',
+ docsPluginId: 'classic',
+ config: {
+ server: {
+ specPath: 'docs/generated/openapi.json',
+ outputDir: 'docs/reference/api/unleash',
+ sidebarOptions: {
+ groupPathsBy: 'tag',
+ categoryLinkSource: 'tag',
+ },
},
},
},
- },
+ ],
+ [
+ 'docusaurus-plugin-remote-content',
+ {
+ // more info at https://github.com/rdilweb/docusaurus-plugin-remote-content#options
+ name: 'content-sdks',
+ sourceBaseUrl: 'https://raw.githubusercontent.com/Unleash/', // gets prepended to all of the documents when fetching
+ outDir: 'docs/generated', // the base directory to output to.
+ documents: sdks.urls, // the file names to download
+ modifyContent: sdks.modifyContent,
+ noRuntimeDownloads: true,
+ },
+ ],
+ [
+ 'docusaurus-plugin-remote-content',
+ {
+ // more info at https://github.com/rdilweb/docusaurus-plugin-remote-content#options
+ name: 'content-external',
+ sourceBaseUrl: 'https://raw.githubusercontent.com/Unleash/', // gets prepended to all of the documents when fetching
+ outDir: 'docs/generated/', // the base directory to output to.
+ documents: edgeAndProxy.urls, // the file names to download
+ modifyContent: edgeAndProxy.modifyContent,
+ noRuntimeDownloads: true,
+ },
+ ],
+ 'plugin-image-zoom',
],
- [
- 'docusaurus-plugin-remote-content',
+ themes: [
+ 'docusaurus-theme-openapi-docs', // Allows use of @theme/ApiItem and other components
+ ],
+ scripts: [
{
- // more info at https://github.com/rdilweb/docusaurus-plugin-remote-content#options
- name: 'content-sdks',
- sourceBaseUrl: 'https://raw.githubusercontent.com/Unleash/', // gets prepended to all of the documents when fetching
- outDir: 'docs/generated', // the base directory to output to.
- documents: sdks.urls, // the file names to download
- modifyContent: sdks.modifyContent,
- noRuntimeDownloads: true,
+ src: 'https://widget.kapa.ai/kapa-widget.bundle.js',
+ 'data-website-id': '1d187510-1726-4011-b0f7-62742ae064ee',
+ 'data-project-name': 'Unleash',
+ 'data-project-color': '#1A4049',
+ 'data-project-logo':
+ 'https://cdn.getunleash.io/uploads/2022/05/logo.png',
+ 'data-button-position-bottom': '80px',
+ defer: true,
},
],
- [
- 'docusaurus-plugin-remote-content',
- {
- // more info at https://github.com/rdilweb/docusaurus-plugin-remote-content#options
- name: 'content-external',
- sourceBaseUrl: 'https://raw.githubusercontent.com/Unleash/', // gets prepended to all of the documents when fetching
- outDir: 'docs/generated/', // the base directory to output to.
- documents: edgeAndProxy.urls, // the file names to download
- modifyContent: edgeAndProxy.modifyContent,
- noRuntimeDownloads: true,
- },
- ],
- 'plugin-image-zoom',
- ],
- themes: [
- 'docusaurus-theme-openapi-docs', // Allows use of @theme/ApiItem and other components
- ],
- scripts: [
- {
- src: 'https://widget.kapa.ai/kapa-widget.bundle.js',
- 'data-website-id': '1d187510-1726-4011-b0f7-62742ae064ee',
- 'data-project-name': 'Unleash',
- 'data-project-color': '#1A4049',
- 'data-project-logo':
- 'https://cdn.getunleash.io/uploads/2022/05/logo.png',
- defer: true,
- },
- ],
- clientModules: ['./global.js'],
-};
-
-export default config;
+ clientModules: ['./global.js'],
+ };
+}