1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-28 00:06:53 +01:00
unleash.unleash/website/docusaurus.config.ts

978 lines
43 KiB
TypeScript
Raw Normal View History

import type { Config } from '@docusaurus/types';
import { sdks } from './remote-content/sdks';
import { docs as edgeAndProxy } from './remote-content/edge-proxy';
import pluginNpm2Yarn from '@docusaurus/remark-plugin-npm2yarn';
docs: Use Go readme (#2816) # PR 1: add remote content plugin and rust readme ## What This PR does a few connected things: 1. It adds the ["docusaurus-plugin-remote-content" package](https://github.com/rdilweb/docusaurus-plugin-remote-content). 2. It adds configuration to make it work with Readmes found on GitHub. 3. It adds the Rust SDK's readme (replacing the link we used to have) as a proof of concept on how to do it. ## Why With documentation split between GitHub readmes and the official docs, it's hard to keep everything up to date and in sync. It's also quite confusing that some information is only available in some places, but not in others. We've talked about auto-including readmes from GitHub for a while, so here's a proof of concept (finally) 🥳 The intention is to get this merged and then to migrate the other SDK docs one by one, ensuring that everything in the documentation is also in the readme (so that no info is lost). ## Discussion points ### Generation directory The current generation method generates the files into `/reference/sdks/<sdk name>`. I think this works for now, but it means it adds auto-generated files into a directory that you can't ignore (at least not yet). We could instead generate them into `/generated/sdks` and update the slugs so that they still match the expected pattern. However, this would make the sidebar a little harder to work with (for now). That said, there may be ways around it. It's worth exploring. ### Generation method By default, this plugin will generate files whenever you build. That (probably) means that you need an internet connection _and_ that you'll end up with a bunch of untracked files. An option is to only generate the files "manually" and commit them to the repo. That would allow you to build the project without an internet connection and would also remove the need for ignoring the files. We could automate the generation if we wanted to. ## Preview / Screenies Visit [/reference/sdks/rust](https://unleash-docs-git-docs-include-sdk-readmes-unleash-team.vercel.app/reference/sdks/rust) in the preview to see what it looks like live. ![image](https://user-images.githubusercontent.com/17786332/210373446-784b7e69-0f36-4e9e-874a-2b06b863b603.png) # PR 2: add go readme This PR changes the docs generation to use the Go SDK's GitHub readme for the SDK docs instead of a separate document. ## What The changes in this PR are: - Delete the existing Go SDK documentation. All the content in this guide already exists in the Go readme. - Add the Go SDK to the list of auto-generated readme docs - Move the readme-related code into a separate module, `readme-fns.js` (I'm not bullish about the file name: we can change it if you have suggestions) - Add a note to the top of all generated readmes saying you'll need an API url and an API token. The note also links you to the relevant reference and how-to docs. ## Why Having two different bits of documentation for the same SDK is troublesome. By only having the data in one place, we can avoid it going out of sync and getting stale.
2023-01-05 10:47:49 +01:00
// for a given redirect object, modify it's `from` property such that for every
// path that doesn't start with `/docs/`, a corresponding path that _does_ start
// with `/docs/` is added.
//
// For instance, given the object
//
// {
// to: '/new/path',
// from: ['/old/path', '/docs/other/old/path'],
// }
//
// it will produce
//
// {
// to: '/new/path',
// from: ['/old/path', '/docs/old/path', '/docs/other/old/path'],
// }
//
const addDocsRoutePrefix = ({ from, ...rest }) => {
const addDocs = (from) => {
if (Array.isArray(from)) {
// if `from` is a list, then check each entry
return from.flatMap(addDocs);
} else {
if (from.startsWith('/docs/')) {
return [from];
} else {
return [from, `/docs${from}`];
}
}
};
return {
...rest,
from: addDocs(from),
};
};
2024-12-18 01:15:15 +01:00
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<Config> {
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,
2021-06-16 08:52:33 +02:00
},
2024-12-18 01:15:15 +01:00
themeConfig: {
defaultMode: 'light',
disableSwitch: true,
respectPrefersColorScheme: false,
algolia: {
appId: '5U05JI5NE1',
apiKey: 'dc9c4491fcf9143ee34015f22d1dd9d6',
indexName: 'getunleash',
},
2024-12-18 01:15:15 +01:00
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',
},
2024-12-18 01:15:15 +01:00
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: '<span class="hide-at-small-sizes">Unleash </span>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: '<span class="hide-at-small-sizes">Unleash </span>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: `<a
href="https://github.com/Unleash/unleash"
aria-label="Unleash GitHub repository"
class="header-github-link"
>
<svg width="28px" height="28px" viewBox="0 0 21 20"><path fill="currentColor" d="M10.537 1.833c-4.602 0-8.333 3.544-8.333 7.917 0 4.373 3.73 7.917 8.333 7.917s8.334-3.544 8.334-7.917c0-4.373-3.73-7.917-8.334-7.917Zm0 1.584c3.676 0 6.667 2.842 6.667 6.333 0 .371-.039.736-.104 1.089a4.345 4.345 0 0 0-.86-.1 6.375 6.375 0 0 0-.859.075 2.76 2.76 0 0 0 .156-.89c0-.761-.39-1.47-1.015-2.054.172-.61.342-1.655-.104-2.078a2.762 2.762 0 0 0-2.084.94 5.684 5.684 0 0 0-1.276-.149 5.91 5.91 0 0 0-1.64.248l.156-.124s-.733-.965-2.083-.965c-.472.452-.258 1.596-.079 2.177-.638.579-1.041 1.262-1.041 2.004 0 .26.065.507.13.742-.231-.024-1.064-.098-1.406-.098-.303 0-.772.067-1.146.148a5.912 5.912 0 0 1-.078-.965c0-3.491 2.991-6.333 6.666-6.333Zm-5.442 7.347c.329 0 1.328.112 1.458.124.016.043.033.084.052.124-.358-.031-1.051-.078-1.51-.025-.306.034-.697.14-1.042.223-.026-.1-.059-.195-.078-.297.365-.074.843-.149 1.12-.149Zm11.146.174c.332.003.634.055.833.098-.01.053-.04.096-.052.149a5.042 5.042 0 0 0-.964-.124c-.195-.003-.508.007-.781.025.013-.025.016-.05.026-.074.283-.037.645-.078.938-.074Zm-10.625.222c.468.003.908.034 1.093.05.437.773 1.319 1.345 2.683 1.583a2.621 2.621 0 0 0-.86.718c-.195.015-.4.024-.599.024-.58 0-.94-.492-1.25-.915-.312-.424-.696-.47-.911-.495-.218-.025-.293.093-.182.173.634.464.862 1.015 1.12 1.51.23.445.715.692 1.25.692h.103a1.33 1.33 0 0 0-.026.248v.865c-1.923-.739-3.388-2.3-3.932-4.23.342-.08.726-.164 1.016-.198.133-.016.302-.028.495-.025Zm10.442.1c.375.008.707.076.912.123-.46 1.639-1.592 3.003-3.1 3.835v-.47c0-.675-.56-1.54-1.353-1.955 1.318-.229 2.177-.776 2.63-1.51.316-.02.687-.03.911-.024Zm-5.104 3.24a.41.41 0 0 1 .417.396v1.138c-.274.034-.55.05-.834.05v-1.188a.41.41 0 0 1 .417-.396Zm-1.667.792a.41.41 0 0 1 .417.396v.346a7.438 7.438 0 0 1-.833-.148v-.198a.41.41 0 0 1 .416-.396Zm3.334 0c.202 0 .377.139.416.321-.27.106-.546.201-.833.273v-.198a.41.41 0 0 1 .417-.396Z"/></svg>
<span>Stars</span>
<strong>${stars}</strong>
</a>`,
},
{
label: 'Get a demo',
href: 'https://www.getunleash.io/plans/enterprise',
position: 'right',
},
],
},
prism: {
additionalLanguages: [
'csharp',
'dart',
'java',
'php',
'ruby',
'bash',
'diff',
],
},
languageTabs: [
{
2024-12-18 01:15:15 +01:00
highlight: 'bash',
language: 'curl',
},
{
2024-12-18 01:15:15 +01:00
highlight: 'python',
language: 'python',
variant: 'requests',
},
{
2024-12-18 01:15:15 +01:00
highlight: 'go',
language: 'go',
},
{
2024-12-18 01:15:15 +01:00
highlight: 'javascript',
language: 'nodejs',
variant: 'native',
},
{
2024-12-18 01:15:15 +01:00
highlight: 'ruby',
language: 'ruby',
},
{
2024-12-18 01:15:15 +01:00
highlight: 'csharp',
language: 'csharp',
variant: 'httpclient',
},
{
2024-12-18 01:15:15 +01:00
highlight: 'php',
language: 'php',
},
{
2024-12-18 01:15:15 +01:00
highlight: 'java',
language: 'java',
},
{
2024-12-18 01:15:15 +01:00
highlight: 'powershell',
language: 'powershell',
},
2024-12-18 01:15:15 +01:00
],
footer: {
links: [
{
title: 'Feature Flag use cases',
items: [
{
label: 'Secure, scalable feature flags',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
{
label: 'Rollbacks',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
{
label: 'Fedramp, SOC2, ISO2700 compliance',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
{
label: 'Progressive or gradual rollouts',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
{
label: 'Trunk-based development',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
{
label: 'Software kill switches',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
{
label: 'A/B testing',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
{
label: 'Feature Management',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
{
label: 'Canary releases',
2024-12-18 10:37:45 +01:00
to: 'https://getunleash.io/TBD',
2024-12-18 01:15:15 +01:00
},
],
},
{
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)',
},
2024-12-18 01:15:15 +01:00
},
},
presets: [
[
'@docusaurus/preset-classic',
{
2024-12-18 01:15:15 +01:00
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/'),
);
},
},
},
],
],
2024-12-18 01:15:15 +01:00
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',
{
2024-12-18 01:15:15 +01:00
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',
},
{
2024-12-18 01:15:15 +01:00
from: '/help',
to: '/',
2021-08-11 12:55:56 +02:00
},
{
2024-12-18 01:15:15 +01:00
from: [
'/topics/feature-flags/tutorials',
'/tutorials',
],
to: '/feature-flag-tutorials',
2021-08-11 12:55:56 +02:00
},
{
2024-12-18 01:15:15 +01:00
from: ['/tutorials/academy', '/unleash-academy'],
to: '/unleash-academy/introduction',
},
{
2024-12-18 01:15:15 +01:00
from: '/tutorials/academy-foundational',
to: '/unleash-academy/foundational',
},
{
2024-12-18 01:15:15 +01:00
from: '/tutorials/academy-advanced-for-devs',
to: '/unleash-academy/advanced-for-devs',
},
{
2024-12-18 01:15:15 +01:00
from: '/tutorials/academy-managing-unleash-for-devops',
to: '/unleash-academy/managing-unleash-for-devops',
},
{
2024-12-18 01:15:15 +01:00
from: '/developer-guide',
to: '/contributing',
},
{
2024-12-18 01:15:15 +01:00
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',
},
2024-12-18 01:15:15 +01:00
{
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}`;
}
2024-10-08 17:33:47 +02:00
},
},
2024-12-18 01:15:15 +01:00
],
[
'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',
},
Add OpenAPI docs (#1391) (#2066) ## What This PR (finally 🎉) adds generated OpenAPI docs to the official Unleash documentation. In addition to generating docs when things get merged to main, it also pushes new doc updates every day at 12:00 AM (cron `@daily`). ## Why Now that we have OpenAPI'd all the things, we can finally start using it. This will allow us to remove hand-written api docs from the documentation and should make sure everything is always kept up to date. ### Generating from us-hosted (Unleash enterprise) Unleash has several different versions (open source, pro, enterprise). The versions do not necessarily have the exact same api surface. In fact, the enterprise version has a few endpoints that open source does not. Because we want to have _all_ endpoints listed in the documentation we need to generated the docs from an enterprise spec. Which brings us into the next point: ### The need for scheduled jobs Regarding the daily scheduled tasks to update the documentation: why do we need that? The docs are generated from the tip of the main branch. For most of the docs, this is good and something that we want. However, because the OpenAPI docs are generated from the enterprise edition, it _will not be in sync_ with the open source main branch. Also, we probably do not want the docs to list the current bleeding edge api changes. Instead, we should prefer to use the latest enterprise release (roughly). However, because we don't get notified when this version is released and deployed, we'll instead run the API generation on a daily cadence. This isn't the perfect solution, but it's simple and gets us 80% of the way there. More intricate solutions can be set up later. ## How - By adding a scheduled workflow to the generate docs config. - By adding .gitignore entries for the generated files There's also some minor changes in styling etc. ## Dependencies This is dependent on the changes introduced in #2062 having propagated to the enterprise release, which will probably not be for another week or so. ## Discussion What should the API reference docs url be? I've set it to be `/reference/api/unleash/*` for now, but I'm on the fence about whether it should be `apis` or `api` in there. I also want to get the proxy and other APIs in there as we grow. ------- ## Commits * docs: style openapi operation buttons * docs: minor operation badge adjustments * docs: use permalink to css snippet i copied * docs: ignore files related to openapi generation * docs: re-enable openapi docs * Docs(#1391): prep for integration * docs(#1391): run docs generation daily * docs(#1391): add generation step to doc prs too * docs(#1391): use the US hosted instance to generate docs * docs(#1391): move doc generation into build command * docs(#1391): use `/reference/api/*` instead of `/reference/apis/*`
2022-09-19 14:50:24 +02:00
},
},
},
2024-12-18 01:15:15 +01:00
],
[
'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',
Add OpenAPI docs (#1391) (#2066) ## What This PR (finally 🎉) adds generated OpenAPI docs to the official Unleash documentation. In addition to generating docs when things get merged to main, it also pushes new doc updates every day at 12:00 AM (cron `@daily`). ## Why Now that we have OpenAPI'd all the things, we can finally start using it. This will allow us to remove hand-written api docs from the documentation and should make sure everything is always kept up to date. ### Generating from us-hosted (Unleash enterprise) Unleash has several different versions (open source, pro, enterprise). The versions do not necessarily have the exact same api surface. In fact, the enterprise version has a few endpoints that open source does not. Because we want to have _all_ endpoints listed in the documentation we need to generated the docs from an enterprise spec. Which brings us into the next point: ### The need for scheduled jobs Regarding the daily scheduled tasks to update the documentation: why do we need that? The docs are generated from the tip of the main branch. For most of the docs, this is good and something that we want. However, because the OpenAPI docs are generated from the enterprise edition, it _will not be in sync_ with the open source main branch. Also, we probably do not want the docs to list the current bleeding edge api changes. Instead, we should prefer to use the latest enterprise release (roughly). However, because we don't get notified when this version is released and deployed, we'll instead run the API generation on a daily cadence. This isn't the perfect solution, but it's simple and gets us 80% of the way there. More intricate solutions can be set up later. ## How - By adding a scheduled workflow to the generate docs config. - By adding .gitignore entries for the generated files There's also some minor changes in styling etc. ## Dependencies This is dependent on the changes introduced in #2062 having propagated to the enterprise release, which will probably not be for another week or so. ## Discussion What should the API reference docs url be? I've set it to be `/reference/api/unleash/*` for now, but I'm on the fence about whether it should be `apis` or `api` in there. I also want to get the proxy and other APIs in there as we grow. ------- ## Commits * docs: style openapi operation buttons * docs: minor operation badge adjustments * docs: use permalink to css snippet i copied * docs: ignore files related to openapi generation * docs: re-enable openapi docs * Docs(#1391): prep for integration * docs(#1391): run docs generation daily * docs(#1391): add generation step to doc prs too * docs(#1391): use the US hosted instance to generate docs * docs(#1391): move doc generation into build command * docs(#1391): use `/reference/api/*` instead of `/reference/apis/*`
2022-09-19 14:50:24 +02:00
],
2024-12-18 01:15:15 +01:00
themes: [
'docusaurus-theme-openapi-docs', // Allows use of @theme/ApiItem and other components
docs: Use Go readme (#2816) # PR 1: add remote content plugin and rust readme ## What This PR does a few connected things: 1. It adds the ["docusaurus-plugin-remote-content" package](https://github.com/rdilweb/docusaurus-plugin-remote-content). 2. It adds configuration to make it work with Readmes found on GitHub. 3. It adds the Rust SDK's readme (replacing the link we used to have) as a proof of concept on how to do it. ## Why With documentation split between GitHub readmes and the official docs, it's hard to keep everything up to date and in sync. It's also quite confusing that some information is only available in some places, but not in others. We've talked about auto-including readmes from GitHub for a while, so here's a proof of concept (finally) 🥳 The intention is to get this merged and then to migrate the other SDK docs one by one, ensuring that everything in the documentation is also in the readme (so that no info is lost). ## Discussion points ### Generation directory The current generation method generates the files into `/reference/sdks/<sdk name>`. I think this works for now, but it means it adds auto-generated files into a directory that you can't ignore (at least not yet). We could instead generate them into `/generated/sdks` and update the slugs so that they still match the expected pattern. However, this would make the sidebar a little harder to work with (for now). That said, there may be ways around it. It's worth exploring. ### Generation method By default, this plugin will generate files whenever you build. That (probably) means that you need an internet connection _and_ that you'll end up with a bunch of untracked files. An option is to only generate the files "manually" and commit them to the repo. That would allow you to build the project without an internet connection and would also remove the need for ignoring the files. We could automate the generation if we wanted to. ## Preview / Screenies Visit [/reference/sdks/rust](https://unleash-docs-git-docs-include-sdk-readmes-unleash-team.vercel.app/reference/sdks/rust) in the preview to see what it looks like live. ![image](https://user-images.githubusercontent.com/17786332/210373446-784b7e69-0f36-4e9e-874a-2b06b863b603.png) # PR 2: add go readme This PR changes the docs generation to use the Go SDK's GitHub readme for the SDK docs instead of a separate document. ## What The changes in this PR are: - Delete the existing Go SDK documentation. All the content in this guide already exists in the Go readme. - Add the Go SDK to the list of auto-generated readme docs - Move the readme-related code into a separate module, `readme-fns.js` (I'm not bullish about the file name: we can change it if you have suggestions) - Add a note to the top of all generated readmes saying you'll need an API url and an API token. The note also links you to the relevant reference and how-to docs. ## Why Having two different bits of documentation for the same SDK is troublesome. By only having the data in one place, we can avoid it going out of sync and getting stale.
2023-01-05 10:47:49 +01:00
],
2024-12-18 01:15:15 +01:00
scripts: [
Source proxy and Edge docs from GitHub (#3122) ## What The main purpose of this PR is to 1. Delete the proxy docs in this repo and replace them with the proxy's GitHub readme. 2. Add the docs for Unleash Edge. ### Detailed change description This PR contains a lot of small changes in a large number of files. To make it easier to get an overview, here's a detailed description of what happens where: #### In the `website/docs`directory Except for the deletion of the proxy doc, all changes in this directory are rewriting internal links, so that they point to the newly generated document instead. #### `package.json` and `yarn.lock` When including the documentation for Edge, we also want to render the mermaid diagrams it uses. Docusaurus supports this via a plugin. All changes in these files are related to installing that plugin. #### `docusaurus.config.js` There's two types of changes in this file: 1. Mermaid-related changes: we ask docusaurus to render mermaid in markdown files and add the plugin 2. Document generation. There's some rewrites to the sdk doc generation plus an entirely new section that generates docs for Edge and the proxy #### `sidebars.js` Two things: 1. Add the edge docs 2. Move both the Edge and the proxy docs up a level, so that they're directly under "reference docs" instead of nested inside "unleash concepts". #### In the `website/remote-content` directory These are the remote content files. Previously, all of this lived only in a `readme-fns.js` file, but with the introduction of Edge and proxy docs, this has been moved into its own directory and refactored into three files (`shared`, `sdks`, `edge-proxy`). #### `custom.css` Style updates to center mermaid diagrams and provide more space around them. #### In `static/img` The image files that were included in the proxy doc and that have been deleted. ## Why For two reasons: 1. Reduce duplication for the proxy. Have one source of truth. 2. Add docs for edge. ## Discussion points and review wishes This is a big PR, and I don't expect anyone to do a line-by-line review of it, nor do I think that is particularly useful. Instead, I'd like to ask reviewers to: 1. Visit the [documentation preview](https://unleash-docs-git-docs-source-proxy-gh-unleash-team.vercel.app/reference/unleash-proxy) and have a look at both the proxy docs and the Edge docs. Potentially have a look at the SDK docs too to verify that everything still works. 2. Consider whether they think moving the proxy and edge docs up a level (in the sidebar) makes sense. 3. Let me know what slug they'd prefer for the Edge docs. I've gone with `unleash-edge` for now (so that it's `docs.getunleash.io/reference/unleash-edge`), but we could potentially also just use `edge`. WDYT? 4. Read through the detailed changes section. 5. Let me know if they have any other concerns or questions. ## Screenies The new proxy doc: ![image](https://user-images.githubusercontent.com/17786332/219043145-1c75c83e-4191-45a3-acb5-775d05d13862.png) The new edge doc: ![image](https://user-images.githubusercontent.com/17786332/219043220-1f5daf13-972e-4d56-8aaf-70ff1812863e.png)
2023-02-16 13:36:28 +01:00
{
2024-12-18 01:15:15 +01:00
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',
2024-12-18 23:57:45 +01:00
'data-button-position-bottom': '80px',
2024-12-18 01:15:15 +01:00
defer: true,
Source proxy and Edge docs from GitHub (#3122) ## What The main purpose of this PR is to 1. Delete the proxy docs in this repo and replace them with the proxy's GitHub readme. 2. Add the docs for Unleash Edge. ### Detailed change description This PR contains a lot of small changes in a large number of files. To make it easier to get an overview, here's a detailed description of what happens where: #### In the `website/docs`directory Except for the deletion of the proxy doc, all changes in this directory are rewriting internal links, so that they point to the newly generated document instead. #### `package.json` and `yarn.lock` When including the documentation for Edge, we also want to render the mermaid diagrams it uses. Docusaurus supports this via a plugin. All changes in these files are related to installing that plugin. #### `docusaurus.config.js` There's two types of changes in this file: 1. Mermaid-related changes: we ask docusaurus to render mermaid in markdown files and add the plugin 2. Document generation. There's some rewrites to the sdk doc generation plus an entirely new section that generates docs for Edge and the proxy #### `sidebars.js` Two things: 1. Add the edge docs 2. Move both the Edge and the proxy docs up a level, so that they're directly under "reference docs" instead of nested inside "unleash concepts". #### In the `website/remote-content` directory These are the remote content files. Previously, all of this lived only in a `readme-fns.js` file, but with the introduction of Edge and proxy docs, this has been moved into its own directory and refactored into three files (`shared`, `sdks`, `edge-proxy`). #### `custom.css` Style updates to center mermaid diagrams and provide more space around them. #### In `static/img` The image files that were included in the proxy doc and that have been deleted. ## Why For two reasons: 1. Reduce duplication for the proxy. Have one source of truth. 2. Add docs for edge. ## Discussion points and review wishes This is a big PR, and I don't expect anyone to do a line-by-line review of it, nor do I think that is particularly useful. Instead, I'd like to ask reviewers to: 1. Visit the [documentation preview](https://unleash-docs-git-docs-source-proxy-gh-unleash-team.vercel.app/reference/unleash-proxy) and have a look at both the proxy docs and the Edge docs. Potentially have a look at the SDK docs too to verify that everything still works. 2. Consider whether they think moving the proxy and edge docs up a level (in the sidebar) makes sense. 3. Let me know what slug they'd prefer for the Edge docs. I've gone with `unleash-edge` for now (so that it's `docs.getunleash.io/reference/unleash-edge`), but we could potentially also just use `edge`. WDYT? 4. Read through the detailed changes section. 5. Let me know if they have any other concerns or questions. ## Screenies The new proxy doc: ![image](https://user-images.githubusercontent.com/17786332/219043145-1c75c83e-4191-45a3-acb5-775d05d13862.png) The new edge doc: ![image](https://user-images.githubusercontent.com/17786332/219043220-1f5daf13-972e-4d56-8aaf-70ff1812863e.png)
2023-02-16 13:36:28 +01:00
},
],
2024-12-18 01:15:15 +01:00
clientModules: ['./global.js'],
};
}