Skip to content

Commit b7b9392

Browse files
authored
feat: support edge runtime key (#2036)
* feat: add support for edge key * feat: refactor * feat: switch demos to edge * fix: add helper function
1 parent b64da2f commit b7b9392

File tree

35 files changed

+41
-39
lines changed

35 files changed

+41
-39
lines changed

demos/default/pages/api/og.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { ImageResponse } from '@vercel/og'
22
import { NextRequest } from 'next/server'
33

44
export const config = {
5-
runtime: 'experimental-edge',
5+
runtime: 'edge',
66
}
77

88
export default async function handler(req: NextRequest) {

demos/middleware/pages/api/edge.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const config = {
2-
runtime: 'experimental-edge',
2+
runtime: 'edge',
33
}
44

55
export default (req) => new Response('Hello world!')

packages/runtime/src/helpers/analysis.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export const enum ApiRouteType {
1111

1212
export interface ApiStandardConfig {
1313
type?: never
14-
runtime?: 'nodejs' | 'experimental-edge'
14+
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
1515
schedule?: never
1616
}
1717

@@ -29,6 +29,8 @@ export interface ApiBackgroundConfig {
2929

3030
export type ApiConfig = ApiStandardConfig | ApiScheduledConfig | ApiBackgroundConfig
3131

32+
export const isEdgeConfig = (config: string) => ['experimental-edge', 'edge'].includes(config)
33+
3234
export const validateConfigValue = (config: ApiConfig, apiFilePath: string): config is ApiConfig => {
3335
if (config.type === ApiRouteType.SCHEDULED) {
3436
if (!config.schedule) {
@@ -39,7 +41,7 @@ export const validateConfigValue = (config: ApiConfig, apiFilePath: string): con
3941
)
4042
return false
4143
}
42-
if ((config as ApiConfig).runtime === 'experimental-edge') {
44+
if (isEdgeConfig((config as ApiConfig).runtime)) {
4345
console.error(
4446
`Invalid config value in ${relative(
4547
process.cwd(),
@@ -60,7 +62,7 @@ export const validateConfigValue = (config: ApiConfig, apiFilePath: string): con
6062
)
6163
return false
6264
}
63-
if (config.type && (config as ApiConfig).runtime === 'experimental-edge') {
65+
if (config.type && isEdgeConfig((config as ApiConfig).runtime)) {
6466
console.error(
6567
`Invalid config value in ${relative(
6668
process.cwd(),

packages/runtime/src/helpers/functions.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { getApiHandler } from '../templates/getApiHandler'
2020
import { getHandler } from '../templates/getHandler'
2121
import { getResolverForPages, getResolverForSourceFiles } from '../templates/getPageResolver'
2222

23-
import { ApiConfig, ApiRouteType, extractConfigFromFile } from './analysis'
23+
import { ApiConfig, ApiRouteType, extractConfigFromFile, isEdgeConfig } from './analysis'
2424
import { getSourceFileForPage } from './files'
2525
import { writeFunctionConfiguration } from './functionsMetaData'
2626
import { getFunctionNameForPage } from './utils'
@@ -43,7 +43,7 @@ export const generateFunctions = async (
4343

4444
for (const { route, config, compiled } of apiRoutes) {
4545
// Don't write a lambda if the runtime is edge
46-
if (config.runtime === 'experimental-edge') {
46+
if (isEdgeConfig(config.runtime)) {
4747
continue
4848
}
4949
const apiHandlerSource = await getApiHandler({
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module.exports = {
22
experimental: {
33
appDir: true,
4-
runtime: 'experimental-edge',
4+
runtime: 'edge',
55
},
66
}

test/e2e/app-dir/app-edge/app/app-edge/page.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ export default function Page() {
55
return <p>Node!</p>
66
}
77

8-
export const runtime = 'experimental-edge'
8+
export const runtime = 'edge'

test/e2e/app-dir/app-edge/pages/pages-edge.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ export default function Page() {
22
return <p>pages-edge-ssr</p>
33
}
44

5-
export const config = { runtime: 'experimental-edge' }
5+
export const config = { runtime: 'edge' }

test/e2e/app-dir/app-middleware/pages/api/dump-headers-edge.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const config = {
2-
runtime: 'experimental-edge',
2+
runtime: 'edge',
33
}
44

55
export default (req) => {

test/e2e/app-dir/app/app/(rootonly)/dashboard/hello/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ export default function HelloPage(props) {
66
)
77
}
88

9-
export const runtime = 'experimental-edge'
9+
export const runtime = 'edge'

test/e2e/app-dir/app/app/dashboard/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ export default function DashboardPage(props) {
1313
)
1414
}
1515

16-
export const runtime = 'experimental-edge'
16+
export const runtime = 'edge'

test/e2e/app-dir/app/app/edge-apis/cookies/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { cookies } from 'next/headers'
22

3-
export const runtime = 'experimental-edge'
3+
export const runtime = 'edge'
44

55
export default function Page() {
66
cookies()

test/e2e/app-dir/app/app/slow-page-no-loading/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ export default function SlowPage(props) {
1313
return <h1 id="slow-page-message">{data.message}</h1>
1414
}
1515

16-
export const runtime = 'experimental-edge'
16+
export const runtime = 'edge'

test/e2e/app-dir/app/app/slow-page-with-loading/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ export default function SlowPage(props) {
1313
return <h1 id="slow-page-message">{data.message}</h1>
1414
}
1515

16-
export const runtime = 'experimental-edge'
16+
export const runtime = 'edge'

test/e2e/app-dir/app/pages/api/hello.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ export default function api(req) {
33
}
44

55
export const config = {
6-
runtime: 'experimental-edge',
6+
runtime: 'edge',
77
}

test/e2e/app-dir/next-font/app/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ export default function HomePage() {
1313
)
1414
}
1515

16-
export const runtime = 'experimental-edge'
16+
export const runtime = 'edge'

test/e2e/app-dir/next-image/app/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ export default function Page() {
1212
)
1313
}
1414

15-
export const runtime = 'experimental-edge'
15+
export const runtime = 'edge'

test/e2e/app-dir/rsc-basic/app/edge/dynamic/[id]/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ export default function page() {
22
return 'dynamic route [id] page'
33
}
44

5-
export const runtime = 'experimental-edge'
5+
export const runtime = 'edge'

test/e2e/app-dir/rsc-basic/app/edge/dynamic/page.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ export default function page() {
22
return 'dynamic route index page'
33
}
44

5-
export const runtime = 'experimental-edge'
5+
export const runtime = 'edge'

test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/[id].js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const config = {
2-
runtime: 'experimental-edge',
2+
runtime: 'edge',
33
}
44

55
export default function Page(props) {

test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const config = {
2-
runtime: 'experimental-edge',
2+
runtime: 'edge',
33
}
44

55
export default function Page(props) {

test/e2e/disabled-tests/middleware-request-header-overrides/app/pages/api/dump-headers-edge.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const config = {
2-
runtime: 'experimental-edge',
2+
runtime: 'edge',
33
}
44

55
export default (req) => {

test/e2e/modified-tests/edge-can-use-wasm-files/index.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ describe('edge api endpoints can use wasm files', () => {
4949
const value = await increment(input);
5050
return new Response(null, { headers: { data: JSON.stringify({ input, value }) } });
5151
}
52-
export const config = { runtime: 'experimental-edge' };
52+
export const config = { runtime: 'edge' };
5353
`,
5454
'src/add.wasm': new FileRef(path.join(__dirname, './add.wasm')),
5555
'src/add.js': `

test/e2e/modified-tests/edge-compiler-can-import-blob-assets/app/pages/api/edge.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export const config = { runtime: 'experimental-edge' }
1+
export const config = { runtime: 'edge' }
22

33
/**
44
* @param {import('next/server').NextRequest} req

test/e2e/modified-tests/middleware-general/app/pages/api/edge-search-params.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NextResponse } from 'next/server'
22

3-
export const config = { runtime: 'experimental-edge', regions: 'default' }
3+
export const config = { runtime: 'edge', regions: 'default' }
44

55
/**
66
* @param {import('next/server').NextRequest}

test/e2e/modified-tests/skip-trailing-slash-redirect/app/pages/api/test-cookie-edge.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { NextResponse } from 'next/server'
22

33
export const config = {
4-
runtime: 'experimental-edge',
4+
runtime: 'edge',
55
}
66

77
export default function handler(req) {

test/e2e/modified-tests/streaming-ssr/streaming-ssr/pages/api/user/[id].js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ export default async function handler() {
33
}
44

55
export const config = {
6-
runtime: 'experimental-edge',
6+
runtime: 'edge',
77
}

test/e2e/modified-tests/streaming-ssr/streaming-ssr/pages/hello.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ export default function Page() {
99
)
1010
}
1111

12-
export const config = { runtime: 'experimental-edge' }
12+
export const config = { runtime: 'edge' }

test/e2e/modified-tests/streaming-ssr/streaming-ssr/pages/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ export default function Page() {
1111
)
1212
}
1313

14-
export const config = { runtime: 'experimental-edge' }
14+
export const config = { runtime: 'edge' }

test/e2e/modified-tests/streaming-ssr/streaming-ssr/pages/multi-byte.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ export default function Page() {
66
)
77
}
88

9-
export const config = { runtime: 'experimental-edge' }
9+
export const config = { runtime: 'edge' }

test/e2e/modified-tests/streaming-ssr/streaming-ssr/pages/router.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ export default () => {
77
}
88

99
export const config = {
10-
runtime: 'experimental-edge',
10+
runtime: 'edge',
1111
}

test/e2e/tests/edge-api-endpoints-can-receive-body/app/pages/api/edge.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ export default async (req) => {
77
}
88

99
export const config = {
10-
runtime: 'experimental-edge',
10+
runtime: 'edge',
1111
}

test/e2e/tests/edge-api-endpoints-can-receive-body/app/pages/api/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ export default async (req) => {
77
}
88

99
export const config = {
10-
runtime: 'experimental-edge',
10+
runtime: 'edge',
1111
}

test/e2e/tests/og-api/app/pages/api/og.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { ImageResponse } from '@vercel/og'
33

44
export const config = {
5-
runtime: 'experimental-edge',
5+
runtime: 'edge',
66
}
77

88
export default function () {
@@ -21,6 +21,6 @@ export default function () {
2121
>
2222
Hello!
2323
</div>
24-
)
24+
),
2525
)
2626
}

test/fixtures/analysis/background-edge.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ export default (req, res) => {
66

77
export const config = {
88
type: 'experimental-background',
9-
runtime: 'experimental-edge',
9+
runtime: 'edge',
1010
}

test/fixtures/analysis/scheduled-edge.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ export default (req, res) => {
77
export const config = {
88
type: 'experimental-scheduled',
99
schedule: '@daily',
10-
runtime: 'experimental-edge',
10+
runtime: 'edge',
1111
}

0 commit comments

Comments
 (0)