ÿØÿà JPEG ÿþ;
Server IP : 68.65.120.201 / Your IP : 216.73.216.135 Web Server : LiteSpeed System : Linux server179.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64 User : taxhyuvu ( 2294) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/taxhyuvu/nodevenv/public_html/dp_taxhelplines/14/lib/node_modules/next/dist/build/ |
Upload File : |
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = build; var _env = require("@next/env"); var _chalk = _interopRequireDefault(require("chalk")); var _crypto = _interopRequireDefault(require("crypto")); var _micromatch = require("next/dist/compiled/micromatch"); var _fs = require("fs"); var _worker = require("../lib/worker"); var _devalue = _interopRequireDefault(require("next/dist/compiled/devalue")); var _escapeStringRegexp = _interopRequireDefault(require("next/dist/compiled/escape-string-regexp")); var _findUp = _interopRequireDefault(require("next/dist/compiled/find-up")); var _indexCjs = require("next/dist/compiled/nanoid/index.cjs"); var _pathToRegexp = require("next/dist/compiled/path-to-regexp"); var _path = _interopRequireDefault(require("path")); var _formatWebpackMessages = _interopRequireDefault(require("../client/dev/error-overlay/format-webpack-messages")); var _constants = require("../lib/constants"); var _fileExists = require("../lib/file-exists"); var _findPagesDir = require("../lib/find-pages-dir"); var _loadCustomRoutes = _interopRequireWildcard(require("../lib/load-custom-routes")); var _nonNullable = require("../lib/non-nullable"); var _recursiveDelete = require("../lib/recursive-delete"); var _verifyAndLint = require("../lib/verifyAndLint"); var _verifyTypeScriptSetup = require("../lib/verifyTypeScriptSetup"); var _constants1 = require("../shared/lib/constants"); var _utils = require("../shared/lib/router/utils"); var _config = _interopRequireWildcard(require("../server/config")); require("../server/node-polyfill-fetch"); var _normalizePagePath = require("../server/normalize-page-path"); var _require = require("../server/require"); var ciEnvironment = _interopRequireWildcard(require("../telemetry/ci-info")); var _events = require("../telemetry/events"); var _storage = require("../telemetry/storage"); var _compiler = require("./compiler"); var _entries = require("./entries"); var _generateBuildId = require("./generate-build-id"); var _isWriteable = require("./is-writeable"); var Log = _interopRequireWildcard(require("./output/log")); var _spinner = _interopRequireDefault(require("./spinner")); var _trace = require("../trace"); var _utils1 = require("./utils"); var _webpackConfig = _interopRequireDefault(require("./webpack-config")); var _writeBuildId = require("./write-build-id"); var _normalizeLocalePath = require("../shared/lib/i18n/normalize-locale-path"); var _isError = _interopRequireDefault(require("../lib/is-error")); var _telemetryPlugin = require("./webpack/plugins/telemetry-plugin"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = { }; if (obj != null) { for(var key in obj){ if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : { }; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } const RESERVED_PAGE = /^\/(_app|_error|_document|api(\/|$))/; async function build(dir, conf = null, reactProductionProfiling = false, debugOutput = false, runLint = true) { const nextBuildSpan = (0, _trace).trace('next-build', undefined, { version: "12.0.3" }); const buildResult = await nextBuildSpan.traceAsyncFn(async ()=>{ var ref5; // attempt to load global env values so they are available in next.config.js const { loadedEnvFiles } = nextBuildSpan.traceChild('load-dotenv').traceFn(()=>(0, _env).loadEnvConfig(dir, false, Log) ); const config = await nextBuildSpan.traceChild('load-next-config').traceAsyncFn(()=>(0, _config).default(_constants1.PHASE_PRODUCTION_BUILD, dir, conf) ); const distDir = _path.default.join(dir, config.distDir); (0, _trace).setGlobal('phase', _constants1.PHASE_PRODUCTION_BUILD); (0, _trace).setGlobal('distDir', distDir); const hasConcurrentFeatures = !!config.experimental.concurrentFeatures; const hasServerComponents = hasConcurrentFeatures && !!config.experimental.serverComponents; const { target } = config; const buildId = await nextBuildSpan.traceChild('generate-buildid').traceAsyncFn(()=>(0, _generateBuildId).generateBuildId(config.generateBuildId, _indexCjs.nanoid) ); const customRoutes = await nextBuildSpan.traceChild('load-custom-routes').traceAsyncFn(()=>(0, _loadCustomRoutes).default(config) ); const { headers , rewrites , redirects } = customRoutes; const cacheDir = _path.default.join(distDir, 'cache'); if (ciEnvironment.isCI && !ciEnvironment.hasNextSupport) { const hasCache = await (0, _fileExists).fileExists(cacheDir); if (!hasCache) { // Intentionally not piping to stderr in case people fail in CI when // stderr is detected. console.log(`${Log.prefixes.warn} No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache`); } } const telemetry = new _storage.Telemetry({ distDir }); (0, _trace).setGlobal('telemetry', telemetry); const publicDir = _path.default.join(dir, 'public'); const pagesDir = (0, _findPagesDir).findPagesDir(dir); const hasPublicDir = await (0, _fileExists).fileExists(publicDir); telemetry.record((0, _events).eventCliSession(dir, config, { webpackVersion: 5, cliCommand: 'build', isSrcDir: _path.default.relative(dir, pagesDir).startsWith('src'), hasNowJson: !!await (0, _findUp).default('now.json', { cwd: dir }), isCustomServer: null })); (0, _events).eventNextPlugins(_path.default.resolve(dir)).then((events)=>telemetry.record(events) ); const ignoreTypeScriptErrors = Boolean(config.typescript.ignoreBuildErrors); const typeCheckStart = process.hrtime(); const typeCheckingSpinner = (0, _spinner).default({ prefixText: `${Log.prefixes.info} ${ignoreTypeScriptErrors ? 'Skipping validation of types' : 'Checking validity of types'}` }); const verifyResult = await nextBuildSpan.traceChild('verify-typescript-setup').traceAsyncFn(()=>(0, _verifyTypeScriptSetup).verifyTypeScriptSetup(dir, pagesDir, !ignoreTypeScriptErrors, config, cacheDir) ); const typeCheckEnd = process.hrtime(typeCheckStart); if (!ignoreTypeScriptErrors) { var ref, ref1, ref2; telemetry.record((0, _events).eventTypeCheckCompleted({ durationInSeconds: typeCheckEnd[0], typescriptVersion: verifyResult.version, inputFilesCount: (ref = verifyResult.result) === null || ref === void 0 ? void 0 : ref.inputFilesCount, totalFilesCount: (ref1 = verifyResult.result) === null || ref1 === void 0 ? void 0 : ref1.totalFilesCount, incremental: (ref2 = verifyResult.result) === null || ref2 === void 0 ? void 0 : ref2.incremental })); } if (typeCheckingSpinner) { typeCheckingSpinner.stopAndPersist(); } const ignoreESLint = Boolean(config.eslint.ignoreDuringBuilds); const eslintCacheDir = _path.default.join(cacheDir, 'eslint/'); if (!ignoreESLint && runLint) { await nextBuildSpan.traceChild('verify-and-lint').traceAsyncFn(async ()=>{ var ref; await (0, _verifyAndLint).verifyAndLint(dir, eslintCacheDir, (ref = config.eslint) === null || ref === void 0 ? void 0 : ref.dirs, config.experimental.cpus, config.experimental.workerThreads, telemetry); }); } const buildSpinner = (0, _spinner).default({ prefixText: `${Log.prefixes.info} Creating an optimized production build` }); const isLikeServerless = (0, _config).isTargetLikeServerless(target); const pagePaths = await nextBuildSpan.traceChild('collect-pages').traceAsyncFn(()=>(0, _utils1).collectPages(pagesDir, config.pageExtensions) ); // needed for static exporting since we want to replace with HTML // files const allStaticPages = new Set(); let allPageInfos = new Map(); const previewProps = { previewModeId: _crypto.default.randomBytes(16).toString('hex'), previewModeSigningKey: _crypto.default.randomBytes(32).toString('hex'), previewModeEncryptionKey: _crypto.default.randomBytes(32).toString('hex') }; const mappedPages = nextBuildSpan.traceChild('create-pages-mapping').traceFn(()=>(0, _entries).createPagesMapping(pagePaths, config.pageExtensions, false, hasServerComponents) ); const entrypoints = nextBuildSpan.traceChild('create-entrypoints').traceFn(()=>(0, _entries).createEntrypoints(mappedPages, target, buildId, previewProps, config, loadedEnvFiles) ); const pageKeys = Object.keys(mappedPages); const hasMiddleware = pageKeys.some((page)=>_constants.MIDDLEWARE_ROUTE.test(page) ); const conflictingPublicFiles = []; const hasCustomErrorPage = mappedPages['/_error'].startsWith('private-next-pages'); const hasPages404 = Boolean(mappedPages['/404'] && mappedPages['/404'].startsWith('private-next-pages')); if (hasMiddleware) { Log.warn(`using beta Middleware (not covered by semver) - https://nextjs.org/docs/messages/beta-middleware`); } if (hasPublicDir) { const hasPublicUnderScoreNextDir = await (0, _fileExists).fileExists(_path.default.join(publicDir, '_next')); if (hasPublicUnderScoreNextDir) { throw new Error(_constants.PUBLIC_DIR_MIDDLEWARE_CONFLICT); } } await nextBuildSpan.traceChild('public-dir-conflict-check').traceAsyncFn(async ()=>{ // Check if pages conflict with files in `public` // Only a page of public file can be served, not both. for(const page in mappedPages){ const hasPublicPageFile = await (0, _fileExists).fileExists(_path.default.join(publicDir, page === '/' ? '/index' : page), 'file'); if (hasPublicPageFile) { conflictingPublicFiles.push(page); } } const numConflicting = conflictingPublicFiles.length; if (numConflicting) { throw new Error(`Conflicting public and page file${numConflicting === 1 ? ' was' : 's were'} found. https://nextjs.org/docs/messages/conflicting-public-file-page\n${conflictingPublicFiles.join('\n')}`); } }); const nestedReservedPages = pageKeys.filter((page)=>{ return page.match(/\/(_app|_document|_error)$/) && _path.default.dirname(page) !== '/'; }); if (nestedReservedPages.length) { Log.warn(`The following reserved Next.js pages were detected not directly under the pages directory:\n` + nestedReservedPages.join('\n') + `\nSee more info here: https://nextjs.org/docs/messages/nested-reserved-page\n`); } const restrictedRedirectPaths = [ '/_next' ].map((p)=>config.basePath ? `${config.basePath}${p}` : p ); const buildCustomRoute = (r, type)=>{ const keys = []; const routeRegex = (0, _pathToRegexp).pathToRegexp(r.source, keys, { strict: true, sensitive: false, delimiter: '/' }); let regexSource = routeRegex.source; if (!r.internal) { regexSource = (0, _loadCustomRoutes).modifyRouteRegex(routeRegex.source, type === 'redirect' ? restrictedRedirectPaths : undefined); } return { ...r, ...type === 'redirect' ? { statusCode: (0, _loadCustomRoutes).getRedirectStatus(r), permanent: undefined } : { }, regex: (0, _loadCustomRoutes).normalizeRouteRegex(regexSource) }; }; const routesManifestPath = _path.default.join(distDir, _constants1.ROUTES_MANIFEST); const routesManifest = nextBuildSpan.traceChild('generate-routes-manifest').traceFn(()=>({ version: 3, pages404: true, basePath: config.basePath, redirects: redirects.map((r)=>buildCustomRoute(r, 'redirect') ), headers: headers.map((r)=>buildCustomRoute(r, 'header') ), dynamicRoutes: (0, _utils).getSortedRoutes(pageKeys).filter((page)=>(0, _utils).isDynamicRoute(page) && !page.match(_constants.MIDDLEWARE_ROUTE) ).map(pageToRoute), staticRoutes: (0, _utils).getSortedRoutes(pageKeys).filter((page)=>!(0, _utils).isDynamicRoute(page) && !page.match(_constants.MIDDLEWARE_ROUTE) && !page.match(RESERVED_PAGE) ).map(pageToRoute), dataRoutes: [], i18n: config.i18n || undefined }) ); if (rewrites.beforeFiles.length === 0 && rewrites.fallback.length === 0) { routesManifest.rewrites = rewrites.afterFiles.map((r)=>buildCustomRoute(r, 'rewrite') ); } else { routesManifest.rewrites = { beforeFiles: rewrites.beforeFiles.map((r)=>buildCustomRoute(r, 'rewrite') ), afterFiles: rewrites.afterFiles.map((r)=>buildCustomRoute(r, 'rewrite') ), fallback: rewrites.fallback.map((r)=>buildCustomRoute(r, 'rewrite') ) }; } const combinedRewrites = [ ...rewrites.beforeFiles, ...rewrites.afterFiles, ...rewrites.fallback, ]; const distDirCreated = await nextBuildSpan.traceChild('create-dist-dir').traceAsyncFn(async ()=>{ try { await _fs.promises.mkdir(distDir, { recursive: true }); return true; } catch (err) { if ((0, _isError).default(err) && err.code === 'EPERM') { return false; } throw err; } }); if (!distDirCreated || !await (0, _isWriteable).isWriteable(distDir)) { throw new Error('> Build directory is not writeable. https://nextjs.org/docs/messages/build-dir-not-writeable'); } if (config.cleanDistDir) { await (0, _recursiveDelete).recursiveDelete(distDir, /^cache/); } // We need to write the manifest with rewrites before build // so serverless can import the manifest await nextBuildSpan.traceChild('write-routes-manifest').traceAsyncFn(()=>_fs.promises.writeFile(routesManifestPath, JSON.stringify(routesManifest), 'utf8') ); const manifestPath = _path.default.join(distDir, isLikeServerless ? _constants1.SERVERLESS_DIRECTORY : _constants1.SERVER_DIRECTORY, _constants1.PAGES_MANIFEST); const requiredServerFiles = nextBuildSpan.traceChild('generate-required-server-files').traceFn(()=>({ version: 1, config: { ...config, compress: false, configFile: undefined }, appDir: dir, files: [ _constants1.ROUTES_MANIFEST, _path.default.relative(distDir, manifestPath), _constants1.BUILD_MANIFEST, _constants1.PRERENDER_MANIFEST, hasServerComponents ? _path.default.join(_constants1.SERVER_DIRECTORY, _constants1.MIDDLEWARE_FLIGHT_MANIFEST + '.js') : null, _constants1.REACT_LOADABLE_MANIFEST, config.optimizeFonts ? _path.default.join(isLikeServerless ? _constants1.SERVERLESS_DIRECTORY : _constants1.SERVER_DIRECTORY, _constants1.FONT_MANIFEST) : null, _constants1.BUILD_ID_FILE, ].filter(_nonNullable.nonNullable).map((file)=>_path.default.join(config.distDir, file) ), ignore: [] }) ); const runWebpackSpan = nextBuildSpan.traceChild('run-webpack-compiler'); const configs = await runWebpackSpan.traceChild('generate-webpack-config').traceAsyncFn(()=>Promise.all([ (0, _webpackConfig).default(dir, { buildId, reactProductionProfiling, isServer: false, config, target, pagesDir, entrypoints: entrypoints.client, rewrites, runWebpackSpan }), (0, _webpackConfig).default(dir, { buildId, reactProductionProfiling, isServer: true, config, target, pagesDir, entrypoints: entrypoints.server, rewrites, runWebpackSpan }), hasConcurrentFeatures ? (0, _webpackConfig).default(dir, { buildId, reactProductionProfiling, isServer: true, webServerRuntime: true, config, target, pagesDir, entrypoints: entrypoints.serverWeb, rewrites, runWebpackSpan }) : null, ]) ); const clientConfig = configs[0]; if (clientConfig.optimization && (clientConfig.optimization.minimize !== true || clientConfig.optimization.minimizer && clientConfig.optimization.minimizer.length === 0)) { Log.warn(`Production code optimization has been disabled in your project. Read more: https://nextjs.org/docs/messages/minification-disabled`); } const webpackBuildStart = process.hrtime(); let result = { warnings: [], errors: [] }; // We run client and server compilation separately to optimize for memory usage await runWebpackSpan.traceAsyncFn(async ()=>{ const clientResult = await (0, _compiler).runCompiler(clientConfig, { runWebpackSpan }); // Fail build if clientResult contains errors if (clientResult.errors.length > 0) { result = { warnings: [ ...clientResult.warnings ], errors: [ ...clientResult.errors ] }; } else { const serverResult = await (0, _compiler).runCompiler(configs[1], { runWebpackSpan }); const serverWebResult = configs[2] ? await (0, _compiler).runCompiler(configs[2], { runWebpackSpan }) : null; result = { warnings: [ ...clientResult.warnings, ...serverResult.warnings, ...(serverWebResult === null || serverWebResult === void 0 ? void 0 : serverWebResult.warnings) || [], ], errors: [ ...clientResult.errors, ...serverResult.errors, ...(serverWebResult === null || serverWebResult === void 0 ? void 0 : serverWebResult.errors) || [], ] }; } }); const webpackBuildEnd = process.hrtime(webpackBuildStart); if (buildSpinner) { buildSpinner.stopAndPersist(); } result = nextBuildSpan.traceChild('format-webpack-messages').traceFn(()=>(0, _formatWebpackMessages).default(result, true) ); if (result.errors.length > 0) { // Only keep the first few errors. Others are often indicative // of the same problem, but confuse the reader with noise. if (result.errors.length > 5) { result.errors.length = 5; } const error = result.errors.join('\n\n'); console.error(_chalk.default.red('Failed to compile.\n')); if (error.indexOf('private-next-pages') > -1 && error.indexOf('does not contain a default export') > -1) { const page_name_regex = /'private-next-pages\/(?<page_name>[^']*)'/; const parsed = page_name_regex.exec(error); const page_name = parsed && parsed.groups && parsed.groups.page_name; throw new Error(`webpack build failed: found page without a React Component as default export in pages/${page_name}\n\nSee https://nextjs.org/docs/messages/page-without-valid-component for more info.`); } console.error(error); console.error(); // When using the web runtime, common Node.js native APIs are not available. const moduleName = (0, _utils1).getUnresolvedModuleFromError(error); if (hasConcurrentFeatures && moduleName) { const err = new Error(`Native Node.js APIs are not supported in the Edge Runtime with \`concurrentFeatures\` enabled. Found \`${moduleName}\` imported.\n\n`); err.code = 'EDGE_RUNTIME_UNSUPPORTED_API'; throw err; } if (error.indexOf('private-next-pages') > -1 || error.indexOf('__next_polyfill__') > -1) { const err = new Error('webpack config.resolve.alias was incorrectly overridden. https://nextjs.org/docs/messages/invalid-resolve-alias'); err.code = 'INVALID_RESOLVE_ALIAS'; throw err; } const err = new Error('Build failed because of webpack errors'); err.code = 'WEBPACK_ERRORS'; throw err; } else { telemetry.record((0, _events).eventBuildCompleted(pagePaths, { durationInSeconds: webpackBuildEnd[0] })); if (result.warnings.length > 0) { Log.warn('Compiled with warnings\n'); console.warn(result.warnings.join('\n\n')); console.warn(); } else { Log.info('Compiled successfully'); } } const postCompileSpinner = (0, _spinner).default({ prefixText: `${Log.prefixes.info} Collecting page data` }); const buildManifestPath = _path.default.join(distDir, _constants1.BUILD_MANIFEST); const ssgPages = new Set(); const ssgStaticFallbackPages = new Set(); const ssgBlockingFallbackPages = new Set(); const staticPages = new Set(); const invalidPages = new Set(); const hybridAmpPages = new Set(); const serverPropsPages = new Set(); const additionalSsgPaths = new Map(); const additionalSsgPathsEncoded = new Map(); const pageTraceIncludes = new Map(); const pageTraceExcludes = new Map(); const pageInfos = new Map(); const pagesManifest = JSON.parse(await _fs.promises.readFile(manifestPath, 'utf8')); const buildManifest = JSON.parse(await _fs.promises.readFile(buildManifestPath, 'utf8')); const timeout = config.staticPageGenerationTimeout || 0; const sharedPool = config.experimental.sharedPool || false; const staticWorker = sharedPool ? require.resolve('./worker') : require.resolve('./utils'); let infoPrinted = false; const staticWorkers = new _worker.Worker(staticWorker, { timeout: timeout * 1000, onRestart: (method, [arg], attempts)=>{ if (method === 'exportPage') { const { path: pagePath } = arg; if (attempts >= 3) { throw new Error(`Static page generation for ${pagePath} is still timing out after 3 attempts. See more info here https://nextjs.org/docs/messages/static-page-generation-timeout`); } Log.warn(`Restarted static page genertion for ${pagePath} because it took more than ${timeout} seconds`); } else { const pagePath = arg; if (attempts >= 2) { throw new Error(`Collecting page data for ${pagePath} is still timing out after 2 attempts. See more info here https://nextjs.org/docs/messages/page-data-collection-timeout`); } Log.warn(`Restarted collecting page data for ${pagePath} because it took more than ${timeout} seconds`); } if (!infoPrinted) { Log.warn('See more info here https://nextjs.org/docs/messages/static-page-generation-timeout'); infoPrinted = true; } }, numWorkers: config.experimental.cpus, enableWorkerThreads: config.experimental.workerThreads, exposedMethods: sharedPool ? [ 'hasCustomGetInitialProps', 'isPageStatic', 'getNamedExports', 'exportPage', ] : [ 'hasCustomGetInitialProps', 'isPageStatic', 'getNamedExports' ] }); const analysisBegin = process.hrtime(); const staticCheckSpan = nextBuildSpan.traceChild('static-check'); const { customAppGetInitialProps , namedExports , isNextImageImported , hasSsrAmpPages , hasNonStaticErrorPage , } = await staticCheckSpan.traceAsyncFn(async ()=>{ process.env.NEXT_PHASE = _constants1.PHASE_PRODUCTION_BUILD; const { configFileName , publicRuntimeConfig , serverRuntimeConfig } = config; const runtimeEnvConfig = { publicRuntimeConfig, serverRuntimeConfig }; const nonStaticErrorPageSpan = staticCheckSpan.traceChild('check-static-error-page'); const errorPageHasCustomGetInitialProps = nonStaticErrorPageSpan.traceAsyncFn(async ()=>hasCustomErrorPage && await staticWorkers.hasCustomGetInitialProps('/_error', distDir, isLikeServerless, runtimeEnvConfig, false) ); const errorPageStaticResult = nonStaticErrorPageSpan.traceAsyncFn(async ()=>{ var ref, ref14; return hasCustomErrorPage && staticWorkers.isPageStatic('/_error', distDir, isLikeServerless, configFileName, runtimeEnvConfig, config.httpAgentOptions, (ref = config.i18n) === null || ref === void 0 ? void 0 : ref.locales, (ref14 = config.i18n) === null || ref14 === void 0 ? void 0 : ref14.defaultLocale); }); // we don't output _app in serverless mode so use _app export // from _error instead const appPageToCheck = isLikeServerless ? '/_error' : '/_app'; const customAppGetInitialPropsPromise = staticWorkers.hasCustomGetInitialProps(appPageToCheck, distDir, isLikeServerless, runtimeEnvConfig, true); const namedExportsPromise = staticWorkers.getNamedExports(appPageToCheck, distDir, isLikeServerless, runtimeEnvConfig); // eslint-disable-next-line no-shadow let isNextImageImported; // eslint-disable-next-line no-shadow let hasSsrAmpPages = false; const computedManifestData = await (0, _utils1).computeFromManifest(buildManifest, distDir, config.experimental.gzipSize); await Promise.all(pageKeys.map(async (page)=>{ const checkPageSpan = staticCheckSpan.traceChild('check-page', { page }); return checkPageSpan.traceAsyncFn(async ()=>{ const actualPage = (0, _normalizePagePath).normalizePagePath(page); const [selfSize, allSize] = await (0, _utils1).getJsPageSizeInKb(actualPage, distDir, buildManifest, config.experimental.gzipSize, computedManifestData); let isSsg = false; let isStatic = false; let isHybridAmp = false; let ssgPageRoutes = null; let isMiddlewareRoute = !!page.match(_constants.MIDDLEWARE_ROUTE); if (!isMiddlewareRoute && !page.match(RESERVED_PAGE) && !hasConcurrentFeatures) { try { let isPageStaticSpan = checkPageSpan.traceChild('is-page-static'); let workerResult = await isPageStaticSpan.traceAsyncFn(()=>{ var ref, ref22; return staticWorkers.isPageStatic(page, distDir, isLikeServerless, configFileName, runtimeEnvConfig, config.httpAgentOptions, (ref = config.i18n) === null || ref === void 0 ? void 0 : ref.locales, (ref22 = config.i18n) === null || ref22 === void 0 ? void 0 : ref22.defaultLocale, isPageStaticSpan.id); }); if (config.outputFileTracing) { pageTraceIncludes.set(page, workerResult.traceIncludes || []); pageTraceExcludes.set(page, workerResult.traceExcludes || []); } if (workerResult.isStatic === false && (workerResult.isHybridAmp || workerResult.isAmpOnly)) { hasSsrAmpPages = true; } if (workerResult.isHybridAmp) { isHybridAmp = true; hybridAmpPages.add(page); } if (workerResult.isNextImageImported) { isNextImageImported = true; } if (workerResult.hasStaticProps) { ssgPages.add(page); isSsg = true; if (workerResult.prerenderRoutes && workerResult.encodedPrerenderRoutes) { additionalSsgPaths.set(page, workerResult.prerenderRoutes); additionalSsgPathsEncoded.set(page, workerResult.encodedPrerenderRoutes); ssgPageRoutes = workerResult.prerenderRoutes; } if (workerResult.prerenderFallback === 'blocking') { ssgBlockingFallbackPages.add(page); } else if (workerResult.prerenderFallback === true) { ssgStaticFallbackPages.add(page); } } else if (workerResult.hasServerProps) { serverPropsPages.add(page); } else if (workerResult.isStatic && !workerResult.hasFlightData && await customAppGetInitialPropsPromise === false) { staticPages.add(page); isStatic = true; } if (hasPages404 && page === '/404') { if (!workerResult.isStatic && !workerResult.hasStaticProps) { throw new Error(`\`pages/404\` ${_constants.STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR}`); } // we need to ensure the 404 lambda is present since we use // it when _app has getInitialProps if (await customAppGetInitialPropsPromise && !workerResult.hasStaticProps) { staticPages.delete(page); } } if (_constants1.STATIC_STATUS_PAGES.includes(page) && !workerResult.isStatic && !workerResult.hasStaticProps) { throw new Error(`\`pages${page}\` ${_constants.STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR}`); } } catch (err) { if ((0, _isError).default(err) && err.message !== 'INVALID_DEFAULT_EXPORT') throw err; invalidPages.add(page); } } pageInfos.set(page, { size: selfSize, totalSize: allSize, static: isStatic, isSsg, isWebSsr: hasConcurrentFeatures && !isMiddlewareRoute && !page.match(RESERVED_PAGE), isHybridAmp, ssgPageRoutes, initialRevalidateSeconds: false, pageDuration: undefined, ssgPageDurations: undefined }); }); })); const errorPageResult = await errorPageStaticResult; const nonStaticErrorPage = await errorPageHasCustomGetInitialProps || errorPageResult && errorPageResult.hasServerProps; const returnValue = { customAppGetInitialProps: await customAppGetInitialPropsPromise, namedExports: await namedExportsPromise, isNextImageImported, hasSsrAmpPages, hasNonStaticErrorPage: nonStaticErrorPage }; if (!sharedPool) staticWorkers.end(); return returnValue; }); if (customAppGetInitialProps) { console.warn(_chalk.default.bold.yellow(`Warning: `) + _chalk.default.yellow(`You have opted-out of Automatic Static Optimization due to \`getInitialProps\` in \`pages/_app\`. This does not opt-out pages with \`getStaticProps\``)); console.warn('Read more: https://nextjs.org/docs/messages/opt-out-auto-static-optimization\n'); } if (!hasSsrAmpPages) { requiredServerFiles.ignore.push(_path.default.relative(dir, _path.default.join(_path.default.dirname(require.resolve('next/dist/compiled/@ampproject/toolbox-optimizer')), '**/*'))); } if (config.outputFileTracing) { const { nodeFileTrace } = require('next/dist/compiled/@vercel/nft'); const includeExcludeSpan = nextBuildSpan.traceChild('apply-include-excludes'); await includeExcludeSpan.traceAsyncFn(async ()=>{ const globOrig = require('next/dist/compiled/glob'); const glob = (pattern)=>{ return new Promise((resolve, reject)=>{ globOrig(pattern, { cwd: dir }, (err, files)=>{ if (err) { return reject(err); } resolve(files); }); }); }; for (let page of pageKeys){ await includeExcludeSpan.traceChild('include-exclude', { page }).traceAsyncFn(async ()=>{ const includeGlobs = pageTraceIncludes.get(page); const excludeGlobs = pageTraceExcludes.get(page); page = (0, _normalizePagePath).normalizePagePath(page); if (!(includeGlobs === null || includeGlobs === void 0 ? void 0 : includeGlobs.length) && !(excludeGlobs === null || excludeGlobs === void 0 ? void 0 : excludeGlobs.length)) { return; } const traceFile = _path.default.join(distDir, 'server/pages', `${page}.js.nft.json`); const pageDir = _path.default.dirname(traceFile); const traceContent = JSON.parse(await _fs.promises.readFile(traceFile, 'utf8')); let includes = []; if (includeGlobs === null || includeGlobs === void 0 ? void 0 : includeGlobs.length) { for (const includeGlob of includeGlobs){ const results = await glob(includeGlob); includes.push(...results.map((file)=>{ return _path.default.relative(pageDir, _path.default.join(dir, file)); })); } } const combined = new Set([ ...traceContent.files, ...includes ]); if (excludeGlobs === null || excludeGlobs === void 0 ? void 0 : excludeGlobs.length) { const resolvedGlobs = excludeGlobs.map((exclude)=>_path.default.join(dir, exclude) ); combined.forEach((file)=>{ if ((0, _micromatch).isMatch(_path.default.join(pageDir, file), resolvedGlobs)) { combined.delete(file); } }); } await _fs.promises.writeFile(traceFile, JSON.stringify({ version: traceContent.version, files: [ ...combined ] })); }); } }); // TODO: move this inside of webpack so it can be cached // between builds. Should only need to be re-run on lockfile change await nextBuildSpan.traceChild('trace-next-server').traceAsyncFn(async ()=>{ let cacheKey; // consider all lockFiles in tree in case user accidentally // has both package-lock.json and yarn.lock const lockFiles = (await Promise.all([ 'package-lock.json', 'yarn.lock', 'pnpm-lock.yaml' ].map((file)=>(0, _findUp).default(file, { cwd: dir }) ))).filter(Boolean)// TypeScript doesn't like this filter ; const nextServerTraceOutput = _path.default.join(distDir, 'next-server.js.nft.json'); const cachedTracePath = _path.default.join(distDir, 'cache/next-server.js.nft.json'); if (lockFiles.length > 0) { const cacheHash = require('crypto').createHash('sha256'); cacheHash.update(require('next/package').version); await Promise.all(lockFiles.map(async (lockFile)=>{ cacheHash.update(await _fs.promises.readFile(lockFile)); })); cacheKey = cacheHash.digest('hex'); try { const existingTrace = JSON.parse(await _fs.promises.readFile(cachedTracePath, 'utf8')); if (existingTrace.cacheKey === cacheKey) { await _fs.promises.copyFile(cachedTracePath, nextServerTraceOutput); return; } } catch (_) { } } const root = _path.default.parse(dir).root; const serverResult = await nodeFileTrace([ require.resolve('next/dist/server/next-server') ], { base: root, processCwd: dir, ignore: [ '**/next/dist/pages/**/*', '**/next/dist/server/image-optimizer.js', '**/next/dist/compiled/@ampproject/toolbox-optimizer/**/*', '**/next/dist/server/lib/squoosh/**/*.wasm', '**/next/dist/compiled/webpack/(bundle4|bundle5).js', '**/node_modules/sharp/**/*', '**/node_modules/webpack5/**/*', ] }); const tracedFiles = new Set(); serverResult.fileList.forEach((file)=>{ tracedFiles.add(_path.default.relative(distDir, _path.default.join(root, file)).replace(/\\/g, '/')); }); await _fs.promises.writeFile(nextServerTraceOutput, JSON.stringify({ version: 1, cacheKey, files: [ ...tracedFiles ] })); await _fs.promises.unlink(cachedTracePath).catch(()=>{ }); await _fs.promises.copyFile(nextServerTraceOutput, cachedTracePath).catch(()=>{ }); }); } if (serverPropsPages.size > 0 || ssgPages.size > 0) { // We update the routes manifest after the build with the // data routes since we can't determine these until after build routesManifest.dataRoutes = (0, _utils).getSortedRoutes([ ...serverPropsPages, ...ssgPages, ]).map((page)=>{ const pagePath = (0, _normalizePagePath).normalizePagePath(page); const dataRoute = _path.default.posix.join('/_next/data', buildId, `${pagePath}.json`); let dataRouteRegex; let namedDataRouteRegex; let routeKeys; if ((0, _utils).isDynamicRoute(page)) { const routeRegex = (0, _utils).getRouteRegex(dataRoute.replace(/\.json$/, '')); dataRouteRegex = (0, _loadCustomRoutes).normalizeRouteRegex(routeRegex.re.source.replace(/\(\?:\\\/\)\?\$$/, `\\.json$`)); namedDataRouteRegex = routeRegex.namedRegex.replace(/\(\?:\/\)\?\$$/, `\\.json$`); routeKeys = routeRegex.routeKeys; } else { dataRouteRegex = (0, _loadCustomRoutes).normalizeRouteRegex(new RegExp(`^${_path.default.posix.join('/_next/data', (0, _escapeStringRegexp).default(buildId), `${pagePath}.json`)}$`).source); } return { page, routeKeys, dataRouteRegex, namedDataRouteRegex }; }); await _fs.promises.writeFile(routesManifestPath, JSON.stringify(routesManifest), 'utf8'); } // Since custom _app.js can wrap the 404 page we have to opt-out of static optimization if it has getInitialProps // Only export the static 404 when there is no /_error present const useStatic404 = !customAppGetInitialProps && (!hasNonStaticErrorPage || hasPages404); if (invalidPages.size > 0) { const err = new Error(`Build optimization failed: found page${invalidPages.size === 1 ? '' : 's'} without a React Component as default export in \n${[ ...invalidPages ].map((pg)=>`pages${pg}` ).join('\n')}\n\nSee https://nextjs.org/docs/messages/page-without-valid-component for more info.\n`); err.code = 'BUILD_OPTIMIZATION_FAILED'; throw err; } await (0, _writeBuildId).writeBuildId(distDir, buildId); if (config.experimental.optimizeCss) { const cssFilePaths = (0, _utils1).getCssFilePaths(buildManifest); requiredServerFiles.files.push(...cssFilePaths.map((filePath)=>_path.default.join(config.distDir, filePath) )); } const optimizeCss = { featureName: 'experimental/optimizeCss', invocationCount: config.experimental.optimizeCss ? 1 : 0 }; telemetry.record({ eventName: _events.EVENT_BUILD_FEATURE_USAGE, payload: optimizeCss }); await _fs.promises.writeFile(_path.default.join(distDir, _constants1.SERVER_FILES_MANIFEST), JSON.stringify(requiredServerFiles), 'utf8'); const finalPrerenderRoutes = { }; const tbdPrerenderRoutes = []; let ssgNotFoundPaths = []; if (postCompileSpinner) postCompileSpinner.stopAndPersist(); const { i18n } = config; const usedStaticStatusPages = _constants1.STATIC_STATUS_PAGES.filter((page)=>mappedPages[page] && mappedPages[page].startsWith('private-next-pages') ); usedStaticStatusPages.forEach((page)=>{ if (!ssgPages.has(page) && !customAppGetInitialProps) { staticPages.add(page); } }); const hasPages500 = usedStaticStatusPages.includes('/500'); const useDefaultStatic500 = !hasPages500 && !hasNonStaticErrorPage && !customAppGetInitialProps; const combinedPages = [ ...staticPages, ...ssgPages ]; if (combinedPages.length > 0 || useStatic404 || useDefaultStatic500) { const staticGenerationSpan = nextBuildSpan.traceChild('static-generation'); await staticGenerationSpan.traceAsyncFn(async ()=>{ (0, _utils1).detectConflictingPaths([ ...combinedPages, ...pageKeys.filter((page)=>!combinedPages.includes(page) ), ], ssgPages, additionalSsgPaths); const exportApp = require('../export').default; const exportOptions = { silent: false, buildExport: true, threads: config.experimental.cpus, pages: combinedPages, outdir: _path.default.join(distDir, 'export'), statusMessage: 'Generating static pages', exportPageWorker: sharedPool ? staticWorkers.exportPage.bind(staticWorkers) : undefined, endWorker: sharedPool ? async ()=>{ await staticWorkers.end(); } : undefined }; const exportConfig = { ...config, initialPageRevalidationMap: { }, pageDurationMap: { }, ssgNotFoundPaths: [], // Default map will be the collection of automatic statically exported // pages and incremental pages. // n.b. we cannot handle this above in combinedPages because the dynamic // page must be in the `pages` array, but not in the mapping. exportPathMap: (defaultMap)=>{ // Dynamically routed pages should be prerendered to be used as // a client-side skeleton (fallback) while data is being fetched. // This ensures the end-user never sees a 500 or slow response from the // server. // // Note: prerendering disables automatic static optimization. ssgPages.forEach((page)=>{ if ((0, _utils).isDynamicRoute(page)) { tbdPrerenderRoutes.push(page); if (ssgStaticFallbackPages.has(page)) { // Override the rendering for the dynamic page to be treated as a // fallback render. if (i18n) { defaultMap[`/${i18n.defaultLocale}${page}`] = { page, query: { __nextFallback: true } }; } else { defaultMap[page] = { page, query: { __nextFallback: true } }; } } else { // Remove dynamically routed pages from the default path map when // fallback behavior is disabled. delete defaultMap[page]; } } }); // Append the "well-known" routes we should prerender for, e.g. blog // post slugs. additionalSsgPaths.forEach((routes, page)=>{ const encodedRoutes = additionalSsgPathsEncoded.get(page); routes.forEach((route, routeIdx)=>{ defaultMap[route] = { page, query: { __nextSsgPath: encodedRoutes === null || encodedRoutes === void 0 ? void 0 : encodedRoutes[routeIdx] } }; }); }); if (useStatic404) { defaultMap['/404'] = { page: hasPages404 ? '/404' : '/_error' }; } if (useDefaultStatic500) { defaultMap['/500'] = { page: '/_error' }; } if (i18n) { for (const page of [ ...staticPages, ...ssgPages, ...useStatic404 ? [ '/404' ] : [], ...useDefaultStatic500 ? [ '/500' ] : [], ]){ const isSsg = ssgPages.has(page); const isDynamic = (0, _utils).isDynamicRoute(page); const isFallback = isSsg && ssgStaticFallbackPages.has(page); for (const locale of i18n.locales){ var ref; // skip fallback generation for SSG pages without fallback mode if (isSsg && isDynamic && !isFallback) continue; const outputPath = `/${locale}${page === '/' ? '' : page}`; defaultMap[outputPath] = { page: ((ref = defaultMap[page]) === null || ref === void 0 ? void 0 : ref.page) || page, query: { __nextLocale: locale } }; if (isFallback) { defaultMap[outputPath].query.__nextFallback = true; } } if (isSsg) { // remove non-locale prefixed variant from defaultMap delete defaultMap[page]; } } } return defaultMap; } }; await exportApp(dir, exportOptions, nextBuildSpan, exportConfig); const postBuildSpinner = (0, _spinner).default({ prefixText: `${Log.prefixes.info} Finalizing page optimization` }); ssgNotFoundPaths = exportConfig.ssgNotFoundPaths; // remove server bundles that were exported for (const page of staticPages){ const serverBundle = (0, _require).getPagePath(page, distDir, isLikeServerless); await _fs.promises.unlink(serverBundle); } const serverOutputDir = _path.default.join(distDir, isLikeServerless ? _constants1.SERVERLESS_DIRECTORY : _constants1.SERVER_DIRECTORY); const moveExportedPage = async (originPage, page, file, isSsg, ext, additionalSsgFile = false)=>{ return staticGenerationSpan.traceChild('move-exported-page').traceAsyncFn(async ()=>{ file = `${file}.${ext}`; const orig = _path.default.join(exportOptions.outdir, file); const pagePath = (0, _require).getPagePath(originPage, distDir, isLikeServerless); const relativeDest = _path.default.relative(serverOutputDir, _path.default.join(_path.default.join(pagePath, // strip leading / and then recurse number of nested dirs // to place from base folder originPage.substr(1).split('/').map(()=>'..' ).join('/')), file)).replace(/\\/g, '/'); const dest = _path.default.join(distDir, isLikeServerless ? _constants1.SERVERLESS_DIRECTORY : _constants1.SERVER_DIRECTORY, relativeDest); if (!isSsg && !// don't add static status page to manifest if it's // the default generated version e.g. no pages/500 (_constants1.STATIC_STATUS_PAGES.includes(page) && !usedStaticStatusPages.includes(page))) { pagesManifest[page] = relativeDest; } const isNotFound = ssgNotFoundPaths.includes(page); // for SSG files with i18n the non-prerendered variants are // output with the locale prefixed so don't attempt moving // without the prefix if ((!i18n || additionalSsgFile) && !isNotFound) { await _fs.promises.mkdir(_path.default.dirname(dest), { recursive: true }); await _fs.promises.rename(orig, dest); } else if (i18n && !isSsg) { // this will be updated with the locale prefixed variant // since all files are output with the locale prefix delete pagesManifest[page]; } if (i18n) { if (additionalSsgFile) return; for (const locale of i18n.locales){ const curPath = `/${locale}${page === '/' ? '' : page}`; const localeExt = page === '/' ? _path.default.extname(file) : ''; const relativeDestNoPages = relativeDest.substr('pages/'.length); if (isSsg && ssgNotFoundPaths.includes(curPath)) { continue; } const updatedRelativeDest = _path.default.join('pages', locale + localeExt, // if it's the top-most index page we want it to be locale.EXT // instead of locale/index.html page === '/' ? '' : relativeDestNoPages).replace(/\\/g, '/'); const updatedOrig = _path.default.join(exportOptions.outdir, locale + localeExt, page === '/' ? '' : file); const updatedDest = _path.default.join(distDir, isLikeServerless ? _constants1.SERVERLESS_DIRECTORY : _constants1.SERVER_DIRECTORY, updatedRelativeDest); if (!isSsg) { pagesManifest[curPath] = updatedRelativeDest; } await _fs.promises.mkdir(_path.default.dirname(updatedDest), { recursive: true }); await _fs.promises.rename(updatedOrig, updatedDest); } } }); }; // Only move /404 to /404 when there is no custom 404 as in that case we don't know about the 404 page if (!hasPages404 && useStatic404) { await moveExportedPage('/_error', '/404', '/404', false, 'html'); } if (useDefaultStatic500) { await moveExportedPage('/_error', '/500', '/500', false, 'html'); } for (const page1 of combinedPages){ const isSsg = ssgPages.has(page1); const isStaticSsgFallback = ssgStaticFallbackPages.has(page1); const isDynamic = (0, _utils).isDynamicRoute(page1); const hasAmp = hybridAmpPages.has(page1); const file = (0, _normalizePagePath).normalizePagePath(page1); const pageInfo = pageInfos.get(page1); const durationInfo = exportConfig.pageDurationMap[page1]; if (pageInfo && durationInfo) { // Set Build Duration if (pageInfo.ssgPageRoutes) { pageInfo.ssgPageDurations = pageInfo.ssgPageRoutes.map((pagePath)=>durationInfo[pagePath] ); } pageInfo.pageDuration = durationInfo[page1]; } // The dynamic version of SSG pages are only prerendered if the // fallback is enabled. Below, we handle the specific prerenders // of these. const hasHtmlOutput = !(isSsg && isDynamic && !isStaticSsgFallback); if (hasHtmlOutput) { await moveExportedPage(page1, page1, file, isSsg, 'html'); } if (hasAmp && (!isSsg || isSsg && !isDynamic)) { const ampPage = `${file}.amp`; await moveExportedPage(page1, ampPage, ampPage, isSsg, 'html'); if (isSsg) { await moveExportedPage(page1, ampPage, ampPage, isSsg, 'json'); } } if (isSsg) { // For a non-dynamic SSG page, we must copy its data file // from export, we already moved the HTML file above if (!isDynamic) { await moveExportedPage(page1, page1, file, isSsg, 'json'); if (i18n) { // TODO: do we want to show all locale variants in build output for (const locale of i18n.locales){ const localePage = `/${locale}${page1 === '/' ? '' : page1}`; finalPrerenderRoutes[localePage] = { initialRevalidateSeconds: exportConfig.initialPageRevalidationMap[localePage], srcRoute: null, dataRoute: _path.default.posix.join('/_next/data', buildId, `${file}.json`) }; } } else { finalPrerenderRoutes[page1] = { initialRevalidateSeconds: exportConfig.initialPageRevalidationMap[page1], srcRoute: null, dataRoute: _path.default.posix.join('/_next/data', buildId, `${file}.json`) }; } // Set Page Revalidation Interval if (pageInfo) { pageInfo.initialRevalidateSeconds = exportConfig.initialPageRevalidationMap[page1]; } } else { // For a dynamic SSG page, we did not copy its data exports and only // copy the fallback HTML file (if present). // We must also copy specific versions of this page as defined by // `getStaticPaths` (additionalSsgPaths). const extraRoutes = additionalSsgPaths.get(page1) || []; for (const route of extraRoutes){ const pageFile = (0, _normalizePagePath).normalizePagePath(route); await moveExportedPage(page1, route, pageFile, isSsg, 'html', true); await moveExportedPage(page1, route, pageFile, isSsg, 'json', true); if (hasAmp) { const ampPage = `${pageFile}.amp`; await moveExportedPage(page1, ampPage, ampPage, isSsg, 'html', true); await moveExportedPage(page1, ampPage, ampPage, isSsg, 'json', true); } finalPrerenderRoutes[route] = { initialRevalidateSeconds: exportConfig.initialPageRevalidationMap[route], srcRoute: page1, dataRoute: _path.default.posix.join('/_next/data', buildId, `${(0, _normalizePagePath).normalizePagePath(route)}.json`) }; // Set route Revalidation Interval if (pageInfo) { pageInfo.initialRevalidateSeconds = exportConfig.initialPageRevalidationMap[route]; } } } } } // remove temporary export folder await (0, _recursiveDelete).recursiveDelete(exportOptions.outdir); await _fs.promises.rmdir(exportOptions.outdir); await _fs.promises.writeFile(manifestPath, JSON.stringify(pagesManifest, null, 2), 'utf8'); if (postBuildSpinner) postBuildSpinner.stopAndPersist(); console.log(); }); } const analysisEnd = process.hrtime(analysisBegin); var ref30; telemetry.record((0, _events).eventBuildOptimize(pagePaths, { durationInSeconds: analysisEnd[0], staticPageCount: staticPages.size, staticPropsPageCount: ssgPages.size, serverPropsPageCount: serverPropsPages.size, ssrPageCount: pagePaths.length - (staticPages.size + ssgPages.size + serverPropsPages.size), hasStatic404: useStatic404, hasReportWebVitals: (ref30 = namedExports === null || namedExports === void 0 ? void 0 : namedExports.includes('reportWebVitals')) !== null && ref30 !== void 0 ? ref30 : false, rewritesCount: combinedRewrites.length, headersCount: headers.length, redirectsCount: redirects.length - 1, headersWithHasCount: headers.filter((r)=>!!r.has ).length, rewritesWithHasCount: combinedRewrites.filter((r)=>!!r.has ).length, redirectsWithHasCount: redirects.filter((r)=>!!r.has ).length, middlewareCount: pageKeys.filter((page)=>_constants.MIDDLEWARE_ROUTE.test(page) ).length })); const telemetryPlugin = (ref5 = clientConfig.plugins) === null || ref5 === void 0 ? void 0 : ref5.find(isTelemetryPlugin); if (telemetryPlugin) { const events = (0, _events).eventBuildFeatureUsage(telemetryPlugin); telemetry.record(events); } if (ssgPages.size > 0) { var ref; const finalDynamicRoutes = { }; tbdPrerenderRoutes.forEach((tbdRoute)=>{ const normalizedRoute = (0, _normalizePagePath).normalizePagePath(tbdRoute); const dataRoute = _path.default.posix.join('/_next/data', buildId, `${normalizedRoute}.json`); finalDynamicRoutes[tbdRoute] = { routeRegex: (0, _loadCustomRoutes).normalizeRouteRegex((0, _utils).getRouteRegex(tbdRoute).re.source), dataRoute, fallback: ssgBlockingFallbackPages.has(tbdRoute) ? null : ssgStaticFallbackPages.has(tbdRoute) ? `${normalizedRoute}.html` : false, dataRouteRegex: (0, _loadCustomRoutes).normalizeRouteRegex((0, _utils).getRouteRegex(dataRoute.replace(/\.json$/, '')).re.source.replace(/\(\?:\\\/\)\?\$$/, '\\.json$')) }; }); const prerenderManifest = { version: 3, routes: finalPrerenderRoutes, dynamicRoutes: finalDynamicRoutes, notFoundRoutes: ssgNotFoundPaths, preview: previewProps }; await _fs.promises.writeFile(_path.default.join(distDir, _constants1.PRERENDER_MANIFEST), JSON.stringify(prerenderManifest), 'utf8'); await generateClientSsgManifest(prerenderManifest, { distDir, buildId, locales: ((ref = config.i18n) === null || ref === void 0 ? void 0 : ref.locales) || [] }); } else { const prerenderManifest = { version: 3, routes: { }, dynamicRoutes: { }, preview: previewProps, notFoundRoutes: [] }; await _fs.promises.writeFile(_path.default.join(distDir, _constants1.PRERENDER_MANIFEST), JSON.stringify(prerenderManifest), 'utf8'); } const middlewareManifest = JSON.parse(await _fs.promises.readFile(_path.default.join(distDir, _constants1.SERVER_DIRECTORY, _constants1.MIDDLEWARE_MANIFEST), 'utf8')); await _fs.promises.writeFile(_path.default.join(distDir, _constants1.CLIENT_STATIC_FILES_PATH, buildId, '_middlewareManifest.js'), `self.__MIDDLEWARE_MANIFEST=${(0, _devalue).default(middlewareManifest.clientInfo)};self.__MIDDLEWARE_MANIFEST_CB&&self.__MIDDLEWARE_MANIFEST_CB()`); const images = { ...config.images }; const { deviceSizes , imageSizes } = images; images.sizes = [ ...deviceSizes, ...imageSizes ]; await _fs.promises.writeFile(_path.default.join(distDir, _constants1.IMAGES_MANIFEST), JSON.stringify({ version: 1, images }), 'utf8'); await _fs.promises.writeFile(_path.default.join(distDir, _constants1.EXPORT_MARKER), JSON.stringify({ version: 1, hasExportPathMap: typeof config.exportPathMap === 'function', exportTrailingSlash: config.trailingSlash === true, isNextImageImported: isNextImageImported === true }), 'utf8'); await _fs.promises.unlink(_path.default.join(distDir, _constants1.EXPORT_DETAIL)).catch((err)=>{ if (err.code === 'ENOENT') { return Promise.resolve(); } return Promise.reject(err); }); staticPages.forEach((pg)=>allStaticPages.add(pg) ); pageInfos.forEach((info, key)=>{ allPageInfos.set(key, info); }); await nextBuildSpan.traceChild('print-tree-view').traceAsyncFn(()=>(0, _utils1).printTreeView(Object.keys(mappedPages), allPageInfos, isLikeServerless, { distPath: distDir, buildId: buildId, pagesDir, useStatic404, pageExtensions: config.pageExtensions, buildManifest, gzipSize: config.experimental.gzipSize }) ); if (debugOutput) { nextBuildSpan.traceChild('print-custom-routes').traceFn(()=>(0, _utils1).printCustomRoutes({ redirects, rewrites, headers }) ); } if (config.analyticsId) { console.log(_chalk.default.bold.green('Next.js Analytics') + ' is enabled for this production build. ' + "You'll receive a Real Experience Score computed by all of your visitors."); console.log(''); } await nextBuildSpan.traceChild('telemetry-flush').traceAsyncFn(()=>telemetry.flush() ); }); // Ensure all traces are flushed before finishing the command await (0, _trace).flushAllTraces(); return buildResult; } function generateClientSsgManifest(prerenderManifest, { buildId , distDir , locales }) { const ssgPages = new Set([ ...Object.entries(prerenderManifest.routes)// Filter out dynamic routes .filter(([, { srcRoute }])=>srcRoute == null ).map(([route])=>(0, _normalizeLocalePath).normalizeLocalePath(route, locales).pathname ), ...Object.keys(prerenderManifest.dynamicRoutes), ]); const clientSsgManifestContent = `self.__SSG_MANIFEST=${(0, _devalue).default(ssgPages)};self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()`; (0, _fs).writeFileSync(_path.default.join(distDir, _constants1.CLIENT_STATIC_FILES_PATH, buildId, '_ssgManifest.js'), clientSsgManifestContent); } function isTelemetryPlugin(plugin) { return plugin instanceof _telemetryPlugin.TelemetryPlugin; } function pageToRoute(page) { const routeRegex = (0, _utils).getRouteRegex(page); return { page, regex: (0, _loadCustomRoutes).normalizeRouteRegex(routeRegex.re.source), routeKeys: routeRegex.routeKeys, namedRegex: routeRegex.namedRegex }; } //# sourceMappingURL=index.js.map