| "use strict"; |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| 0 && (module.exports = { |
| default: null, |
| getVersionInfo: null, |
| matchNextPageBundleRequest: null, |
| renderScriptError: null |
| }); |
| function _export(target, all) { |
| for(var name in all)Object.defineProperty(target, name, { |
| enumerable: true, |
| get: all[name] |
| }); |
| } |
| _export(exports, { |
| default: function() { |
| return HotReloaderWebpack; |
| }, |
| getVersionInfo: function() { |
| return getVersionInfo; |
| }, |
| matchNextPageBundleRequest: function() { |
| return matchNextPageBundleRequest; |
| }, |
| renderScriptError: function() { |
| return renderScriptError; |
| } |
| }); |
| const _webpack = require("next/dist/compiled/webpack/webpack"); |
| const _middlewarewebpack = require("./middleware-webpack"); |
| const _hotmiddleware = require("./hot-middleware"); |
| const _path = require("path"); |
| const _entries = require("../../build/entries"); |
| const _output = require("../../build/output"); |
| const _log = _interop_require_wildcard(require("../../build/output/log")); |
| const _webpackconfig = _interop_require_wildcard(require("../../build/webpack-config")); |
| const _constants = require("../../lib/constants"); |
| const _recursivedelete = require("../../lib/recursive-delete"); |
| const _constants1 = require("../../shared/lib/constants"); |
| const _pathmatch = require("../../shared/lib/router/utils/path-match"); |
| const _findpagefile = require("../lib/find-page-file"); |
| const _ondemandentryhandler = require("./on-demand-entry-handler"); |
| const _denormalizepagepath = require("../../shared/lib/page-path/denormalize-page-path"); |
| const _normalizepathsep = require("../../shared/lib/page-path/normalize-path-sep"); |
| const _getroutefromentrypoint = _interop_require_default(require("../get-route-from-entrypoint")); |
| const _utils = require("../../build/utils"); |
| const _utils1 = require("../../shared/lib/utils"); |
| const _trace = require("../../trace"); |
| const _iserror = require("../../lib/is-error"); |
| const _ws = _interop_require_default(require("next/dist/compiled/ws")); |
| const _fs = require("fs"); |
| const _parseversioninfo = require("./parse-version-info"); |
| const _isapiroute = require("../../lib/is-api-route"); |
| const _nextrouteloader = require("../../build/webpack/loaders/next-route-loader"); |
| const _isinternalcomponent = require("../../lib/is-internal-component"); |
| const _routekind = require("../route-kind"); |
| const _hotreloadertypes = require("./hot-reloader-types"); |
| const _pagetypes = require("../../lib/page-types"); |
| const _messages = require("./messages"); |
| const _utils2 = require("../lib/utils"); |
| const _getnexterrorfeedbackmiddleware = require("../../next-devtools/server/get-next-error-feedback-middleware"); |
| const _getdevoverlayfontmiddleware = require("../../next-devtools/server/font/get-dev-overlay-font-middleware"); |
| const _devindicatormiddleware = require("../../next-devtools/server/dev-indicator-middleware"); |
| const _getwebpackbundler = _interop_require_default(require("../../shared/lib/get-webpack-bundler")); |
| const _restartdevservermiddleware = require("../../next-devtools/server/restart-dev-server-middleware"); |
| const _cacheinvalidation = require("../../build/webpack/cache-invalidation"); |
| const _receivelogs = require("./browser-logs/receive-logs"); |
| const _devtoolsconfigmiddleware = require("../../next-devtools/server/devtools-config-middleware"); |
| function _interop_require_default(obj) { |
| return obj && obj.__esModule ? obj : { |
| default: obj |
| }; |
| } |
| function _getRequireWildcardCache(nodeInterop) { |
| if (typeof WeakMap !== "function") return null; |
| var cacheBabelInterop = new WeakMap(); |
| var cacheNodeInterop = new WeakMap(); |
| return (_getRequireWildcardCache = function(nodeInterop) { |
| return nodeInterop ? cacheNodeInterop : cacheBabelInterop; |
| })(nodeInterop); |
| } |
| function _interop_require_wildcard(obj, nodeInterop) { |
| if (!nodeInterop && obj && obj.__esModule) { |
| return obj; |
| } |
| if (obj === null || typeof obj !== "object" && typeof obj !== "function") { |
| return { |
| default: obj |
| }; |
| } |
| var cache = _getRequireWildcardCache(nodeInterop); |
| if (cache && cache.has(obj)) { |
| return cache.get(obj); |
| } |
| var newObj = { |
| __proto__: null |
| }; |
| var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; |
| for(var key in obj){ |
| if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { |
| var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; |
| if (desc && (desc.get || desc.set)) { |
| Object.defineProperty(newObj, key, desc); |
| } else { |
| newObj[key] = obj[key]; |
| } |
| } |
| } |
| newObj.default = obj; |
| if (cache) { |
| cache.set(obj, newObj); |
| } |
| return newObj; |
| } |
| const MILLISECONDS_IN_NANOSECOND = BigInt(1000000); |
| function diff(a, b) { |
| return new Set([ |
| ...a |
| ].filter((v)=>!b.has(v))); |
| } |
| const wsServer = new _ws.default.Server({ |
| noServer: true |
| }); |
| async function renderScriptError(res, error, { verbose = true } = {}) { |
| |
| res.setHeader('Cache-Control', 'no-cache, no-store, max-age=0, must-revalidate'); |
| if (error.code === 'ENOENT') { |
| return { |
| finished: undefined |
| }; |
| } |
| if (verbose) { |
| console.error(error.stack); |
| } |
| res.statusCode = 500; |
| res.end('500 - Internal Error'); |
| return { |
| finished: true |
| }; |
| } |
| function addCorsSupport(req, res) { |
| |
| if (!req.url.startsWith('/__next')) { |
| return { |
| preflight: false |
| }; |
| } |
| if (!req.headers.origin) { |
| return { |
| preflight: false |
| }; |
| } |
| res.setHeader('Access-Control-Allow-Origin', req.headers.origin); |
| res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET'); |
| |
| if (req.headers['access-control-request-headers']) { |
| res.setHeader('Access-Control-Allow-Headers', req.headers['access-control-request-headers']); |
| } |
| if (req.method === 'OPTIONS') { |
| res.writeHead(200); |
| res.end(); |
| return { |
| preflight: true |
| }; |
| } |
| return { |
| preflight: false |
| }; |
| } |
| const matchNextPageBundleRequest = (0, _pathmatch.getPathMatch)('/_next/static/chunks/pages/:path*.js(\\.map|)'); |
| |
| function findEntryModule(module1, compilation) { |
| for(;;){ |
| const issuer = compilation.moduleGraph.getIssuer(module1); |
| if (!issuer) return module1; |
| module1 = issuer; |
| } |
| } |
| function erroredPages(compilation) { |
| const failedPages = {}; |
| for (const error of compilation.errors){ |
| if (!error.module) { |
| continue; |
| } |
| const entryModule = findEntryModule(error.module, compilation); |
| const { name } = entryModule; |
| if (!name) { |
| continue; |
| } |
| |
| const enhancedName = (0, _getroutefromentrypoint.default)(name); |
| if (!enhancedName) { |
| continue; |
| } |
| if (!failedPages[enhancedName]) { |
| failedPages[enhancedName] = []; |
| } |
| failedPages[enhancedName].push(error); |
| } |
| return failedPages; |
| } |
| async function getVersionInfo() { |
| let installed = '0.0.0'; |
| try { |
| installed = require('next/package.json').version; |
| let res; |
| try { |
| |
| res = await fetch('https://registry.npmjs.org/-/package/next/dist-tags'); |
| } catch { |
| |
| } |
| if (!res || !res.ok) return { |
| installed, |
| staleness: 'unknown' |
| }; |
| const { latest, canary } = await res.json(); |
| return (0, _parseversioninfo.parseVersionInfo)({ |
| installed, |
| latest, |
| canary |
| }); |
| } catch (e) { |
| console.error(e); |
| return { |
| installed, |
| staleness: 'unknown' |
| }; |
| } |
| } |
| class HotReloaderWebpack { |
| constructor(dir, { config, isSrcDir, pagesDir, distDir, buildId, encryptionKey, previewProps, rewrites, appDir, telemetry, resetFetch }){ |
| this.clientError = null; |
| this.serverError = null; |
| this.hmrServerError = null; |
| this.pagesMapping = {}; |
| this.versionInfo = { |
| staleness: 'unknown', |
| installed: '0.0.0' |
| }; |
| this.reloadAfterInvalidation = false; |
| this.hasAmpEntrypoints = false; |
| this.hasAppRouterEntrypoints = false; |
| this.hasPagesRouterEntrypoints = false; |
| this.buildId = buildId; |
| this.encryptionKey = encryptionKey; |
| this.dir = dir; |
| this.isSrcDir = isSrcDir; |
| this.middlewares = []; |
| this.pagesDir = pagesDir; |
| this.appDir = appDir; |
| this.distDir = distDir; |
| this.clientStats = null; |
| this.serverStats = null; |
| this.edgeServerStats = null; |
| this.serverPrevDocumentHash = null; |
| this.telemetry = telemetry; |
| this.resetFetch = resetFetch; |
| this.config = config; |
| this.previewProps = previewProps; |
| this.rewrites = rewrites; |
| this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, { |
| version: "15.5.14" |
| }); |
| |
| |
| this.hotReloaderSpan.stop(); |
| } |
| async run(req, res, parsedUrl) { |
| |
| |
| |
| |
| const { preflight } = addCorsSupport(req, res); |
| if (preflight) { |
| return {}; |
| } |
| |
| |
| |
| |
| const handlePageBundleRequest = async (pageBundleRes, parsedPageBundleUrl)=>{ |
| const { pathname } = parsedPageBundleUrl; |
| if (!pathname) return {}; |
| const params = matchNextPageBundleRequest(pathname); |
| if (!params) return {}; |
| let decodedPagePath; |
| try { |
| decodedPagePath = `/${params.path.map((param)=>decodeURIComponent(param)).join('/')}`; |
| } catch (_) { |
| throw Object.defineProperty(new _utils1.DecodeError('failed to decode param'), "__NEXT_ERROR_CODE", { |
| value: "E528", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| const page = (0, _denormalizepagepath.denormalizePagePath)(decodedPagePath); |
| if (page === '/_error' || _constants1.BLOCKED_PAGES.indexOf(page) === -1) { |
| try { |
| await this.ensurePage({ |
| page, |
| clientOnly: true, |
| url: req.url |
| }); |
| } catch (error) { |
| return await renderScriptError(pageBundleRes, (0, _iserror.getProperError)(error)); |
| } |
| const errors = await this.getCompilationErrors(page); |
| if (errors.length > 0) { |
| return await renderScriptError(pageBundleRes, errors[0], { |
| verbose: false |
| }); |
| } |
| } |
| return {}; |
| }; |
| const { finished } = await handlePageBundleRequest(res, parsedUrl); |
| for (const middleware of this.middlewares){ |
| let calledNext = false; |
| await middleware(req, res, ()=>{ |
| calledNext = true; |
| }); |
| if (!calledNext) { |
| return { |
| finished: true |
| }; |
| } |
| } |
| return { |
| finished |
| }; |
| } |
| setHmrServerError(error) { |
| this.hmrServerError = error; |
| } |
| clearHmrServerError() { |
| if (this.hmrServerError) { |
| this.setHmrServerError(null); |
| this.send({ |
| action: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE, |
| data: 'clear hmr server error' |
| }); |
| } |
| } |
| async refreshServerComponents(hash) { |
| this.send({ |
| action: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES, |
| hash |
| }); |
| } |
| onHMR(req, _socket, head, callback) { |
| wsServer.handleUpgrade(req, req.socket, head, (client)=>{ |
| var _this_webpackHotMiddleware, _this_onDemandEntries; |
| (_this_webpackHotMiddleware = this.webpackHotMiddleware) == null ? void 0 : _this_webpackHotMiddleware.onHMR(client); |
| (_this_onDemandEntries = this.onDemandEntries) == null ? void 0 : _this_onDemandEntries.onHMR(client, ()=>this.hmrServerError); |
| callback(client); |
| client.addEventListener('message', async ({ data })=>{ |
| data = typeof data !== 'string' ? data.toString() : data; |
| try { |
| const payload = JSON.parse(data); |
| let traceChild; |
| switch(payload.event){ |
| case 'span-end': |
| { |
| traceChild = { |
| name: payload.spanName, |
| startTime: BigInt(Math.floor(payload.startTime)) * MILLISECONDS_IN_NANOSECOND, |
| attrs: payload.attributes, |
| endTime: BigInt(Math.floor(payload.endTime)) * MILLISECONDS_IN_NANOSECOND |
| }; |
| break; |
| } |
| case 'client-hmr-latency': |
| { |
| traceChild = { |
| name: payload.event, |
| startTime: BigInt(payload.startTime) * MILLISECONDS_IN_NANOSECOND, |
| endTime: BigInt(payload.endTime) * MILLISECONDS_IN_NANOSECOND, |
| attrs: { |
| updatedModules: payload.updatedModules.map((m)=>m.replace(`(${_constants.WEBPACK_LAYERS.appPagesBrowser})/`, '').replace(/^\.\//, '[project]/')), |
| page: payload.page, |
| isPageHidden: payload.isPageHidden |
| } |
| }; |
| break; |
| } |
| case 'client-reload-page': |
| case 'client-success': |
| { |
| traceChild = { |
| name: payload.event |
| }; |
| break; |
| } |
| case 'client-error': |
| { |
| traceChild = { |
| name: payload.event, |
| attrs: { |
| errorCount: payload.errorCount |
| } |
| }; |
| break; |
| } |
| case 'client-warning': |
| { |
| traceChild = { |
| name: payload.event, |
| attrs: { |
| warningCount: payload.warningCount |
| } |
| }; |
| break; |
| } |
| case 'client-removed-page': |
| case 'client-added-page': |
| { |
| traceChild = { |
| name: payload.event, |
| attrs: { |
| page: payload.page || '' |
| } |
| }; |
| break; |
| } |
| case 'client-full-reload': |
| { |
| const { event, stackTrace, hadRuntimeError } = payload; |
| traceChild = { |
| name: event, |
| attrs: { |
| stackTrace: stackTrace ?? '' |
| } |
| }; |
| if (hadRuntimeError) { |
| _log.warn(_messages.FAST_REFRESH_RUNTIME_RELOAD); |
| break; |
| } |
| let fileMessage = ''; |
| if (stackTrace) { |
| var _exec; |
| const file = (_exec = /Aborted because (.+) is not accepted/.exec(stackTrace)) == null ? void 0 : _exec[1]; |
| if (file) { |
| |
| |
| if (file.startsWith(`(${_constants.WEBPACK_LAYERS.appPagesBrowser})/`)) { |
| const fileUrl = new URL(file, 'file://'); |
| const cwd = process.cwd(); |
| const modules = fileUrl.searchParams.getAll('modules').map((filepath)=>filepath.slice(cwd.length + 1)).filter((filepath)=>!filepath.startsWith('node_modules')); |
| if (modules.length > 0) { |
| fileMessage = ` when ${modules.join(', ')} changed`; |
| } |
| } else if ( |
| file.startsWith(`(${_constants.WEBPACK_LAYERS.pagesDirBrowser})/`)) { |
| const cleanedFilePath = file.slice(`(${_constants.WEBPACK_LAYERS.pagesDirBrowser})/`.length); |
| fileMessage = ` when ${cleanedFilePath} changed`; |
| } else { |
| fileMessage = ` when ${file} changed`; |
| } |
| } |
| } |
| _log.warn(`Fast Refresh had to perform a full reload${fileMessage}. Read more: https://nextjs.org/docs/messages/fast-refresh-reload`); |
| break; |
| } |
| case 'browser-logs': |
| { |
| if (this.config.experimental.browserDebugInfoInTerminal) { |
| await (0, _receivelogs.receiveBrowserLogsWebpack)({ |
| entries: payload.entries, |
| router: payload.router, |
| sourceType: payload.sourceType, |
| clientStats: ()=>this.clientStats, |
| serverStats: ()=>this.serverStats, |
| edgeServerStats: ()=>this.edgeServerStats, |
| rootDirectory: this.dir, |
| distDir: this.distDir, |
| config: this.config.experimental.browserDebugInfoInTerminal |
| }); |
| } |
| break; |
| } |
| default: |
| { |
| break; |
| } |
| } |
| if (traceChild) { |
| this.hotReloaderSpan.manualTraceChild(traceChild.name, traceChild.startTime, traceChild.endTime, { |
| ...traceChild.attrs, |
| clientId: payload.id |
| }); |
| } |
| } catch (_) { |
| |
| } |
| }); |
| }); |
| } |
| async clean(span) { |
| return span.traceChild('clean').traceAsyncFn(()=>(0, _recursivedelete.recursiveDelete)((0, _path.join)(this.dir, this.config.distDir), /^cache/)); |
| } |
| async getWebpackConfig(span) { |
| const webpackConfigSpan = span.traceChild('get-webpack-config'); |
| const pageExtensions = this.config.pageExtensions; |
| return webpackConfigSpan.traceAsyncFn(async ()=>{ |
| const pagePaths = !this.pagesDir ? [] : await webpackConfigSpan.traceChild('get-page-paths').traceAsyncFn(()=>Promise.all([ |
| (0, _findpagefile.findPageFile)(this.pagesDir, '/_app', pageExtensions, false), |
| (0, _findpagefile.findPageFile)(this.pagesDir, '/_document', pageExtensions, false) |
| ])); |
| this.pagesMapping = await webpackConfigSpan.traceChild('create-pages-mapping').traceAsyncFn(()=>(0, _entries.createPagesMapping)({ |
| isDev: true, |
| pageExtensions: this.config.pageExtensions, |
| pagesType: _pagetypes.PAGE_TYPES.PAGES, |
| pagePaths: pagePaths.filter((i)=>typeof i === 'string'), |
| pagesDir: this.pagesDir, |
| appDir: this.appDir |
| })); |
| const entrypoints = await webpackConfigSpan.traceChild('create-entrypoints').traceAsyncFn(()=>(0, _entries.createEntrypoints)({ |
| appDir: this.appDir, |
| buildId: this.buildId, |
| config: this.config, |
| envFiles: [], |
| isDev: true, |
| pages: this.pagesMapping, |
| pagesDir: this.pagesDir, |
| previewMode: this.previewProps, |
| rootDir: this.dir, |
| pageExtensions: this.config.pageExtensions |
| })); |
| const commonWebpackOptions = { |
| dev: true, |
| buildId: this.buildId, |
| encryptionKey: this.encryptionKey, |
| config: this.config, |
| pagesDir: this.pagesDir, |
| rewrites: this.rewrites, |
| originalRewrites: this.config._originalRewrites, |
| originalRedirects: this.config._originalRedirects, |
| runWebpackSpan: this.hotReloaderSpan, |
| appDir: this.appDir, |
| previewProps: this.previewProps |
| }; |
| return webpackConfigSpan.traceChild('generate-webpack-config').traceAsyncFn(async ()=>{ |
| const info = await (0, _webpackconfig.loadProjectInfo)({ |
| dir: this.dir, |
| config: commonWebpackOptions.config, |
| dev: true |
| }); |
| return Promise.all([ |
| |
| (0, _webpackconfig.default)(this.dir, { |
| ...commonWebpackOptions, |
| compilerType: _constants1.COMPILER_NAMES.client, |
| entrypoints: entrypoints.client, |
| ...info |
| }), |
| (0, _webpackconfig.default)(this.dir, { |
| ...commonWebpackOptions, |
| compilerType: _constants1.COMPILER_NAMES.server, |
| entrypoints: entrypoints.server, |
| ...info |
| }), |
| (0, _webpackconfig.default)(this.dir, { |
| ...commonWebpackOptions, |
| compilerType: _constants1.COMPILER_NAMES.edgeServer, |
| entrypoints: entrypoints.edgeServer, |
| ...info |
| }) |
| ]); |
| }); |
| }); |
| } |
| async buildFallbackError() { |
| if (this.fallbackWatcher) return; |
| const info = await (0, _webpackconfig.loadProjectInfo)({ |
| dir: this.dir, |
| config: this.config, |
| dev: true |
| }); |
| const fallbackConfig = await (0, _webpackconfig.default)(this.dir, { |
| previewProps: this.previewProps, |
| runWebpackSpan: this.hotReloaderSpan, |
| dev: true, |
| compilerType: _constants1.COMPILER_NAMES.client, |
| config: this.config, |
| buildId: this.buildId, |
| encryptionKey: this.encryptionKey, |
| appDir: this.appDir, |
| pagesDir: this.pagesDir, |
| rewrites: { |
| beforeFiles: [], |
| afterFiles: [], |
| fallback: [] |
| }, |
| originalRewrites: { |
| beforeFiles: [], |
| afterFiles: [], |
| fallback: [] |
| }, |
| originalRedirects: [], |
| isDevFallback: true, |
| entrypoints: (await (0, _entries.createEntrypoints)({ |
| appDir: this.appDir, |
| buildId: this.buildId, |
| config: this.config, |
| envFiles: [], |
| isDev: true, |
| pages: { |
| '/_app': 'next/dist/pages/_app', |
| '/_error': 'next/dist/pages/_error' |
| }, |
| pagesDir: this.pagesDir, |
| previewMode: this.previewProps, |
| rootDir: this.dir, |
| pageExtensions: this.config.pageExtensions |
| })).client, |
| ...info |
| }); |
| const fallbackCompiler = (0, _getwebpackbundler.default)()(fallbackConfig); |
| this.fallbackWatcher = await new Promise((resolve)=>{ |
| let bootedFallbackCompiler = false; |
| fallbackCompiler.watch( |
| fallbackConfig.watchOptions, |
| (_err)=>{ |
| if (!bootedFallbackCompiler) { |
| bootedFallbackCompiler = true; |
| resolve(true); |
| } |
| }); |
| }); |
| } |
| async tracedGetVersionInfo(span) { |
| const versionInfoSpan = span.traceChild('get-version-info'); |
| return versionInfoSpan.traceAsyncFn(async ()=>getVersionInfo()); |
| } |
| async start() { |
| const startSpan = this.hotReloaderSpan.traceChild('start'); |
| startSpan.stop() |
| ; |
| this.versionInfo = await this.tracedGetVersionInfo(startSpan); |
| const nodeDebugType = (0, _utils2.getNodeDebugType)(); |
| if (nodeDebugType && !this.devtoolsFrontendUrl) { |
| const debugPort = process.debugPort; |
| let debugInfo; |
| try { |
| |
| const debugInfoList = await fetch(`http://127.0.0.1:${debugPort}/json/list`).then((res)=>res.json()); |
| |
| debugInfo = debugInfoList[0]; |
| } catch {} |
| if (debugInfo) { |
| this.devtoolsFrontendUrl = debugInfo.devtoolsFrontendUrl; |
| } |
| } |
| await this.clean(startSpan); |
| |
| await _fs.promises.mkdir(this.distDir, { |
| recursive: true |
| }); |
| const initialDevToolsConfig = await (0, _devtoolsconfigmiddleware.getDevToolsConfig)(this.distDir); |
| const distPackageJsonPath = (0, _path.join)(this.distDir, 'package.json'); |
| |
| |
| await _fs.promises.writeFile(distPackageJsonPath, '{"type": "commonjs"}'); |
| this.activeWebpackConfigs = await this.getWebpackConfig(startSpan); |
| for (const config of this.activeWebpackConfigs){ |
| const defaultEntry = config.entry; |
| config.entry = async (...args)=>{ |
| var _this_multiCompiler; |
| const outputPath = ((_this_multiCompiler = this.multiCompiler) == null ? void 0 : _this_multiCompiler.outputPath) || ''; |
| const entries = (0, _ondemandentryhandler.getEntries)(outputPath); |
| |
| const entrypoints = await defaultEntry(...args); |
| const isClientCompilation = config.name === _constants1.COMPILER_NAMES.client; |
| const isNodeServerCompilation = config.name === _constants1.COMPILER_NAMES.server; |
| const isEdgeServerCompilation = config.name === _constants1.COMPILER_NAMES.edgeServer; |
| await Promise.all(Object.keys(entries).map(async (entryKey)=>{ |
| const entryData = entries[entryKey]; |
| const { bundlePath, dispose } = entryData; |
| const result = /^(client|server|edge-server)@(app|pages|root)@(.*)/g.exec(entryKey); |
| const [, key , , page] = result |
| ; |
| if (key === _constants1.COMPILER_NAMES.client && !isClientCompilation) return; |
| if (key === _constants1.COMPILER_NAMES.server && !isNodeServerCompilation) return; |
| if (key === _constants1.COMPILER_NAMES.edgeServer && !isEdgeServerCompilation) return; |
| const isEntry = entryData.type === _ondemandentryhandler.EntryTypes.ENTRY; |
| const isChildEntry = entryData.type === _ondemandentryhandler.EntryTypes.CHILD_ENTRY; |
| |
| if (isEntry) { |
| const pageExists = !dispose && (0, _fs.existsSync)(entryData.absolutePagePath); |
| if (!pageExists) { |
| delete entries[entryKey]; |
| return; |
| } |
| } |
| |
| if (isChildEntry) { |
| if (entryData.absoluteEntryFilePath) { |
| const pageExists = !dispose && (0, _fs.existsSync)(entryData.absoluteEntryFilePath); |
| if (!pageExists) { |
| delete entries[entryKey]; |
| return; |
| } |
| } |
| } |
| |
| if (page === '/_error') { |
| this.hasPagesRouterEntrypoints = true; |
| } |
| const hasAppDir = !!this.appDir; |
| const isAppPath = hasAppDir && bundlePath.startsWith('app/'); |
| const staticInfo = isEntry ? await (0, _entries.getStaticInfoIncludingLayouts)({ |
| isInsideAppDir: isAppPath, |
| pageExtensions: this.config.pageExtensions, |
| pageFilePath: entryData.absolutePagePath, |
| appDir: this.appDir, |
| config: this.config, |
| isDev: true, |
| page |
| }) : undefined; |
| if ((staticInfo == null ? void 0 : staticInfo.type) === _pagetypes.PAGE_TYPES.PAGES) { |
| var _staticInfo_config_config, _staticInfo_config, _staticInfo_config_config1, _staticInfo_config1; |
| if (((_staticInfo_config = staticInfo.config) == null ? void 0 : (_staticInfo_config_config = _staticInfo_config.config) == null ? void 0 : _staticInfo_config_config.amp) === true || ((_staticInfo_config1 = staticInfo.config) == null ? void 0 : (_staticInfo_config_config1 = _staticInfo_config1.config) == null ? void 0 : _staticInfo_config_config1.amp) === 'hybrid') { |
| this.hasAmpEntrypoints = true; |
| } |
| } |
| const isServerComponent = isAppPath && (staticInfo == null ? void 0 : staticInfo.rsc) !== _constants1.RSC_MODULE_TYPES.client; |
| const pageType = entryData.bundlePath.startsWith('pages/') ? _pagetypes.PAGE_TYPES.PAGES : entryData.bundlePath.startsWith('app/') ? _pagetypes.PAGE_TYPES.APP : _pagetypes.PAGE_TYPES.ROOT; |
| if (pageType === 'pages') { |
| this.hasPagesRouterEntrypoints = true; |
| } |
| if (pageType === 'app') { |
| this.hasAppRouterEntrypoints = true; |
| } |
| const isInstrumentation = (0, _utils.isInstrumentationHookFile)(page) && pageType === _pagetypes.PAGE_TYPES.ROOT; |
| let pageRuntime = staticInfo == null ? void 0 : staticInfo.runtime; |
| (0, _entries.runDependingOnPageType)({ |
| page, |
| pageRuntime, |
| pageType, |
| onEdgeServer: ()=>{ |
| |
| if (!isEdgeServerCompilation || !isEntry) return; |
| entries[entryKey].status = _ondemandentryhandler.BUILDING; |
| if (isInstrumentation) { |
| const normalizedBundlePath = bundlePath.replace('src/', ''); |
| entrypoints[normalizedBundlePath] = (0, _entries.finalizeEntrypoint)({ |
| compilerType: _constants1.COMPILER_NAMES.edgeServer, |
| name: normalizedBundlePath, |
| value: (0, _entries.getInstrumentationEntry)({ |
| absolutePagePath: entryData.absolutePagePath, |
| isEdgeServer: true, |
| isDev: true |
| }), |
| isServerComponent: true, |
| hasAppDir |
| }); |
| return; |
| } |
| const appDirLoader = isAppPath ? (0, _entries.getAppEntry)({ |
| name: bundlePath, |
| page, |
| appPaths: entryData.appPaths, |
| pagePath: _path.posix.join(_constants.APP_DIR_ALIAS, (0, _path.relative)(this.appDir, entryData.absolutePagePath).replace(/\\/g, '/')), |
| appDir: this.appDir, |
| pageExtensions: this.config.pageExtensions, |
| rootDir: this.dir, |
| isDev: true, |
| tsconfigPath: this.config.typescript.tsconfigPath, |
| basePath: this.config.basePath, |
| assetPrefix: this.config.assetPrefix, |
| nextConfigOutput: this.config.output, |
| preferredRegion: staticInfo == null ? void 0 : staticInfo.preferredRegion, |
| middlewareConfig: Buffer.from(JSON.stringify((staticInfo == null ? void 0 : staticInfo.middleware) || {})).toString('base64'), |
| isGlobalNotFoundEnabled: this.config.experimental.globalNotFound ? true : undefined |
| }).import : undefined; |
| entrypoints[bundlePath] = (0, _entries.finalizeEntrypoint)({ |
| compilerType: _constants1.COMPILER_NAMES.edgeServer, |
| name: bundlePath, |
| value: (0, _entries.getEdgeServerEntry)({ |
| absolutePagePath: entryData.absolutePagePath, |
| rootDir: this.dir, |
| buildId: this.buildId, |
| bundlePath, |
| config: this.config, |
| isDev: true, |
| page, |
| pages: this.pagesMapping, |
| isServerComponent, |
| appDirLoader, |
| pagesType: isAppPath ? _pagetypes.PAGE_TYPES.APP : _pagetypes.PAGE_TYPES.PAGES, |
| preferredRegion: staticInfo == null ? void 0 : staticInfo.preferredRegion |
| }), |
| hasAppDir |
| }); |
| }, |
| onClient: ()=>{ |
| if (!isClientCompilation) return; |
| if (isChildEntry) { |
| entries[entryKey].status = _ondemandentryhandler.BUILDING; |
| entrypoints[bundlePath] = (0, _entries.finalizeEntrypoint)({ |
| name: bundlePath, |
| compilerType: _constants1.COMPILER_NAMES.client, |
| value: entryData.request, |
| hasAppDir |
| }); |
| } else { |
| entries[entryKey].status = _ondemandentryhandler.BUILDING; |
| entrypoints[bundlePath] = (0, _entries.finalizeEntrypoint)({ |
| name: bundlePath, |
| compilerType: _constants1.COMPILER_NAMES.client, |
| value: (0, _entries.getClientEntry)({ |
| absolutePagePath: entryData.absolutePagePath, |
| page |
| }), |
| hasAppDir |
| }); |
| } |
| }, |
| onServer: ()=>{ |
| |
| if (!isNodeServerCompilation || !isEntry) return; |
| entries[entryKey].status = _ondemandentryhandler.BUILDING; |
| let relativeRequest = (0, _path.relative)(config.context, entryData.absolutePagePath); |
| if (!(0, _path.isAbsolute)(relativeRequest) && !relativeRequest.startsWith('../')) { |
| relativeRequest = `./${relativeRequest}`; |
| } |
| let value; |
| if (isInstrumentation) { |
| value = (0, _entries.getInstrumentationEntry)({ |
| absolutePagePath: entryData.absolutePagePath, |
| isEdgeServer: false, |
| isDev: true |
| }); |
| entrypoints[bundlePath] = (0, _entries.finalizeEntrypoint)({ |
| compilerType: _constants1.COMPILER_NAMES.server, |
| name: bundlePath, |
| isServerComponent: true, |
| value, |
| hasAppDir |
| }); |
| } else if ((0, _utils.isMiddlewareFile)(page)) { |
| value = (0, _entries.getEdgeServerEntry)({ |
| absolutePagePath: entryData.absolutePagePath, |
| rootDir: this.dir, |
| buildId: this.buildId, |
| bundlePath, |
| config: this.config, |
| isDev: true, |
| page, |
| pages: this.pagesMapping, |
| isServerComponent, |
| pagesType: _pagetypes.PAGE_TYPES.PAGES, |
| preferredRegion: staticInfo == null ? void 0 : staticInfo.preferredRegion |
| }); |
| } else if (isAppPath) { |
| |
| const pagePath = entryData.absolutePagePath.startsWith((0, _path.dirname)(require.resolve('next/package.json'))) ? entryData.absolutePagePath : _path.posix.join(_constants.APP_DIR_ALIAS, (0, _path.relative)(this.appDir, entryData.absolutePagePath).replace(/\\/g, '/')); |
| value = (0, _entries.getAppEntry)({ |
| name: bundlePath, |
| page, |
| appPaths: entryData.appPaths, |
| pagePath, |
| appDir: this.appDir, |
| pageExtensions: this.config.pageExtensions, |
| rootDir: this.dir, |
| isDev: true, |
| tsconfigPath: this.config.typescript.tsconfigPath, |
| basePath: this.config.basePath, |
| assetPrefix: this.config.assetPrefix, |
| nextConfigOutput: this.config.output, |
| preferredRegion: staticInfo == null ? void 0 : staticInfo.preferredRegion, |
| middlewareConfig: Buffer.from(JSON.stringify((staticInfo == null ? void 0 : staticInfo.middleware) || {})).toString('base64'), |
| isGlobalNotFoundEnabled: this.config.experimental.globalNotFound ? true : undefined |
| }); |
| } else if ((0, _isapiroute.isAPIRoute)(page)) { |
| value = (0, _nextrouteloader.getRouteLoaderEntry)({ |
| kind: _routekind.RouteKind.PAGES_API, |
| page, |
| absolutePagePath: relativeRequest, |
| preferredRegion: staticInfo == null ? void 0 : staticInfo.preferredRegion, |
| middlewareConfig: (staticInfo == null ? void 0 : staticInfo.middleware) || {} |
| }); |
| } else if (!(0, _utils.isMiddlewareFile)(page) && !(0, _isinternalcomponent.isInternalComponent)(relativeRequest) && !(0, _isinternalcomponent.isNonRoutePagesPage)(page) && !isInstrumentation) { |
| value = (0, _nextrouteloader.getRouteLoaderEntry)({ |
| kind: _routekind.RouteKind.PAGES, |
| page, |
| pages: this.pagesMapping, |
| absolutePagePath: relativeRequest, |
| preferredRegion: staticInfo == null ? void 0 : staticInfo.preferredRegion, |
| middlewareConfig: (staticInfo == null ? void 0 : staticInfo.middleware) ?? {} |
| }); |
| } else { |
| value = relativeRequest; |
| } |
| entrypoints[bundlePath] = (0, _entries.finalizeEntrypoint)({ |
| compilerType: _constants1.COMPILER_NAMES.server, |
| name: bundlePath, |
| isServerComponent, |
| value, |
| hasAppDir |
| }); |
| } |
| }); |
| })); |
| if (!this.hasAmpEntrypoints) { |
| delete entrypoints[_constants1.CLIENT_STATIC_FILES_RUNTIME_AMP]; |
| } |
| if (!this.hasPagesRouterEntrypoints) { |
| delete entrypoints[_constants1.CLIENT_STATIC_FILES_RUNTIME_MAIN]; |
| delete entrypoints['pages/_app']; |
| delete entrypoints['pages/_error']; |
| delete entrypoints['/_error']; |
| delete entrypoints['pages/_document']; |
| } |
| |
| if (!this.hasAmpEntrypoints && !this.hasPagesRouterEntrypoints) { |
| delete entrypoints[_constants1.CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH]; |
| } |
| if (!this.hasAppRouterEntrypoints) { |
| delete entrypoints[_constants1.CLIENT_STATIC_FILES_RUNTIME_MAIN_APP]; |
| } |
| return entrypoints; |
| }; |
| } |
| |
| |
| this.activeWebpackConfigs.parallelism = 1; |
| await Promise.all(Array.from((0, _webpackconfig.getCacheDirectories)(this.activeWebpackConfigs)).map(_cacheinvalidation.checkPersistentCacheInvalidationAndCleanup)); |
| this.multiCompiler = (0, _getwebpackbundler.default)()(this.activeWebpackConfigs); |
| |
| const inputFileSystem = this.multiCompiler.compilers[0].inputFileSystem; |
| for (const compiler of this.multiCompiler.compilers){ |
| compiler.inputFileSystem = inputFileSystem; |
| |
| compiler.fsStartTime = Date.now(); |
| |
| compiler.hooks.beforeRun.intercept({ |
| register (tapInfo) { |
| if (tapInfo.name === 'NodeEnvironmentPlugin') { |
| return null; |
| } |
| return tapInfo; |
| } |
| }); |
| } |
| this.multiCompiler.hooks.done.tap('NextjsHotReloader', ()=>{ |
| var _inputFileSystem_purge; |
| inputFileSystem == null ? void 0 : (_inputFileSystem_purge = inputFileSystem.purge) == null ? void 0 : _inputFileSystem_purge.call(inputFileSystem); |
| }); |
| (0, _output.watchCompilers)(this.multiCompiler.compilers[0], this.multiCompiler.compilers[1], this.multiCompiler.compilers[2]); |
| |
| |
| const changedClientPages = new Set(); |
| const changedServerPages = new Set(); |
| const changedEdgeServerPages = new Set(); |
| const changedServerComponentPages = new Set(); |
| const changedCSSImportPages = new Set(); |
| const prevClientPageHashes = new Map(); |
| const prevServerPageHashes = new Map(); |
| const prevEdgeServerPageHashes = new Map(); |
| const prevCSSImportModuleHashes = new Map(); |
| const pageExtensionRegex = new RegExp(`\\.(?:${this.config.pageExtensions.join('|')})$`); |
| const trackPageChanges = (pageHashMap, changedItems, serverComponentChangedItems)=>(stats)=>{ |
| try { |
| stats.entrypoints.forEach((entry, key)=>{ |
| if (key.startsWith('pages/') || key.startsWith('app/') || (0, _utils.isMiddlewareFilename)(key)) { |
| |
| entry.chunks.forEach((chunk)=>{ |
| if (chunk.id === key) { |
| const modsIterable = stats.chunkGraph.getChunkModulesIterable(chunk); |
| let hasCSSModuleChanges = false; |
| let chunksHash = new _webpack.StringXor(); |
| let chunksHashServerLayer = new _webpack.StringXor(); |
| modsIterable.forEach((mod)=>{ |
| if (mod.resource && mod.resource.replace(/\\/g, '/').includes(key) && |
| pageExtensionRegex.test(mod.resource)) { |
| var _mod_buildInfo_rsc, _mod_buildInfo; |
| |
| |
| |
| |
| const hash = require('crypto').createHash('sha1').update(mod.originalSource().buffer()).digest().toString('hex'); |
| if (mod.layer === _constants.WEBPACK_LAYERS.reactServerComponents && (mod == null ? void 0 : (_mod_buildInfo = mod.buildInfo) == null ? void 0 : (_mod_buildInfo_rsc = _mod_buildInfo.rsc) == null ? void 0 : _mod_buildInfo_rsc.type) !== 'client') { |
| chunksHashServerLayer.add(hash); |
| } |
| chunksHash.add(hash); |
| } else { |
| var _mod_buildInfo_rsc1, _mod_buildInfo1; |
| |
| const hash = stats.chunkGraph.getModuleHash(mod, chunk.runtime); |
| if (mod.layer === _constants.WEBPACK_LAYERS.reactServerComponents && (mod == null ? void 0 : (_mod_buildInfo1 = mod.buildInfo) == null ? void 0 : (_mod_buildInfo_rsc1 = _mod_buildInfo1.rsc) == null ? void 0 : _mod_buildInfo_rsc1.type) !== 'client') { |
| chunksHashServerLayer.add(hash); |
| } |
| chunksHash.add(hash); |
| |
| |
| if (key.startsWith('app/') && /\.(css|scss|sass)$/.test(mod.resource || '')) { |
| const resourceKey = mod.layer + ':' + mod.resource; |
| const prevHash = prevCSSImportModuleHashes.get(resourceKey); |
| if (prevHash && prevHash !== hash) { |
| hasCSSModuleChanges = true; |
| } |
| prevCSSImportModuleHashes.set(resourceKey, hash); |
| } |
| } |
| }); |
| const prevHash = pageHashMap.get(key); |
| const curHash = chunksHash.toString(); |
| if (prevHash && prevHash !== curHash) { |
| changedItems.add(key); |
| } |
| pageHashMap.set(key, curHash); |
| if (serverComponentChangedItems) { |
| const serverKey = _constants.WEBPACK_LAYERS.reactServerComponents + ':' + key; |
| const prevServerHash = pageHashMap.get(serverKey); |
| const curServerHash = chunksHashServerLayer.toString(); |
| if (prevServerHash && prevServerHash !== curServerHash) { |
| serverComponentChangedItems.add(key); |
| } |
| pageHashMap.set(serverKey, curServerHash); |
| } |
| if (hasCSSModuleChanges) { |
| changedCSSImportPages.add(key); |
| } |
| } |
| }); |
| } |
| }); |
| } catch (err) { |
| console.error(err); |
| } |
| }; |
| this.multiCompiler.compilers[0].hooks.emit.tap('NextjsHotReloaderForClient', trackPageChanges(prevClientPageHashes, changedClientPages)); |
| this.multiCompiler.compilers[1].hooks.emit.tap('NextjsHotReloaderForServer', trackPageChanges(prevServerPageHashes, changedServerPages, changedServerComponentPages)); |
| this.multiCompiler.compilers[2].hooks.emit.tap('NextjsHotReloaderForServer', trackPageChanges(prevEdgeServerPageHashes, changedEdgeServerPages, changedServerComponentPages)); |
| |
| this.multiCompiler.compilers[1].hooks.failed.tap('NextjsHotReloaderForServer', (err)=>{ |
| this.serverError = err; |
| this.serverStats = null; |
| this.serverChunkNames = undefined; |
| }); |
| this.multiCompiler.compilers[2].hooks.done.tap('NextjsHotReloaderForServer', (stats)=>{ |
| this.serverError = null; |
| this.edgeServerStats = stats; |
| }); |
| this.multiCompiler.compilers[1].hooks.done.tap('NextjsHotReloaderForServer', (stats)=>{ |
| this.serverError = null; |
| this.serverStats = stats; |
| if (!this.pagesDir) { |
| return; |
| } |
| const { compilation } = stats; |
| |
| |
| const documentChunk = compilation.namedChunks.get('pages/_document'); |
| |
| if (!documentChunk) { |
| return; |
| } |
| |
| if (this.serverPrevDocumentHash === null) { |
| this.serverPrevDocumentHash = documentChunk.hash || null; |
| return; |
| } |
| |
| if (documentChunk.hash === this.serverPrevDocumentHash) { |
| return; |
| } |
| |
| |
| |
| |
| if (this.appDir) { |
| const chunkNames = new Set(compilation.namedChunks.keys()); |
| const diffChunkNames = (0, _utils.difference)(this.serverChunkNames || new Set(), chunkNames); |
| if (diffChunkNames.length === 0 || diffChunkNames.every((chunkName)=>chunkName.startsWith('app/'))) { |
| return; |
| } |
| this.serverChunkNames = chunkNames; |
| } |
| this.serverPrevDocumentHash = documentChunk.hash || null; |
| |
| this.send({ |
| action: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE, |
| data: '_document has changed' |
| }); |
| }); |
| this.multiCompiler.hooks.done.tap('NextjsHotReloaderForServer', (stats)=>{ |
| const reloadAfterInvalidation = this.reloadAfterInvalidation; |
| this.reloadAfterInvalidation = false; |
| const serverOnlyChanges = (0, _utils.difference)(changedServerPages, changedClientPages); |
| const edgeServerOnlyChanges = (0, _utils.difference)(changedEdgeServerPages, changedClientPages); |
| const pageChanges = serverOnlyChanges.concat(edgeServerOnlyChanges).filter((key)=>key.startsWith('pages/')); |
| const middlewareChanges = [ |
| ...Array.from(changedEdgeServerPages), |
| ...Array.from(changedServerPages) |
| ].filter((name)=>(0, _utils.isMiddlewareFilename)(name)); |
| if (middlewareChanges.length > 0) { |
| this.send({ |
| event: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES |
| }); |
| } |
| if (pageChanges.length > 0) { |
| this.send({ |
| event: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ONLY_CHANGES, |
| pages: serverOnlyChanges.map((pg)=>(0, _denormalizepagepath.denormalizePagePath)(pg.slice('pages'.length))) |
| }); |
| } |
| if (changedServerComponentPages.size || changedCSSImportPages.size || reloadAfterInvalidation) { |
| this.resetFetch(); |
| this.refreshServerComponents(stats.hash); |
| } |
| changedClientPages.clear(); |
| changedServerPages.clear(); |
| changedEdgeServerPages.clear(); |
| changedServerComponentPages.clear(); |
| changedCSSImportPages.clear(); |
| }); |
| this.multiCompiler.compilers[0].hooks.failed.tap('NextjsHotReloaderForClient', (err)=>{ |
| this.clientError = err; |
| this.clientStats = null; |
| }); |
| this.multiCompiler.compilers[0].hooks.done.tap('NextjsHotReloaderForClient', (stats)=>{ |
| this.clientError = null; |
| this.clientStats = stats; |
| const { compilation } = stats; |
| const chunkNames = new Set([ |
| ...compilation.namedChunks.keys() |
| ].filter((name)=>!!(0, _getroutefromentrypoint.default)(name))); |
| if (this.prevChunkNames) { |
| |
| |
| const addedPages = diff(chunkNames, this.prevChunkNames); |
| const removedPages = diff(this.prevChunkNames, chunkNames); |
| if (addedPages.size > 0) { |
| for (const addedPage of addedPages){ |
| const page = (0, _getroutefromentrypoint.default)(addedPage); |
| this.send({ |
| action: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.ADDED_PAGE, |
| data: [ |
| page |
| ] |
| }); |
| } |
| } |
| if (removedPages.size > 0) { |
| for (const removedPage of removedPages){ |
| const page = (0, _getroutefromentrypoint.default)(removedPage); |
| this.send({ |
| action: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.REMOVED_PAGE, |
| data: [ |
| page |
| ] |
| }); |
| } |
| } |
| } |
| this.prevChunkNames = chunkNames; |
| }); |
| this.webpackHotMiddleware = new _hotmiddleware.WebpackHotMiddleware(this.multiCompiler.compilers, this.versionInfo, this.devtoolsFrontendUrl, initialDevToolsConfig); |
| let booted = false; |
| this.watcher = await new Promise((resolve)=>{ |
| var _this_multiCompiler; |
| const watcher = (_this_multiCompiler = this.multiCompiler) == null ? void 0 : _this_multiCompiler.watch( |
| this.activeWebpackConfigs.map((config)=>config.watchOptions), |
| (_err)=>{ |
| if (!booted) { |
| booted = true; |
| resolve(watcher); |
| } |
| }); |
| }); |
| this.onDemandEntries = (0, _ondemandentryhandler.onDemandEntryHandler)({ |
| hotReloader: this, |
| multiCompiler: this.multiCompiler, |
| pagesDir: this.pagesDir, |
| appDir: this.appDir, |
| rootDir: this.dir, |
| nextConfig: this.config, |
| ...this.config.onDemandEntries |
| }); |
| this.middlewares = [ |
| (0, _middlewarewebpack.getOverlayMiddleware)({ |
| rootDirectory: this.dir, |
| isSrcDir: this.isSrcDir, |
| clientStats: ()=>this.clientStats, |
| serverStats: ()=>this.serverStats, |
| edgeServerStats: ()=>this.edgeServerStats |
| }), |
| (0, _middlewarewebpack.getSourceMapMiddleware)({ |
| clientStats: ()=>this.clientStats, |
| serverStats: ()=>this.serverStats, |
| edgeServerStats: ()=>this.edgeServerStats |
| }), |
| (0, _getnexterrorfeedbackmiddleware.getNextErrorFeedbackMiddleware)(this.telemetry), |
| (0, _getdevoverlayfontmiddleware.getDevOverlayFontMiddleware)(), |
| (0, _devindicatormiddleware.getDisableDevIndicatorMiddleware)(), |
| (0, _restartdevservermiddleware.getRestartDevServerMiddleware)({ |
| telemetry: this.telemetry, |
| webpackCacheDirectories: this.activeWebpackConfigs != null ? (0, _webpackconfig.getCacheDirectories)(this.activeWebpackConfigs) : undefined |
| }), |
| (0, _devtoolsconfigmiddleware.devToolsConfigMiddleware)({ |
| distDir: this.distDir, |
| sendUpdateSignal: (data)=>{ |
| var |
| |
| _this_webpackHotMiddleware; |
| (_this_webpackHotMiddleware = this.webpackHotMiddleware) == null ? void 0 : _this_webpackHotMiddleware.updateDevToolsConfig(data); |
| this.send({ |
| action: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEVTOOLS_CONFIG, |
| data |
| }); |
| } |
| }) |
| ]; |
| } |
| invalidate({ reloadAfterInvalidation } = { |
| reloadAfterInvalidation: false |
| }) { |
| var _this_multiCompiler; |
| |
| this.reloadAfterInvalidation = reloadAfterInvalidation; |
| const outputPath = (_this_multiCompiler = this.multiCompiler) == null ? void 0 : _this_multiCompiler.outputPath; |
| if (outputPath) { |
| var _getInvalidator; |
| (_getInvalidator = (0, _ondemandentryhandler.getInvalidator)(outputPath)) == null ? void 0 : _getInvalidator.invalidate(); |
| } |
| } |
| async getCompilationErrors(page) { |
| var _this_clientStats, _this_serverStats, _this_edgeServerStats; |
| const getErrors = ({ compilation })=>{ |
| var _failedPages_normalizedPage; |
| const failedPages = erroredPages(compilation); |
| const normalizedPage = (0, _normalizepathsep.normalizePathSep)(page); |
| |
| return ((_failedPages_normalizedPage = failedPages[normalizedPage]) == null ? void 0 : _failedPages_normalizedPage.length) > 0 ? failedPages[normalizedPage] : compilation.errors; |
| }; |
| if (this.clientError) { |
| return [ |
| this.clientError |
| ]; |
| } else if (this.serverError) { |
| return [ |
| this.serverError |
| ]; |
| } else if ((_this_clientStats = this.clientStats) == null ? void 0 : _this_clientStats.hasErrors()) { |
| return getErrors(this.clientStats); |
| } else if ((_this_serverStats = this.serverStats) == null ? void 0 : _this_serverStats.hasErrors()) { |
| return getErrors(this.serverStats); |
| } else if ((_this_edgeServerStats = this.edgeServerStats) == null ? void 0 : _this_edgeServerStats.hasErrors()) { |
| return getErrors(this.edgeServerStats); |
| } else { |
| return []; |
| } |
| } |
| send(action) { |
| this.webpackHotMiddleware.publish(action); |
| } |
| async ensurePage({ page, clientOnly, appPaths, definition, isApp, url }) { |
| return this.hotReloaderSpan.traceChild('ensure-page', { |
| inputPage: page |
| }).traceAsyncFn(async ()=>{ |
| var _this_onDemandEntries; |
| |
| if (page !== '/_error' && _constants1.BLOCKED_PAGES.indexOf(page) !== -1) { |
| return; |
| } |
| const error = clientOnly ? this.clientError : this.serverError || this.clientError; |
| if (error) { |
| throw error; |
| } |
| return (_this_onDemandEntries = this.onDemandEntries) == null ? void 0 : _this_onDemandEntries.ensurePage({ |
| page, |
| appPaths, |
| definition, |
| isApp, |
| url |
| }); |
| }); |
| } |
| close() { |
| var _this_webpackHotMiddleware; |
| (_this_webpackHotMiddleware = this.webpackHotMiddleware) == null ? void 0 : _this_webpackHotMiddleware.close(); |
| } |
| } |
|
|
| |