"use strict"; /** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ const tslib_1 = require("tslib"); const chalk_1 = tslib_1.__importDefault(require("chalk")); const path = (msg) => chalk_1.default.cyan.underline(`"${String(msg)}"`); const url = (msg) => chalk_1.default.cyan.underline(msg); const name = (msg) => chalk_1.default.blue.bold(msg); const code = (msg) => chalk_1.default.cyan(`\`${String(msg)}\``); const subdue = (msg) => chalk_1.default.gray(msg); const num = (msg) => chalk_1.default.yellow(msg); function interpolate(msgs, ...values) { let res = ''; values.forEach((value, idx) => { const flag = msgs[idx].match(/[a-z]+=$/); res += msgs[idx].replace(/[a-z]+=$/, ''); const format = (() => { if (!flag) { return (a) => a; } switch (flag[0]) { case 'path=': return path; case 'url=': return url; case 'number=': return num; case 'name=': return name; case 'subdue=': return subdue; case 'code=': return code; default: throw new Error('Bad Docusaurus logging message. This is likely an internal bug, please report it.'); } })(); res += Array.isArray(value) ? `\n- ${value.map((v) => format(v)).join('\n- ')}` : format(value); }); res += msgs.slice(-1)[0]; return res; } function stringify(msg) { if (String(msg) === '[object Object]') { return JSON.stringify(msg); } if (msg instanceof Date) { return msg.toUTCString(); } return String(msg); } function info(msg, ...values) { console.info(`${chalk_1.default.cyan.bold('[INFO]')} ${values.length === 0 ? stringify(msg) : interpolate(msg, ...values)}`); } function warn(msg, ...values) { console.warn(chalk_1.default.yellow(`${chalk_1.default.bold('[WARNING]')} ${values.length === 0 ? stringify(msg) : interpolate(msg, ...values)}`)); } function error(msg, ...values) { console.error(chalk_1.default.red(`${chalk_1.default.bold('[ERROR]')} ${values.length === 0 ? stringify(msg) : interpolate(msg, ...values)}`)); } function success(msg, ...values) { console.log(`${chalk_1.default.green.bold('[SUCCESS]')} ${values.length === 0 ? stringify(msg) : interpolate(msg, ...values)}`); } function throwError(msg, ...values) { throw new Error(values.length === 0 ? stringify(msg) : interpolate(msg, ...values)); } function newLine() { console.log(); } /** * Takes a message and reports it according to the severity that the user wants. * * - `ignore`: completely no-op * - `log`: uses the `INFO` log level * - `warn`: uses the `WARN` log level * - `throw`: aborts the process, throws the error. * * Since the logger doesn't have logging level filters yet, these severities * mostly just differ by their colors. * * @throws In addition to throwing when `reportingSeverity === "throw"`, this * function also throws if `reportingSeverity` is not one of the above. */ function report(reportingSeverity) { const reportingMethods = { ignore: () => { }, log: info, warn, throw: throwError, }; if (!Object.prototype.hasOwnProperty.call(reportingMethods, reportingSeverity)) { throw new Error(`Unexpected "reportingSeverity" value: ${reportingSeverity}.`); } return reportingMethods[reportingSeverity]; } const logger = { red: (msg) => chalk_1.default.red(msg), yellow: (msg) => chalk_1.default.yellow(msg), green: (msg) => chalk_1.default.green(msg), bold: (msg) => chalk_1.default.bold(msg), dim: (msg) => chalk_1.default.dim(msg), path, url, name, code, subdue, num, interpolate, info, warn, error, success, report, newLine, }; module.exports = logger; //# sourceMappingURL=index.js.map