mirror of
https://github.com/vercel/flags.git
synced 2026-09-19 03:49:23 +08:00
58e1f5bcdf
* Rename edge config packages * Rename Global Config APIs * Fix Global Config environment setup * Rename Global Config endpoints * Update Global Config documentation links * Undo lockfile changes * Update lockfile * Undo lockfile changes * Update lockfile * Fall back to EDGE_CONFIG --------- Co-authored-by: Andy Bitz <artzbitz@gmail.com>
192 lines
7.3 KiB
TypeScript
192 lines
7.3 KiB
TypeScript
import { withVercelToolbar } from '@vercel/toolbar/plugins/next';
|
|
import { createMDX } from "fumadocs-mdx/next";
|
|
import type { NextConfig } from "next";
|
|
|
|
const withMDX = createMDX();
|
|
|
|
const config: NextConfig = {
|
|
experimental: {
|
|
turbopackFileSystemCacheForDev: true,
|
|
},
|
|
|
|
images: {
|
|
formats: ["image/avif", "image/webp"],
|
|
remotePatterns: [
|
|
{
|
|
protocol: "https",
|
|
hostname: "assets.vercel.com",
|
|
},
|
|
],
|
|
},
|
|
|
|
redirects: async () => {
|
|
/**
|
|
* At first all docs pages were at /docs/*, but we moved them to the root
|
|
* - /principles
|
|
* - /frameworks
|
|
* - /providers
|
|
* - /api-reference
|
|
*/
|
|
const sourceToDestination = {
|
|
// -----------------------------------------------------------------------
|
|
// Routes of redesigned page (before new information architecture)
|
|
// -----------------------------------------------------------------------
|
|
'/docs/adapters/custom-adapters': '/providers/custom-adapters',
|
|
'/docs/adapters/supported-providers': '/providers',
|
|
'/docs/api-reference/adapters/edge-config': '/providers/global-config',
|
|
'/docs/api-reference/adapters/hypertune': '/providers/hypertune',
|
|
'/docs/api-reference/adapters/launchdarkly': '/providers/launchdarkly',
|
|
'/docs/api-reference/adapters/optimizely': '/providers/optimizely',
|
|
'/docs/api-reference/adapters/split': '/providers/split',
|
|
'/docs/api-reference/adapters/statsig': '/providers/statsig',
|
|
'/docs/api-reference/adapters/openfeature': '/providers/openfeature',
|
|
'/docs/concepts/data-locality': '/principles/data-locality',
|
|
'/docs/concepts/dedupe': '/frameworks/next/dedupe',
|
|
'/docs/concepts/evaluation-context': '/principles/evaluation-context',
|
|
'/docs/concepts/flags-as-code': '/principles/flags-as-code',
|
|
'/docs/concepts/precompute': '/principles/precompute',
|
|
'/docs/concepts/server-side-vs-client-side':
|
|
'/principles/server-side-vs-client-side',
|
|
'/docs/examples/edge-middleware': '/frameworks/next/examples/proxy',
|
|
'/docs/examples/suspense-fallbacks':
|
|
'/frameworks/next/examples/suspense-fallbacks',
|
|
'/docs/getting-started/next': '/frameworks/next',
|
|
'/docs/getting-started/sveltekit': '/frameworks/sveltekit',
|
|
'/docs/guides/dashboard-pages': '/frameworks/next/guides/dashboard-pages',
|
|
'/docs/guides/marketing-pages': '/frameworks/next/guides/marketing-pages',
|
|
'/docs/vercel': 'https://vercel.com/docs/feature-flags',
|
|
|
|
// -----------------------------------------------------------------------
|
|
// Renamed adapters
|
|
// -----------------------------------------------------------------------
|
|
'/providers/bucket': '/providers/reflag',
|
|
'/providers/openfeature/bucket': '/providers/reflag',
|
|
|
|
// -----------------------------------------------------------------------
|
|
// Routes of original page (before redesign)
|
|
// -----------------------------------------------------------------------
|
|
'/getting-started/quickstart': '/frameworks/next',
|
|
'/knowledge-base': '/principles/flags-as-code',
|
|
'/knowledge-base/flags-as-code': '/principles/flags-as-code',
|
|
'/knowledge-base/server-side-vs-client-side':
|
|
'/principles/server-side-vs-client-side',
|
|
'/knowledge-base/data-locality': '/principles/data-locality',
|
|
'/principles': '/principles/flags-as-code',
|
|
'/concepts/identify': '/principles/evaluation-context',
|
|
'/concepts/dedupe': '/frameworks/next/dedupe',
|
|
'/concepts/precompute': '/frameworks/next/precompute',
|
|
'/concepts/adapters': '/providers',
|
|
'/examples/dashboard-pages': '/frameworks/next/guides/dashboard-pages',
|
|
'/examples/marketing-pages': '/frameworks/next/guides/marketing-pages',
|
|
'/examples/feature-flags-in-edge-middleware':
|
|
'/frameworks/next/examples/proxy',
|
|
'/api-reference': '/api-reference/core/core',
|
|
'/api-reference/core': '/api-reference/core/core',
|
|
'/api-reference/react': '/api-reference/core/react',
|
|
'/api-reference/sveltekit': '/api-reference/frameworks/sveltekit',
|
|
'/api-reference/next': '/api-reference/frameworks/next',
|
|
'/api-reference/provider/launchdarkly': '/providers/launchdarkly',
|
|
'/api-reference/provider/statsig': '/providers/statsig',
|
|
'/api-reference/provider/split': '/providers/split',
|
|
'/api-reference/provider/optimizely': '/providers/optimizely',
|
|
'/api-reference/provider/hypertune': '/providers/hypertune',
|
|
'/api-reference/provider/edge-config': '/providers/global-config',
|
|
'/docs/concepts/flags': '/principles/flags-as-code',
|
|
'/docs/concepts/flags.ts': '/principles/flags-as-code',
|
|
'/docs/frameworks/next/overview': '/frameworks/next',
|
|
'/docs/examples/marketing-pages':
|
|
'/frameworks/next/guides/marketing-pages',
|
|
'/docs/examples/dashboard-pages':
|
|
'/frameworks/next/guides/dashboard-pages',
|
|
'/examples': '/frameworks/next',
|
|
'/examples/pages-router': '/frameworks/next#pages-router',
|
|
'/docs/flags': '/api-reference/core/core',
|
|
'/flags': '/api-reference/core/core',
|
|
'/home-a': '/',
|
|
'/home-a/page.tsx': '/',
|
|
'/home-b': '/',
|
|
"/docs/core-concepts/precompute": "/principles/precompute",
|
|
|
|
// -----------------------------------------------------------------------
|
|
// Shortcuts
|
|
// -----------------------------------------------------------------------
|
|
"/precompute": "/frameworks/next/precompute",
|
|
};
|
|
|
|
return [
|
|
{
|
|
source: '/docs',
|
|
destination: '/frameworks/next',
|
|
permanent: false,
|
|
},
|
|
{
|
|
source: '/ship',
|
|
destination: 'https://flags-sdk-workshop.vercel.app/',
|
|
permanent: false,
|
|
},
|
|
{
|
|
source: '/workshop',
|
|
destination: 'https://flags-sdk-workshop.vercel.app/',
|
|
permanent: false,
|
|
},
|
|
...Object.entries(sourceToDestination).map(([source, destination]) => ({
|
|
source,
|
|
destination: destination.startsWith('http') ? destination : `/docs${destination}`,
|
|
permanent: true,
|
|
})),
|
|
{
|
|
source: "/principles",
|
|
destination: "/docs/principles",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/principles/:path*",
|
|
destination: "/docs/principles/:path*",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/docs/principles",
|
|
destination: "/docs/principles/flags-as-code",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/frameworks",
|
|
destination: "/docs/frameworks/next",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/docs/frameworks",
|
|
destination: "/docs/frameworks/next",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/frameworks/:path*",
|
|
destination: "/docs/frameworks/:path*",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/providers",
|
|
destination: "/docs/providers",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/providers/:path*",
|
|
destination: "/docs/providers/:path*",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/api-reference",
|
|
destination: "/docs/api-reference/core/core",
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: "/api-reference/:path*",
|
|
destination: "/docs/api-reference/:path*",
|
|
permanent: true,
|
|
},
|
|
];
|
|
},
|
|
};
|
|
|
|
export default withVercelToolbar()(withMDX(config));
|