UNPKG

36.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../server/hot-reloader.ts"],"names":["renderScriptError","res","error","verbose","setHeader","code","statusCode","end","console","stack","addCorsSupport","req","isApiRoute","url","match","API_ROUTE","preflight","headers","origin","method","writeHead","matchNextPageBundleRequest","findEntryModule","issuer","erroredPages","compilation","failedPages","errors","entryModule","name","enhancedName","push","HotReloader","constructor","dir","config","pagesDir","buildId","previewProps","rewrites","middlewares","webpackHotMiddleware","stats","serverStats","clientError","serverError","serverPrevDocumentHash","prevChunkNames","onDemandEntries","watcher","fallbackWatcher","isWebpack5","run","parsedUrl","handlePageBundleRequest","pageBundleRes","parsedPageBundleUrl","pathname","params","decodedPagePath","path","map","param","decodeURIComponent","join","_","err","Error","page","BLOCKED_PAGES","indexOf","ensurePage","finished","getCompilationErrors","length","fn","Promise","resolve","reject","clean","distDir","getWebpackConfig","pagePaths","all","pageExtensions","pages","filter","i","entrypoints","dev","isServer","client","server","buildFallbackError","fallbackConfig","beforeFiles","afterFiles","fallback","isDevFallback","fallbackCompiler","bootedFallbackCompiler","watch","watchOptions","_err","start","configs","defaultEntry","entry","args","isClientCompilation","Object","keys","entries","serverBundlePath","clientBundlePath","absolutePagePath","pageExists","status","BUILDING","pageLoaderOpts","multiCompiler","compilers","changedClientPages","Set","changedServerPages","prevClientPageHashes","Map","prevServerPageHashes","trackPageChanges","pageHashMap","changedItems","forEach","key","startsWith","chunks","chunk","id","prevHash","get","hash","add","set","hooks","emit","tap","failed","done","serverOnlyChanges","clear","send","event","pg","substr","documentChunk","namedChunks","warn","chunkNames","addedPages","diff","removedPages","size","addedPage","removedPage","WebpackHotMiddleware","booted","middleware","rootDirectory","stop","close","normalizedPage","hasErrors","action","publish","data","a","b","v","has"],"mappings":"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","sourcesContent":["import { getOverlayMiddleware } from '@next/react-dev-overlay/lib/middleware'\nimport { NextHandleFunction } from 'connect'\nimport { IncomingMessage, ServerResponse } from 'http'\nimport { WebpackHotMiddleware } from './hot-middleware'\nimport { join } from 'path'\nimport { UrlObject } from 'url'\nimport { webpack, isWebpack5 } from 'next/dist/compiled/webpack/webpack'\nimport { createEntrypoints, createPagesMapping } from '../build/entries'\nimport { watchCompilers } from '../build/output'\nimport getBaseWebpackConfig from '../build/webpack-config'\nimport { API_ROUTE } from '../lib/constants'\nimport { recursiveDelete } from '../lib/recursive-delete'\nimport { BLOCKED_PAGES } from '../next-server/lib/constants'\nimport { __ApiPreviewProps } from '../next-server/server/api-utils'\nimport { route } from '../next-server/server/router'\nimport { findPageFile } from './lib/find-page-file'\nimport onDemandEntryHandler, {\n entries,\n BUILDING,\n} from './on-demand-entry-handler'\nimport {\n denormalizePagePath,\n normalizePathSep,\n} from '../next-server/server/normalize-page-path'\nimport getRouteFromEntrypoint from '../next-server/server/get-route-from-entrypoint'\nimport { isWriteable } from '../build/is-writeable'\nimport { ClientPagesLoaderOptions } from '../build/webpack/loaders/next-client-pages-loader'\nimport { stringify } from 'querystring'\nimport { difference } from '../build/utils'\nimport { NextConfig } from '../next-server/server/config'\nimport { CustomRoutes } from '../lib/load-custom-routes'\n\nexport async function renderScriptError(\n res: ServerResponse,\n error: Error,\n { verbose = true } = {}\n) {\n // Asks CDNs and others to not to cache the errored page\n res.setHeader(\n 'Cache-Control',\n 'no-cache, no-store, max-age=0, must-revalidate'\n )\n\n if ((error as any).code === 'ENOENT') {\n res.statusCode = 404\n res.end('404 - Not Found')\n return\n }\n\n if (verbose) {\n console.error(error.stack)\n }\n res.statusCode = 500\n res.end('500 - Internal Error')\n}\n\nfunction addCorsSupport(req: IncomingMessage, res: ServerResponse) {\n const isApiRoute = req.url!.match(API_ROUTE)\n // API routes handle their own CORS headers\n if (isApiRoute) {\n return { preflight: false }\n }\n\n if (!req.headers.origin) {\n return { preflight: false }\n }\n\n res.setHeader('Access-Control-Allow-Origin', req.headers.origin)\n res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET')\n // Based on https://github.com/primus/access-control/blob/4cf1bc0e54b086c91e6aa44fb14966fa5ef7549c/index.js#L158\n if (req.headers['access-control-request-headers']) {\n res.setHeader(\n 'Access-Control-Allow-Headers',\n req.headers['access-control-request-headers'] as string\n )\n }\n\n if (req.method === 'OPTIONS') {\n res.writeHead(200)\n res.end()\n return { preflight: true }\n }\n\n return { preflight: false }\n}\n\nconst matchNextPageBundleRequest = route(\n '/_next/static/chunks/pages/:path*.js(\\\\.map|)'\n)\n\n// Recursively look up the issuer till it ends up at the root\nfunction findEntryModule(issuer: any): any {\n if (issuer.issuer) {\n return findEntryModule(issuer.issuer)\n }\n\n return issuer\n}\n\nfunction erroredPages(compilation: webpack.compilation.Compilation) {\n const failedPages: { [page: string]: any[] } = {}\n for (const error of compilation.errors) {\n if (!error.origin) {\n continue\n }\n\n const entryModule = findEntryModule(error.origin)\n const { name } = entryModule\n if (!name) {\n continue\n }\n\n // Only pages have to be reloaded\n const enhancedName = getRouteFromEntrypoint(name)\n\n if (!enhancedName) {\n continue\n }\n\n if (!failedPages[enhancedName]) {\n failedPages[enhancedName] = []\n }\n\n failedPages[enhancedName].push(error)\n }\n\n return failedPages\n}\n\nexport default class HotReloader {\n private dir: string\n private buildId: string\n private middlewares: any[]\n private pagesDir: string\n private webpackHotMiddleware: (NextHandleFunction & any) | null\n private config: NextConfig\n private stats: webpack.Stats | null\n private serverStats: webpack.Stats | null\n private clientError: Error | null = null\n private serverError: Error | null = null\n private serverPrevDocumentHash: string | null\n private prevChunkNames?: Set<any>\n private onDemandEntries: any\n private previewProps: __ApiPreviewProps\n private watcher: any\n private rewrites: CustomRoutes['rewrites']\n private fallbackWatcher: any\n public isWebpack5: any\n\n constructor(\n dir: string,\n {\n config,\n pagesDir,\n buildId,\n previewProps,\n rewrites,\n }: {\n config: NextConfig\n pagesDir: string\n buildId: string\n previewProps: __ApiPreviewProps\n rewrites: CustomRoutes['rewrites']\n }\n ) {\n this.buildId = buildId\n this.dir = dir\n this.middlewares = []\n this.pagesDir = pagesDir\n this.webpackHotMiddleware = null\n this.stats = null\n this.serverStats = null\n this.serverPrevDocumentHash = null\n\n this.config = config\n this.previewProps = previewProps\n this.rewrites = rewrites\n this.isWebpack5 = isWebpack5\n }\n\n public async run(\n req: IncomingMessage,\n res: ServerResponse,\n parsedUrl: UrlObject\n ): Promise<{ finished?: true }> {\n // Usually CORS support is not needed for the hot-reloader (this is dev only feature)\n // With when the app runs for multi-zones support behind a proxy,\n // the current page is trying to access this URL via assetPrefix.\n // That's when the CORS support is needed.\n const { preflight } = addCorsSupport(req, res)\n if (preflight) {\n return {}\n }\n\n // When a request comes in that is a page bundle, e.g. /_next/static/<buildid>/pages/index.js\n // we have to compile the page using on-demand-entries, this middleware will handle doing that\n // by adding the page to on-demand-entries, waiting till it's done\n // and then the bundle will be served like usual by the actual route in server/index.js\n const handlePageBundleRequest = async (\n pageBundleRes: ServerResponse,\n parsedPageBundleUrl: UrlObject\n ): Promise<{ finished?: true }> => {\n const { pathname } = parsedPageBundleUrl\n const params: { path: string[] } | null = matchNextPageBundleRequest(\n pathname\n )\n if (!params) {\n return {}\n }\n\n let decodedPagePath: string\n\n try {\n decodedPagePath = `/${params.path\n .map((param) => decodeURIComponent(param))\n .join('/')}`\n } catch (_) {\n const err: Error & { code?: string } = new Error(\n 'failed to decode param'\n )\n err.code = 'DECODE_FAILED'\n throw err\n }\n\n const page = denormalizePagePath(decodedPagePath)\n\n if (page === '/_error' || BLOCKED_PAGES.indexOf(page) === -1) {\n try {\n await this.ensurePage(page)\n } catch (error) {\n await renderScriptError(pageBundleRes, error)\n return { finished: true }\n }\n\n const errors = await this.getCompilationErrors(page)\n if (errors.length > 0) {\n await renderScriptError(pageBundleRes, errors[0], { verbose: false })\n return { finished: true }\n }\n }\n\n return {}\n }\n\n const { finished } = await handlePageBundleRequest(res, parsedUrl)\n\n for (const fn of this.middlewares) {\n await new Promise<void>((resolve, reject) => {\n fn(req, res, (err: Error) => {\n if (err) return reject(err)\n resolve()\n })\n })\n }\n\n return { finished }\n }\n\n private async clean(): Promise<void> {\n return recursiveDelete(join(this.dir, this.config.distDir), /^cache/)\n }\n\n private async getWebpackConfig() {\n const pagePaths = await Promise.all([\n findPageFile(this.pagesDir, '/_app', this.config.pageExtensions),\n findPageFile(this.pagesDir, '/_document', this.config.pageExtensions),\n ])\n\n const pages = createPagesMapping(\n pagePaths.filter((i) => i !== null) as string[],\n this.config.pageExtensions\n )\n const entrypoints = createEntrypoints(\n pages,\n 'server',\n this.buildId,\n this.previewProps,\n this.config,\n []\n )\n\n return Promise.all([\n getBaseWebpackConfig(this.dir, {\n dev: true,\n isServer: false,\n config: this.config,\n buildId: this.buildId,\n pagesDir: this.pagesDir,\n rewrites: this.rewrites,\n entrypoints: entrypoints.client,\n }),\n getBaseWebpackConfig(this.dir, {\n dev: true,\n isServer: true,\n config: this.config,\n buildId: this.buildId,\n pagesDir: this.pagesDir,\n rewrites: this.rewrites,\n entrypoints: entrypoints.server,\n }),\n ])\n }\n\n public async buildFallbackError(): Promise<void> {\n if (this.fallbackWatcher) return\n\n const fallbackConfig = await getBaseWebpackConfig(this.dir, {\n dev: true,\n isServer: false,\n config: this.config,\n buildId: this.buildId,\n pagesDir: this.pagesDir,\n rewrites: {\n beforeFiles: [],\n afterFiles: [],\n fallback: [],\n },\n isDevFallback: true,\n entrypoints: createEntrypoints(\n {\n '/_app': 'next/dist/pages/_app',\n '/_error': 'next/dist/pages/_error',\n },\n 'server',\n this.buildId,\n this.previewProps,\n this.config,\n []\n ).client,\n })\n const fallbackCompiler = webpack(fallbackConfig)\n\n this.fallbackWatcher = await new Promise((resolve) => {\n let bootedFallbackCompiler = false\n fallbackCompiler.watch(\n // @ts-ignore webpack supports an array of watchOptions when using a multiCompiler\n fallbackConfig.watchOptions,\n // Errors are handled separately\n (_err: any) => {\n if (!bootedFallbackCompiler) {\n bootedFallbackCompiler = true\n resolve(true)\n }\n }\n )\n })\n }\n\n public async start(): Promise<void> {\n await this.clean()\n\n const configs = await this.getWebpackConfig()\n\n for (const config of configs) {\n const defaultEntry = config.entry\n config.entry = async (...args) => {\n // @ts-ignore entry is always a functon\n const entrypoints = await defaultEntry(...args)\n\n const isClientCompilation = config.name === 'client'\n\n await Promise.all(\n Object.keys(entries).map(async (page) => {\n if (isClientCompilation && page.match(API_ROUTE)) {\n return\n }\n const {\n serverBundlePath,\n clientBundlePath,\n absolutePagePath,\n } = entries[page]\n const pageExists = await isWriteable(absolutePagePath)\n if (!pageExists) {\n // page was removed\n delete entries[page]\n return\n }\n\n entries[page].status = BUILDING\n const pageLoaderOpts: ClientPagesLoaderOptions = {\n page,\n absolutePagePath,\n }\n\n entrypoints[\n isClientCompilation ? clientBundlePath : serverBundlePath\n ] = isClientCompilation\n ? `next-client-pages-loader?${stringify(pageLoaderOpts)}!`\n : absolutePagePath\n })\n )\n\n return entrypoints\n }\n }\n\n const multiCompiler = webpack(configs)\n\n watchCompilers(multiCompiler.compilers[0], multiCompiler.compilers[1])\n\n // Watch for changes to client/server page files so we can tell when just\n // the server file changes and trigger a reload for GS(S)P pages\n const changedClientPages = new Set<string>()\n const changedServerPages = new Set<string>()\n const prevClientPageHashes = new Map<string, string>()\n const prevServerPageHashes = new Map<string, string>()\n\n const trackPageChanges = (\n pageHashMap: Map<string, string>,\n changedItems: Set<string>\n ) => (stats: webpack.compilation.Compilation) => {\n stats.entrypoints.forEach((entry, key) => {\n if (key.startsWith('pages/')) {\n entry.chunks.forEach((chunk: any) => {\n if (chunk.id === key) {\n const prevHash = pageHashMap.get(key)\n\n if (prevHash && prevHash !== chunk.hash) {\n changedItems.add(key)\n }\n pageHashMap.set(key, chunk.hash)\n }\n })\n }\n })\n }\n\n multiCompiler.compilers[0].hooks.emit.tap(\n 'NextjsHotReloaderForClient',\n trackPageChanges(prevClientPageHashes, changedClientPages)\n )\n multiCompiler.compilers[1].hooks.emit.tap(\n 'NextjsHotReloaderForServer',\n trackPageChanges(prevServerPageHashes, changedServerPages)\n )\n\n // This plugin watches for changes to _document.js and notifies the client side that it should reload the page\n multiCompiler.compilers[1].hooks.failed.tap(\n 'NextjsHotReloaderForServer',\n (err: Error) => {\n this.serverError = err\n this.serverStats = null\n }\n )\n multiCompiler.compilers[1].hooks.done.tap(\n 'NextjsHotReloaderForServer',\n (stats) => {\n this.serverError = null\n this.serverStats = stats\n\n const serverOnlyChanges = difference<string>(\n changedServerPages,\n changedClientPages\n )\n changedClientPages.clear()\n changedServerPages.clear()\n\n if (serverOnlyChanges.length > 0) {\n this.send({\n event: 'serverOnlyChanges',\n pages: serverOnlyChanges.map((pg) =>\n denormalizePagePath(pg.substr('pages'.length))\n ),\n })\n }\n\n const { compilation } = stats\n\n // We only watch `_document` for changes on the server compilation\n // the rest of the files will be triggered by the client compilation\n const documentChunk = compilation.namedChunks.get('pages/_document')\n // If the document chunk can't be found we do nothing\n if (!documentChunk) {\n console.warn('_document.js chunk not found')\n return\n }\n\n // Initial value\n if (this.serverPrevDocumentHash === null) {\n this.serverPrevDocumentHash = documentChunk.hash\n return\n }\n\n // If _document.js didn't change we don't trigger a reload\n if (documentChunk.hash === this.serverPrevDocumentHash) {\n return\n }\n\n // Notify reload to reload the page, as _document.js was changed (different hash)\n this.send('reloadPage')\n this.serverPrevDocumentHash = documentChunk.hash\n }\n )\n\n multiCompiler.compilers[0].hooks.failed.tap(\n 'NextjsHotReloaderForClient',\n (err: Error) => {\n this.clientError = err\n this.stats = null\n }\n )\n multiCompiler.compilers[0].hooks.done.tap(\n 'NextjsHotReloaderForClient',\n (stats) => {\n this.clientError = null\n this.stats = stats\n\n const { compilation } = stats\n const chunkNames = new Set(\n [...compilation.namedChunks.keys()].filter(\n (name) => !!getRouteFromEntrypoint(name)\n )\n )\n\n if (this.prevChunkNames) {\n // detect chunks which have to be replaced with a new template\n // e.g, pages/index.js <-> pages/_error.js\n const addedPages = diff(chunkNames, this.prevChunkNames!)\n const removedPages = diff(this.prevChunkNames!, chunkNames)\n\n if (addedPages.size > 0) {\n for (const addedPage of addedPages) {\n const page = getRouteFromEntrypoint(addedPage)\n this.send('addedPage', page)\n }\n }\n\n if (removedPages.size > 0) {\n for (const removedPage of removedPages) {\n const page = getRouteFromEntrypoint(removedPage)\n this.send('removedPage', page)\n }\n }\n }\n\n this.prevChunkNames = chunkNames\n }\n )\n\n this.webpackHotMiddleware = new WebpackHotMiddleware(\n multiCompiler.compilers\n )\n\n let booted = false\n\n this.watcher = await new Promise((resolve) => {\n const watcher = multiCompiler.watch(\n // @ts-ignore webpack supports an array of watchOptions when using a multiCompiler\n configs.map((config) => config.watchOptions!),\n // Errors are handled separately\n (_err: any) => {\n if (!booted) {\n booted = true\n resolve(watcher)\n }\n }\n )\n })\n\n this.onDemandEntries = onDemandEntryHandler(this.watcher, multiCompiler, {\n pagesDir: this.pagesDir,\n pageExtensions: this.config.pageExtensions,\n ...(this.config.onDemandEntries as {\n maxInactiveAge: number\n pagesBufferLength: number\n }),\n })\n\n this.middlewares = [\n // must come before hotMiddleware\n this.onDemandEntries.middleware,\n this.webpackHotMiddleware.middleware,\n getOverlayMiddleware({\n isWebpack5,\n rootDirectory: this.dir,\n stats: () => this.stats,\n serverStats: () => this.serverStats,\n }),\n ]\n }\n\n public async stop(): Promise<void> {\n await new Promise((resolve, reject) => {\n this.watcher.close((err: any) => (err ? reject(err) : resolve(true)))\n })\n\n if (this.fallbackWatcher) {\n await new Promise((resolve, reject) => {\n this.fallbackWatcher.close((err: any) =>\n err ? reject(err) : resolve(true)\n )\n })\n }\n }\n\n public async getCompilationErrors(page: string) {\n const normalizedPage = normalizePathSep(page)\n\n if (this.clientError || this.serverError) {\n return [this.clientError || this.serverError]\n } else if (this.stats?.hasErrors()) {\n const { compilation } = this.stats\n const failedPages = erroredPages(compilation)\n\n // If there is an error related to the requesting page we display it instead of the first error\n if (\n failedPages[normalizedPage] &&\n failedPages[normalizedPage].length > 0\n ) {\n return failedPages[normalizedPage]\n }\n\n // If none were found we still have to show the other errors\n return this.stats.compilation.errors\n } else if (this.serverStats?.hasErrors()) {\n const { compilation } = this.serverStats\n const failedPages = erroredPages(compilation)\n\n // If there is an error related to the requesting page we display it instead of the first error\n if (\n failedPages[normalizedPage] &&\n failedPages[normalizedPage].length > 0\n ) {\n return failedPages[normalizedPage]\n }\n\n // If none were found we still have to show the other errors\n return this.serverStats.compilation.errors\n }\n\n return []\n }\n\n public send(action?: string | any, ...args: any[]): void {\n this.webpackHotMiddleware!.publish(\n action && typeof action === 'object' ? action : { action, data: args }\n )\n }\n\n public async ensurePage(page: string) {\n // Make sure we don't re-build or dispose prebuilt pages\n if (page !== '/_error' && BLOCKED_PAGES.indexOf(page) !== -1) {\n return\n }\n if (this.serverError || this.clientError) {\n return Promise.reject(this.serverError || this.clientError)\n }\n return this.onDemandEntries.ensurePage(page)\n }\n}\n\nfunction diff(a: Set<any>, b: Set<any>) {\n return new Set([...a].filter((v) => !b.has(v)))\n}\n"]}
\No newline at end of file