| "use strict"; |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| 0 && (module.exports = { |
| ModuleBuildError: null, |
| formatIssue: null, |
| getIssueKey: null, |
| getTurbopackJsConfig: null, |
| isPersistentCachingEnabled: null, |
| isRelevantWarning: null, |
| isWellKnownError: null, |
| processIssues: null, |
| renderStyledStringToErrorAnsi: null |
| }); |
| function _export(target, all) { |
| for(var name in all)Object.defineProperty(target, name, { |
| enumerable: true, |
| get: all[name] |
| }); |
| } |
| _export(exports, { |
| ModuleBuildError: function() { |
| return ModuleBuildError; |
| }, |
| formatIssue: function() { |
| return formatIssue; |
| }, |
| getIssueKey: function() { |
| return getIssueKey; |
| }, |
| getTurbopackJsConfig: function() { |
| return getTurbopackJsConfig; |
| }, |
| isPersistentCachingEnabled: function() { |
| return isPersistentCachingEnabled; |
| }, |
| isRelevantWarning: function() { |
| return isRelevantWarning; |
| }, |
| isWellKnownError: function() { |
| return isWellKnownError; |
| }, |
| processIssues: function() { |
| return processIssues; |
| }, |
| renderStyledStringToErrorAnsi: function() { |
| return renderStyledStringToErrorAnsi; |
| } |
| }); |
| const _interop_require_default = require("@swc/helpers/_/_interop_require_default"); |
| const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard"); |
| const _picocolors = require("../../../lib/picocolors"); |
| const _isinternal = _interop_require_default._(require("../is-internal")); |
| const _magicidentifier = require("../magic-identifier"); |
| const _log = _interop_require_wildcard._(require("../../../build/output/log")); |
| const _loadjsconfig = _interop_require_default._(require("../../../build/load-jsconfig")); |
| class ModuleBuildError extends Error { |
| constructor(...args){ |
| super(...args), this.name = 'ModuleBuildError'; |
| } |
| } |
| function isWellKnownError(issue) { |
| const { title } = issue; |
| const formattedTitle = renderStyledStringToErrorAnsi(title); |
| |
| if (formattedTitle.includes('Module not found') || formattedTitle.includes('Unknown module type')) { |
| return true; |
| } |
| return false; |
| } |
| function getIssueKey(issue) { |
| return issue.severity + "-" + issue.filePath + "-" + JSON.stringify(issue.title) + "-" + JSON.stringify(issue.description); |
| } |
| async function getTurbopackJsConfig(dir, nextConfig) { |
| const { jsConfig } = await (0, _loadjsconfig.default)(dir, nextConfig); |
| return jsConfig != null ? jsConfig : { |
| compilerOptions: {} |
| }; |
| } |
| function processIssues(currentEntryIssues, key, result, throwIssue, logErrors) { |
| const newIssues = new Map(); |
| currentEntryIssues.set(key, newIssues); |
| const relevantIssues = new Set(); |
| for (const issue of result.issues){ |
| if (issue.severity !== 'error' && issue.severity !== 'fatal' && issue.severity !== 'warning') continue; |
| const issueKey = getIssueKey(issue); |
| newIssues.set(issueKey, issue); |
| if (issue.severity !== 'warning') { |
| if (throwIssue) { |
| const formatted = formatIssue(issue); |
| relevantIssues.add(formatted); |
| } else if (logErrors && isWellKnownError(issue)) { |
| const formatted = formatIssue(issue); |
| _log.error(formatted); |
| } |
| } |
| } |
| if (relevantIssues.size && throwIssue) { |
| throw Object.defineProperty(new ModuleBuildError([ |
| ...relevantIssues |
| ].join('\n\n')), "__NEXT_ERROR_CODE", { |
| value: "E394", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| } |
| function formatIssue(issue) { |
| const { filePath, title, description, source, importTraces } = issue; |
| let { documentationLink } = issue; |
| const formattedTitle = renderStyledStringToErrorAnsi(title).replace(/\n/g, '\n '); |
| |
| |
| if (formattedTitle.includes('Module not found')) { |
| |
| |
| documentationLink = 'https://nextjs.org/docs/messages/module-not-found'; |
| } |
| const formattedFilePath = filePath.replace('[project]/', './').replaceAll('/./', '/').replace('\\\\?\\', ''); |
| let message = ''; |
| if (source == null ? void 0 : source.range) { |
| const { start } = source.range; |
| message = formattedFilePath + ":" + (start.line + 1) + ":" + (start.column + 1) + "\n" + formattedTitle; |
| } else if (formattedFilePath) { |
| message = formattedFilePath + "\n" + formattedTitle; |
| } else { |
| message = formattedTitle; |
| } |
| message += '\n'; |
| if ((source == null ? void 0 : source.range) && source.source.content && |
| !(0, _isinternal.default)(filePath)) { |
| const { start, end } = source.range; |
| const { codeFrameColumns } = require('next/dist/compiled/babel/code-frame'); |
| message += codeFrameColumns(source.source.content, { |
| start: { |
| line: start.line + 1, |
| column: start.column + 1 |
| }, |
| end: { |
| line: end.line + 1, |
| column: end.column + 1 |
| } |
| }, { |
| forceColor: true |
| }).trim() + '\n\n'; |
| } |
| if (description) { |
| if (description.type === 'text' && description.value.includes("Cannot find module 'sass'")) { |
| message += "To use Next.js' built-in Sass support, you first need to install `sass`.\n"; |
| message += 'Run `npm i sass` or `yarn add sass` inside your workspace.\n'; |
| message += '\nLearn more: https://nextjs.org/docs/messages/install-sass'; |
| } else { |
| message += renderStyledStringToErrorAnsi(description) + '\n\n'; |
| } |
| } |
| |
| |
| |
| |
| if (importTraces == null ? void 0 : importTraces.length) { |
| |
| |
| |
| message += "Import trace" + (importTraces.length > 1 ? 's' : '') + ":\n"; |
| const everyTraceHasADistinctRootLayer = new Set(importTraces.map(leafLayerName).filter((l)=>l != null)).size === importTraces.length; |
| for(let i = 0; i < importTraces.length; i++){ |
| const trace = importTraces[i]; |
| const layer = leafLayerName(trace); |
| let traceIndent = ' '; |
| |
| if (everyTraceHasADistinctRootLayer) { |
| message += " " + layer + ":\n"; |
| } else { |
| if (importTraces.length > 1) { |
| |
| message += " #" + (i + 1); |
| if (layer) { |
| message += " [" + layer + "]"; |
| } |
| message += ':\n'; |
| } else if (layer) { |
| message += " [" + layer + "]:\n"; |
| } else { |
| |
| traceIndent = ' '; |
| } |
| } |
| message += formatIssueTrace(trace, traceIndent, !identicalLayers(trace)); |
| } |
| } |
| if (documentationLink) { |
| message += documentationLink + '\n\n'; |
| } |
| return message; |
| } |
| function leafLayerName(items) { |
| for (const item of items){ |
| const layer = item.layer; |
| if (layer != null) return layer; |
| } |
| return undefined; |
| } |
| |
| |
| |
| function identicalLayers(items) { |
| const firstPresentLayer = items.findIndex((t)=>t.layer != null); |
| if (firstPresentLayer === -1) return true |
| ; |
| const layer = items[firstPresentLayer].layer; |
| for(let i = firstPresentLayer + 1; i < items.length; i++){ |
| const itemLayer = items[i].layer; |
| if (itemLayer == null || itemLayer !== layer) { |
| return false; |
| } |
| } |
| return true; |
| } |
| function formatIssueTrace(items, indent, printLayers) { |
| return "" + items.map((item)=>{ |
| let r = indent; |
| if (item.fsName !== 'project') { |
| r += "[" + item.fsName + "]/"; |
| } else { |
| |
| r += './'; |
| } |
| r += item.path; |
| if (printLayers && item.layer) { |
| r += " [" + item.layer + "]"; |
| } |
| return r; |
| }).join('\n') + "\n\n"; |
| } |
| function isRelevantWarning(issue) { |
| return issue.severity === 'warning' && !isNodeModulesIssue(issue); |
| } |
| function isNodeModulesIssue(issue) { |
| if (issue.severity === 'warning' && issue.stage === 'config') { |
| |
| |
| if (renderStyledStringToErrorAnsi(issue.title).includes("can't be external")) { |
| return false; |
| } |
| } |
| return issue.severity === 'warning' && (issue.filePath.match(/^(?:.*[\\/])?node_modules(?:[\\/].*)?$/) !== null || |
| |
| |
| issue.filePath.startsWith('[project]/packages/next/')); |
| } |
| function renderStyledStringToErrorAnsi(string) { |
| function decodeMagicIdentifiers(str) { |
| return str.replaceAll(_magicidentifier.MAGIC_IDENTIFIER_REGEX, (ident)=>{ |
| try { |
| return (0, _picocolors.magenta)("{" + (0, _magicidentifier.decodeMagicIdentifier)(ident) + "}"); |
| } catch (e) { |
| return (0, _picocolors.magenta)("{" + ident + " (decoding failed: " + e + ")}"); |
| } |
| }); |
| } |
| switch(string.type){ |
| case 'text': |
| return decodeMagicIdentifiers(string.value); |
| case 'strong': |
| return (0, _picocolors.bold)((0, _picocolors.red)(decodeMagicIdentifiers(string.value))); |
| case 'code': |
| return (0, _picocolors.green)(decodeMagicIdentifiers(string.value)); |
| case 'line': |
| return string.value.map(renderStyledStringToErrorAnsi).join(''); |
| case 'stack': |
| return string.value.map(renderStyledStringToErrorAnsi).join('\n'); |
| default: |
| throw Object.defineProperty(new Error('Unknown StyledString type', string), "__NEXT_ERROR_CODE", { |
| value: "E138", |
| enumerable: false, |
| configurable: true |
| }); |
| } |
| } |
| function isPersistentCachingEnabled(config) { |
| var _config_experimental; |
| return ((_config_experimental = config.experimental) == null ? void 0 : _config_experimental.turbopackPersistentCaching) || false; |
| } |
|
|
| |