diff --git a/packages/next/client/page-loader.ts b/packages/next/client/page-loader.ts index e48c6585b6e28..2277d6fb4e0d2 100644 --- a/packages/next/client/page-loader.ts +++ b/packages/next/client/page-loader.ts @@ -1,3 +1,4 @@ +import type { ComponentType } from 'react' import type { ClientSsgManifest } from '../build' import type { ClientBuildManifest } from '../build/webpack/plugins/build-manifest-plugin' import mitt from '../next-server/lib/mitt' @@ -68,7 +69,7 @@ function appendLink( }) } -export type GoodPageCache = { page: any; mod: any } +export type GoodPageCache = { page: ComponentType; mod: any } export type PageCacheEntry = { error: any } | GoodPageCache export default class PageLoader { diff --git a/packages/next/next-server/lib/router/router.ts b/packages/next/next-server/lib/router/router.ts index ae75e2ed9a0d2..e8f4cc1f56d4b 100644 --- a/packages/next/next-server/lib/router/router.ts +++ b/packages/next/next-server/lib/router/router.ts @@ -3,25 +3,26 @@ import { ParsedUrlQuery } from 'querystring' import { ComponentType } from 'react' import { UrlObject } from 'url' +import { + normalizePathTrailingSlash, + removePathTrailingSlash, +} from '../../../client/normalize-trailing-slash' +import type { GoodPageCache } from '../../../client/page-loader' import mitt, { MittEmitter } from '../mitt' import { AppContextType, formatWithValidation, + getLocationOrigin, getURL, loadGetInitialProps, NextPageContext, ST, - getLocationOrigin, } from '../utils' import { isDynamicRoute } from './utils/is-dynamic' +import { parseRelativeUrl } from './utils/parse-relative-url' +import { searchParamsToUrlQuery } from './utils/querystring' import { getRouteMatcher } from './utils/route-matcher' import { getRouteRegex } from './utils/route-regex' -import { searchParamsToUrlQuery } from './utils/querystring' -import { parseRelativeUrl } from './utils/parse-relative-url' -import { - removePathTrailingSlash, - normalizePathTrailingSlash, -} from '../../../client/normalize-trailing-slash' interface TransitionOptions { shallow?: boolean @@ -129,8 +130,6 @@ function tryParseRelativeUrl( } } -type ComponentRes = { page: ComponentType; mod: any } - export type BaseRouter = { route: string pathname: string @@ -697,16 +696,13 @@ export default class Router implements BaseRouter { return cachedRouteInfo } - const routeInfo = cachedRouteInfo + const routeInfo: RouteInfo = cachedRouteInfo ? cachedRouteInfo - : await this.fetchComponent(route).then( - (res) => - ({ - Component: res.page, - __N_SSG: res.mod.__N_SSG, - __N_SSP: res.mod.__N_SSP, - } as RouteInfo) - ) + : await this.fetchComponent(route).then((res) => ({ + Component: res.page, + __N_SSG: res.mod.__N_SSG, + __N_SSP: res.mod.__N_SSP, + })) const { Component, __N_SSG, __N_SSP } = routeInfo @@ -853,7 +849,7 @@ export default class Router implements BaseRouter { ]) } - async fetchComponent(route: string): Promise { + async fetchComponent(route: string): Promise { let cancelled = false const cancel = (this.clc = () => { cancelled = true