ayakashi
Version:
The next generation web scraping framework
98 lines (97 loc) • 3.51 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOpLog = void 0;
const chalk_1 = __importDefault(require("chalk"));
const dayjs_1 = __importDefault(require("dayjs"));
const ora_1 = __importDefault(require("ora"));
const boxen_1 = __importDefault(require("boxen"));
const os_1 = require("os");
function getOpLog() {
const env = process.env.NODE_ENV;
return {
info: function (...logs) {
if (env === "test")
return;
process.stdout.write(formatLogs(logs, "info"));
},
warn: function (...logs) {
if (env === "test")
return;
process.stdout.write(formatLogs(logs, "warning"));
},
error: function (...logs) {
if (env === "test")
return;
process.stdout.write(formatLogs(logs, "error"));
},
debug: function (...logs) {
if (env === "test")
return;
process.stdout.write(formatLogs(logs, "debug"));
},
waiter: function (text) {
return ora_1.default({
color: "green",
text: `${text}\n`,
spinner: "triangle"
}).start();
},
messageBox: function (logs, opts) {
if (env === "test")
return;
process.stdout.write(boxen_1.default(logs.reduce((msg, log) => msg + log + "\n", ""), {
borderColor: (opts && opts.color) || "cyan",
align: "center",
padding: 1,
borderStyle: "double" /* Double */,
margin: (opts && opts.margin) || 0
// float: "center"
}) + "\n");
},
incrementalMessageBox: function (opts) {
return {
_logs: [],
add: function (text) {
if (Array.isArray(text)) {
this._logs = this._logs.concat(text);
}
else {
this._logs.push(text);
}
},
render: function () {
if (this._logs.length === 0)
return;
process.stdout.write(boxen_1.default(this._logs.reduce((msg, log) => msg + log + "\n", ""), {
borderColor: (opts && opts.color) || "cyan",
align: "center",
padding: 1,
borderStyle: "double" /* Double */,
margin: (opts && opts.margin) || 0
// float: "center"
}) + "\n");
}
};
}
};
}
exports.getOpLog = getOpLog;
function formatLogs(logs, level) {
return logs.reduce(function (acc, log) {
if (level === "info") {
return `${acc} ${chalk_1.default.cyan(log)}`;
}
else if (level === "warning") {
return `${acc} ${chalk_1.default.yellow(log)}`;
}
else if (level === "error") {
return `${acc} ${chalk_1.default.red(log)}`;
}
else {
return `${acc} ${chalk_1.default.gray(log)}`;
}
}, chalk_1.default.underline.white(`[${dayjs_1.default().format("HH:mm:ss")}]`)) + os_1.EOL;
}