"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Console = require('console').Console; var stderrConsole = new Console(process.stderr); var stdoutConsole = new Console(process.stdout); var LogLevel; (function (LogLevel) { LogLevel[LogLevel["INFO"] = 1] = "INFO"; LogLevel[LogLevel["WARN"] = 2] = "WARN"; LogLevel[LogLevel["ERROR"] = 3] = "ERROR"; })(LogLevel || (LogLevel = {})); var doNothingLogger = function () { var _messages = []; for (var _i = 0; _i < arguments.length; _i++) { _messages[_i] = arguments[_i]; } }; function makeLoggerFunc(loaderOptions) { return loaderOptions.silent ? function (_whereToLog, _messages) { } : function (whereToLog, messages) { return console.log.apply(whereToLog, messages); }; } function makeExternalLogger(loaderOptions, logger) { var output = loaderOptions.logInfoToStdOut ? stdoutConsole : stderrConsole; return function () { var messages = []; for (var _i = 0; _i < arguments.length; _i++) { messages[_i] = arguments[_i]; } return logger(output, messages); }; } function makeLogInfo(loaderOptions, logger) { return LogLevel[loaderOptions.logLevel] <= LogLevel.INFO ? function () { var messages = []; for (var _i = 0; _i < arguments.length; _i++) { messages[_i] = arguments[_i]; } return logger(loaderOptions.logInfoToStdOut ? stdoutConsole : stderrConsole, messages); } : doNothingLogger; } function makeLogError(loaderOptions, logger) { return LogLevel[loaderOptions.logLevel] <= LogLevel.ERROR ? function () { var messages = []; for (var _i = 0; _i < arguments.length; _i++) { messages[_i] = arguments[_i]; } return logger(stderrConsole, messages); } : doNothingLogger; } function makeLogWarning(loaderOptions, logger) { return LogLevel[loaderOptions.logLevel] <= LogLevel.WARN ? function () { var messages = []; for (var _i = 0; _i < arguments.length; _i++) { messages[_i] = arguments[_i]; } return logger(stderrConsole, messages); } : doNothingLogger; } function makeLogger(loaderOptions) { var logger = makeLoggerFunc(loaderOptions); return { log: makeExternalLogger(loaderOptions, logger), logInfo: makeLogInfo(loaderOptions, logger), logWarning: makeLogWarning(loaderOptions, logger), logError: makeLogError(loaderOptions, logger) }; } exports.makeLogger = makeLogger;