Socket
Socket
Sign inDemoInstall

winston

Package Overview
Dependencies
31
Maintainers
6
Versions
82
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.2.0 to 3.2.1

11

CHANGELOG.md
# CHANGELOG
## v3.2.1 / 2018-01-29
### UNBOUND PROTOTYPE AD INFINITUM EDITION
- #[1579], (@indexzero) Fallback to the "root" instance **always** created by
`createLogger` for level convenience methods (e.g. `.info()`, `.silly()`).
(Fixes [#1577]).
- [#1539], (@indexzero) Assume message is the empty string when level-helper
methods are invoked with no arguments (Fixed [#1501]).
- [#1583], (@kibertoad) Add typings for defaultMeta (Fixes [#1582])
- [#1586], (@kibertoad) Update dependencies.
## v3.2.0 / 2018-01-26

@@ -4,0 +15,0 @@ ### SORRY IT TOO SO LONG EDITION

167

dist/winston/create-logger.js

@@ -13,6 +13,2 @@ /**

function _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); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }

@@ -36,107 +32,108 @@

var debug = require('diagnostics')('winston:create-logger');
function isLevelEnabledFunctionName(level) {
return 'is' + level.charAt(0).toUpperCase() + level.slice(1) + 'Enabled';
}
/**
* DerivedLogger to attach the logs level methods.
* @type {DerivedLogger}
* @extends {Logger}
* Create a new instance of a winston Logger. Creates a new
* prototype for each instance.
* @param {!Object} opts - Options for the created logger.
* @returns {Logger} - A newly created logger instance.
*/
var DerivedLogger =
/*#__PURE__*/
function (_Logger) {
_inherits(DerivedLogger, _Logger);
module.exports = function () {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
//
// Default levels: npm
//
opts.levels = opts.levels || config.npm.levels;
/**
* Create a new class derived logger for which the levels can be attached to
* the prototype of. This is a V8 optimization that is well know to increase
* performance of prototype functions.
* @param {!Object} options - Options for the created logger.
* DerivedLogger to attach the logs level methods.
* @type {DerivedLogger}
* @extends {Logger}
*/
function DerivedLogger(options) {
var _this;
_classCallCheck(this, DerivedLogger);
var DerivedLogger =
/*#__PURE__*/
function (_Logger) {
_inherits(DerivedLogger, _Logger);
_this = _possibleConstructorReturn(this, _getPrototypeOf(DerivedLogger).call(this, options));
/**
* Create a new class derived logger for which the levels can be attached to
* the prototype of. This is a V8 optimization that is well know to increase
* performance of prototype functions.
* @param {!Object} options - Options for the created logger.
*/
function DerivedLogger(options) {
_classCallCheck(this, DerivedLogger);
_this._setupLevels();
return _possibleConstructorReturn(this, _getPrototypeOf(DerivedLogger).call(this, options));
}
return _this;
}
/**
* Create the log level methods for the derived logger.
* @returns {undefined}
* @private
*/
return DerivedLogger;
}(Logger);
var logger = new DerivedLogger(opts); //
// Create the log level methods for the derived logger.
//
_createClass(DerivedLogger, [{
key: "_setupLevels",
value: function _setupLevels() {
var _this2 = this;
Object.keys(opts.levels).forEach(function (level) {
debug('Define prototype method for "%s"', level);
Object.keys(this.levels).forEach(function (level) {
debug('Define prototype method for "%s"', level);
if (level === 'log') {
// eslint-disable-next-line no-console
console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.');
return;
} //
// Define prototype methods for each log level e.g.:
// logger.log('info', msg) implies these methods are defined:
// - logger.info(msg)
// - logger.isInfoEnabled()
//
// Remark: to support logger.child this **MUST** be a function
// so it'll always be called on the instance instead of a fixed
// place in the prototype chain.
//
if (level === 'log') {
// eslint-disable-next-line no-console
console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.');
return;
} // Define prototype methods for each log level
// e.g. logger.log('info', msg) <––> logger.info(msg) & logger.isInfoEnabled()
// this is not an arrow function so it'll always be called on the instance instead of a fixed place in the prototype chain.
DerivedLogger.prototype[level] = function () {
// Prefer any instance scope, but default to "root" logger
var self = this || logger; // Optimize the hot-path which is the single object.
_this2[level] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
// Optimize the hot-path which is the single object.
if (args.length === 1) {
var msg = args[0];
var info = msg && msg.message && msg || {
message: msg
};
info.level = info[LEVEL] = level;
if (args.length === 1) {
var msg = args[0];
var info = msg && msg.message && msg || {
message: msg
};
info.level = info[LEVEL] = level;
this._addDefaultMeta(info);
self._addDefaultMeta(info);
this.write(info);
return this;
} // Otherwise build argument list which could potentially conform to
// either:
// . v3 API: log(obj)
// 2. v1/v2 API: log(level, msg, ... [string interpolate], [{metadata}], [callback])
self.write(info);
return this || logger;
} // When provided nothing assume the empty string
return this.log.apply(this, [level].concat(args));
};
if (args.length === 0) {
self.log(level, '');
return self;
} // Otherwise build argument list which could potentially conform to
// either:
// . v3 API: log(obj)
// 2. v1/v2 API: log(level, msg, ... [string interpolate], [{metadata}], [callback])
_this2[isLevelEnabledFunctionName(level)] = function () {
return _this2.isLevelEnabled(level);
};
});
}
}]);
return DerivedLogger;
}(Logger);
return self.log.apply(self, [level].concat(args));
};
function isLevelEnabledFunctionName(level) {
return 'is' + level.charAt(0).toUpperCase() + level.slice(1) + 'Enabled';
}
/**
* Create a new instance of a winston Logger. Creates a new
* prototype for each instance.
* @param {!Object} opts - Options for the created logger.
* @returns {Logger} - A newly created logger instance.
*/
module.exports = function () {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
levels: config.npm.levels
};
return new DerivedLogger(opts);
DerivedLogger.prototype[isLevelEnabledFunctionName(level)] = function () {
return (this || logger).isLevelEnabled(level);
};
});
return logger;
};

@@ -79,2 +79,3 @@ // Type definitions for winston 3.0

exitOnError?: Function | boolean;
defaultMeta?: any;
transports?: Transport[] | Transport;

@@ -81,0 +82,0 @@ exceptionHandlers?: any;

@@ -15,71 +15,91 @@ /**

function isLevelEnabledFunctionName(level) {
return 'is' + level.charAt(0).toUpperCase() + level.slice(1) + 'Enabled';
}
/**
* DerivedLogger to attach the logs level methods.
* @type {DerivedLogger}
* @extends {Logger}
* Create a new instance of a winston Logger. Creates a new
* prototype for each instance.
* @param {!Object} opts - Options for the created logger.
* @returns {Logger} - A newly created logger instance.
*/
class DerivedLogger extends Logger {
module.exports = function (opts = {}) {
//
// Default levels: npm
//
opts.levels = opts.levels || config.npm.levels;
/**
* Create a new class derived logger for which the levels can be attached to
* the prototype of. This is a V8 optimization that is well know to increase
* performance of prototype functions.
* @param {!Object} options - Options for the created logger.
* DerivedLogger to attach the logs level methods.
* @type {DerivedLogger}
* @extends {Logger}
*/
constructor(options) {
super(options);
this._setupLevels();
class DerivedLogger extends Logger {
/**
* Create a new class derived logger for which the levels can be attached to
* the prototype of. This is a V8 optimization that is well know to increase
* performance of prototype functions.
* @param {!Object} options - Options for the created logger.
*/
constructor(options) {
super(options);
}
}
/**
* Create the log level methods for the derived logger.
* @returns {undefined}
* @private
*/
_setupLevels() {
Object.keys(this.levels).forEach(level => {
debug('Define prototype method for "%s"', level);
if (level === 'log') {
// eslint-disable-next-line no-console
console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.');
return;
const logger = new DerivedLogger(opts);
//
// Create the log level methods for the derived logger.
//
Object.keys(opts.levels).forEach(function (level) {
debug('Define prototype method for "%s"', level);
if (level === 'log') {
// eslint-disable-next-line no-console
console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.');
return;
}
//
// Define prototype methods for each log level e.g.:
// logger.log('info', msg) implies these methods are defined:
// - logger.info(msg)
// - logger.isInfoEnabled()
//
// Remark: to support logger.child this **MUST** be a function
// so it'll always be called on the instance instead of a fixed
// place in the prototype chain.
//
DerivedLogger.prototype[level] = function (...args) {
// Prefer any instance scope, but default to "root" logger
const self = this || logger;
// Optimize the hot-path which is the single object.
if (args.length === 1) {
const [msg] = args;
const info = msg && msg.message && msg || { message: msg };
info.level = info[LEVEL] = level;
self._addDefaultMeta(info);
self.write(info);
return (this || logger);
}
// Define prototype methods for each log level
// e.g. logger.log('info', msg) <––> logger.info(msg) & logger.isInfoEnabled()
// this is not an arrow function so it'll always be called on the instance instead of a fixed place in the prototype chain.
this[level] = function (...args) {
// Optimize the hot-path which is the single object.
if (args.length === 1) {
const [msg] = args;
const info = msg && msg.message && msg || { message: msg };
info.level = info[LEVEL] = level;
this._addDefaultMeta(info);
this.write(info);
return this;
}
// When provided nothing assume the empty string
if (args.length === 0) {
self.log(level, '');
return self;
}
// Otherwise build argument list which could potentially conform to
// either:
// . v3 API: log(obj)
// 2. v1/v2 API: log(level, msg, ... [string interpolate], [{metadata}], [callback])
return this.log(level, ...args);
};
// Otherwise build argument list which could potentially conform to
// either:
// . v3 API: log(obj)
// 2. v1/v2 API: log(level, msg, ... [string interpolate], [{metadata}], [callback])
return self.log(level, ...args);
};
this[isLevelEnabledFunctionName(level)] = () => this.isLevelEnabled(level);
});
}
}
DerivedLogger.prototype[isLevelEnabledFunctionName(level)] = function () {
return (this || logger).isLevelEnabled(level);
};
});
function isLevelEnabledFunctionName(level) {
return 'is' + level.charAt(0).toUpperCase() + level.slice(1) + 'Enabled';
}
/**
* Create a new instance of a winston Logger. Creates a new
* prototype for each instance.
* @param {!Object} opts - Options for the created logger.
* @returns {Logger} - A newly created logger instance.
*/
module.exports = (opts = { levels: config.npm.levels }) => (
new DerivedLogger(opts)
);
return logger;
};
{
"name": "winston",
"description": "A logger for just about everything.",
"version": "3.2.0",
"version": "3.2.1",
"author": "Charlie Robbins <charlie.robbins@gmail.com>",

@@ -32,3 +32,3 @@ "maintainers": [

"is-stream": "^1.1.0",
"logform": "^2.1.0",
"logform": "^2.1.1",
"one-time": "0.0.4",

@@ -43,4 +43,4 @@ "readable-stream": "^3.1.1",

"@babel/core": "^7.2.2",
"@babel/preset-env": "^7.2.3",
"@types/node": "^10.12.18",
"@babel/preset-env": "^7.3.1",
"@types/node": "^10.12.19",
"abstract-winston-transport": ">= 0.5.1",

@@ -50,3 +50,3 @@ "assume": "^2.1.0",

"cross-spawn-async": "^2.2.5",
"eslint-config-populist": "^4.1.0",
"eslint-config-populist": "^4.2.0",
"hock": "^1.3.3",

@@ -53,0 +53,0 @@ "mocha": "^5.2.0",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc