UNPKG

@evojs/logger

Version:
60 lines (59 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cleanText = cleanText; exports.floatRight = floatRight; exports.resolveSeparators = resolveSeparators; exports.toJson = toJson; /* eslint-disable lodash/prefer-lodash-typecheck */ const ANSI_COLORS_REPLACE_MASK = // eslint-disable-next-line no-control-regex /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; function cleanText(text) { return text.replace(ANSI_COLORS_REPLACE_MASK, ''); } function floatRight(maxLength, leftText, rightText) { if (!rightText) { return leftText; } const ltLength = cleanText(leftText).length; const rtLength = cleanText(rightText).length; if (ltLength + rtLength < maxLength) { const spacesLength = maxLength - ltLength - rtLength; return leftText + ' '.repeat(spacesLength) + rightText; } if (leftText) { return `${leftText}\n${rightText}`; } return rightText; } function resolveSeparators(text, separator, lineLength) { return text .split('\n') .map((s) => { const parts = s.split(separator); const res = []; for (let i = 0, lt, rt; i < parts.length; i += 2) { lt = parts[i]; rt = parts[i + 1]; if (rt === undefined) { res.push(lt); continue; } res.push(floatRight(lineLength, lt, rt)); } return res.join('\n'); }) .join('\n'); } function toJson(data) { const cache = []; return JSON.stringify(data, (key, value) => { if (typeof value === 'object' && value) { if (cache.includes(value)) { return `[circular]`; // TODO: key from cache } cache.push(value); } return value; }); }