Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.3 KiB
139 lines
3.3 KiB
"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;
|
|
} |