"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = prettyDiagnostic; function _codeframe() { const data = _interopRequireDefault(require("@parcel/codeframe")); _codeframe = function () { return data; }; return data; } function _markdownAnsi() { const data = _interopRequireDefault(require("@parcel/markdown-ansi")); _markdownAnsi = function () { return data; }; return data; } function _chalk() { const data = _interopRequireDefault(require("chalk")); _chalk = function () { return data; }; return data; } function _path() { const data = _interopRequireDefault(require("path")); _path = function () { return data; }; return data; } function _nullthrows() { const data = _interopRequireDefault(require("nullthrows")); _nullthrows = function () { return data; }; return data; } function _terminalLink() { const data = _interopRequireDefault(require("terminal-link")); _terminalLink = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // $FlowFixMe async function prettyDiagnostic(diagnostic, options, terminalWidth) { let { origin, message, stack, codeFrames, hints, skipFormatting, documentationURL } = diagnostic; let result = { message: (0, _markdownAnsi().default)(`**${origin !== null && origin !== void 0 ? origin : 'unknown'}**: `) + (skipFormatting ? message : (0, _markdownAnsi().default)(message)), stack: '', codeframe: '', hints: [], documentation: '' }; if (codeFrames != null) { for (let codeFrame of codeFrames) { var _codeFrame$code; let filePath = codeFrame.filePath; if (filePath != null && options && !_path().default.isAbsolute(filePath)) { filePath = _path().default.join(options.projectRoot, filePath); } let highlights = codeFrame.codeHighlights; let code = (_codeFrame$code = codeFrame.code) !== null && _codeFrame$code !== void 0 ? _codeFrame$code : options && (await options.inputFS.readFile((0, _nullthrows().default)(filePath), 'utf8')); let formattedCodeFrame = ''; if (code != null) { formattedCodeFrame = (0, _codeframe().default)(code, highlights, { useColor: true, syntaxHighlighting: true, language: // $FlowFixMe sketchy null checks do not matter here... codeFrame.language || (filePath != null ? _path().default.extname(filePath).substr(1) : undefined), terminalWidth }); } result.codeframe += typeof filePath !== 'string' ? '' : _chalk().default.gray.underline(`${filePath}:${highlights[0].start.line}:${highlights[0].start.column}\n`); result.codeframe += formattedCodeFrame; if (codeFrame !== codeFrames[codeFrames.length - 1]) { result.codeframe += '\n\n'; } } } if (stack != null) { result.stack = stack; } if (Array.isArray(hints) && hints.length) { result.hints = hints.map(h => { return (0, _markdownAnsi().default)(h); }); } if (documentationURL != null) { result.documentation = (0, _terminalLink().default)('Learn more', documentationURL, { fallback: (text, url) => `${text}: ${url}` }); } return result; }