Sha256: 67105e5dada41cb8b55c5cd4070ebb9e841ba69332cc6b6041ffce58ee585d8a

Contents?: true

Size: 1.83 KB

Versions: 26

Compression:

Stored size: 1.83 KB

Contents

'use strict';

/* global window: true */
/* eslint-disable
  no-shadow,
  no-param-reassign,
  space-before-function-paren
*/
const uuid = require('uuid/v4');
const colors = require('ansi-colors');
const loglevel = require('./loglevel');

const symbols = {
  trace: colors.grey('₸'),
  debug: colors.cyan('➤'),
  info: colors.blue(colors.symbols.info),
  warn: colors.yellow(colors.symbols.warning),
  error: colors.red(colors.symbols.cross)
};

const defaults = {
  name: '<unknown>',
  level: 'info',
  unique: true
};

const prefix = {
  level (options) {
    return symbols[options.level];
  },
  template: `{{level}} ${colors.gray('「{{name}}」')}: `
};

function log (options) {
  const opts = Object.assign({}, defaults, options);
  const { id } = options;

  opts.prefix = Object.assign({}, prefix, options.prefix);
  delete opts.id;

  Object.defineProperty(opts, 'id', {
    get() {
      if (!id) {
        return this.name + (opts.unique ? `-${uuid()}` : '');
      }

      return id;
    }
  });

  if (opts.timestamp) {
    opts.prefix.template = `[{{time}}] ${opts.prefix.template}`;
  }

  const log = loglevel.getLogger(opts);

  if (!Object.prototype.hasOwnProperty.call(log, 'id')) {
    Object.defineProperty(log, 'id', {
      get() {
        return opts.id;
      }
    });
  }

  return log;
}

module.exports = log;
// NOTE: this is exported so that consumers of webpack-log can use the same
// version of ansi-colors to decorate log messages without incurring additional
// dependency overhead
module.exports.colors = colors;
// NOTE: This is an undocumented function solely for the purpose of tests.
// Do not use this method in production code. Using in production code
// may result in strange behavior.
module.exports.delLogger = function delLogger(name) {
  delete loglevel.loggers[name];
};

module.exports.factories = loglevel.factories;

Version data entries

26 entries across 25 versions & 8 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/webpack-log/src/index.js
disco_app-0.18.0 test/dummy/node_modules/webpack-log/src/index.js
disco_app-0.18.2 test/dummy/node_modules/webpack-log/src/index.js
disco_app-0.16.1 test/dummy/node_modules/webpack-log/src/index.js
disco_app-0.15.2 test/dummy/node_modules/webpack-log/src/index.js
disco_app-0.18.4 test/dummy/node_modules/webpack-log/src/index.js
disco_app-0.18.1 test/dummy/node_modules/webpack-log/src/index.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/webpack-log/src/index.js
disco_app-0.14.0 test/dummy/node_modules/webpack-log/src/index.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/webpack-log/src/index.js
tang-0.2.1 spec/tang_app/node_modules/webpack-log/src/index.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/webpack-log/src/index.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/webpack-log/src/index.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/webpack-log/src/index.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/webpack-log/src/index.js
tang-0.2.0 spec/tang_app/node_modules/webpack-log/src/index.js
tang-0.1.0 spec/tang_app/node_modules/webpack-log/src/index.js
tang-0.0.9 spec/tang_app/node_modules/webpack-log/src/index.js
enju_library-0.3.8 spec/dummy/node_modules/webpack-log/src/index.js
jester-data-8.0.0 node_modules/webpack-log/src/index.js