Skip to content

feat: support edge runtime key #2036

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Apr 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion demos/default/pages/api/og.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { ImageResponse } from '@vercel/og'
import { NextRequest } from 'next/server'

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

export default async function handler(req: NextRequest) {
Expand Down
2 changes: 1 addition & 1 deletion demos/middleware/pages/api/edge.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}

export default (req) => new Response('Hello world!')
8 changes: 5 additions & 3 deletions packages/runtime/src/helpers/analysis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const enum ApiRouteType {

export interface ApiStandardConfig {
type?: never
runtime?: 'nodejs' | 'experimental-edge'
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
schedule?: never
}

Expand All @@ -29,6 +29,8 @@ export interface ApiBackgroundConfig {

export type ApiConfig = ApiStandardConfig | ApiScheduledConfig | ApiBackgroundConfig

export const isEdgeConfig = (config: string) => ['experimental-edge', 'edge'].includes(config)

export const validateConfigValue = (config: ApiConfig, apiFilePath: string): config is ApiConfig => {
if (config.type === ApiRouteType.SCHEDULED) {
if (!config.schedule) {
Expand All @@ -39,7 +41,7 @@ export const validateConfigValue = (config: ApiConfig, apiFilePath: string): con
)
return false
}
if ((config as ApiConfig).runtime === 'experimental-edge') {
if (isEdgeConfig((config as ApiConfig).runtime)) {
console.error(
`Invalid config value in ${relative(
process.cwd(),
Expand All @@ -60,7 +62,7 @@ export const validateConfigValue = (config: ApiConfig, apiFilePath: string): con
)
return false
}
if (config.type && (config as ApiConfig).runtime === 'experimental-edge') {
if (config.type && isEdgeConfig((config as ApiConfig).runtime)) {
console.error(
`Invalid config value in ${relative(
process.cwd(),
Expand Down
4 changes: 2 additions & 2 deletions packages/runtime/src/helpers/functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { getApiHandler } from '../templates/getApiHandler'
import { getHandler } from '../templates/getHandler'
import { getResolverForPages, getResolverForSourceFiles } from '../templates/getPageResolver'

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

for (const { route, config, compiled } of apiRoutes) {
// Don't write a lambda if the runtime is edge
if (config.runtime === 'experimental-edge') {
if (isEdgeConfig(config.runtime)) {
continue
}
const apiHandlerSource = await getApiHandler({
Expand Down
2 changes: 1 addition & 1 deletion test/e2e/app-dir/app-edge-global/next.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module.exports = {
experimental: {
appDir: true,
runtime: 'experimental-edge',
runtime: 'edge',
},
}
2 changes: 1 addition & 1 deletion test/e2e/app-dir/app-edge/app/app-edge/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ export default function Page() {
return <p>Node!</p>
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
2 changes: 1 addition & 1 deletion test/e2e/app-dir/app-edge/pages/pages-edge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ export default function Page() {
return <p>pages-edge-ssr</p>
}

export const config = { runtime: 'experimental-edge' }
export const config = { runtime: 'edge' }
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}

export default (req) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ export default function HelloPage(props) {
)
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
2 changes: 1 addition & 1 deletion test/e2e/app-dir/app/app/dashboard/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ export default function DashboardPage(props) {
)
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
2 changes: 1 addition & 1 deletion test/e2e/app-dir/app/app/edge-apis/cookies/page.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { cookies } from 'next/headers'

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

export default function Page() {
cookies()
Expand Down
2 changes: 1 addition & 1 deletion test/e2e/app-dir/app/app/slow-page-no-loading/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ export default function SlowPage(props) {
return <h1 id="slow-page-message">{data.message}</h1>
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
2 changes: 1 addition & 1 deletion test/e2e/app-dir/app/app/slow-page-with-loading/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ export default function SlowPage(props) {
return <h1 id="slow-page-message">{data.message}</h1>
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
2 changes: 1 addition & 1 deletion test/e2e/app-dir/app/pages/api/hello.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ export default function api(req) {
}

export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}
2 changes: 1 addition & 1 deletion test/e2e/app-dir/next-font/app/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ export default function HomePage() {
)
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
2 changes: 1 addition & 1 deletion test/e2e/app-dir/next-image/app/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ export default function Page() {
)
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
2 changes: 1 addition & 1 deletion test/e2e/app-dir/rsc-basic/app/edge/dynamic/[id]/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ export default function page() {
return 'dynamic route [id] page'
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
2 changes: 1 addition & 1 deletion test/e2e/app-dir/rsc-basic/app/edge/dynamic/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ export default function page() {
return 'dynamic route index page'
}

export const runtime = 'experimental-edge'
export const runtime = 'edge'
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}

export default function Page(props) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}

export default function Page(props) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}

export default (req) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ describe('edge api endpoints can use wasm files', () => {
const value = await increment(input);
return new Response(null, { headers: { data: JSON.stringify({ input, value }) } });
}
export const config = { runtime: 'experimental-edge' };
export const config = { runtime: 'edge' };
`,
'src/add.wasm': new FileRef(path.join(__dirname, './add.wasm')),
'src/add.js': `
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export const config = { runtime: 'experimental-edge' }
export const config = { runtime: 'edge' }

/**
* @param {import('next/server').NextRequest} req
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { NextResponse } from 'next/server'

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

/**
* @param {import('next/server').NextRequest}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NextResponse } from 'next/server'

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

export default function handler(req) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ export default async function handler() {
}

export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ export default function Page() {
)
}

export const config = { runtime: 'experimental-edge' }
export const config = { runtime: 'edge' }
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ export default function Page() {
)
}

export const config = { runtime: 'experimental-edge' }
export const config = { runtime: 'edge' }
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ export default function Page() {
)
}

export const config = { runtime: 'experimental-edge' }
export const config = { runtime: 'edge' }
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ export default () => {
}

export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ export default async (req) => {
}

export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ export default async (req) => {
}

export const config = {
runtime: 'experimental-edge',
runtime: 'edge',
}
4 changes: 2 additions & 2 deletions test/e2e/tests/og-api/app/pages/api/og.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { ImageResponse } from '@vercel/og'

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

export default function () {
Expand All @@ -21,6 +21,6 @@ export default function () {
>
Hello!
</div>
)
),
)
}
2 changes: 1 addition & 1 deletion test/fixtures/analysis/background-edge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ export default (req, res) => {

export const config = {
type: 'experimental-background',
runtime: 'experimental-edge',
runtime: 'edge',
}
2 changes: 1 addition & 1 deletion test/fixtures/analysis/scheduled-edge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ export default (req, res) => {
export const config = {
type: 'experimental-scheduled',
schedule: '@daily',
runtime: 'experimental-edge',
runtime: 'edge',
}