UNPKG

@contentstack/cli-variants

Version:

Variants plugin

190 lines (189 loc) 6.69 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.unlinkFileLogger = exports.log = void 0; const winston = __importStar(require("winston")); const path = __importStar(require("path")); const mkdirp_1 = __importDefault(require("mkdirp")); const cli_utilities_1 = require("@contentstack/cli-utilities"); const slice = Array.prototype.slice; const ansiRegexPattern = [ '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))', ].join('|'); function returnString(args) { let returnStr = ''; if (args && args.length) { returnStr = args .map(function (item) { if (item && typeof item === 'object') { try { const redactedObject = (0, cli_utilities_1.redactObject)(item); if (redactedObject && typeof redactedObject === 'object') { return JSON.stringify(redactedObject); } } catch (error) { } return item; } return item; }) .join(' ') .trim(); } returnStr = returnStr.replace(new RegExp(ansiRegexPattern, 'g'), '').trim(); return returnStr; } const myCustomLevels = { levels: { warn: 1, info: 2, debug: 3, }, colors: { //colors aren't being used anywhere as of now, we're using chalk to add colors while logging info: 'blue', debug: 'green', warn: 'yellow', error: 'red', }, }; let logger; let errorLogger; let successTransport; let errorTransport; function init(_logPath, module) { if (!logger || !errorLogger) { const logsDir = path.resolve((0, cli_utilities_1.sanitizePath)(_logPath), 'logs', (0, cli_utilities_1.sanitizePath)(module)); // Create dir if doesn't already exist mkdirp_1.default.sync(logsDir); successTransport = { filename: path.join((0, cli_utilities_1.sanitizePath)(logsDir), 'success.log'), maxFiles: 20, maxsize: 1000000, tailable: true, level: 'info', }; errorTransport = { filename: path.join((0, cli_utilities_1.sanitizePath)(logsDir), 'error.log'), maxFiles: 20, maxsize: 1000000, tailable: true, level: 'error', }; logger = winston.createLogger({ transports: [ new winston.transports.File(successTransport), new winston.transports.Console({ format: winston.format.simple() }), ], levels: myCustomLevels.levels, }); errorLogger = winston.createLogger({ transports: [ new winston.transports.File(errorTransport), new winston.transports.Console({ level: 'error', format: winston.format.combine(winston.format.colorize({ all: true, colors: { error: 'red' } }), winston.format.simple()), }), ], levels: { error: 0 }, }); } return { log: function (message) { const args = slice.call(arguments); const logString = returnString(args); if (logString) { logger.log('info', logString); } }, warn: function () { const args = slice.call(arguments); const logString = returnString(args); if (logString) { logger.log('warn', logString); } }, error: function (message) { const args = slice.call(arguments); const logString = returnString(args); if (logString) { errorLogger.log('error', logString); } }, debug: function () { const args = slice.call(arguments); const logString = returnString(args); if (logString) { logger.log('debug', logString); } }, }; } const log = (config, message, type) => { const logsPath = config.data; // ignoring the type argument, as we are not using it to create a logfile anymore const module = config['backupDir'] ? 'import' : 'export'; if (type !== 'error') { // removed type argument from init method init(logsPath, module).log(message); } else { init(logsPath, module).error(message); } }; exports.log = log; const unlinkFileLogger = () => { if (logger) { const transports = logger.transports; transports.forEach((transport) => { if (transport.name === 'file') { logger.remove(transport); } }); } if (errorLogger) { const transports = errorLogger.transports; transports.forEach((transport) => { if (transport.name === 'file') { errorLogger.remove(transport); } }); } }; exports.unlinkFileLogger = unlinkFileLogger;