{"ast":null,"code":"/**\n * logger.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nvar _require = require('readable-stream'),\n    Stream = _require.Stream,\n    Transform = _require.Transform;\n\nvar asyncForEach = require('async/forEach');\n\nvar _require2 = require('triple-beam'),\n    LEVEL = _require2.LEVEL,\n    SPLAT = _require2.SPLAT;\n\nvar isStream = require('is-stream');\n\nvar ExceptionHandler = require('./exception-handler');\n\nvar RejectionHandler = require('./rejection-handler');\n\nvar LegacyTransportStream = require('winston-transport/legacy');\n\nvar Profiler = require('./profiler');\n\nvar _require3 = require('./common'),\n    warn = _require3.warn;\n\nvar config = require('./config');\n/**\n * Captures the number of format (i.e. %s strings) in a given string.\n * Based on `util.format`, see Node.js source:\n * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230\n * @type {RegExp}\n */\n\n\nvar formatRegExp = /%[scdjifoO%]/g;\n/**\n * TODO: add class description.\n * @type {Logger}\n * @extends {Transform}\n */\n\nvar Logger = /*#__PURE__*/function (_Transform) {\n  _inherits(Logger, _Transform);\n\n  var _super = _createSuper(Logger);\n  /**\n   * Constructor function for the Logger object responsible for persisting log\n   * messages and metadata to one or more transports.\n   * @param {!Object} options - foo\n   */\n\n\n  function Logger(options) {\n    var _this;\n\n    _classCallCheck(this, Logger);\n\n    _this = _super.call(this, {\n      objectMode: true\n    });\n\n    _this.configure(options);\n\n    return _this;\n  }\n\n  _createClass(Logger, [{\n    key: \"child\",\n    value: function child(defaultRequestMetadata) {\n      var logger = this;\n      return Object.create(logger, {\n        write: {\n          value: function value(info) {\n            var infoClone = Object.assign({}, defaultRequestMetadata, info); // Object.assign doesn't copy inherited Error\n            // properties so we have to do that explicitly\n            //\n            // Remark (indexzero): we should remove this\n            // since the errors format will handle this case.\n            //\n\n            if (info instanceof Error) {\n              infoClone.stack = info.stack;\n              infoClone.message = info.message;\n            }\n\n            logger.write(infoClone);\n          }\n        }\n      });\n    }\n    /**\n     * This will wholesale reconfigure this instance by:\n     * 1. Resetting all transports. Older transports will be removed implicitly.\n     * 2. Set all other options including levels, colors, rewriters, filters,\n     *    exceptionHandlers, etc.\n     * @param {!Object} options - TODO: add param description.\n     * @returns {undefined}\n     */\n\n  }, {\n    key: \"configure\",\n    value: function configure() {\n      var _this2 = this;\n\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          silent = _ref.silent,\n          format = _ref.format,\n          defaultMeta = _ref.defaultMeta,\n          levels = _ref.levels,\n          _ref$level = _ref.level,\n          level = _ref$level === void 0 ? 'info' : _ref$level,\n          _ref$exitOnError = _ref.exitOnError,\n          exitOnError = _ref$exitOnError === void 0 ? true : _ref$exitOnError,\n          transports = _ref.transports,\n          colors = _ref.colors,\n          emitErrs = _ref.emitErrs,\n          formatters = _ref.formatters,\n          padLevels = _ref.padLevels,\n          rewriters = _ref.rewriters,\n          stripColors = _ref.stripColors,\n          exceptionHandlers = _ref.exceptionHandlers,\n          rejectionHandlers = _ref.rejectionHandlers; // Reset transports if we already have them\n\n\n      if (this.transports.length) {\n        this.clear();\n      }\n\n      this.silent = silent;\n      this.format = format || this.format || require('logform/json')();\n      this.defaultMeta = defaultMeta || null; // Hoist other options onto this instance.\n\n      this.levels = levels || this.levels || config.npm.levels;\n      this.level = level;\n      this.exceptions = new ExceptionHandler(this);\n      this.rejections = new RejectionHandler(this);\n      this.profilers = {};\n      this.exitOnError = exitOnError; // Add all transports we have been provided.\n\n      if (transports) {\n        transports = Array.isArray(transports) ? transports : [transports];\n        transports.forEach(function (transport) {\n          return _this2.add(transport);\n        });\n      }\n\n      if (colors || emitErrs || formatters || padLevels || rewriters || stripColors) {\n        throw new Error(['{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.', 'Use a custom winston.format(function) instead.', 'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'].join('\\n'));\n      }\n\n      if (exceptionHandlers) {\n        this.exceptions.handle(exceptionHandlers);\n      }\n\n      if (rejectionHandlers) {\n        this.rejections.handle(rejectionHandlers);\n      }\n    }\n  }, {\n    key: \"isLevelEnabled\",\n    value: function isLevelEnabled(level) {\n      var _this3 = this;\n\n      var givenLevelValue = getLevelValue(this.levels, level);\n\n      if (givenLevelValue === null) {\n        return false;\n      }\n\n      var configuredLevelValue = getLevelValue(this.levels, this.level);\n\n      if (configuredLevelValue === null) {\n        return false;\n      }\n\n      if (!this.transports || this.transports.length === 0) {\n        return configuredLevelValue >= givenLevelValue;\n      }\n\n      var index = this.transports.findIndex(function (transport) {\n        var transportLevelValue = getLevelValue(_this3.levels, transport.level);\n\n        if (transportLevelValue === null) {\n          transportLevelValue = configuredLevelValue;\n        }\n\n        return transportLevelValue >= givenLevelValue;\n      });\n      return index !== -1;\n    }\n    /* eslint-disable valid-jsdoc */\n\n    /**\n     * Ensure backwards compatibility with a `log` method\n     * @param {mixed} level - Level the log message is written at.\n     * @param {mixed} msg - TODO: add param description.\n     * @param {mixed} meta - TODO: add param description.\n     * @returns {Logger} - TODO: add return description.\n     *\n     * @example\n     *    // Supports the existing API:\n     *    logger.log('info', 'Hello world', { custom: true });\n     *    logger.log('info', new Error('Yo, it\\'s on fire'));\n     *\n     *    // Requires winston.format.splat()\n     *    logger.log('info', '%s %d%%', 'A string', 50, { thisIsMeta: true });\n     *\n     *    // And the new API with a single JSON literal:\n     *    logger.log({ level: 'info', message: 'Hello world', custom: true });\n     *    logger.log({ level: 'info', message: new Error('Yo, it\\'s on fire') });\n     *\n     *    // Also requires winston.format.splat()\n     *    logger.log({\n     *      level: 'info',\n     *      message: '%s %d%%',\n     *      [SPLAT]: ['A string', 50],\n     *      meta: { thisIsMeta: true }\n     *    });\n     *\n     */\n\n    /* eslint-enable valid-jsdoc */\n\n  }, {\n    key: \"log\",\n    value: function log(level, msg) {\n      var _Object$assign2;\n\n      for (var _len = arguments.length, splat = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        splat[_key - 2] = arguments[_key];\n      } // eslint-disable-line max-params\n      // Optimize for the hotpath of logging JSON literals\n\n\n      if (arguments.length === 1) {\n        // Yo dawg, I heard you like levels ... seriously ...\n        // In this context the LHS `level` here is actually the `info` so read\n        // this as: info[LEVEL] = info.level;\n        level[LEVEL] = level.level;\n\n        this._addDefaultMeta(level);\n\n        this.write(level);\n        return this;\n      } // Slightly less hotpath, but worth optimizing for.\n\n\n      if (arguments.length === 2) {\n        var _this$write;\n\n        if (msg && _typeof(msg) === 'object') {\n          msg[LEVEL] = msg.level = level;\n\n          this._addDefaultMeta(msg);\n\n          this.write(msg);\n          return this;\n        }\n\n        this.write((_this$write = {}, _defineProperty(_this$write, LEVEL, level), _defineProperty(_this$write, \"level\", level), _defineProperty(_this$write, \"message\", msg), _this$write));\n        return this;\n      }\n\n      var meta = splat[0];\n\n      if (_typeof(meta) === 'object' && meta !== null) {\n        // Extract tokens, if none available default to empty array to\n        // ensure consistancy in expected results\n        var tokens = msg && msg.match && msg.match(formatRegExp);\n\n        if (!tokens) {\n          var _Object$assign;\n\n          var info = Object.assign({}, this.defaultMeta, meta, (_Object$assign = {}, _defineProperty(_Object$assign, LEVEL, level), _defineProperty(_Object$assign, SPLAT, splat), _defineProperty(_Object$assign, \"level\", level), _defineProperty(_Object$assign, \"message\", msg), _Object$assign));\n          if (meta.message) info.message = \"\".concat(info.message, \" \").concat(meta.message);\n          if (meta.stack) info.stack = meta.stack;\n          this.write(info);\n          return this;\n        }\n      }\n\n      this.write(Object.assign({}, this.defaultMeta, (_Object$assign2 = {}, _defineProperty(_Object$assign2, LEVEL, level), _defineProperty(_Object$assign2, SPLAT, splat), _defineProperty(_Object$assign2, \"level\", level), _defineProperty(_Object$assign2, \"message\", msg), _Object$assign2)));\n      return this;\n    }\n    /**\n     * Pushes data so that it can be picked up by all of our pipe targets.\n     * @param {mixed} info - TODO: add param description.\n     * @param {mixed} enc - TODO: add param description.\n     * @param {mixed} callback - Continues stream processing.\n     * @returns {undefined}\n     * @private\n     */\n\n  }, {\n    key: \"_transform\",\n    value: function _transform(info, enc, callback) {\n      if (this.silent) {\n        return callback();\n      } // [LEVEL] is only soft guaranteed to be set here since we are a proper\n      // stream. It is likely that `info` came in through `.log(info)` or\n      // `.info(info)`. If it is not defined, however, define it.\n      // This LEVEL symbol is provided by `triple-beam` and also used in:\n      // - logform\n      // - winston-transport\n      // - abstract-winston-transport\n\n\n      if (!info[LEVEL]) {\n        info[LEVEL] = info.level;\n      } // Remark: really not sure what to do here, but this has been reported as\n      // very confusing by pre winston@2.0.0 users as quite confusing when using\n      // custom levels.\n\n\n      if (!this.levels[info[LEVEL]] && this.levels[info[LEVEL]] !== 0) {\n        // eslint-disable-next-line no-console\n        console.error('[winston] Unknown logger level: %s', info[LEVEL]);\n      } // Remark: not sure if we should simply error here.\n\n\n      if (!this._readableState.pipes) {\n        // eslint-disable-next-line no-console\n        console.error('[winston] Attempt to write logs with no transports %j', info);\n      } // Here we write to the `format` pipe-chain, which on `readable` above will\n      // push the formatted `info` Object onto the buffer for this instance. We trap\n      // (and re-throw) any errors generated by the user-provided format, but also\n      // guarantee that the streams callback is invoked so that we can continue flowing.\n\n\n      try {\n        this.push(this.format.transform(info, this.format.options));\n      } catch (ex) {\n        throw ex;\n      } finally {\n        // eslint-disable-next-line callback-return\n        callback();\n      }\n    }\n    /**\n     * Delays the 'finish' event until all transport pipe targets have\n     * also emitted 'finish' or are already finished.\n     * @param {mixed} callback - Continues stream processing.\n     */\n\n  }, {\n    key: \"_final\",\n    value: function _final(callback) {\n      var transports = this.transports.slice();\n      asyncForEach(transports, function (transport, next) {\n        if (!transport || transport.finished) return setImmediate(next);\n        transport.once('finish', next);\n        transport.end();\n      }, callback);\n    }\n    /**\n     * Adds the transport to this logger instance by piping to it.\n     * @param {mixed} transport - TODO: add param description.\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"add\",\n    value: function add(transport) {\n      // Support backwards compatibility with all existing `winston < 3.x.x`\n      // transports which meet one of two criteria:\n      // 1. They inherit from winston.Transport in  < 3.x.x which is NOT a stream.\n      // 2. They expose a log method which has a length greater than 2 (i.e. more then\n      //    just `log(info, callback)`.\n      var target = !isStream(transport) || transport.log.length > 2 ? new LegacyTransportStream({\n        transport: transport\n      }) : transport;\n\n      if (!target._writableState || !target._writableState.objectMode) {\n        throw new Error('Transports must WritableStreams in objectMode. Set { objectMode: true }.');\n      } // Listen for the `error` event and the `warn` event on the new Transport.\n\n\n      this._onEvent('error', target);\n\n      this._onEvent('warn', target);\n\n      this.pipe(target);\n\n      if (transport.handleExceptions) {\n        this.exceptions.handle();\n      }\n\n      if (transport.handleRejections) {\n        this.rejections.handle();\n      }\n\n      return this;\n    }\n    /**\n     * Removes the transport from this logger instance by unpiping from it.\n     * @param {mixed} transport - TODO: add param description.\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"remove\",\n    value: function remove(transport) {\n      if (!transport) return this;\n      var target = transport;\n\n      if (!isStream(transport) || transport.log.length > 2) {\n        target = this.transports.filter(function (match) {\n          return match.transport === transport;\n        })[0];\n      }\n\n      if (target) {\n        this.unpipe(target);\n      }\n\n      return this;\n    }\n    /**\n     * Removes all transports from this logger instance.\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.unpipe();\n      return this;\n    }\n    /**\n     * Cleans up resources (streams, event listeners) for all transports\n     * associated with this instance (if necessary).\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      this.clear();\n      this.emit('close');\n      return this;\n    }\n    /**\n     * Sets the `target` levels specified on this instance.\n     * @param {Object} Target levels to use on this instance.\n     */\n\n  }, {\n    key: \"setLevels\",\n    value: function setLevels() {\n      warn.deprecated('setLevels');\n    }\n    /**\n     * Queries the all transports for this instance with the specified `options`.\n     * This will aggregate each transport's results into one object containing\n     * a property per transport.\n     * @param {Object} options - Query options for this instance.\n     * @param {function} callback - Continuation to respond to when complete.\n     */\n\n  }, {\n    key: \"query\",\n    value: function query(options, callback) {\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n\n      options = options || {};\n      var results = {};\n      var queryObject = Object.assign({}, options.query || {}); // Helper function to query a single transport\n\n      function queryTransport(transport, next) {\n        if (options.query && typeof transport.formatQuery === 'function') {\n          options.query = transport.formatQuery(queryObject);\n        }\n\n        transport.query(options, function (err, res) {\n          if (err) {\n            return next(err);\n          }\n\n          if (typeof transport.formatResults === 'function') {\n            res = transport.formatResults(res, options.format);\n          }\n\n          next(null, res);\n        });\n      } // Helper function to accumulate the results from `queryTransport` into\n      // the `results`.\n\n\n      function addResults(transport, next) {\n        queryTransport(transport, function (err, result) {\n          // queryTransport could potentially invoke the callback multiple times\n          // since Transport code can be unpredictable.\n          if (next) {\n            result = err || result;\n\n            if (result) {\n              results[transport.name] = result;\n            } // eslint-disable-next-line callback-return\n\n\n            next();\n          }\n\n          next = null;\n        });\n      } // Iterate over the transports in parallel setting the appropriate key in\n      // the `results`.\n\n\n      asyncForEach(this.transports.filter(function (transport) {\n        return !!transport.query;\n      }), addResults, function () {\n        return callback(null, results);\n      });\n    }\n    /**\n     * Returns a log stream for all transports. Options object is optional.\n     * @param{Object} options={} - Stream options for this instance.\n     * @returns {Stream} - TODO: add return description.\n     */\n\n  }, {\n    key: \"stream\",\n    value: function stream() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var out = new Stream();\n      var streams = [];\n      out._streams = streams;\n\n      out.destroy = function () {\n        var i = streams.length;\n\n        while (i--) {\n          streams[i].destroy();\n        }\n      }; // Create a list of all transports for this instance.\n\n\n      this.transports.filter(function (transport) {\n        return !!transport.stream;\n      }).forEach(function (transport) {\n        var str = transport.stream(options);\n\n        if (!str) {\n          return;\n        }\n\n        streams.push(str);\n        str.on('log', function (log) {\n          log.transport = log.transport || [];\n          log.transport.push(transport.name);\n          out.emit('log', log);\n        });\n        str.on('error', function (err) {\n          err.transport = err.transport || [];\n          err.transport.push(transport.name);\n          out.emit('error', err);\n        });\n      });\n      return out;\n    }\n    /**\n     * Returns an object corresponding to a specific timing. When done is called\n     * the timer will finish and log the duration. e.g.:\n     * @returns {Profile} - TODO: add return description.\n     * @example\n     *    const timer = winston.startTimer()\n     *    setTimeout(() => {\n     *      timer.done({\n     *        message: 'Logging message'\n     *      });\n     *    }, 1000);\n     */\n\n  }, {\n    key: \"startTimer\",\n    value: function startTimer() {\n      return new Profiler(this);\n    }\n    /**\n     * Tracks the time inbetween subsequent calls to this method with the same\n     * `id` parameter. The second call to this method will log the difference in\n     * milliseconds along with the message.\n     * @param {string} id Unique id of the profiler\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"profile\",\n    value: function profile(id) {\n      var time = Date.now();\n\n      if (this.profilers[id]) {\n        var timeEnd = this.profilers[id];\n        delete this.profilers[id]; // Attempt to be kind to users if they are still using older APIs.\n\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n\n        if (typeof args[args.length - 2] === 'function') {\n          // eslint-disable-next-line no-console\n          console.warn('Callback function no longer supported as of winston@3.0.0');\n          args.pop();\n        } // Set the duration property of the metadata\n\n\n        var info = _typeof(args[args.length - 1]) === 'object' ? args.pop() : {};\n        info.level = info.level || 'info';\n        info.durationMs = time - timeEnd;\n        info.message = info.message || id;\n        return this.write(info);\n      }\n\n      this.profilers[id] = time;\n      return this;\n    }\n    /**\n     * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n     * @returns {undefined}\n     * @deprecated\n     */\n\n  }, {\n    key: \"handleExceptions\",\n    value: function handleExceptions() {\n      var _this$exceptions; // eslint-disable-next-line no-console\n\n\n      console.warn('Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()');\n\n      (_this$exceptions = this.exceptions).handle.apply(_this$exceptions, arguments);\n    }\n    /**\n     * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n     * @returns {undefined}\n     * @deprecated\n     */\n\n  }, {\n    key: \"unhandleExceptions\",\n    value: function unhandleExceptions() {\n      var _this$exceptions2; // eslint-disable-next-line no-console\n\n\n      console.warn('Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()');\n\n      (_this$exceptions2 = this.exceptions).unhandle.apply(_this$exceptions2, arguments);\n    }\n    /**\n     * Throw a more meaningful deprecation notice\n     * @throws {Error} - TODO: add throws description.\n     */\n\n  }, {\n    key: \"cli\",\n    value: function cli() {\n      throw new Error(['Logger.cli() was removed in winston@3.0.0', 'Use a custom winston.formats.cli() instead.', 'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'].join('\\n'));\n    }\n    /**\n     * Bubbles the `event` that occured on the specified `transport` up\n     * from this instance.\n     * @param {string} event - The event that occured\n     * @param {Object} transport - Transport on which the event occured\n     * @private\n     */\n\n  }, {\n    key: \"_onEvent\",\n    value: function _onEvent(event, transport) {\n      function transportEvent(err) {\n        // https://github.com/winstonjs/winston/issues/1364\n        if (event === 'error' && !this.transports.includes(transport)) {\n          this.add(transport);\n        }\n\n        this.emit(event, err, transport);\n      }\n\n      if (!transport['__winston' + event]) {\n        transport['__winston' + event] = transportEvent.bind(this);\n        transport.on(event, transport['__winston' + event]);\n      }\n    }\n  }, {\n    key: \"_addDefaultMeta\",\n    value: function _addDefaultMeta(msg) {\n      if (this.defaultMeta) {\n        Object.assign(msg, this.defaultMeta);\n      }\n    }\n  }]);\n\n  return Logger;\n}(Transform);\n\nfunction getLevelValue(levels, level) {\n  var value = levels[level];\n\n  if (!value && value !== 0) {\n    return null;\n  }\n\n  return value;\n}\n/**\n * Represents the current readableState pipe targets for this Logger instance.\n * @type {Array|Object}\n */\n\n\nObject.defineProperty(Logger.prototype, 'transports', {\n  configurable: false,\n  enumerable: true,\n  get: function get() {\n    var pipes = this._readableState.pipes;\n    return !Array.isArray(pipes) ? [pipes].filter(Boolean) : pipes;\n  }\n});\nmodule.exports = Logger;","map":{"version":3,"sources":["D:/Development/Work/CENOS/cenos-ui/node_modules/winston/dist/winston/logger.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_typeof","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","arguments","apply","_possibleConstructorReturn","self","call","_assertThisInitialized","ReferenceError","sham","Proxy","Date","toString","e","getPrototypeOf","_require","require","Stream","Transform","asyncForEach","_require2","LEVEL","SPLAT","isStream","ExceptionHandler","RejectionHandler","LegacyTransportStream","Profiler","_require3","warn","config","formatRegExp","Logger","_Transform","_super","options","_this","objectMode","configure","child","defaultRequestMetadata","logger","write","info","infoClone","assign","Error","stack","message","_this2","_ref","undefined","silent","format","defaultMeta","levels","_ref$level","level","_ref$exitOnError","exitOnError","transports","colors","emitErrs","formatters","padLevels","rewriters","stripColors","exceptionHandlers","rejectionHandlers","clear","npm","exceptions","rejections","profilers","Array","isArray","forEach","transport","add","join","handle","isLevelEnabled","_this3","givenLevelValue","getLevelValue","configuredLevelValue","index","findIndex","transportLevelValue","log","msg","_Object$assign2","_len","splat","_key","_addDefaultMeta","_this$write","meta","tokens","match","_Object$assign","concat","_transform","enc","callback","console","error","_readableState","pipes","push","transform","ex","_final","slice","next","finished","setImmediate","once","end","_writableState","_onEvent","pipe","handleExceptions","handleRejections","remove","filter","unpipe","close","emit","setLevels","deprecated","query","results","queryObject","queryTransport","formatQuery","err","res","formatResults","addResults","name","stream","out","streams","_streams","destroy","str","on","startTimer","profile","id","time","now","timeEnd","_len2","args","_key2","pop","durationMs","_this$exceptions","unhandleExceptions","_this$exceptions2","unhandle","cli","event","transportEvent","includes","bind","get","Boolean","module","exports"],"mappings":"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","sourcesContent":["/**\n * logger.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n'use strict';\n\nfunction _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; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar _require = require('readable-stream'),\n    Stream = _require.Stream,\n    Transform = _require.Transform;\n\nvar asyncForEach = require('async/forEach');\n\nvar _require2 = require('triple-beam'),\n    LEVEL = _require2.LEVEL,\n    SPLAT = _require2.SPLAT;\n\nvar isStream = require('is-stream');\n\nvar ExceptionHandler = require('./exception-handler');\n\nvar RejectionHandler = require('./rejection-handler');\n\nvar LegacyTransportStream = require('winston-transport/legacy');\n\nvar Profiler = require('./profiler');\n\nvar _require3 = require('./common'),\n    warn = _require3.warn;\n\nvar config = require('./config');\n/**\n * Captures the number of format (i.e. %s strings) in a given string.\n * Based on `util.format`, see Node.js source:\n * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230\n * @type {RegExp}\n */\n\n\nvar formatRegExp = /%[scdjifoO%]/g;\n/**\n * TODO: add class description.\n * @type {Logger}\n * @extends {Transform}\n */\n\nvar Logger = /*#__PURE__*/function (_Transform) {\n  _inherits(Logger, _Transform);\n\n  var _super = _createSuper(Logger);\n\n  /**\n   * Constructor function for the Logger object responsible for persisting log\n   * messages and metadata to one or more transports.\n   * @param {!Object} options - foo\n   */\n  function Logger(options) {\n    var _this;\n\n    _classCallCheck(this, Logger);\n\n    _this = _super.call(this, {\n      objectMode: true\n    });\n\n    _this.configure(options);\n\n    return _this;\n  }\n\n  _createClass(Logger, [{\n    key: \"child\",\n    value: function child(defaultRequestMetadata) {\n      var logger = this;\n      return Object.create(logger, {\n        write: {\n          value: function value(info) {\n            var infoClone = Object.assign({}, defaultRequestMetadata, info); // Object.assign doesn't copy inherited Error\n            // properties so we have to do that explicitly\n            //\n            // Remark (indexzero): we should remove this\n            // since the errors format will handle this case.\n            //\n\n            if (info instanceof Error) {\n              infoClone.stack = info.stack;\n              infoClone.message = info.message;\n            }\n\n            logger.write(infoClone);\n          }\n        }\n      });\n    }\n    /**\n     * This will wholesale reconfigure this instance by:\n     * 1. Resetting all transports. Older transports will be removed implicitly.\n     * 2. Set all other options including levels, colors, rewriters, filters,\n     *    exceptionHandlers, etc.\n     * @param {!Object} options - TODO: add param description.\n     * @returns {undefined}\n     */\n\n  }, {\n    key: \"configure\",\n    value: function configure() {\n      var _this2 = this;\n\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          silent = _ref.silent,\n          format = _ref.format,\n          defaultMeta = _ref.defaultMeta,\n          levels = _ref.levels,\n          _ref$level = _ref.level,\n          level = _ref$level === void 0 ? 'info' : _ref$level,\n          _ref$exitOnError = _ref.exitOnError,\n          exitOnError = _ref$exitOnError === void 0 ? true : _ref$exitOnError,\n          transports = _ref.transports,\n          colors = _ref.colors,\n          emitErrs = _ref.emitErrs,\n          formatters = _ref.formatters,\n          padLevels = _ref.padLevels,\n          rewriters = _ref.rewriters,\n          stripColors = _ref.stripColors,\n          exceptionHandlers = _ref.exceptionHandlers,\n          rejectionHandlers = _ref.rejectionHandlers;\n\n      // Reset transports if we already have them\n      if (this.transports.length) {\n        this.clear();\n      }\n\n      this.silent = silent;\n      this.format = format || this.format || require('logform/json')();\n      this.defaultMeta = defaultMeta || null; // Hoist other options onto this instance.\n\n      this.levels = levels || this.levels || config.npm.levels;\n      this.level = level;\n      this.exceptions = new ExceptionHandler(this);\n      this.rejections = new RejectionHandler(this);\n      this.profilers = {};\n      this.exitOnError = exitOnError; // Add all transports we have been provided.\n\n      if (transports) {\n        transports = Array.isArray(transports) ? transports : [transports];\n        transports.forEach(function (transport) {\n          return _this2.add(transport);\n        });\n      }\n\n      if (colors || emitErrs || formatters || padLevels || rewriters || stripColors) {\n        throw new Error(['{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.', 'Use a custom winston.format(function) instead.', 'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'].join('\\n'));\n      }\n\n      if (exceptionHandlers) {\n        this.exceptions.handle(exceptionHandlers);\n      }\n\n      if (rejectionHandlers) {\n        this.rejections.handle(rejectionHandlers);\n      }\n    }\n  }, {\n    key: \"isLevelEnabled\",\n    value: function isLevelEnabled(level) {\n      var _this3 = this;\n\n      var givenLevelValue = getLevelValue(this.levels, level);\n\n      if (givenLevelValue === null) {\n        return false;\n      }\n\n      var configuredLevelValue = getLevelValue(this.levels, this.level);\n\n      if (configuredLevelValue === null) {\n        return false;\n      }\n\n      if (!this.transports || this.transports.length === 0) {\n        return configuredLevelValue >= givenLevelValue;\n      }\n\n      var index = this.transports.findIndex(function (transport) {\n        var transportLevelValue = getLevelValue(_this3.levels, transport.level);\n\n        if (transportLevelValue === null) {\n          transportLevelValue = configuredLevelValue;\n        }\n\n        return transportLevelValue >= givenLevelValue;\n      });\n      return index !== -1;\n    }\n    /* eslint-disable valid-jsdoc */\n\n    /**\n     * Ensure backwards compatibility with a `log` method\n     * @param {mixed} level - Level the log message is written at.\n     * @param {mixed} msg - TODO: add param description.\n     * @param {mixed} meta - TODO: add param description.\n     * @returns {Logger} - TODO: add return description.\n     *\n     * @example\n     *    // Supports the existing API:\n     *    logger.log('info', 'Hello world', { custom: true });\n     *    logger.log('info', new Error('Yo, it\\'s on fire'));\n     *\n     *    // Requires winston.format.splat()\n     *    logger.log('info', '%s %d%%', 'A string', 50, { thisIsMeta: true });\n     *\n     *    // And the new API with a single JSON literal:\n     *    logger.log({ level: 'info', message: 'Hello world', custom: true });\n     *    logger.log({ level: 'info', message: new Error('Yo, it\\'s on fire') });\n     *\n     *    // Also requires winston.format.splat()\n     *    logger.log({\n     *      level: 'info',\n     *      message: '%s %d%%',\n     *      [SPLAT]: ['A string', 50],\n     *      meta: { thisIsMeta: true }\n     *    });\n     *\n     */\n\n    /* eslint-enable valid-jsdoc */\n\n  }, {\n    key: \"log\",\n    value: function log(level, msg) {\n      var _Object$assign2;\n\n      for (var _len = arguments.length, splat = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        splat[_key - 2] = arguments[_key];\n      }\n\n      // eslint-disable-line max-params\n      // Optimize for the hotpath of logging JSON literals\n      if (arguments.length === 1) {\n        // Yo dawg, I heard you like levels ... seriously ...\n        // In this context the LHS `level` here is actually the `info` so read\n        // this as: info[LEVEL] = info.level;\n        level[LEVEL] = level.level;\n\n        this._addDefaultMeta(level);\n\n        this.write(level);\n        return this;\n      } // Slightly less hotpath, but worth optimizing for.\n\n\n      if (arguments.length === 2) {\n        var _this$write;\n\n        if (msg && _typeof(msg) === 'object') {\n          msg[LEVEL] = msg.level = level;\n\n          this._addDefaultMeta(msg);\n\n          this.write(msg);\n          return this;\n        }\n\n        this.write((_this$write = {}, _defineProperty(_this$write, LEVEL, level), _defineProperty(_this$write, \"level\", level), _defineProperty(_this$write, \"message\", msg), _this$write));\n        return this;\n      }\n\n      var meta = splat[0];\n\n      if (_typeof(meta) === 'object' && meta !== null) {\n        // Extract tokens, if none available default to empty array to\n        // ensure consistancy in expected results\n        var tokens = msg && msg.match && msg.match(formatRegExp);\n\n        if (!tokens) {\n          var _Object$assign;\n\n          var info = Object.assign({}, this.defaultMeta, meta, (_Object$assign = {}, _defineProperty(_Object$assign, LEVEL, level), _defineProperty(_Object$assign, SPLAT, splat), _defineProperty(_Object$assign, \"level\", level), _defineProperty(_Object$assign, \"message\", msg), _Object$assign));\n          if (meta.message) info.message = \"\".concat(info.message, \" \").concat(meta.message);\n          if (meta.stack) info.stack = meta.stack;\n          this.write(info);\n          return this;\n        }\n      }\n\n      this.write(Object.assign({}, this.defaultMeta, (_Object$assign2 = {}, _defineProperty(_Object$assign2, LEVEL, level), _defineProperty(_Object$assign2, SPLAT, splat), _defineProperty(_Object$assign2, \"level\", level), _defineProperty(_Object$assign2, \"message\", msg), _Object$assign2)));\n      return this;\n    }\n    /**\n     * Pushes data so that it can be picked up by all of our pipe targets.\n     * @param {mixed} info - TODO: add param description.\n     * @param {mixed} enc - TODO: add param description.\n     * @param {mixed} callback - Continues stream processing.\n     * @returns {undefined}\n     * @private\n     */\n\n  }, {\n    key: \"_transform\",\n    value: function _transform(info, enc, callback) {\n      if (this.silent) {\n        return callback();\n      } // [LEVEL] is only soft guaranteed to be set here since we are a proper\n      // stream. It is likely that `info` came in through `.log(info)` or\n      // `.info(info)`. If it is not defined, however, define it.\n      // This LEVEL symbol is provided by `triple-beam` and also used in:\n      // - logform\n      // - winston-transport\n      // - abstract-winston-transport\n\n\n      if (!info[LEVEL]) {\n        info[LEVEL] = info.level;\n      } // Remark: really not sure what to do here, but this has been reported as\n      // very confusing by pre winston@2.0.0 users as quite confusing when using\n      // custom levels.\n\n\n      if (!this.levels[info[LEVEL]] && this.levels[info[LEVEL]] !== 0) {\n        // eslint-disable-next-line no-console\n        console.error('[winston] Unknown logger level: %s', info[LEVEL]);\n      } // Remark: not sure if we should simply error here.\n\n\n      if (!this._readableState.pipes) {\n        // eslint-disable-next-line no-console\n        console.error('[winston] Attempt to write logs with no transports %j', info);\n      } // Here we write to the `format` pipe-chain, which on `readable` above will\n      // push the formatted `info` Object onto the buffer for this instance. We trap\n      // (and re-throw) any errors generated by the user-provided format, but also\n      // guarantee that the streams callback is invoked so that we can continue flowing.\n\n\n      try {\n        this.push(this.format.transform(info, this.format.options));\n      } catch (ex) {\n        throw ex;\n      } finally {\n        // eslint-disable-next-line callback-return\n        callback();\n      }\n    }\n    /**\n     * Delays the 'finish' event until all transport pipe targets have\n     * also emitted 'finish' or are already finished.\n     * @param {mixed} callback - Continues stream processing.\n     */\n\n  }, {\n    key: \"_final\",\n    value: function _final(callback) {\n      var transports = this.transports.slice();\n      asyncForEach(transports, function (transport, next) {\n        if (!transport || transport.finished) return setImmediate(next);\n        transport.once('finish', next);\n        transport.end();\n      }, callback);\n    }\n    /**\n     * Adds the transport to this logger instance by piping to it.\n     * @param {mixed} transport - TODO: add param description.\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"add\",\n    value: function add(transport) {\n      // Support backwards compatibility with all existing `winston < 3.x.x`\n      // transports which meet one of two criteria:\n      // 1. They inherit from winston.Transport in  < 3.x.x which is NOT a stream.\n      // 2. They expose a log method which has a length greater than 2 (i.e. more then\n      //    just `log(info, callback)`.\n      var target = !isStream(transport) || transport.log.length > 2 ? new LegacyTransportStream({\n        transport: transport\n      }) : transport;\n\n      if (!target._writableState || !target._writableState.objectMode) {\n        throw new Error('Transports must WritableStreams in objectMode. Set { objectMode: true }.');\n      } // Listen for the `error` event and the `warn` event on the new Transport.\n\n\n      this._onEvent('error', target);\n\n      this._onEvent('warn', target);\n\n      this.pipe(target);\n\n      if (transport.handleExceptions) {\n        this.exceptions.handle();\n      }\n\n      if (transport.handleRejections) {\n        this.rejections.handle();\n      }\n\n      return this;\n    }\n    /**\n     * Removes the transport from this logger instance by unpiping from it.\n     * @param {mixed} transport - TODO: add param description.\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"remove\",\n    value: function remove(transport) {\n      if (!transport) return this;\n      var target = transport;\n\n      if (!isStream(transport) || transport.log.length > 2) {\n        target = this.transports.filter(function (match) {\n          return match.transport === transport;\n        })[0];\n      }\n\n      if (target) {\n        this.unpipe(target);\n      }\n\n      return this;\n    }\n    /**\n     * Removes all transports from this logger instance.\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.unpipe();\n      return this;\n    }\n    /**\n     * Cleans up resources (streams, event listeners) for all transports\n     * associated with this instance (if necessary).\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      this.clear();\n      this.emit('close');\n      return this;\n    }\n    /**\n     * Sets the `target` levels specified on this instance.\n     * @param {Object} Target levels to use on this instance.\n     */\n\n  }, {\n    key: \"setLevels\",\n    value: function setLevels() {\n      warn.deprecated('setLevels');\n    }\n    /**\n     * Queries the all transports for this instance with the specified `options`.\n     * This will aggregate each transport's results into one object containing\n     * a property per transport.\n     * @param {Object} options - Query options for this instance.\n     * @param {function} callback - Continuation to respond to when complete.\n     */\n\n  }, {\n    key: \"query\",\n    value: function query(options, callback) {\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n\n      options = options || {};\n      var results = {};\n      var queryObject = Object.assign({}, options.query || {}); // Helper function to query a single transport\n\n      function queryTransport(transport, next) {\n        if (options.query && typeof transport.formatQuery === 'function') {\n          options.query = transport.formatQuery(queryObject);\n        }\n\n        transport.query(options, function (err, res) {\n          if (err) {\n            return next(err);\n          }\n\n          if (typeof transport.formatResults === 'function') {\n            res = transport.formatResults(res, options.format);\n          }\n\n          next(null, res);\n        });\n      } // Helper function to accumulate the results from `queryTransport` into\n      // the `results`.\n\n\n      function addResults(transport, next) {\n        queryTransport(transport, function (err, result) {\n          // queryTransport could potentially invoke the callback multiple times\n          // since Transport code can be unpredictable.\n          if (next) {\n            result = err || result;\n\n            if (result) {\n              results[transport.name] = result;\n            } // eslint-disable-next-line callback-return\n\n\n            next();\n          }\n\n          next = null;\n        });\n      } // Iterate over the transports in parallel setting the appropriate key in\n      // the `results`.\n\n\n      asyncForEach(this.transports.filter(function (transport) {\n        return !!transport.query;\n      }), addResults, function () {\n        return callback(null, results);\n      });\n    }\n    /**\n     * Returns a log stream for all transports. Options object is optional.\n     * @param{Object} options={} - Stream options for this instance.\n     * @returns {Stream} - TODO: add return description.\n     */\n\n  }, {\n    key: \"stream\",\n    value: function stream() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var out = new Stream();\n      var streams = [];\n      out._streams = streams;\n\n      out.destroy = function () {\n        var i = streams.length;\n\n        while (i--) {\n          streams[i].destroy();\n        }\n      }; // Create a list of all transports for this instance.\n\n\n      this.transports.filter(function (transport) {\n        return !!transport.stream;\n      }).forEach(function (transport) {\n        var str = transport.stream(options);\n\n        if (!str) {\n          return;\n        }\n\n        streams.push(str);\n        str.on('log', function (log) {\n          log.transport = log.transport || [];\n          log.transport.push(transport.name);\n          out.emit('log', log);\n        });\n        str.on('error', function (err) {\n          err.transport = err.transport || [];\n          err.transport.push(transport.name);\n          out.emit('error', err);\n        });\n      });\n      return out;\n    }\n    /**\n     * Returns an object corresponding to a specific timing. When done is called\n     * the timer will finish and log the duration. e.g.:\n     * @returns {Profile} - TODO: add return description.\n     * @example\n     *    const timer = winston.startTimer()\n     *    setTimeout(() => {\n     *      timer.done({\n     *        message: 'Logging message'\n     *      });\n     *    }, 1000);\n     */\n\n  }, {\n    key: \"startTimer\",\n    value: function startTimer() {\n      return new Profiler(this);\n    }\n    /**\n     * Tracks the time inbetween subsequent calls to this method with the same\n     * `id` parameter. The second call to this method will log the difference in\n     * milliseconds along with the message.\n     * @param {string} id Unique id of the profiler\n     * @returns {Logger} - TODO: add return description.\n     */\n\n  }, {\n    key: \"profile\",\n    value: function profile(id) {\n      var time = Date.now();\n\n      if (this.profilers[id]) {\n        var timeEnd = this.profilers[id];\n        delete this.profilers[id]; // Attempt to be kind to users if they are still using older APIs.\n\n        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n          args[_key2 - 1] = arguments[_key2];\n        }\n\n        if (typeof args[args.length - 2] === 'function') {\n          // eslint-disable-next-line no-console\n          console.warn('Callback function no longer supported as of winston@3.0.0');\n          args.pop();\n        } // Set the duration property of the metadata\n\n\n        var info = _typeof(args[args.length - 1]) === 'object' ? args.pop() : {};\n        info.level = info.level || 'info';\n        info.durationMs = time - timeEnd;\n        info.message = info.message || id;\n        return this.write(info);\n      }\n\n      this.profilers[id] = time;\n      return this;\n    }\n    /**\n     * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n     * @returns {undefined}\n     * @deprecated\n     */\n\n  }, {\n    key: \"handleExceptions\",\n    value: function handleExceptions() {\n      var _this$exceptions;\n\n      // eslint-disable-next-line no-console\n      console.warn('Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()');\n\n      (_this$exceptions = this.exceptions).handle.apply(_this$exceptions, arguments);\n    }\n    /**\n     * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n     * @returns {undefined}\n     * @deprecated\n     */\n\n  }, {\n    key: \"unhandleExceptions\",\n    value: function unhandleExceptions() {\n      var _this$exceptions2;\n\n      // eslint-disable-next-line no-console\n      console.warn('Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()');\n\n      (_this$exceptions2 = this.exceptions).unhandle.apply(_this$exceptions2, arguments);\n    }\n    /**\n     * Throw a more meaningful deprecation notice\n     * @throws {Error} - TODO: add throws description.\n     */\n\n  }, {\n    key: \"cli\",\n    value: function cli() {\n      throw new Error(['Logger.cli() was removed in winston@3.0.0', 'Use a custom winston.formats.cli() instead.', 'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'].join('\\n'));\n    }\n    /**\n     * Bubbles the `event` that occured on the specified `transport` up\n     * from this instance.\n     * @param {string} event - The event that occured\n     * @param {Object} transport - Transport on which the event occured\n     * @private\n     */\n\n  }, {\n    key: \"_onEvent\",\n    value: function _onEvent(event, transport) {\n      function transportEvent(err) {\n        // https://github.com/winstonjs/winston/issues/1364\n        if (event === 'error' && !this.transports.includes(transport)) {\n          this.add(transport);\n        }\n\n        this.emit(event, err, transport);\n      }\n\n      if (!transport['__winston' + event]) {\n        transport['__winston' + event] = transportEvent.bind(this);\n        transport.on(event, transport['__winston' + event]);\n      }\n    }\n  }, {\n    key: \"_addDefaultMeta\",\n    value: function _addDefaultMeta(msg) {\n      if (this.defaultMeta) {\n        Object.assign(msg, this.defaultMeta);\n      }\n    }\n  }]);\n\n  return Logger;\n}(Transform);\n\nfunction getLevelValue(levels, level) {\n  var value = levels[level];\n\n  if (!value && value !== 0) {\n    return null;\n  }\n\n  return value;\n}\n/**\n * Represents the current readableState pipe targets for this Logger instance.\n * @type {Array|Object}\n */\n\n\nObject.defineProperty(Logger.prototype, 'transports', {\n  configurable: false,\n  enumerable: true,\n  get: function get() {\n    var pipes = this._readableState.pipes;\n    return !Array.isArray(pipes) ? [pipes].filter(Boolean) : pipes;\n  }\n});\nmodule.exports = Logger;"]},"metadata":{},"sourceType":"script"}