Skip to content

Commit bbaf01c

Browse files
authored
fix: Update to major version of @vercel/edge-config (#393)
Fixes #379 . I have tested this locally and verified the type errors are fixed and the example application (complete) still works.
1 parent 0b131c0 commit bbaf01c

File tree

8 files changed

+35
-32
lines changed

8 files changed

+35
-32
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
"packages/sdk/react-native",
1414
"packages/sdk/react-native/example",
1515
"packages/sdk/vercel",
16+
"packages/sdk/vercel/examples/complete",
17+
"packages/sdk/vercel/examples/route-handler",
1618
"packages/sdk/akamai-base",
1719
"packages/sdk/akamai-base/example",
1820
"packages/sdk/akamai-edgekv",
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
{
2-
"root": true,
3-
"extends": "next/core-web-vitals"
2+
"extends": ["plugin:@next/next/recommended"]
43
}

packages/sdk/vercel/examples/complete/middleware.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,35 @@ export const config = {
88
matcher: ['/', '/closed', '/favicon.ico'],
99
};
1010

11-
export async function middleware(req: NextRequest, context: NextFetchEvent) {
11+
export async function middleware(
12+
{ headers, method, nextUrl, url }: NextRequest,
13+
_context: NextFetchEvent,
14+
) {
1215
// for demo purposes, warn when there is no EDGE_CONFIG or LAUNCHDARKLY_CLIENT_SIDE_ID
1316
if (
1417
!process.env.EDGE_CONFIG ||
1518
!process.env.LD_CLIENT_SIDE_ID ||
1619
!parseConnectionString(process.env.EDGE_CONFIG)
1720
) {
18-
return NextResponse.rewrite(new URL('/missing-edge-config', request.url));
21+
return NextResponse.rewrite(new URL('/missing-edge-config', url));
1922
}
2023

2124
try {
2225
const client = await ldEdgeClient.waitForInitialization();
2326
const flagContext: LDMultiKindContext = {
2427
kind: 'multi',
2528
url: {
26-
key: req.url,
29+
key: url,
2730
},
2831
method: {
29-
key: req.method,
32+
key: method,
3033
},
3134
'user-agent': {
32-
key: req.headers.get('user-agent') || 'unknown',
35+
key: headers.get('user-agent') || 'unknown',
3336
},
3437
};
3538

36-
const { pathname } = req.nextUrl;
39+
const { pathname } = nextUrl;
3740

3841
if (pathname === '/favicon.ico') {
3942
const hotDogFaviconEnabled = await client.variation(
@@ -43,20 +46,20 @@ export async function middleware(req: NextRequest, context: NextFetchEvent) {
4346
);
4447

4548
return hotDogFaviconEnabled
46-
? NextResponse.rewrite(new URL('/hot-dog.ico', request.url))
49+
? NextResponse.rewrite(new URL('/hot-dog.ico', url))
4750
: NextResponse.next();
4851
}
4952

5053
const storeClosed = await client.variation('store-closed', flagContext, false);
5154

5255
if (pathname === '/' && storeClosed) {
53-
req.nextUrl.pathname = `/closed`;
54-
return NextResponse.rewrite(new URL('/closed', req.url));
56+
nextUrl.pathname = `/closed`;
57+
return NextResponse.rewrite(new URL('/closed', url));
5558
}
5659

5760
if (pathname === '/closed') {
58-
req.nextUrl.pathname === '/';
59-
return NextResponse.redirect(new URL('/', req.url));
61+
nextUrl.pathname = '/';
62+
return NextResponse.redirect(new URL('/', url));
6063
}
6164

6265
return;

packages/sdk/vercel/examples/complete/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@
1010
"start": "next start"
1111
},
1212
"dependencies": {
13-
"@launchdarkly/vercel-server-sdk": "1.0.0",
14-
"@vercel/edge-config": "0.1.10",
13+
"@launchdarkly/vercel-server-sdk": "1.3.0",
14+
"@vercel/edge-config": "^1.1.0",
1515
"launchdarkly-js-client-sdk": "^3.1.3",
1616
"launchdarkly-react-client-sdk": "^3.0.6",
17-
"next": "canary",
18-
"react": "latest",
19-
"react-dom": "latest"
17+
"next": "14.1.2",
18+
"react": "18.2.0",
19+
"react-dom": "18.2.0"
2020
},
2121
"devDependencies": {
22-
"@next/eslint-plugin-next": "^13.4.4",
22+
"@next/eslint-plugin-next": "14.1.2",
2323
"@types/node": "^18.15.5",
2424
"@types/react": "latest",
2525
"autoprefixer": "^10.4.14",

packages/sdk/vercel/examples/route-handler/next.config.js

Lines changed: 0 additions & 8 deletions
This file was deleted.

packages/sdk/vercel/examples/route-handler/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
"lint": "next lint"
1010
},
1111
"dependencies": {
12-
"@launchdarkly/vercel-server-sdk": "1.0.0",
13-
"@vercel/edge-config": "^0.2.1",
14-
"next": "^13.4.4",
12+
"@launchdarkly/vercel-server-sdk": "1.3.0",
13+
"@vercel/edge-config": "^1.1.0",
14+
"next": "14.1.2",
1515
"react": "^18.2.0",
1616
"react-dom": "18.2.0"
1717
},

packages/sdk/vercel/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@
3333
"prettier": "prettier --write '**/*.@(js|ts|tsx|json|css)' --ignore-path ../../../.prettierignore",
3434
"test": "NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" jest --ci --runInBand",
3535
"coverage": "yarn test --coverage",
36-
"check": "yarn prettier && yarn lint && yarn build && yarn test && yarn doc"
36+
"check": "yarn prettier && yarn lint && yarn build && yarn test"
3737
},
3838
"dependencies": {
3939
"@launchdarkly/js-server-sdk-common-edge": "2.2.0",
40-
"@vercel/edge-config": "^0.1.8",
40+
"@vercel/edge-config": "^1.1.0",
4141
"crypto-js": "^4.1.1"
4242
},
4343
"devDependencies": {

packages/sdk/vercel/src/utils/mockEdgeConfigClient.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@ const mockEdgeConfigClient: EdgeConfigClient = {
55
getAll: jest.fn(),
66
digest: jest.fn(),
77
has: jest.fn(),
8+
connection: {
9+
baseUrl: '',
10+
id: '',
11+
token: '',
12+
version: '',
13+
type: 'vercel',
14+
},
815
};
916

1017
export default mockEdgeConfigClient;

0 commit comments

Comments
 (0)