diff --git a/edge-middleware/feature-flag-hypertune/README.md b/edge-middleware/feature-flag-hypertune/README.md index 910dc233c7..20fe6bc6cd 100644 --- a/edge-middleware/feature-flag-hypertune/README.md +++ b/edge-middleware/feature-flag-hypertune/README.md @@ -5,7 +5,7 @@ description: Learn to use Hypertune, a powerful feature flag, A/B testing and ap framework: Next.js useCase: Edge Middleware css: Tailwind -deployUrl: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fhypertunehq%2Fvercel-examples-fork%2Ftree%2Fmain%2Fedge-middleware%2Ffeature-flag-hypertune&env=NEXT_PUBLIC_HYPERTUNE_TOKEN,EDGE_CONFIG,EDGE_CONFIG_HYPERTUNE_ITEM_KEY,FLAGS_SECRET&envDescription=Environment%20variables%20needed%20to%20use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&envLink=https%3A%2F%2Fdocs.hypertune.com%2Fgetting-started%2Fvercel-quickstart&project-name=feature-flag-hypertune&repository-name=feature-flag-hypertune&demo-title=Hypertune%20with%20Vercel&demo-description=Use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&demo-url=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2F&demo-image=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2Fdemo.png&integration-ids=oac_naLXREDG2o9KihTGYBVz9fVl +deployUrl: https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fhypertunehq%2Fvercel-examples-fork%2Ftree%2Fmain%2Fedge-middleware%2Ffeature-flag-hypertune&env=HYPERTUNE_TOKEN,EDGE_CONFIG,EDGE_CONFIG_HYPERTUNE_ITEM_KEY,FLAGS_SECRET&envDescription=Environment%20variables%20needed%20to%20use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&envLink=https%3A%2F%2Fdocs.hypertune.com%2Fgetting-started%2Fvercel-quickstart&project-name=feature-flag-hypertune&repository-name=feature-flag-hypertune&demo-title=Hypertune%20with%20Vercel&demo-description=Use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&demo-url=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2F&demo-image=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2Fdemo.png&integration-ids=oac_naLXREDG2o9KihTGYBVz9fVl demoUrl: https://feature-flag-hypertune.vercel.app relatedTemplates: - maintenance-page @@ -30,7 +30,7 @@ It also shows how to integrate with the Vercel Toolbar to let you easily set loc Deploy this example with Vercel in one click: -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fhypertunehq%2Fvercel-examples-fork%2Ftree%2Fmain%2Fedge-middleware%2Ffeature-flag-hypertune&env=NEXT_PUBLIC_HYPERTUNE_TOKEN,EDGE_CONFIG,EDGE_CONFIG_HYPERTUNE_ITEM_KEY,FLAGS_SECRET&envDescription=Environment%20variables%20needed%20to%20use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&envLink=https%3A%2F%2Fdocs.hypertune.com%2Fgetting-started%2Fvercel-quickstart&project-name=feature-flag-hypertune&repository-name=feature-flag-hypertune&demo-title=Hypertune%20with%20Vercel&demo-description=Use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&demo-url=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2F&demo-image=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2Fdemo.png&integration-ids=oac_naLXREDG2o9KihTGYBVz9fVl) +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fhypertunehq%2Fvercel-examples-fork%2Ftree%2Fmain%2Fedge-middleware%2Ffeature-flag-hypertune&env=HYPERTUNE_TOKEN,EDGE_CONFIG,EDGE_CONFIG_HYPERTUNE_ITEM_KEY,FLAGS_SECRET&envDescription=Environment%20variables%20needed%20to%20use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&envLink=https%3A%2F%2Fdocs.hypertune.com%2Fgetting-started%2Fvercel-quickstart&project-name=feature-flag-hypertune&repository-name=feature-flag-hypertune&demo-title=Hypertune%20with%20Vercel&demo-description=Use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&demo-url=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2F&demo-image=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2Fdemo.png&integration-ids=oac_naLXREDG2o9KihTGYBVz9fVl) You'll be guided through installing the [Hypertune Vercel integration](https://vercel.com/integrations/hypertune) and setting up the required environment variables. diff --git a/edge-middleware/feature-flag-hypertune/app/.well-known/vercel/flags/route.ts b/edge-middleware/feature-flag-hypertune/app/.well-known/vercel/flags/route.ts index 1355f46d33..458905b91d 100644 --- a/edge-middleware/feature-flag-hypertune/app/.well-known/vercel/flags/route.ts +++ b/edge-middleware/feature-flag-hypertune/app/.well-known/vercel/flags/route.ts @@ -1,10 +1,14 @@ -import { type NextRequest, NextResponse } from 'next/server'; -import { verifyAccess, type ApiData } from '@vercel/flags'; -import { vercelFlagDefinitions } from '../../../../generated/generated'; +import { type NextRequest, NextResponse } from 'next/server' +import { verifyAccess, type ApiData } from '@vercel/flags' +import { getHypertuneData } from '@vercel/flags/providers/hypertune' export async function GET(request: NextRequest) { - const access = await verifyAccess(request.headers.get('Authorization')); - if (!access) return NextResponse.json(null, { status: 401 }); + const access = await verifyAccess(request.headers.get('Authorization')) + if (!access) return NextResponse.json(null, { status: 401 }) - return NextResponse.json({ definitions: vercelFlagDefinitions }); + const data = await getHypertuneData({ + token: process.env.HYPERTUNE_TOKEN!, + }) + + return NextResponse.json(data) } diff --git a/edge-middleware/feature-flag-hypertune/app/layout.tsx b/edge-middleware/feature-flag-hypertune/app/layout.tsx index 3d2d73f69f..0e4c874e1e 100644 --- a/edge-middleware/feature-flag-hypertune/app/layout.tsx +++ b/edge-middleware/feature-flag-hypertune/app/layout.tsx @@ -20,7 +20,7 @@ export default function RootLayout({ path="edge-middleware/feature-flag-hypertune" deployButton={{ customDeployUrl: - 'https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fhypertunehq%2Fvercel-examples-fork%2Ftree%2Fmain%2Fedge-middleware%2Ffeature-flag-hypertune&env=NEXT_PUBLIC_HYPERTUNE_TOKEN,EDGE_CONFIG,EDGE_CONFIG_HYPERTUNE_ITEM_KEY,FLAGS_SECRET&envDescription=Environment%20variables%20needed%20to%20use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&envLink=https%3A%2F%2Fdocs.hypertune.com%2Fgetting-started%2Fvercel-quickstart&project-name=feature-flag-hypertune&repository-name=feature-flag-hypertune&demo-title=Hypertune%20with%20Vercel&demo-description=Use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&demo-url=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2F&demo-image=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2Fdemo.png&integration-ids=oac_naLXREDG2o9KihTGYBVz9fVl', + 'https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fhypertunehq%2Fvercel-examples-fork%2Ftree%2Fmain%2Fedge-middleware%2Ffeature-flag-hypertune&env=HYPERTUNE_TOKEN,EDGE_CONFIG,EDGE_CONFIG_HYPERTUNE_ITEM_KEY,FLAGS_SECRET&envDescription=Environment%20variables%20needed%20to%20use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&envLink=https%3A%2F%2Fdocs.hypertune.com%2Fgetting-started%2Fvercel-quickstart&project-name=feature-flag-hypertune&repository-name=feature-flag-hypertune&demo-title=Hypertune%20with%20Vercel&demo-description=Use%20Hypertune%20with%20Vercel%20Edge%20Config%20and%20the%20Vercel%20Toolbar&demo-url=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2F&demo-image=https%3A%2F%2Ffeature-flag-hypertune.vercel.app%2Fdemo.png&integration-ids=oac_naLXREDG2o9KihTGYBVz9fVl', }} > {children} diff --git a/edge-middleware/feature-flag-hypertune/lib/hypertune.ts b/edge-middleware/feature-flag-hypertune/lib/hypertune.ts index a12c82a1b1..90b541fec0 100644 --- a/edge-middleware/feature-flag-hypertune/lib/hypertune.ts +++ b/edge-middleware/feature-flag-hypertune/lib/hypertune.ts @@ -4,12 +4,12 @@ import { createClient } from '@vercel/edge-config' const hypertune = initializeHypertune( {}, { - token: process.env.NEXT_PUBLIC_HYPERTUNE_TOKEN, + token: process.env.HYPERTUNE_TOKEN, vercelEdgeConfigClient: process.env.EDGE_CONFIG ? createClient(process.env.EDGE_CONFIG) : undefined, vercelEdgeConfigItemKey: process.env.EDGE_CONFIG_HYPERTUNE_ITEM_KEY, - }, + } ) export default hypertune diff --git a/edge-middleware/feature-flag-hypertune/package.json b/edge-middleware/feature-flag-hypertune/package.json index 03d9aefc4a..5f929220d7 100644 --- a/edge-middleware/feature-flag-hypertune/package.json +++ b/edge-middleware/feature-flag-hypertune/package.json @@ -13,7 +13,7 @@ "dependencies": { "@vercel/edge-config": "^0.2.1", "@vercel/examples-ui": "^2.0.3", - "@vercel/flags": "^2.2.1", + "@vercel/flags": "2.3.0", "@vercel/toolbar": "^0.1.11", "autoprefixer": "^10.4.15", "eslint-config-next": "^13.4.19", @@ -33,4 +33,4 @@ "prettier": "^3.0.2", "tailwindcss": "^3.3.3" } -} \ No newline at end of file +} diff --git a/edge-middleware/feature-flag-hypertune/pnpm-lock.yaml b/edge-middleware/feature-flag-hypertune/pnpm-lock.yaml index bd21a02fdd..84bc6ae852 100644 --- a/edge-middleware/feature-flag-hypertune/pnpm-lock.yaml +++ b/edge-middleware/feature-flag-hypertune/pnpm-lock.yaml @@ -12,8 +12,8 @@ dependencies: specifier: ^2.0.3 version: 2.0.3(next@14.1.1-canary.61)(react-dom@18.2.0)(react@18.2.0) '@vercel/flags': - specifier: ^2.2.1 - version: 2.2.1(next@14.1.1-canary.61)(react-dom@18.2.0)(react@18.2.0) + specifier: 2.3.0 + version: 2.3.0(next@14.1.1-canary.61)(react-dom@18.2.0)(react@18.2.0) '@vercel/toolbar': specifier: ^0.1.11 version: 0.1.11(next@14.1.1-canary.61)(react@18.2.0) @@ -532,8 +532,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@vercel/flags@2.2.1(next@14.1.1-canary.61)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-BJoSbCJmaOY5iw08jNZ0Nq/bor1DYKzVRUv72eiXMLnsX7ABpxLaoQSoVziW5zo0qp1l1YwqfB3Xl5D57XscXg==} + /@vercel/flags@2.3.0(next@14.1.1-canary.61)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jRtq+HA+uCJQJwUmI/gapE52BQ3SyT6a7THVsV9W/BJJ8vDA7ANPZIRRruajEz1hbytCTae/vShP6uI9BGYwCQ==} peerDependencies: next: '*' react: '*'