UNPKG

@skypilot/scraper

Version:
104 lines (79 loc) 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = void 0; var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _sugarbowl = require("@skypilot/sugarbowl"); var _jsonBeautify = _interopRequireDefault(require("json-beautify")); var _toUtcDateTimeText = require("./toUtcDateTimeText"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } class Logger { constructor(params = {}) { _defineProperty(this, "createdAt", new Date()); _defineProperty(this, "log", []); _defineProperty(this, "logDir", void 0); _defineProperty(this, "logFileName", void 0); _defineProperty(this, "verbose", void 0); const { logDir = 'logs', logFileName = '', verbose = false } = params; this.logDir = new _sugarbowl.Directory(logDir); this.logFileName = logFileName; this.verbose = verbose; } add(message, options = {}) { const { prefix = '', runLevel = 0 } = options; const indentLevel = Math.max(0, runLevel - 1); const indent = ' '.repeat(indentLevel); const messageBlock = typeof message === 'string' ? message : (0, _jsonBeautify.default)(message, null, 2, 100); const lines = messageBlock.split('\n'); const formattedLines = [...lines.slice(0, 1).map(line => `${indent}${prefix}${line}`), ...lines.slice(1).map(line => `${indent}${' '.repeat(prefix.length)}${line}`)]; this.log.push(...formattedLines); (0, _sugarbowl.consoleIf)(this.verbose)(formattedLines.join('\n')); this.write(); } display() { console.log(this.format()); } format() { return [`Started at ${(0, _toUtcDateTimeText.toUtcDateTimeText)(this.createdAt)}`, '-'.repeat(20), ...this.log, '-'.repeat(20), `Finished at ${(0, _toUtcDateTimeText.toUtcDateTimeText)()}`].join('\n'); } get() { return this.log; } getPaths() { const fullDirPath = this.logDir ? this.logDir.fullPath : ''; const resolvedFileName = (typeof this.logFileName === 'function' ? this.logFileName() : this.logFileName) || ''; const fullFilePath = resolvedFileName ? this.logDir.join(resolvedFileName) : ''; return { fileName: resolvedFileName, fullDirPath, fullFilePath, relativeDirPath: this.logDir ? this.logDir.relativePath : '', relativeFilePath: fullFilePath ? _path.default.relative(_path.default.resolve(), fullFilePath) : '' }; } write() { if (!this.logFileName) { return; } this.logDir.makeSync(); const { fullDirPath, fullFilePath } = this.getPaths(); _fs.default.mkdirSync(fullDirPath, { recursive: true }); _fs.default.writeFileSync(fullFilePath, this.format()); } } exports.Logger = Logger;