diff --git a/packages/next/build/analysis/get-page-static-info.ts b/packages/next/build/analysis/get-page-static-info.ts index 1afb4e062538f3a..3e6c4de580e6782 100644 --- a/packages/next/build/analysis/get-page-static-info.ts +++ b/packages/next/build/analysis/get-page-static-info.ts @@ -13,6 +13,7 @@ import { SERVER_RUNTIME } from '../../lib/constants' import { ServerRuntime } from 'next/types' import { checkCustomRoutes } from '../../lib/load-custom-routes' import { matcher } from 'next/dist/compiled/micromatch' +import { RSC_MODULE_TYPES } from '../../shared/lib/constants' export interface MiddlewareConfig { matchers: MiddlewareMatcher[] @@ -29,9 +30,18 @@ export interface PageStaticInfo { runtime?: ServerRuntime ssg?: boolean ssr?: boolean + rsc?: RSCModuleType middleware?: Partial } +const CLIENT_MODULE_LABEL = `/* __next_internal_client_entry_do_not_use__ */` +export type RSCModuleType = 'server' | 'client' +export function getRSCModuleType(source: string): RSCModuleType { + return source.includes(CLIENT_MODULE_LABEL) + ? RSC_MODULE_TYPES.client + : RSC_MODULE_TYPES.server +} + /** * Receives a parsed AST from SWC and checks if it belongs to a module that * requires a runtime to be specified. Those are: @@ -252,6 +262,7 @@ export async function getPageStaticInfo(params: { ) { const swcAST = await parseModule(pageFilePath, fileContent) const { ssg, ssr } = checkExports(swcAST) + const rsc = getRSCModuleType(fileContent) // default / failsafe value for config let config: any = {} @@ -303,10 +314,16 @@ export async function getPageStaticInfo(params: { return { ssr, ssg, + rsc, ...(middlewareConfig && { middleware: middlewareConfig }), ...(runtime && { runtime }), } } - return { ssr: false, ssg: false, runtime: nextConfig.experimental?.runtime } + return { + ssr: false, + ssg: false, + rsc: RSC_MODULE_TYPES.server, + runtime: nextConfig.experimental?.runtime, + } } diff --git a/packages/next/build/entries.ts b/packages/next/build/entries.ts index aeb86af4f849e84..2fc0253ba59a679 100644 --- a/packages/next/build/entries.ts +++ b/packages/next/build/entries.ts @@ -21,6 +21,7 @@ import { SERVER_RUNTIME, WEBPACK_LAYERS, } from '../lib/constants' +import { RSC_MODULE_TYPES } from '../shared/lib/constants' import { CLIENT_STATIC_FILES_RUNTIME_AMP, CLIENT_STATIC_FILES_RUNTIME_MAIN, @@ -37,14 +38,12 @@ import { warn } from './output/log' import { isMiddlewareFile, isMiddlewareFilename, - isServerComponentPage, NestedMiddlewareError, MiddlewareInServerlessTargetError, } from './utils' import { getPageStaticInfo } from './analysis/get-page-static-info' import { normalizePathSep } from '../shared/lib/page-path/normalize-path-sep' import { normalizePagePath } from '../shared/lib/page-path/normalize-page-path' -import { serverComponentRegex } from './webpack/loaders/utils' import { ServerRuntime } from '../types' import { normalizeAppPath } from '../shared/lib/router/utils/app-paths' import { encodeMatchers } from './webpack/loaders/next-middleware-loader' @@ -66,14 +65,12 @@ export function getPageFromPath(pagePath: string, pageExtensions: string[]) { } export function createPagesMapping({ - hasServerComponents, isDev, pageExtensions, pagePaths, pagesType, pagesDir, }: { - hasServerComponents: boolean isDev: boolean pageExtensions: string[] pagePaths: string[] @@ -90,13 +87,6 @@ export function createPagesMapping({ const pageKey = getPageFromPath(pagePath, pageExtensions) - // Assume that if there's a Client Component, that there is - // a matching Server Component that will map to the page. - // so we will not process it - if (hasServerComponents && /\.client$/.test(pageKey)) { - return result - } - if (pageKey in result) { warn( `Duplicate page detected. ${chalk.cyan( @@ -208,10 +198,7 @@ export function getEdgeServerEntry(opts: { absolutePagePath: opts.absolutePagePath, buildId: opts.buildId, dev: opts.isDev, - isServerComponent: isServerComponentPage( - opts.config, - opts.absolutePagePath - ), + isServerComponent: opts.isServerComponent, page: opts.page, stringifiedConfig: JSON.stringify(opts.config), pagesType: opts.pagesType, @@ -418,8 +405,10 @@ export async function createEntrypoints(params: CreateEntrypointsParams) { nestedMiddleware.push(page) } - const isServerComponent = serverComponentRegex.test(absolutePagePath) - const isInsideAppDir = appDir && absolutePagePath.startsWith(appDir) + const isInsideAppDir = + !!appDir && + (absolutePagePath.startsWith(APP_DIR_ALIAS) || + absolutePagePath.startsWith(appDir)) const staticInfo = await getPageStaticInfo({ nextConfig: config, @@ -428,6 +417,9 @@ export async function createEntrypoints(params: CreateEntrypointsParams) { page, }) + const isServerComponent = + isInsideAppDir && staticInfo.rsc !== RSC_MODULE_TYPES.client + if (isMiddlewareFile(page)) { middlewareMatchers = staticInfo.middleware?.matchers ?? [ { regexp: '.*' }, diff --git a/packages/next/build/index.ts b/packages/next/build/index.ts index 32786ae48f07732..71556653452f36f 100644 --- a/packages/next/build/index.ts +++ b/packages/next/build/index.ts @@ -58,6 +58,7 @@ import { COMPILER_NAMES, APP_BUILD_MANIFEST, FLIGHT_SERVER_CSS_MANIFEST, + RSC_MODULE_TYPES, } from '../shared/lib/constants' import { getSortedRoutes, isDynamicRoute } from '../shared/lib/router/utils' import { __ApiPreviewProps } from '../server/api-utils' @@ -96,7 +97,6 @@ import { printTreeView, copyTracedFiles, isReservedPage, - isServerComponentPage, } from './utils' import getBaseWebpackConfig from './webpack-config' import { PagesManifest } from './webpack/plugins/pages-manifest-plugin' @@ -489,7 +489,6 @@ export default async function build( .traceChild('create-pages-mapping') .traceFn(() => createPagesMapping({ - hasServerComponents, isDev: false, pageExtensions: config.pageExtensions, pagesType: 'pages', @@ -506,7 +505,6 @@ export default async function build( .traceFn(() => createPagesMapping({ pagePaths: appPaths!, - hasServerComponents, isDev: false, pagesType: 'app', pageExtensions: config.pageExtensions, @@ -518,7 +516,6 @@ export default async function build( let mappedRootPaths: { [page: string]: string } = {} if (rootPaths.length > 0) { mappedRootPaths = createPagesMapping({ - hasServerComponents, isDev: false, pageExtensions: config.pageExtensions, pagePaths: rootPaths, @@ -1267,21 +1264,17 @@ export default async function build( ) : appPaths?.find((p) => p.startsWith(actualPage + '/page.')) - const pageRuntime = + const staticInfo = pagesDir && pageType === 'pages' && pagePath - ? ( - await getPageStaticInfo({ - pageFilePath: join(pagesDir, pagePath), - nextConfig: config, - }) - ).runtime - : undefined - - if (hasServerComponents && pagePath) { - if (isServerComponentPage(config, pagePath)) { - isServerComponent = true - } - } + ? await getPageStaticInfo({ + pageFilePath: join(pagesDir, pagePath), + nextConfig: config, + }) + : {} + const pageRuntime = staticInfo.runtime + isServerComponent = + pageType === 'app' && + staticInfo.rsc !== RSC_MODULE_TYPES.client if ( // Only calculate page static information if the page is not an diff --git a/packages/next/build/utils.ts b/packages/next/build/utils.ts index 5e04a963c108d3b..9d7c3992dfcc636 100644 --- a/packages/next/build/utils.ts +++ b/packages/next/build/utils.ts @@ -1327,33 +1327,6 @@ export function detectConflictingPaths( } } -/** - * With RSC we automatically add .server and .client to page extensions. This - * function allows to remove them for cases where we just need to strip out - * the actual extension keeping the .server and .client. - */ -export function withoutRSCExtensions(pageExtensions: string[]): string[] { - return pageExtensions.filter( - (ext) => !ext.startsWith('client.') && !ext.startsWith('server.') - ) -} - -export function isServerComponentPage( - nextConfig: NextConfigComplete, - filePath: string -): boolean { - if (!nextConfig.experimental.serverComponents) { - return false - } - - const rawPageExtensions = withoutRSCExtensions( - nextConfig.pageExtensions || [] - ) - return rawPageExtensions.some((ext) => { - return filePath.endsWith(`.server.${ext}`) - }) -} - export async function copyTracedFiles( dir: string, distDir: string, diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 5c505d69e215663..19ab7857164b7d3 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -56,7 +56,6 @@ import type { } from './webpack/plugins/telemetry-plugin' import type { Span } from '../trace' import type { MiddlewareMatcher } from './analysis/get-page-static-info' -import { withoutRSCExtensions } from './utils' import browserslist from 'next/dist/compiled/browserslist' import loadJsConfig from './load-jsconfig' import { loadBindings } from './swc' @@ -687,13 +686,7 @@ export default async function getBaseWebpackConfig( babel: getBabelOrSwcLoader(), } - const rawPageExtensions = hasServerComponents - ? withoutRSCExtensions(config.pageExtensions) - : config.pageExtensions - - const serverComponentsRegex = new RegExp( - `\\.server\\.(${rawPageExtensions.join('|')})$` - ) + const pageExtensions = config.pageExtensions const babelIncludeRegexes: RegExp[] = [ /next[\\/]dist[\\/]shared[\\/]lib/, @@ -801,7 +794,7 @@ export default async function getBaseWebpackConfig( if (dev) { customAppAliases[`${PAGES_DIR_ALIAS}/_app`] = [ ...(pagesDir - ? rawPageExtensions.reduce((prev, ext) => { + ? pageExtensions.reduce((prev, ext) => { prev.push(path.join(pagesDir, `_app.${ext}`)) return prev }, [] as string[]) @@ -810,7 +803,7 @@ export default async function getBaseWebpackConfig( ] customAppAliases[`${PAGES_DIR_ALIAS}/_error`] = [ ...(pagesDir - ? rawPageExtensions.reduce((prev, ext) => { + ? pageExtensions.reduce((prev, ext) => { prev.push(path.join(pagesDir, `_error.${ext}`)) return prev }, [] as string[]) @@ -819,7 +812,7 @@ export default async function getBaseWebpackConfig( ] customDocumentAliases[`${PAGES_DIR_ALIAS}/_document`] = [ ...(pagesDir - ? rawPageExtensions.reduce((prev, ext) => { + ? pageExtensions.reduce((prev, ext) => { prev.push(path.join(pagesDir, `_document.${ext}`)) return prev }, [] as string[]) @@ -874,7 +867,7 @@ export default async function getBaseWebpackConfig( ...getReactProfilingInProduction(), [RSC_MOD_REF_PROXY_ALIAS]: - 'next/dist/build/webpack/loaders/next-flight-client-loader/module-proxy', + 'next/dist/build/webpack/loaders/next-flight-loader/module-proxy', ...(isClient || isEdgeServer ? { @@ -1151,11 +1144,6 @@ export default async function getBaseWebpackConfig( }, } - const serverComponentCodeCondition = { - test: serverComponentsRegex, - include: [dir, /next[\\/]dist[\\/]pages/], - } - const rscSharedRegex = /(node_modules\/react\/|\/shared\/lib\/(head-manager-context|router-context|flush-effects)\.js|node_modules\/styled-jsx\/)/ @@ -1451,8 +1439,7 @@ export default async function getBaseWebpackConfig( 'next-image-loader', 'next-serverless-loader', 'next-style-loader', - 'next-flight-client-loader', - 'next-flight-server-loader', + 'next-flight-loader', 'next-flight-client-entry-loader', 'noop-loader', 'next-middleware-loader', @@ -1492,24 +1479,17 @@ export default async function getBaseWebpackConfig( ? [ // RSC server compilation loaders { - ...serverComponentCodeCondition, + test: codeCondition.test, + include: [ + dir, + // To let the internal client components passing through flight loader + /next[\\/]dist[\\/]client[\\/]/, + ], issuerLayer: WEBPACK_LAYERS.server, use: { - loader: 'next-flight-server-loader', + loader: 'next-flight-loader', }, }, - // { - // test: clientComponentRegex, - // issuerLayer: WEBPACK_LAYERS.server, - // use: { - // loader: 'next-flight-client-loader', - // }, - // }, - // _app should be treated as a client component as well as all its dependencies. - { - test: new RegExp(`_app\\.(${rawPageExtensions.join('|')})$`), - layer: WEBPACK_LAYERS.client, - }, ] : [] : []), @@ -1841,11 +1821,10 @@ export default async function getBaseWebpackConfig( isClient && new AppBuildManifestPlugin({ dev }), hasServerComponents && + !!config.experimental.appDir && (isClient ? new FlightManifestPlugin({ dev, - appDir: !!config.experimental.appDir, - pageExtensions: rawPageExtensions, }) : new FlightClientEntryPlugin({ dev, @@ -1995,7 +1974,7 @@ export default async function getBaseWebpackConfig( const configVars = JSON.stringify({ crossOrigin: config.crossOrigin, - pageExtensions: rawPageExtensions, + pageExtensions: pageExtensions, trailingSlash: config.trailingSlash, buildActivity: config.devIndicators.buildActivity, buildActivityPosition: config.devIndicators.buildActivityPosition, diff --git a/packages/next/build/webpack/config/blocks/css/index.ts b/packages/next/build/webpack/config/blocks/css/index.ts index 011615134b04fbb..5b81ffc7da103d9 100644 --- a/packages/next/build/webpack/config/blocks/css/index.ts +++ b/packages/next/build/webpack/config/blocks/css/index.ts @@ -501,7 +501,7 @@ export const css = curry(async function css( // If it's inside the app dir, but not importing from a layout file, // throw an error. and: [ctx.rootDirectory], - not: [/layout(\.client|\.server)?\.(js|mjs|jsx|ts|tsx)$/], + not: [/layout\.(js|mjs|jsx|ts|tsx)$/], } : undefined, use: { diff --git a/packages/next/build/webpack/loaders/get-module-build-info.ts b/packages/next/build/webpack/loaders/get-module-build-info.ts index 848399cd32a07f0..bd3dd8a32b31a92 100644 --- a/packages/next/build/webpack/loaders/get-module-build-info.ts +++ b/packages/next/build/webpack/loaders/get-module-build-info.ts @@ -1,4 +1,7 @@ -import type { MiddlewareMatcher } from '../../analysis/get-page-static-info' +import type { + MiddlewareMatcher, + RSCModuleType, +} from '../../analysis/get-page-static-info' import { webpack } from 'next/dist/compiled/webpack/webpack' /** @@ -17,9 +20,15 @@ export function getModuleBuildInfo(webpackModule: webpack.Module) { route?: RouteMeta importLocByPath?: Map rootDir?: string + rsc?: RSCMeta } } +export interface RSCMeta { + type?: RSCModuleType + requests?: string[] // client requests in flight client entry +} + export interface RouteMeta { page: string absolutePagePath: string diff --git a/packages/next/build/webpack/loaders/next-client-pages-loader.ts b/packages/next/build/webpack/loaders/next-client-pages-loader.ts index b01a8ec6342a7ec..0cd1cf277830ac6 100644 --- a/packages/next/build/webpack/loaders/next-client-pages-loader.ts +++ b/packages/next/build/webpack/loaders/next-client-pages-loader.ts @@ -3,7 +3,6 @@ import { stringifyRequest } from '../stringify-request' export type ClientPagesLoaderOptions = { absolutePagePath: string page: string - isServerComponent?: boolean } // this parameter: https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters @@ -13,14 +12,12 @@ function nextClientPagesLoader(this: any) { ) return pagesLoaderSpan.traceFn(() => { - const { absolutePagePath, page, isServerComponent } = + const { absolutePagePath, page } = this.getOptions() as ClientPagesLoaderOptions pagesLoaderSpan.setAttribute('absolutePagePath', absolutePagePath) - const stringifiedPageRequest = isServerComponent - ? JSON.stringify(absolutePagePath + '!') - : stringifyRequest(this, absolutePagePath) + const stringifiedPageRequest = stringifyRequest(this, absolutePagePath) const stringifiedPage = JSON.stringify(page) return ` diff --git a/packages/next/build/webpack/loaders/next-edge-ssr-loader/index.ts b/packages/next/build/webpack/loaders/next-edge-ssr-loader/index.ts index cd47aadac3117d6..1a1dc07d23106f4 100644 --- a/packages/next/build/webpack/loaders/next-edge-ssr-loader/index.ts +++ b/packages/next/build/webpack/loaders/next-edge-ssr-loader/index.ts @@ -118,7 +118,7 @@ export default async function edgeSSRLoader(this: any) { config: ${stringifiedConfig}, buildId: ${JSON.stringify(buildId)}, }) - + export const ComponentMod = pageMod export default function(opts) { diff --git a/packages/next/build/webpack/loaders/next-flight-client-entry-loader.ts b/packages/next/build/webpack/loaders/next-flight-client-entry-loader.ts index c2fdce03388f140..8a24db9e083bb31 100644 --- a/packages/next/build/webpack/loaders/next-flight-client-entry-loader.ts +++ b/packages/next/build/webpack/loaders/next-flight-client-entry-loader.ts @@ -1,3 +1,6 @@ +import { RSC_MODULE_TYPES } from '../../../shared/lib/constants' +import { getModuleBuildInfo } from './get-module-build-info' + export type ClientComponentImports = string[] export type CssImports = Record @@ -37,5 +40,11 @@ export default async function transformSource(this: any): Promise { export default function RSC() {}; ` + const buildInfo = getModuleBuildInfo(this._module) + buildInfo.rsc = { + type: RSC_MODULE_TYPES.client, + requests, + } + return code } diff --git a/packages/next/build/webpack/loaders/next-flight-client-loader/index.ts b/packages/next/build/webpack/loaders/next-flight-client-loader/index.ts deleted file mode 100644 index ba20bbb722290fe..000000000000000 --- a/packages/next/build/webpack/loaders/next-flight-client-loader/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import path from 'path' -import { checkExports } from '../../../analysis/get-page-static-info' -import { parse } from '../../../swc' - -function containsPath(parent: string, child: string) { - const relation = path.relative(parent, child) - return !!relation && !relation.startsWith('..') && !path.isAbsolute(relation) -} - -export default async function transformSource( - this: any, - source: string, - map: any -) { - if (typeof source !== 'string') { - throw new Error('Expected source to have been transformed to a string.') - } - - const callback = this.async() - const appDir = path.join(this.rootContext, 'app') - const isUnderAppDir = containsPath(appDir, this.resourcePath) - const filename = path.basename(this.resourcePath) - const isPageOrLayoutFile = /^(page|layout)\.client\.\w+$/.test(filename) - - const createError = (name: string) => - new Error( - `${name} is not supported in client components.\nFrom: ${this.resourcePath}` - ) - - if (isUnderAppDir && isPageOrLayoutFile) { - const swcAST = await parse(source, { - filename: this.resourcePath, - isModule: 'unknown', - }) - const { ssg, ssr } = checkExports(swcAST) - if (ssg) { - this.emitError(createError('getStaticProps')) - } - if (ssr) { - this.emitError(createError('getServerSideProps')) - } - } - - const output = ` -const { createProxy } = require("private-next-rsc-mod-ref-proxy")\n -module.exports = createProxy(${JSON.stringify(this.resourcePath)}) -` - // Pass empty sourcemap - callback(null, output, map) - return -} diff --git a/packages/next/build/webpack/loaders/next-flight-loader/index.ts b/packages/next/build/webpack/loaders/next-flight-loader/index.ts new file mode 100644 index 000000000000000..2b44a52d3f0ae00 --- /dev/null +++ b/packages/next/build/webpack/loaders/next-flight-loader/index.ts @@ -0,0 +1,79 @@ +import path from 'path' +import { RSC_MODULE_TYPES } from '../../../../shared/lib/constants' +import { + checkExports, + getRSCModuleType, +} from '../../../analysis/get-page-static-info' +import { parse } from '../../../swc' +import { getModuleBuildInfo } from '../get-module-build-info' + +function transformServer(source: string, isESModule: boolean) { + return ( + source + + (isESModule ? `export const __next_rsc__` : `exports.__next_rsc__`) + + ` = { __webpack_require__, server: true }\n` + ) +} + +function containsPath(parent: string, child: string) { + const relation = path.relative(parent, child) + return !!relation && !relation.startsWith('..') && !path.isAbsolute(relation) +} + +const isPageOrLayoutFile = (filePath: string) => { + const filename = path.basename(filePath) + return /[\\/]?(page|layout)\.(js|ts)x?$/.test(filename) +} + +export default async function transformSource( + this: any, + source: string, + sourceMap: any +) { + // Avoid buffer to be consumed + if (typeof source !== 'string') { + throw new Error('Expected source to have been transformed to a string.') + } + + const { resourcePath } = this + const callback = this.async() + const buildInfo = getModuleBuildInfo(this._module) + const swcAST = await parse(source, { + filename: resourcePath, + isModule: 'unknown', + }) + + const rscType = getRSCModuleType(source) + const isModule = swcAST.type === 'Module' + const createError = (name: string) => + new Error( + `${name} is not supported in client components.\nFrom: ${this.resourcePath}` + ) + const appDir = path.join(this.rootContext, 'app') + const isUnderAppDir = containsPath(appDir, this.resourcePath) + const isResourcePageOrLayoutFile = isPageOrLayoutFile(this.resourcePath) + // If client entry has any gSSP/gSP data fetching methods, error + function errorForInvalidDataFetching(onError: (error: any) => void) { + if (isUnderAppDir && isResourcePageOrLayoutFile) { + const { ssg, ssr } = checkExports(swcAST) + if (ssg) { + onError(createError('getStaticProps')) + } + if (ssr) { + onError(createError('getServerSideProps')) + } + } + } + + // Assign the RSC meta information to buildInfo. + // Exclude next internal files which are not marked as client files + buildInfo.rsc = { type: rscType } + + if (buildInfo.rsc?.type === RSC_MODULE_TYPES.client) { + errorForInvalidDataFetching(this.emitError) + return callback(null, source, sourceMap) + } + + const code = transformServer(source, isModule) + return callback(null, code, sourceMap) +} diff --git a/packages/next/build/webpack/loaders/next-flight-client-loader/module-proxy.ts b/packages/next/build/webpack/loaders/next-flight-loader/module-proxy.ts similarity index 100% rename from packages/next/build/webpack/loaders/next-flight-client-loader/module-proxy.ts rename to packages/next/build/webpack/loaders/next-flight-loader/module-proxy.ts diff --git a/packages/next/build/webpack/loaders/next-flight-server-loader.ts b/packages/next/build/webpack/loaders/next-flight-server-loader.ts deleted file mode 100644 index ef0efd4001f18e6..000000000000000 --- a/packages/next/build/webpack/loaders/next-flight-server-loader.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { parse } from '../../swc' - -export default async function transformSource( - this: any, - source: string -): Promise { - const { resourcePath } = this - - const ast = await parse(source, { - filename: resourcePath, - isModule: 'unknown', - }) - const isModule = ast.type === 'Module' - - return ( - source + - (isModule - ? ` - export const __next_rsc__ = { - __webpack_require__, - server: true - } - ` - : ` - exports.__next_rsc__ = { - __webpack_require__, - server: true - } - `) - ) -} diff --git a/packages/next/build/webpack/loaders/utils.ts b/packages/next/build/webpack/loaders/utils.ts index 1bc58a101c1fb87..e2cec1a02125022 100644 --- a/packages/next/build/webpack/loaders/utils.ts +++ b/packages/next/build/webpack/loaders/utils.ts @@ -1,7 +1,5 @@ -import { getPageStaticInfo } from '../../analysis/get-page-static-info' +import { RSC_MODULE_TYPES } from '../../../shared/lib/constants' -export const defaultJsFileExtensions = ['js', 'mjs', 'jsx', 'ts', 'tsx'] -const imageExtensions = ['jpg', 'jpeg', 'png', 'webp', 'avif'] const nextClientComponents = [ 'dist/client/link', 'dist/client/image', @@ -11,46 +9,26 @@ const nextClientComponents = [ 'dist/shared/lib/dynamic', ] -export function buildExports(moduleExports: any, isESM: boolean) { - let ret = '' - Object.keys(moduleExports).forEach((key) => { - const exportExpression = isESM - ? `export ${key === 'default' ? key : `const ${key} =`} ${ - moduleExports[key] - }` - : `exports.${key} = ${moduleExports[key]}` - - ret += exportExpression + '\n' - }) - return ret -} +const imageExtensions = ['jpg', 'jpeg', 'png', 'webp', 'avif'] +const imageRegex = new RegExp(`\\.(${imageExtensions.join('|')})$`) -// Special cases for Next.js APIs that are considered as client components: -// - .client.[ext] -// - next built-in client components -// - .[imageExt] -export const clientComponentRegex = new RegExp( - '(' + - `\\.client(\\.(${defaultJsFileExtensions.join('|')}))?|` + - `next[\\\\/](${nextClientComponents.join('|')})(\\.js)?|` + - `\\.(${imageExtensions.join('|')})` + - ')$' +const NEXT_API_CLIENT_RSC_REGEX = new RegExp( + `next[\\\\/](${nextClientComponents.join('|')})(\\.js)?` ) -export const serverComponentRegex = new RegExp( - `\\.server(\\.(${defaultJsFileExtensions.join('|')}))?$` -) +// Cover resource paths like `next/dist/client/*` +export function isNextBuiltInClientComponent(resource: string) { + return NEXT_API_CLIENT_RSC_REGEX.test(resource) +} -export async function loadEdgeFunctionConfigFromFile( - absolutePagePath: string, - resolve: (context: string, request: string) => Promise -) { - const pageFilePath = await resolve('/', absolutePagePath) +export function isClientComponentModule(mod: { + resource: string + buildInfo: any +}) { + const hasClientDirective = mod.buildInfo.rsc?.type === RSC_MODULE_TYPES.client return ( - await getPageStaticInfo({ - nextConfig: {}, - pageFilePath, - isDev: false, - }) - ).middleware + isNextBuiltInClientComponent(mod.resource) || + hasClientDirective || + imageRegex.test(mod.resource) + ) } diff --git a/packages/next/build/webpack/plugins/flight-client-entry-plugin.ts b/packages/next/build/webpack/plugins/flight-client-entry-plugin.ts index fc873e08e0a52e6..c4cb536d04afb0f 100644 --- a/packages/next/build/webpack/plugins/flight-client-entry-plugin.ts +++ b/packages/next/build/webpack/plugins/flight-client-entry-plugin.ts @@ -1,7 +1,6 @@ import { stringify } from 'querystring' import path from 'path' import { webpack, sources } from 'next/dist/compiled/webpack/webpack' -import { clientComponentRegex } from '../loaders/utils' import { getInvalidator, entries, @@ -18,6 +17,7 @@ import { FLIGHT_SERVER_CSS_MANIFEST, } from '../../../shared/lib/constants' import { FlightCSSManifest } from './flight-manifest-plugin' +import { isClientComponentModule } from '../loaders/utils' interface Options { dev: boolean @@ -131,10 +131,7 @@ export class FlightClientEntryPlugin { : layoutOrPageRequest // Replace file suffix as `.js` will be added. - const bundlePath = relativeRequest.replace( - /(\.server|\.client)?\.(js|ts)x?$/, - '' - ) + const bundlePath = relativeRequest.replace(/\.(js|ts)x?$/, '') promises.push( this.injectClientEntryAndSSRModules({ @@ -240,7 +237,7 @@ export class FlightClientEntryPlugin { visitedBySegment[layoutOrPageRequest].add(modRequest) const isCSS = regexCSS.test(modRequest) - const isClientComponent = clientComponentRegex.test(modRequest) + const isClientComponent = isClientComponentModule(mod) if (isCSS) { serverCSSImports[layoutOrPageRequest] = diff --git a/packages/next/build/webpack/plugins/flight-manifest-plugin.ts b/packages/next/build/webpack/plugins/flight-manifest-plugin.ts index a7c32f98293fe82..f4996c20d81cdaf 100644 --- a/packages/next/build/webpack/plugins/flight-manifest-plugin.ts +++ b/packages/next/build/webpack/plugins/flight-manifest-plugin.ts @@ -7,8 +7,8 @@ import { webpack, sources } from 'next/dist/compiled/webpack/webpack' import { FLIGHT_MANIFEST } from '../../../shared/lib/constants' -import { clientComponentRegex } from '../loaders/utils' import { relative } from 'path' +import { isClientComponentModule } from '../loaders/utils' // This is the module that will be used to anchor all client references to. // I.e. it will have all the client files as async deps from this point on. @@ -19,8 +19,6 @@ import { relative } from 'path' interface Options { dev: boolean - appDir: boolean - pageExtensions: string[] } /** @@ -64,13 +62,9 @@ const PLUGIN_NAME = 'FlightManifestPlugin' export class FlightManifestPlugin { dev: Options['dev'] = false - pageExtensions: Options['pageExtensions'] - appDir: Options['appDir'] = false constructor(options: Options) { this.dev = options.dev - this.appDir = options.appDir - this.pageExtensions = options.pageExtensions } apply(compiler: webpack.Compiler) { @@ -109,9 +103,36 @@ export class FlightManifestPlugin { const manifest: FlightManifest = { __ssr_module_mapping__: {}, } - const appDir = this.appDir const dev = this.dev + const clientRequestsSet = new Set() + + // Collect client requests + function collectClientRequest(mod: webpack.NormalModule) { + if (mod.resource === '' && mod.buildInfo.rsc) { + const { requests = [] } = mod.buildInfo.rsc + requests.forEach((r: string) => { + clientRequestsSet.add(require.resolve(r)) + }) + } + } + + compilation.chunkGroups.forEach((chunkGroup) => { + chunkGroup.chunks.forEach((chunk: webpack.Chunk) => { + const chunkModules = compilation.chunkGraph.getChunkModulesIterable( + chunk + // TODO: Update type so that it doesn't have to be cast. + ) as Iterable + for (const mod of chunkModules) { + collectClientRequest(mod) + const anyModule = mod as any + if (anyModule.modules) { + for (const subMod of anyModule.modules) collectClientRequest(subMod) + } + } + }) + }) + compilation.chunkGroups.forEach((chunkGroup) => { const cssResourcesInChunkGroup = new Set() let entryFilepath: string = '' @@ -122,8 +143,9 @@ export class FlightManifestPlugin { mod: webpack.NormalModule ) { const isCSSModule = + mod.resource?.endsWith('.css') || mod.type === 'css/mini-extract' || - (mod.loaders && + (!!mod.loaders && (dev ? mod.loaders.some((item) => item.loader.includes('next-style-loader/index.js') @@ -138,7 +160,9 @@ export class FlightManifestPlugin { mod._identifier.slice(mod._identifier.lastIndexOf('!') + 1) : mod.resource - if (!resource) return + if (!resource) { + return + } const moduleExports = manifest[resource] || {} const moduleIdMapping = manifest.__ssr_module_mapping__ @@ -173,14 +197,13 @@ export class FlightManifestPlugin { return } - // TODO: Hook into deps instead of the target module. - // That way we know by the type of dep whether to include. - // It also resolves conflicts when the same module is in multiple chunks. - if (!clientComponentRegex.test(resource)) { + // Only apply following logic to client module requests from client entry, + // or if the module is marked as client module. + if (!clientRequestsSet.has(resource) && !isClientComponentModule(mod)) { return } - if (/\/(page|layout)\.client\.(ts|js)x?$/.test(resource)) { + if (/[\\/](page|layout)\.(ts|js)x?$/.test(resource)) { entryFilepath = resource } @@ -207,6 +230,17 @@ export class FlightManifestPlugin { ]), ] + function getAppPathRequiredChunks() { + return chunkGroup.chunks.map((requiredChunk: webpack.Chunk) => { + return ( + requiredChunk.id + + ':' + + (requiredChunk.name || requiredChunk.id) + + (dev ? '' : '-' + requiredChunk.hash) + ) + }) + } + const moduleExportedKeys = ['', '*'] .concat( [...exportsInfo.exports] @@ -217,29 +251,10 @@ export class FlightManifestPlugin { .filter((name) => name !== null) moduleExportedKeys.forEach((name) => { - let requiredChunks: ManifestChunks = [] - if (!moduleExports[name]) { - const isRelatedChunk = (c: webpack.Chunk) => { - // If current chunk is a page, it should require the related page chunk; - // If current chunk is a component, it should filter out the related page chunk; - return ( - chunk.name?.startsWith('pages/') || - !c.name?.startsWith('pages/') - ) - } - - if (appDir) { - requiredChunks = chunkGroup.chunks - .filter(isRelatedChunk) - .map((requiredChunk: webpack.Chunk) => { - return ( - requiredChunk.id + - ':' + - (requiredChunk.name || requiredChunk.id) + - (dev ? '' : '-' + requiredChunk.hash) - ) - }) - } + // If the chunk is from `app/` chunkGroup, use it first. + // This make sure not to load the overlapped chunk from `pages/` chunkGroup + if (!moduleExports[name] || chunkGroup.name?.startsWith('app/')) { + const requiredChunks = getAppPathRequiredChunks() moduleExports[name] = { id, @@ -249,11 +264,9 @@ export class FlightManifestPlugin { } moduleIdMapping[id] = moduleIdMapping[id] || {} - if (!moduleIdMapping[id][name]) { - moduleIdMapping[id][name] = { - ...moduleExports[name], - id: ssrNamedModuleId, - } + moduleIdMapping[id][name] = { + ...moduleExports[name], + id: ssrNamedModuleId, } }) diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index 0202abd6c455035..766d84d0e4269e7 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -25,7 +25,7 @@ import { FlightCSSManifest, FlightManifest, } from '../build/webpack/plugins/flight-manifest-plugin' -import { FlushEffectsContext } from '../client/components/hooks-client' +import { FlushEffectsContext } from '../shared/lib/flush-effects' import { stripInternalQueries } from './internal-utils' import type { ComponentsType } from '../build/webpack/loaders/next-app-loader' diff --git a/packages/next/server/dev/hot-reloader.ts b/packages/next/server/dev/hot-reloader.ts index c0b2ea637e37a4e..e4ebb99edcfad99 100644 --- a/packages/next/server/dev/hot-reloader.ts +++ b/packages/next/server/dev/hot-reloader.ts @@ -20,7 +20,11 @@ import * as Log from '../../build/output/log' import getBaseWebpackConfig from '../../build/webpack-config' import { APP_DIR_ALIAS } from '../../lib/constants' import { recursiveDelete } from '../../lib/recursive-delete' -import { BLOCKED_PAGES, COMPILER_NAMES } from '../../shared/lib/constants' +import { + BLOCKED_PAGES, + COMPILER_NAMES, + RSC_MODULE_TYPES, +} from '../../shared/lib/constants' import { __ApiPreviewProps } from '../api-utils' import { getPathMatch } from '../../shared/lib/router/utils/path-match' import { findPageFile } from '../lib/find-page-file' @@ -35,18 +39,13 @@ import { denormalizePagePath } from '../../shared/lib/page-path/denormalize-page import { normalizePathSep } from '../../shared/lib/page-path/normalize-path-sep' import getRouteFromEntrypoint from '../get-route-from-entrypoint' import { fileExists } from '../../lib/file-exists' -import { - difference, - withoutRSCExtensions, - isMiddlewareFilename, -} from '../../build/utils' +import { difference, isMiddlewareFilename } from '../../build/utils' import { DecodeError } from '../../shared/lib/utils' import { Span, trace } from '../../trace' import { getProperError } from '../../lib/is-error' import ws from 'next/dist/compiled/ws' import { promises as fs } from 'fs' import { getPageStaticInfo } from '../../build/analysis/get-page-static-info' -import { serverComponentRegex } from '../../build/webpack/loaders/utils' import { UnwrapPromise } from '../../lib/coalesced-function' function diff(a: Set, b: Set) { @@ -404,9 +403,7 @@ export default class HotReloader { private async getWebpackConfig(span: Span) { const webpackConfigSpan = span.traceChild('get-webpack-config') - const rawPageExtensions = this.hasServerComponents - ? withoutRSCExtensions(this.config.pageExtensions) - : this.config.pageExtensions + const pageExtensions = this.config.pageExtensions return webpackConfigSpan.traceAsyncFn(async () => { const pagePaths = !this.pagesDir @@ -415,11 +412,11 @@ export default class HotReloader { .traceChild('get-page-paths') .traceAsyncFn(() => Promise.all([ - findPageFile(this.pagesDir!, '/_app', rawPageExtensions, false), + findPageFile(this.pagesDir!, '/_app', pageExtensions, false), findPageFile( this.pagesDir!, '/_document', - rawPageExtensions, + pageExtensions, false ), ]) @@ -429,7 +426,6 @@ export default class HotReloader { .traceChild('create-pages-mapping') .traceFn(() => createPagesMapping({ - hasServerComponents: this.hasServerComponents, isDev: true, pageExtensions: this.config.pageExtensions, pagesType: 'pages', @@ -444,6 +440,7 @@ export default class HotReloader { .traceChild('create-entrypoints') .traceAsyncFn(() => createEntrypoints({ + appDir: this.appDir, buildId: this.buildId, config: this.config, envFiles: [], @@ -511,6 +508,7 @@ export default class HotReloader { isDevFallback: true, entrypoints: ( await createEntrypoints({ + appDir: this.appDir, buildId: this.buildId, config: this.config, envFiles: [], @@ -598,10 +596,7 @@ export default class HotReloader { } } - const isServerComponent = isEntry - ? serverComponentRegex.test(entryData.absolutePagePath) - : false - + const isAppPath = !!this.appDir && bundlePath.startsWith('app/') const staticInfo = isEntry ? await getPageStaticInfo({ pageFilePath: entryData.absolutePagePath, @@ -609,6 +604,8 @@ export default class HotReloader { isDev: true, }) : {} + const isServerComponent = + isAppPath && staticInfo.rsc !== RSC_MODULE_TYPES.client await runDependingOnPageType({ page, @@ -616,9 +613,8 @@ export default class HotReloader { onEdgeServer: () => { // TODO-APP: verify if child entry should support. if (!isEdgeServerCompilation || !isEntry) return - const isApp = this.appDir && bundlePath.startsWith('app/') const appDirLoader = - isApp && this.appDir + isAppPath && this.appDir ? getAppEntry({ name: bundlePath, appPaths: entryData.appPaths, @@ -649,7 +645,7 @@ export default class HotReloader { pages: this.pagesMapping, isServerComponent, appDirLoader, - pagesType: isApp ? 'app' : undefined, + pagesType: isAppPath ? 'app' : undefined, }), appDir: this.config.experimental.appDir, }) diff --git a/packages/next/server/dev/on-demand-entry-handler.ts b/packages/next/server/dev/on-demand-entry-handler.ts index 4784fcf4489f2b1..a564c71b2012212 100644 --- a/packages/next/server/dev/on-demand-entry-handler.ts +++ b/packages/next/server/dev/on-demand-entry-handler.ts @@ -12,7 +12,6 @@ import { ensureLeadingSlash } from '../../shared/lib/page-path/ensure-leading-sl import { removePagePathTail } from '../../shared/lib/page-path/remove-page-path-tail' import { reportTrigger } from '../../build/output' import getRouteFromEntrypoint from '../get-route-from-entrypoint' -import { serverComponentRegex } from '../../build/webpack/loaders/utils' import { getPageStaticInfo } from '../../build/analysis/get-page-static-info' import { isMiddlewareFile, isMiddlewareFilename } from '../../build/utils' import { PageNotFoundError } from '../../shared/lib/utils' @@ -21,6 +20,7 @@ import { CompilerNameValues, COMPILER_INDEXES, COMPILER_NAMES, + RSC_MODULE_TYPES, } from '../../shared/lib/constants' const debug = origDebug('next:on-demand-entry-handler') @@ -578,11 +578,8 @@ export function onDemandEntryHandler({ appDir ) - const isServerComponent = serverComponentRegex.test( - pagePathData.absolutePagePath - ) const isInsideAppDir = - appDir && pagePathData.absolutePagePath.startsWith(appDir) + !!appDir && pagePathData.absolutePagePath.startsWith(appDir) const addEntry = ( compilerType: CompilerNameValues @@ -636,6 +633,8 @@ export function onDemandEntryHandler({ }) const added = new Map>() + const isServerComponent = + isInsideAppDir && staticInfo.rsc !== RSC_MODULE_TYPES.client await runDependingOnPageType({ page: pagePathData.page, diff --git a/packages/next/shared/lib/constants.ts b/packages/next/shared/lib/constants.ts index f9f739ca36e0d02..fe527c83685e7ba 100644 --- a/packages/next/shared/lib/constants.ts +++ b/packages/next/shared/lib/constants.ts @@ -96,6 +96,11 @@ export const DEFAULT_SANS_SERIF_FONT = 'Arial' export const STATIC_STATUS_PAGES = ['/500'] export const TRACE_OUTPUT_VERSION = 1 +export const RSC_MODULE_TYPES = { + client: 'client', + server: 'server', +} as const + // comparing // https://nextjs.org/docs/api-reference/edge-runtime // with diff --git a/packages/next/taskfile-swc.js b/packages/next/taskfile-swc.js index 8699201451120c3..bf61332c316a809 100644 --- a/packages/next/taskfile-swc.js +++ b/packages/next/taskfile-swc.js @@ -114,7 +114,7 @@ module.exports = function (task) { // Make sure the output content keeps the `"client"` directive. // TODO: Remove this once SWC fixes the issue. - if (source.startsWith("'client'")) { + if (/^['"]client['"]/.test(source)) { output.code = '"client";\n' + output.code } diff --git a/test/e2e/app-dir/app-prefetch/app/dashboard/[id]/page.server.js b/test/e2e/app-dir/app-prefetch/app/dashboard/[id]/page.js similarity index 100% rename from test/e2e/app-dir/app-prefetch/app/dashboard/[id]/page.server.js rename to test/e2e/app-dir/app-prefetch/app/dashboard/[id]/page.js diff --git a/test/e2e/app-dir/app-prefetch/app/dashboard/layout.server.js b/test/e2e/app-dir/app-prefetch/app/dashboard/layout.js similarity index 100% rename from test/e2e/app-dir/app-prefetch/app/dashboard/layout.server.js rename to test/e2e/app-dir/app-prefetch/app/dashboard/layout.js diff --git a/test/e2e/app-dir/app-prefetch/app/dashboard/page.server.js b/test/e2e/app-dir/app-prefetch/app/dashboard/page.js similarity index 100% rename from test/e2e/app-dir/app-prefetch/app/dashboard/page.server.js rename to test/e2e/app-dir/app-prefetch/app/dashboard/page.js diff --git a/test/e2e/app-dir/app-prefetch/app/layout.server.js b/test/e2e/app-dir/app-prefetch/app/layout.js similarity index 100% rename from test/e2e/app-dir/app-prefetch/app/layout.server.js rename to test/e2e/app-dir/app-prefetch/app/layout.js diff --git a/test/e2e/app-dir/app-prefetch/app/page.server.js b/test/e2e/app-dir/app-prefetch/app/page.js similarity index 100% rename from test/e2e/app-dir/app-prefetch/app/page.server.js rename to test/e2e/app-dir/app-prefetch/app/page.js diff --git a/test/e2e/app-dir/app-prefetch/pages/.gitkeep b/test/e2e/app-dir/app-prefetch/pages/.gitkeep deleted file mode 100644 index e69de29bb2d1d64..000000000000000 diff --git a/test/e2e/app-dir/app-rendering/app/getserversideprops-only/layout.server.js b/test/e2e/app-dir/app-rendering/app/getserversideprops-only/layout.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getserversideprops-only/layout.server.js rename to test/e2e/app-dir/app-rendering/app/getserversideprops-only/layout.js diff --git a/test/e2e/app-dir/app-rendering/app/getserversideprops-only/nested/page.server.js b/test/e2e/app-dir/app-rendering/app/getserversideprops-only/nested/page.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getserversideprops-only/nested/page.server.js rename to test/e2e/app-dir/app-rendering/app/getserversideprops-only/nested/page.js diff --git a/test/e2e/app-dir/app-rendering/app/getserversideprops-only/slow/layout.server.js b/test/e2e/app-dir/app-rendering/app/getserversideprops-only/slow/layout.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getserversideprops-only/slow/layout.server.js rename to test/e2e/app-dir/app-rendering/app/getserversideprops-only/slow/layout.js diff --git a/test/e2e/app-dir/app-rendering/app/getserversideprops-only/slow/page.server.js b/test/e2e/app-dir/app-rendering/app/getserversideprops-only/slow/page.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getserversideprops-only/slow/page.server.js rename to test/e2e/app-dir/app-rendering/app/getserversideprops-only/slow/page.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/nested/layout.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/nested/layout.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/nested/layout.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/nested/layout.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/nested/page.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/nested/page.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/nested/page.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/nested/page.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/slow/layout.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/slow/layout.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/slow/layout.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/slow/layout.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/slow/page.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/slow/page.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/slow/page.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-getserversideprops-combined/slow/page.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-isr-multiple/layout.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-isr-multiple/layout.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-isr-multiple/layout.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-isr-multiple/layout.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-isr-multiple/nested/page.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-isr-multiple/nested/page.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-isr-multiple/nested/page.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-isr-multiple/nested/page.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-only/layout.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-only/layout.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-only/layout.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-only/layout.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-only/nested/page.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-only/nested/page.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-only/nested/page.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-only/nested/page.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-only/slow/layout.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-only/slow/layout.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-only/slow/layout.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-only/slow/layout.js diff --git a/test/e2e/app-dir/app-rendering/app/getstaticprops-only/slow/page.server.js b/test/e2e/app-dir/app-rendering/app/getstaticprops-only/slow/page.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/getstaticprops-only/slow/page.server.js rename to test/e2e/app-dir/app-rendering/app/getstaticprops-only/slow/page.js diff --git a/test/e2e/app-dir/app-rendering/app/layout.server.js b/test/e2e/app-dir/app-rendering/app/layout.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/layout.server.js rename to test/e2e/app-dir/app-rendering/app/layout.js diff --git a/test/e2e/app-dir/app-rendering/app/page.server.js b/test/e2e/app-dir/app-rendering/app/page.js similarity index 100% rename from test/e2e/app-dir/app-rendering/app/page.server.js rename to test/e2e/app-dir/app-rendering/app/page.js diff --git a/test/e2e/app-dir/app/app/(newroot)/dashboard/another/page.server.js b/test/e2e/app-dir/app/app/(newroot)/dashboard/another/page.js similarity index 100% rename from test/e2e/app-dir/app/app/(newroot)/dashboard/another/page.server.js rename to test/e2e/app-dir/app/app/(newroot)/dashboard/another/page.js diff --git a/test/e2e/app-dir/app/app/(newroot)/layout.server.js b/test/e2e/app-dir/app/app/(newroot)/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/(newroot)/layout.server.js rename to test/e2e/app-dir/app/app/(newroot)/layout.js diff --git a/test/e2e/app-dir/app/app/(rootonly)/dashboard/changelog/page.server.js b/test/e2e/app-dir/app/app/(rootonly)/dashboard/changelog/page.js similarity index 100% rename from test/e2e/app-dir/app/app/(rootonly)/dashboard/changelog/page.server.js rename to test/e2e/app-dir/app/app/(rootonly)/dashboard/changelog/page.js diff --git a/test/e2e/app-dir/app/app/(rootonly)/dashboard/hello/page.server.js b/test/e2e/app-dir/app/app/(rootonly)/dashboard/hello/page.js similarity index 100% rename from test/e2e/app-dir/app/app/(rootonly)/dashboard/hello/page.server.js rename to test/e2e/app-dir/app/app/(rootonly)/dashboard/hello/page.js diff --git a/test/e2e/app-dir/app/app/catch-all/[...slug]/page.server.js b/test/e2e/app-dir/app/app/catch-all/[...slug]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/catch-all/[...slug]/page.server.js rename to test/e2e/app-dir/app/app/catch-all/[...slug]/page.js diff --git a/test/e2e/app-dir/app/app/client-component-route/page.client.js b/test/e2e/app-dir/app/app/client-component-route/page.js similarity index 100% rename from test/e2e/app-dir/app/app/client-component-route/page.client.js rename to test/e2e/app-dir/app/app/client-component-route/page.js diff --git a/test/e2e/app-dir/app/app/client-nested/layout.client.js b/test/e2e/app-dir/app/app/client-nested/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/client-nested/layout.client.js rename to test/e2e/app-dir/app/app/client-nested/layout.js diff --git a/test/e2e/app-dir/app/app/client-nested/page.server.js b/test/e2e/app-dir/app/app/client-nested/page.js similarity index 100% rename from test/e2e/app-dir/app/app/client-nested/page.server.js rename to test/e2e/app-dir/app/app/client-nested/page.js diff --git a/test/e2e/app-dir/app/app/client-with-errors/get-server-side-props/page.client.js b/test/e2e/app-dir/app/app/client-with-errors/get-server-side-props/page.js similarity index 100% rename from test/e2e/app-dir/app/app/client-with-errors/get-server-side-props/page.client.js rename to test/e2e/app-dir/app/app/client-with-errors/get-server-side-props/page.js diff --git a/test/e2e/app-dir/app/app/client-with-errors/get-static-props/page.client.js b/test/e2e/app-dir/app/app/client-with-errors/get-static-props/page.js similarity index 100% rename from test/e2e/app-dir/app/app/client-with-errors/get-static-props/page.client.js rename to test/e2e/app-dir/app/app/client-with-errors/get-static-props/page.js diff --git a/test/e2e/app-dir/app/app/css/css-client/layout.client.js b/test/e2e/app-dir/app/app/css/css-client/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/css/css-client/layout.client.js rename to test/e2e/app-dir/app/app/css/css-client/layout.js diff --git a/test/e2e/app-dir/app/app/css/css-client/page.client.js b/test/e2e/app-dir/app/app/css/css-client/page.js similarity index 100% rename from test/e2e/app-dir/app/app/css/css-client/page.client.js rename to test/e2e/app-dir/app/app/css/css-client/page.js diff --git a/test/e2e/app-dir/app/app/css/css-nested/layout.client.js b/test/e2e/app-dir/app/app/css/css-nested/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/css/css-nested/layout.client.js rename to test/e2e/app-dir/app/app/css/css-nested/layout.js diff --git a/test/e2e/app-dir/app/app/css/css-nested/page.client.js b/test/e2e/app-dir/app/app/css/css-nested/page.js similarity index 100% rename from test/e2e/app-dir/app/app/css/css-nested/page.client.js rename to test/e2e/app-dir/app/app/css/css-nested/page.js diff --git a/test/e2e/app-dir/app/app/css/css-page/layout.server.js b/test/e2e/app-dir/app/app/css/css-page/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/css/css-page/layout.server.js rename to test/e2e/app-dir/app/app/css/css-page/layout.js diff --git a/test/e2e/app-dir/app/app/css/css-page/page.server.js b/test/e2e/app-dir/app/app/css/css-page/page.js similarity index 100% rename from test/e2e/app-dir/app/app/css/css-page/page.server.js rename to test/e2e/app-dir/app/app/css/css-page/page.js diff --git a/test/e2e/app-dir/app/app/css/layout.server.js b/test/e2e/app-dir/app/app/css/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/css/layout.server.js rename to test/e2e/app-dir/app/app/css/layout.js diff --git a/test/e2e/app-dir/app/app/dashboard/(custom)/deployments/breakdown/page.server.js b/test/e2e/app-dir/app/app/dashboard/(custom)/deployments/breakdown/page.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/(custom)/deployments/breakdown/page.server.js rename to test/e2e/app-dir/app/app/dashboard/(custom)/deployments/breakdown/page.js diff --git a/test/e2e/app-dir/app/app/dashboard/(custom)/layout.server.js b/test/e2e/app-dir/app/app/dashboard/(custom)/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/(custom)/layout.server.js rename to test/e2e/app-dir/app/app/dashboard/(custom)/layout.js diff --git a/test/e2e/app-dir/app/app/dashboard/client-comp.client.jsx b/test/e2e/app-dir/app/app/dashboard/client-comp-client.jsx similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/client-comp.client.jsx rename to test/e2e/app-dir/app/app/dashboard/client-comp-client.jsx diff --git a/test/e2e/app-dir/app/app/dashboard/deployments/[id]/page.server.js b/test/e2e/app-dir/app/app/dashboard/deployments/[id]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/deployments/[id]/page.server.js rename to test/e2e/app-dir/app/app/dashboard/deployments/[id]/page.js diff --git a/test/e2e/app-dir/app/app/dashboard/deployments/info/page.server.js b/test/e2e/app-dir/app/app/dashboard/deployments/info/page.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/deployments/info/page.server.js rename to test/e2e/app-dir/app/app/dashboard/deployments/info/page.js diff --git a/test/e2e/app-dir/app/app/dashboard/deployments/layout.server.js b/test/e2e/app-dir/app/app/dashboard/deployments/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/deployments/layout.server.js rename to test/e2e/app-dir/app/app/dashboard/deployments/layout.js diff --git a/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic.client.js b/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic-client.js similarity index 69% rename from test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic.client.js rename to test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic-client.js index ccaf16110d81ede..63dcccc63c1cfb3 100644 --- a/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic.client.js +++ b/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic-client.js @@ -2,7 +2,7 @@ import dynamic from 'next/dist/client/components/shared/dynamic' -const Dynamic = dynamic(() => import('../text-dynamic.client')) +const Dynamic = dynamic(() => import('../text-dynamic-client')) export function NextDynamicClientComponent() { return diff --git a/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic.server.js b/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic-server.js similarity index 68% rename from test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic.server.js rename to test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic-server.js index 18ac428cfc37c92..0d9406e90f4a082 100644 --- a/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic.server.js +++ b/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/dynamic-server.js @@ -1,6 +1,6 @@ import dynamic from 'next/dist/client/components/shared/dynamic' -const Dynamic = dynamic(() => import('../text-dynamic.server')) +const Dynamic = dynamic(() => import('../text-dynamic-server')) export function NextDynamicServerComponent() { return diff --git a/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/react-lazy.client.js b/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/react-lazy-client.js similarity index 79% rename from test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/react-lazy.client.js rename to test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/react-lazy-client.js index 85727b55afd73f9..18fff4ea973d6e2 100644 --- a/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/react-lazy.client.js +++ b/test/e2e/app-dir/app/app/dashboard/index/dynamic-imports/react-lazy-client.js @@ -2,7 +2,7 @@ import { useState, lazy } from 'react' -const Lazy = lazy(() => import('../text-lazy.client.js')) +const Lazy = lazy(() => import('../text-lazy-client.js')) export function LazyClientComponent() { let [state] = useState('client') diff --git a/test/e2e/app-dir/app/app/dashboard/index/page.server.js b/test/e2e/app-dir/app/app/dashboard/index/page.js similarity index 91% rename from test/e2e/app-dir/app/app/dashboard/index/page.server.js rename to test/e2e/app-dir/app/app/dashboard/index/page.js index 6dca33b19e8013b..c946b76e18cc95d 100644 --- a/test/e2e/app-dir/app/app/dashboard/index/page.server.js +++ b/test/e2e/app-dir/app/app/dashboard/index/page.js @@ -1,6 +1,6 @@ -import { LazyClientComponent } from './dynamic-imports/react-lazy.client' -import { NextDynamicServerComponent } from './dynamic-imports/dynamic.server' -import { NextDynamicClientComponent } from './dynamic-imports/dynamic.client' +import { LazyClientComponent } from './dynamic-imports/react-lazy-client' +import { NextDynamicServerComponent } from './dynamic-imports/dynamic-server' +import { NextDynamicClientComponent } from './dynamic-imports/dynamic-client' export default function DashboardIndexPage() { return ( diff --git a/test/e2e/app-dir/app/app/dashboard/index/text-dynamic.client.js b/test/e2e/app-dir/app/app/dashboard/index/text-dynamic-client.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/index/text-dynamic.client.js rename to test/e2e/app-dir/app/app/dashboard/index/text-dynamic-client.js diff --git a/test/e2e/app-dir/app/app/dashboard/index/text-dynamic.server.js b/test/e2e/app-dir/app/app/dashboard/index/text-dynamic-server.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/index/text-dynamic.server.js rename to test/e2e/app-dir/app/app/dashboard/index/text-dynamic-server.js diff --git a/test/e2e/app-dir/app/app/dashboard/index/text-lazy.client.js b/test/e2e/app-dir/app/app/dashboard/index/text-lazy-client.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/index/text-lazy.client.js rename to test/e2e/app-dir/app/app/dashboard/index/text-lazy-client.js diff --git a/test/e2e/app-dir/app/app/dashboard/integrations/page.server.js b/test/e2e/app-dir/app/app/dashboard/integrations/page.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/integrations/page.server.js rename to test/e2e/app-dir/app/app/dashboard/integrations/page.js diff --git a/test/e2e/app-dir/app/app/dashboard/layout.server.js b/test/e2e/app-dir/app/app/dashboard/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/dashboard/layout.server.js rename to test/e2e/app-dir/app/app/dashboard/layout.js diff --git a/test/e2e/app-dir/app/app/dashboard/page.server.js b/test/e2e/app-dir/app/app/dashboard/page.js similarity index 87% rename from test/e2e/app-dir/app/app/dashboard/page.server.js rename to test/e2e/app-dir/app/app/dashboard/page.js index a4773bfaba832c6..966a2a3e03b0b31 100644 --- a/test/e2e/app-dir/app/app/dashboard/page.server.js +++ b/test/e2e/app-dir/app/app/dashboard/page.js @@ -1,4 +1,5 @@ -import ClientComp from './client-comp.client' +import ClientComp from './client-comp-client' + export default function DashboardPage(props) { return ( <> diff --git a/test/e2e/app-dir/app/app/dynamic/[category]/[id]/layout.server.js b/test/e2e/app-dir/app/app/dynamic/[category]/[id]/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/dynamic/[category]/[id]/layout.server.js rename to test/e2e/app-dir/app/app/dynamic/[category]/[id]/layout.js diff --git a/test/e2e/app-dir/app/app/dynamic/[category]/[id]/page.server.js b/test/e2e/app-dir/app/app/dynamic/[category]/[id]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/dynamic/[category]/[id]/page.server.js rename to test/e2e/app-dir/app/app/dynamic/[category]/[id]/page.js diff --git a/test/e2e/app-dir/app/app/dynamic/[category]/layout.server.js b/test/e2e/app-dir/app/app/dynamic/[category]/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/dynamic/[category]/layout.server.js rename to test/e2e/app-dir/app/app/dynamic/[category]/layout.js diff --git a/test/e2e/app-dir/app/app/dynamic/layout.server.js b/test/e2e/app-dir/app/app/dynamic/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/dynamic/layout.server.js rename to test/e2e/app-dir/app/app/dynamic/layout.js diff --git a/test/e2e/app-dir/app/app/error/clientcomponent/error.client.js b/test/e2e/app-dir/app/app/error/clientcomponent/error.js similarity index 100% rename from test/e2e/app-dir/app/app/error/clientcomponent/error.client.js rename to test/e2e/app-dir/app/app/error/clientcomponent/error.js diff --git a/test/e2e/app-dir/app/app/error/clientcomponent/page.client.js b/test/e2e/app-dir/app/app/error/clientcomponent/page.js similarity index 100% rename from test/e2e/app-dir/app/app/error/clientcomponent/page.client.js rename to test/e2e/app-dir/app/app/error/clientcomponent/page.js diff --git a/test/e2e/app-dir/app/app/error/ssr-error-client-component/page.client.js b/test/e2e/app-dir/app/app/error/ssr-error-client-component/page.js similarity index 100% rename from test/e2e/app-dir/app/app/error/ssr-error-client-component/page.client.js rename to test/e2e/app-dir/app/app/error/ssr-error-client-component/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-cookies/client/page.client.js b/test/e2e/app-dir/app/app/hooks/use-cookies/client/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-cookies/client/page.client.js rename to test/e2e/app-dir/app/app/hooks/use-cookies/client/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-cookies/page.server.js b/test/e2e/app-dir/app/app/hooks/use-cookies/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-cookies/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-cookies/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-headers/client/page.client.js b/test/e2e/app-dir/app/app/hooks/use-headers/client/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-headers/client/page.client.js rename to test/e2e/app-dir/app/app/hooks/use-headers/client/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-headers/page.server.js b/test/e2e/app-dir/app/app/hooks/use-headers/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-headers/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-headers/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-layout-segments/server/page.server.js b/test/e2e/app-dir/app/app/hooks/use-layout-segments/server/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-layout-segments/server/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-layout-segments/server/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-params/server/page.server.js b/test/e2e/app-dir/app/app/hooks/use-params/server/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-params/server/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-params/server/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-pathname/page.client.js b/test/e2e/app-dir/app/app/hooks/use-pathname/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-pathname/page.client.js rename to test/e2e/app-dir/app/app/hooks/use-pathname/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-pathname/server/page.server.js b/test/e2e/app-dir/app/app/hooks/use-pathname/server/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-pathname/server/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-pathname/server/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-preview-data/client/page.client.js b/test/e2e/app-dir/app/app/hooks/use-preview-data/client/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-preview-data/client/page.client.js rename to test/e2e/app-dir/app/app/hooks/use-preview-data/client/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-preview-data/page.server.js b/test/e2e/app-dir/app/app/hooks/use-preview-data/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-preview-data/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-preview-data/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-router/page.client.js b/test/e2e/app-dir/app/app/hooks/use-router/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-router/page.client.js rename to test/e2e/app-dir/app/app/hooks/use-router/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-router/server/page.server.js b/test/e2e/app-dir/app/app/hooks/use-router/server/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-router/server/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-router/server/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-router/sub-page/page.client.js b/test/e2e/app-dir/app/app/hooks/use-router/sub-page/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-router/sub-page/page.client.js rename to test/e2e/app-dir/app/app/hooks/use-router/sub-page/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-search-params/page.client.js b/test/e2e/app-dir/app/app/hooks/use-search-params/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-search-params/page.client.js rename to test/e2e/app-dir/app/app/hooks/use-search-params/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-search-params/server/page.server.js b/test/e2e/app-dir/app/app/hooks/use-search-params/server/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-search-params/server/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-search-params/server/page.js diff --git a/test/e2e/app-dir/app/app/hooks/use-selected-layout-segment/server/page.server.js b/test/e2e/app-dir/app/app/hooks/use-selected-layout-segment/server/page.js similarity index 100% rename from test/e2e/app-dir/app/app/hooks/use-selected-layout-segment/server/page.server.js rename to test/e2e/app-dir/app/app/hooks/use-selected-layout-segment/server/page.js diff --git a/test/e2e/app-dir/app/app/internal/failure/page.server.js b/test/e2e/app-dir/app/app/internal/failure/page.js similarity index 100% rename from test/e2e/app-dir/app/app/internal/failure/page.server.js rename to test/e2e/app-dir/app/app/internal/failure/page.js diff --git a/test/e2e/app-dir/app/app/internal/page.server.js b/test/e2e/app-dir/app/app/internal/page.js similarity index 100% rename from test/e2e/app-dir/app/app/internal/page.server.js rename to test/e2e/app-dir/app/app/internal/page.js diff --git a/test/e2e/app-dir/app/app/internal/success/page.server.js b/test/e2e/app-dir/app/app/internal/success/page.js similarity index 100% rename from test/e2e/app-dir/app/app/internal/success/page.server.js rename to test/e2e/app-dir/app/app/internal/success/page.js diff --git a/test/e2e/app-dir/app/app/layout.server.js b/test/e2e/app-dir/app/app/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/layout.server.js rename to test/e2e/app-dir/app/app/layout.js diff --git a/test/e2e/app-dir/app/app/link-hard-push/[id]/page.server.js b/test/e2e/app-dir/app/app/link-hard-push/[id]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/link-hard-push/[id]/page.server.js rename to test/e2e/app-dir/app/app/link-hard-push/[id]/page.js diff --git a/test/e2e/app-dir/app/app/link-hard-replace/[id]/page.server.js b/test/e2e/app-dir/app/app/link-hard-replace/[id]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/link-hard-replace/[id]/page.server.js rename to test/e2e/app-dir/app/app/link-hard-replace/[id]/page.js diff --git a/test/e2e/app-dir/app/app/link-hard-replace/page.server.js b/test/e2e/app-dir/app/app/link-hard-replace/page.js similarity index 100% rename from test/e2e/app-dir/app/app/link-hard-replace/page.server.js rename to test/e2e/app-dir/app/app/link-hard-replace/page.js diff --git a/test/e2e/app-dir/app/app/link-hard-replace/subpage/page.server.js b/test/e2e/app-dir/app/app/link-hard-replace/subpage/page.js similarity index 100% rename from test/e2e/app-dir/app/app/link-hard-replace/subpage/page.server.js rename to test/e2e/app-dir/app/app/link-hard-replace/subpage/page.js diff --git a/test/e2e/app-dir/app/app/link-soft-push/page.server.js b/test/e2e/app-dir/app/app/link-soft-push/page.js similarity index 100% rename from test/e2e/app-dir/app/app/link-soft-push/page.server.js rename to test/e2e/app-dir/app/app/link-soft-push/page.js diff --git a/test/e2e/app-dir/app/app/link-soft-replace/page.server.js b/test/e2e/app-dir/app/app/link-soft-replace/page.js similarity index 100% rename from test/e2e/app-dir/app/app/link-soft-replace/page.server.js rename to test/e2e/app-dir/app/app/link-soft-replace/page.js diff --git a/test/e2e/app-dir/app/app/link-soft-replace/subpage/page.server.js b/test/e2e/app-dir/app/app/link-soft-replace/subpage/page.js similarity index 100% rename from test/e2e/app-dir/app/app/link-soft-replace/subpage/page.server.js rename to test/e2e/app-dir/app/app/link-soft-replace/subpage/page.js diff --git a/test/e2e/app-dir/app/app/loading-bug/[categorySlug]/page.server.js b/test/e2e/app-dir/app/app/loading-bug/[categorySlug]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/loading-bug/[categorySlug]/page.server.js rename to test/e2e/app-dir/app/app/loading-bug/[categorySlug]/page.js diff --git a/test/e2e/app-dir/app/app/navigation/link.client.js b/test/e2e/app-dir/app/app/navigation/link.js similarity index 99% rename from test/e2e/app-dir/app/app/navigation/link.client.js rename to test/e2e/app-dir/app/app/navigation/link.js index 5c1a21d1cccc65b..9d39caab3158657 100644 --- a/test/e2e/app-dir/app/app/navigation/link.client.js +++ b/test/e2e/app-dir/app/app/navigation/link.js @@ -3,6 +3,7 @@ import { useRouter } from 'next/dist/client/components/hooks-client' import React from 'react' import { useEffect } from 'react' + export default function HardLink({ href, children, ...props }) { const router = useRouter() useEffect(() => { diff --git a/test/e2e/app-dir/app/app/navigation/page.server.js b/test/e2e/app-dir/app/app/navigation/page.js similarity index 91% rename from test/e2e/app-dir/app/app/navigation/page.server.js rename to test/e2e/app-dir/app/app/navigation/page.js index 2640936d496a9c8..62238fcf7b72746 100644 --- a/test/e2e/app-dir/app/app/navigation/page.server.js +++ b/test/e2e/app-dir/app/app/navigation/page.js @@ -1,5 +1,5 @@ import { nanoid } from 'nanoid' -import Link from './link.client.js' +import Link from './link.js' export default function Page() { return ( diff --git a/test/e2e/app-dir/app/app/old-router/Router.client.js b/test/e2e/app-dir/app/app/old-router/client-router.js similarity index 90% rename from test/e2e/app-dir/app/app/old-router/Router.client.js rename to test/e2e/app-dir/app/app/old-router/client-router.js index a33b07f8da42ea7..3dc229767c4fa10 100644 --- a/test/e2e/app-dir/app/app/old-router/Router.client.js +++ b/test/e2e/app-dir/app/app/old-router/client-router.js @@ -1,7 +1,7 @@ 'client' import { useRouter, withRouter } from 'next/router' -import IsNull from './IsNull' +import IsNull from './is-null' function ClientRouter({ router: withRouter }) { const router = useRouter() diff --git a/test/e2e/app-dir/app/app/old-router/IsNull.js b/test/e2e/app-dir/app/app/old-router/is-null.js similarity index 100% rename from test/e2e/app-dir/app/app/old-router/IsNull.js rename to test/e2e/app-dir/app/app/old-router/is-null.js diff --git a/test/e2e/app-dir/app/app/old-router/page.server.js b/test/e2e/app-dir/app/app/old-router/page.js similarity index 77% rename from test/e2e/app-dir/app/app/old-router/page.server.js rename to test/e2e/app-dir/app/app/old-router/page.js index d74b7650d38c6bd..3a2d5f594fad7ba 100644 --- a/test/e2e/app-dir/app/app/old-router/page.server.js +++ b/test/e2e/app-dir/app/app/old-router/page.js @@ -1,4 +1,4 @@ -import Router from './Router' +import Router from './router' export default function Page() { return ( diff --git a/test/e2e/app-dir/app/app/old-router/Router.js b/test/e2e/app-dir/app/app/old-router/router.js similarity index 73% rename from test/e2e/app-dir/app/app/old-router/Router.js rename to test/e2e/app-dir/app/app/old-router/router.js index 930b9ddac284c44..7cddbe4181dc8d3 100644 --- a/test/e2e/app-dir/app/app/old-router/Router.js +++ b/test/e2e/app-dir/app/app/old-router/router.js @@ -1,7 +1,7 @@ import { useRouter, withRouter } from 'next/router' -import IsNull from './IsNull' -import ServerRouter from './Router.server' -import ClientRouter from './Router.client' +import IsNull from './is-null' +import ServerRouter from './server-router' +import ClientRouter from './client-router' function SharedRouter({ router: withRouter }) { const router = useRouter() diff --git a/test/e2e/app-dir/app/app/old-router/Router.server.js b/test/e2e/app-dir/app/app/old-router/server-router.js similarity index 89% rename from test/e2e/app-dir/app/app/old-router/Router.server.js rename to test/e2e/app-dir/app/app/old-router/server-router.js index ca08c6668f252ba..9e1291329c49728 100644 --- a/test/e2e/app-dir/app/app/old-router/Router.server.js +++ b/test/e2e/app-dir/app/app/old-router/server-router.js @@ -1,5 +1,5 @@ import { useRouter, withRouter } from 'next/router' -import IsNull from './IsNull' +import IsNull from './is-null' function ServerRouter({ router: withRouter }) { const router = useRouter() diff --git a/test/e2e/app-dir/app/app/optional-catch-all/[[...slug]]/page.server.js b/test/e2e/app-dir/app/app/optional-catch-all/[[...slug]]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/optional-catch-all/[[...slug]]/page.server.js rename to test/e2e/app-dir/app/app/optional-catch-all/[[...slug]]/page.js diff --git a/test/e2e/app-dir/app/app/pages-linking/page.server.js b/test/e2e/app-dir/app/app/pages-linking/page.js similarity index 100% rename from test/e2e/app-dir/app/app/pages-linking/page.server.js rename to test/e2e/app-dir/app/app/pages-linking/page.js diff --git a/test/e2e/app-dir/app/app/parallel/(new)/@baz/nested-2/page.server.js b/test/e2e/app-dir/app/app/parallel/(new)/@baz/nested-2/page.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/(new)/@baz/nested-2/page.server.js rename to test/e2e/app-dir/app/app/parallel/(new)/@baz/nested-2/page.js diff --git a/test/e2e/app-dir/app/app/parallel/(new)/layout.server.js b/test/e2e/app-dir/app/app/parallel/(new)/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/(new)/layout.server.js rename to test/e2e/app-dir/app/app/parallel/(new)/layout.js diff --git a/test/e2e/app-dir/app/app/parallel/@bar/nested/@a/page.server.js b/test/e2e/app-dir/app/app/parallel/@bar/nested/@a/page.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/@bar/nested/@a/page.server.js rename to test/e2e/app-dir/app/app/parallel/@bar/nested/@a/page.js diff --git a/test/e2e/app-dir/app/app/parallel/@bar/nested/@b/page.server.js b/test/e2e/app-dir/app/app/parallel/@bar/nested/@b/page.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/@bar/nested/@b/page.server.js rename to test/e2e/app-dir/app/app/parallel/@bar/nested/@b/page.js diff --git a/test/e2e/app-dir/app/app/parallel/@bar/nested/layout.server.js b/test/e2e/app-dir/app/app/parallel/@bar/nested/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/@bar/nested/layout.server.js rename to test/e2e/app-dir/app/app/parallel/@bar/nested/layout.js diff --git a/test/e2e/app-dir/app/app/parallel/@bar/page.server.js b/test/e2e/app-dir/app/app/parallel/@bar/page.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/@bar/page.server.js rename to test/e2e/app-dir/app/app/parallel/@bar/page.js diff --git a/test/e2e/app-dir/app/app/parallel/@foo/nested/@a/page.server.js b/test/e2e/app-dir/app/app/parallel/@foo/nested/@a/page.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/@foo/nested/@a/page.server.js rename to test/e2e/app-dir/app/app/parallel/@foo/nested/@a/page.js diff --git a/test/e2e/app-dir/app/app/parallel/@foo/nested/@b/page.server.js b/test/e2e/app-dir/app/app/parallel/@foo/nested/@b/page.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/@foo/nested/@b/page.server.js rename to test/e2e/app-dir/app/app/parallel/@foo/nested/@b/page.js diff --git a/test/e2e/app-dir/app/app/parallel/@foo/nested/layout.server.js b/test/e2e/app-dir/app/app/parallel/@foo/nested/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/@foo/nested/layout.server.js rename to test/e2e/app-dir/app/app/parallel/@foo/nested/layout.js diff --git a/test/e2e/app-dir/app/app/parallel/@foo/page.server.js b/test/e2e/app-dir/app/app/parallel/@foo/page.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/@foo/page.server.js rename to test/e2e/app-dir/app/app/parallel/@foo/page.js diff --git a/test/e2e/app-dir/app/app/parallel/layout.server.js b/test/e2e/app-dir/app/app/parallel/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/layout.server.js rename to test/e2e/app-dir/app/app/parallel/layout.js diff --git a/test/e2e/app-dir/app/app/parallel/nested/page.server.js b/test/e2e/app-dir/app/app/parallel/nested/page.js similarity index 100% rename from test/e2e/app-dir/app/app/parallel/nested/page.server.js rename to test/e2e/app-dir/app/app/parallel/nested/page.js diff --git a/test/e2e/app-dir/app/app/param-and-query/[slug]/page.client.js b/test/e2e/app-dir/app/app/param-and-query/[slug]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/param-and-query/[slug]/page.client.js rename to test/e2e/app-dir/app/app/param-and-query/[slug]/page.js diff --git a/test/e2e/app-dir/app/app/partial-match-[id]/page.server.js b/test/e2e/app-dir/app/app/partial-match-[id]/page.js similarity index 100% rename from test/e2e/app-dir/app/app/partial-match-[id]/page.server.js rename to test/e2e/app-dir/app/app/partial-match-[id]/page.js diff --git a/test/e2e/app-dir/app/app/same-layout/first/page.server.js b/test/e2e/app-dir/app/app/same-layout/first/page.js similarity index 100% rename from test/e2e/app-dir/app/app/same-layout/first/page.server.js rename to test/e2e/app-dir/app/app/same-layout/first/page.js diff --git a/test/e2e/app-dir/app/app/same-layout/layout.server.js b/test/e2e/app-dir/app/app/same-layout/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/same-layout/layout.server.js rename to test/e2e/app-dir/app/app/same-layout/layout.js diff --git a/test/e2e/app-dir/app/app/same-layout/second/page.server.js b/test/e2e/app-dir/app/app/same-layout/second/page.js similarity index 100% rename from test/e2e/app-dir/app/app/same-layout/second/page.server.js rename to test/e2e/app-dir/app/app/same-layout/second/page.js diff --git a/test/e2e/app-dir/app/app/should-not-serve-client/page.client.js b/test/e2e/app-dir/app/app/should-not-serve-client/page.js similarity index 100% rename from test/e2e/app-dir/app/app/should-not-serve-client/page.client.js rename to test/e2e/app-dir/app/app/should-not-serve-client/page.js diff --git a/test/e2e/app-dir/app/app/should-not-serve-server/page.server.js b/test/e2e/app-dir/app/app/should-not-serve-server/page.js similarity index 100% rename from test/e2e/app-dir/app/app/should-not-serve-server/page.server.js rename to test/e2e/app-dir/app/app/should-not-serve-server/page.js diff --git a/test/e2e/app-dir/app/app/slow-layout-and-page-with-loading/slow/layout.server.js b/test/e2e/app-dir/app/app/slow-layout-and-page-with-loading/slow/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/slow-layout-and-page-with-loading/slow/layout.server.js rename to test/e2e/app-dir/app/app/slow-layout-and-page-with-loading/slow/layout.js diff --git a/test/e2e/app-dir/app/app/slow-layout-and-page-with-loading/slow/page.server.js b/test/e2e/app-dir/app/app/slow-layout-and-page-with-loading/slow/page.js similarity index 100% rename from test/e2e/app-dir/app/app/slow-layout-and-page-with-loading/slow/page.server.js rename to test/e2e/app-dir/app/app/slow-layout-and-page-with-loading/slow/page.js diff --git a/test/e2e/app-dir/app/app/slow-layout-with-loading/slow/layout.server.js b/test/e2e/app-dir/app/app/slow-layout-with-loading/slow/layout.js similarity index 100% rename from test/e2e/app-dir/app/app/slow-layout-with-loading/slow/layout.server.js rename to test/e2e/app-dir/app/app/slow-layout-with-loading/slow/layout.js diff --git a/test/e2e/app-dir/app/app/slow-layout-with-loading/slow/page.server.js b/test/e2e/app-dir/app/app/slow-layout-with-loading/slow/page.js similarity index 100% rename from test/e2e/app-dir/app/app/slow-layout-with-loading/slow/page.server.js rename to test/e2e/app-dir/app/app/slow-layout-with-loading/slow/page.js diff --git a/test/e2e/app-dir/app/app/slow-page-with-loading/page.server.js b/test/e2e/app-dir/app/app/slow-page-with-loading/page.js similarity index 100% rename from test/e2e/app-dir/app/app/slow-page-with-loading/page.server.js rename to test/e2e/app-dir/app/app/slow-page-with-loading/page.js diff --git a/test/e2e/app-dir/app/app/template/clientcomponent/other/page.server.js b/test/e2e/app-dir/app/app/template/clientcomponent/other/page.js similarity index 100% rename from test/e2e/app-dir/app/app/template/clientcomponent/other/page.server.js rename to test/e2e/app-dir/app/app/template/clientcomponent/other/page.js diff --git a/test/e2e/app-dir/app/app/template/clientcomponent/page.server.js b/test/e2e/app-dir/app/app/template/clientcomponent/page.js similarity index 100% rename from test/e2e/app-dir/app/app/template/clientcomponent/page.server.js rename to test/e2e/app-dir/app/app/template/clientcomponent/page.js diff --git a/test/e2e/app-dir/app/app/template/clientcomponent/template.client.js b/test/e2e/app-dir/app/app/template/clientcomponent/template.js similarity index 100% rename from test/e2e/app-dir/app/app/template/clientcomponent/template.client.js rename to test/e2e/app-dir/app/app/template/clientcomponent/template.js diff --git a/test/e2e/app-dir/app/app/template/servercomponent/other/page.server.js b/test/e2e/app-dir/app/app/template/servercomponent/other/page.js similarity index 100% rename from test/e2e/app-dir/app/app/template/servercomponent/other/page.server.js rename to test/e2e/app-dir/app/app/template/servercomponent/other/page.js diff --git a/test/e2e/app-dir/app/app/template/servercomponent/page.server.js b/test/e2e/app-dir/app/app/template/servercomponent/page.js similarity index 100% rename from test/e2e/app-dir/app/app/template/servercomponent/page.server.js rename to test/e2e/app-dir/app/app/template/servercomponent/page.js diff --git a/test/e2e/app-dir/app/app/template/servercomponent/template.server.js b/test/e2e/app-dir/app/app/template/servercomponent/template.js similarity index 100% rename from test/e2e/app-dir/app/app/template/servercomponent/template.server.js rename to test/e2e/app-dir/app/app/template/servercomponent/template.js diff --git a/test/e2e/app-dir/app/app/test-page/page.server.js b/test/e2e/app-dir/app/app/test-page/page.js similarity index 100% rename from test/e2e/app-dir/app/app/test-page/page.server.js rename to test/e2e/app-dir/app/app/test-page/page.js diff --git a/test/e2e/app-dir/app/app/with-id/page.server.js b/test/e2e/app-dir/app/app/with-id/page.js similarity index 100% rename from test/e2e/app-dir/app/app/with-id/page.server.js rename to test/e2e/app-dir/app/app/with-id/page.js diff --git a/test/e2e/app-dir/app/pages/api/preview.js b/test/e2e/app-dir/app/pages/api/preview.js index f926b6f2319a46d..5b4890a34afeb58 100644 --- a/test/e2e/app-dir/app/pages/api/preview.js +++ b/test/e2e/app-dir/app/pages/api/preview.js @@ -1,4 +1,4 @@ export default function handler(req, res) { res.setPreviewData({ key: 'value' }) - res.send(200).end() + res.status(200).end() } diff --git a/test/e2e/app-dir/index.test.ts b/test/e2e/app-dir/index.test.ts index 37eb9875b9c3f88..e56701d81b996d6 100644 --- a/test/e2e/app-dir/index.test.ts +++ b/test/e2e/app-dir/index.test.ts @@ -1063,7 +1063,7 @@ describe('app dir', () => { if (isDev) { it.skip('should throw an error when getServerSideProps is used', async () => { const pageFile = - 'app/client-with-errors/get-server-side-props/page.client.js' + 'app/client-with-errors/get-server-side-props/page.js' const content = await next.readFile(pageFile) const uncomment = content.replace( '// export function getServerSideProps', @@ -1091,8 +1091,7 @@ describe('app dir', () => { }) it.skip('should throw an error when getStaticProps is used', async () => { - const pageFile = - 'app/client-with-errors/get-static-props/page.client.js' + const pageFile = 'app/client-with-errors/get-static-props/page.js' const content = await next.readFile(pageFile) const uncomment = content.replace( '// export function getStaticProps', diff --git a/test/e2e/app-dir/rsc-basic/app/css-in-js/page.server.js b/test/e2e/app-dir/rsc-basic/app/css-in-js/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/css-in-js/page.server.js rename to test/e2e/app-dir/rsc-basic/app/css-in-js/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/css-modules/page.server.js b/test/e2e/app-dir/rsc-basic/app/css-modules/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/css-modules/page.server.js rename to test/e2e/app-dir/rsc-basic/app/css-modules/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/edge/dynamic/[id]/page.server.js b/test/e2e/app-dir/rsc-basic/app/edge/dynamic/[id]/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/edge/dynamic/[id]/page.server.js rename to test/e2e/app-dir/rsc-basic/app/edge/dynamic/[id]/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/edge/dynamic/page.server.js b/test/e2e/app-dir/rsc-basic/app/edge/dynamic/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/edge/dynamic/page.server.js rename to test/e2e/app-dir/rsc-basic/app/edge/dynamic/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/escaping-rsc/page.server.js b/test/e2e/app-dir/rsc-basic/app/escaping-rsc/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/escaping-rsc/page.server.js rename to test/e2e/app-dir/rsc-basic/app/escaping-rsc/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/external-imports/page.client.js b/test/e2e/app-dir/rsc-basic/app/external-imports/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/external-imports/page.client.js rename to test/e2e/app-dir/rsc-basic/app/external-imports/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/global-styles-rsc/page.server.js b/test/e2e/app-dir/rsc-basic/app/global-styles-rsc/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/global-styles-rsc/page.server.js rename to test/e2e/app-dir/rsc-basic/app/global-styles-rsc/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/layout.server.js b/test/e2e/app-dir/rsc-basic/app/layout.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/layout.server.js rename to test/e2e/app-dir/rsc-basic/app/layout.js diff --git a/test/e2e/app-dir/rsc-basic/app/multi/page.server.js b/test/e2e/app-dir/rsc-basic/app/multi/page.js similarity index 54% rename from test/e2e/app-dir/rsc-basic/app/multi/page.server.js rename to test/e2e/app-dir/rsc-basic/app/multi/page.js index 07304236d89265d..e8b74e4a7ecdf45 100644 --- a/test/e2e/app-dir/rsc-basic/app/multi/page.server.js +++ b/test/e2e/app-dir/rsc-basic/app/multi/page.js @@ -1,4 +1,4 @@ -import Bar from '../../components/bar.server' +import Bar from '../../components/bar' export default function Multi() { return diff --git a/test/e2e/app-dir/rsc-basic/app/native-module/page.server.js b/test/e2e/app-dir/rsc-basic/app/native-module/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/native-module/page.server.js rename to test/e2e/app-dir/rsc-basic/app/native-module/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/next-api/image/page.server.js b/test/e2e/app-dir/rsc-basic/app/next-api/image/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/next-api/image/page.server.js rename to test/e2e/app-dir/rsc-basic/app/next-api/image/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/next-api/link/page.server.js b/test/e2e/app-dir/rsc-basic/app/next-api/link/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/next-api/link/page.server.js rename to test/e2e/app-dir/rsc-basic/app/next-api/link/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/page.server.js b/test/e2e/app-dir/rsc-basic/app/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/page.server.js rename to test/e2e/app-dir/rsc-basic/app/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/partial-hydration/page.server.js b/test/e2e/app-dir/rsc-basic/app/partial-hydration/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/partial-hydration/page.server.js rename to test/e2e/app-dir/rsc-basic/app/partial-hydration/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/root/page.server.js b/test/e2e/app-dir/rsc-basic/app/root/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/root/page.server.js rename to test/e2e/app-dir/rsc-basic/app/root/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/routes/[dynamic]/page.server.js.bak b/test/e2e/app-dir/rsc-basic/app/routes/[dynamic]/page.js.bak similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/routes/[dynamic]/page.server.js.bak rename to test/e2e/app-dir/rsc-basic/app/routes/[dynamic]/page.js.bak diff --git a/test/e2e/app-dir/rsc-basic/app/shared/page.server.js b/test/e2e/app-dir/rsc-basic/app/shared/page.js similarity index 95% rename from test/e2e/app-dir/rsc-basic/app/shared/page.server.js rename to test/e2e/app-dir/rsc-basic/app/shared/page.js index 58f0c6cb7dad719..4fefb0d1963f4cb 100644 --- a/test/e2e/app-dir/rsc-basic/app/shared/page.server.js +++ b/test/e2e/app-dir/rsc-basic/app/shared/page.js @@ -2,7 +2,7 @@ import ClientFromDirect from '../../components/client.client' import ClientFromShared from '../../components/shared' import SharedFromClient from '../../components/shared.client' import Random from '../../components/random-module-instance.client' -import Bar from '../../components/bar.server' +import Bar from '../../components/bar' // import { random } from 'random-module-instance' diff --git a/test/e2e/app-dir/rsc-basic/app/streaming-rsc/page.server.js b/test/e2e/app-dir/rsc-basic/app/streaming-rsc/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/streaming-rsc/page.server.js rename to test/e2e/app-dir/rsc-basic/app/streaming-rsc/page.js diff --git a/test/e2e/app-dir/rsc-basic/app/various-exports/page.server.js b/test/e2e/app-dir/rsc-basic/app/various-exports/page.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/app/various-exports/page.server.js rename to test/e2e/app-dir/rsc-basic/app/various-exports/page.js diff --git a/test/e2e/app-dir/rsc-basic/components/bar.server.js b/test/e2e/app-dir/rsc-basic/components/bar.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/components/bar.server.js rename to test/e2e/app-dir/rsc-basic/components/bar.js diff --git a/test/e2e/app-dir/rsc-basic/components/container.server.js b/test/e2e/app-dir/rsc-basic/components/container.js similarity index 100% rename from test/e2e/app-dir/rsc-basic/components/container.server.js rename to test/e2e/app-dir/rsc-basic/components/container.js diff --git a/test/e2e/app-dir/trailingslash/app/a/page.server.js b/test/e2e/app-dir/trailingslash/app/a/page.js similarity index 100% rename from test/e2e/app-dir/trailingslash/app/a/page.server.js rename to test/e2e/app-dir/trailingslash/app/a/page.js diff --git a/test/e2e/app-dir/trailingslash/app/layout.server.js b/test/e2e/app-dir/trailingslash/app/layout.js similarity index 100% rename from test/e2e/app-dir/trailingslash/app/layout.server.js rename to test/e2e/app-dir/trailingslash/app/layout.js diff --git a/test/e2e/app-dir/trailingslash/app/page.server.js b/test/e2e/app-dir/trailingslash/app/page.js similarity index 100% rename from test/e2e/app-dir/trailingslash/app/page.server.js rename to test/e2e/app-dir/trailingslash/app/page.js diff --git a/test/production/emit-decorator-metadata/app/pages/api/[[...params]].js b/test/production/emit-decorator-metadata/app/pages/api/[[...params]].js index 53edd542b66c78a..16b931125b8d2b1 100644 --- a/test/production/emit-decorator-metadata/app/pages/api/[[...params]].js +++ b/test/production/emit-decorator-metadata/app/pages/api/[[...params]].js @@ -1,4 +1,4 @@ -import { createHandler, Get, Param } from '@storyofams/next-api-decorators' +import { createHandler, Get, Param } from 'next-api-decorators' class HelloHandler { @Get('/:myParam') diff --git a/test/production/emit-decorator-metadata/index.test.ts b/test/production/emit-decorator-metadata/index.test.ts index 68476ecf0866306..4fe4549963807be 100644 --- a/test/production/emit-decorator-metadata/index.test.ts +++ b/test/production/emit-decorator-metadata/index.test.ts @@ -15,7 +15,7 @@ describe('emitDecoratorMetadata SWC option', () => { pages: new FileRef(join(__dirname, 'app/pages')), }, dependencies: { - '@storyofams/next-api-decorators': '1.6.0', + 'next-api-decorators': '2.0.0', 'reflect-metadata': '0.1.13', 'path-to-regexp': '6.2.0', tsyringe: '4.6.0',