From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- node_modules/loglevelnext/lib/LogLevel.js | 78 +++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 node_modules/loglevelnext/lib/LogLevel.js (limited to 'node_modules/loglevelnext/lib/LogLevel.js') diff --git a/node_modules/loglevelnext/lib/LogLevel.js b/node_modules/loglevelnext/lib/LogLevel.js new file mode 100644 index 00000000..8f00411e --- /dev/null +++ b/node_modules/loglevelnext/lib/LogLevel.js @@ -0,0 +1,78 @@ +'use strict'; + +/* global window: true */ +const PrefixFactory = require('../factory/PrefixFactory'); +const MethodFactory = require('./MethodFactory'); + +const defaults = { + factory: null, + level: 'warn', + name: +new Date(), + prefix: null +}; + +module.exports = class LogLevel { + constructor(options) { + // implement for some _very_ loose type checking. avoids getting into a + // circular require between MethodFactory and LogLevel + this.type = 'LogLevel'; + this.options = Object.assign({}, defaults, options); + this.methodFactory = options.factory; + + if (!this.methodFactory) { + const factory = options.prefix ? new PrefixFactory(this, options.prefix) : new MethodFactory(this); + this.methodFactory = factory; + } + + if (!this.methodFactory.logger) { + this.methodFactory.logger = this; + } + + this.name = options.name || ''; + + // this.level is a setter, do this after setting up the factory + this.level = this.options.level; + } + + get factory() { + return this.methodFactory; + } + + set factory(factory) { + factory.logger = this; + this.methodFactory = factory; + this.methodFactory.replaceMethods(this.level); + } + + disable() { + this.level = this.levels.SILENT; + } + + enable() { + this.level = this.levels.TRACE; + } + + get level() { + return this.currentLevel; + } + + set level(logLevel) { + const level = this.methodFactory.distillLevel(logLevel); + + if (level == null) { + throw new Error(`loglevelnext: setLevel() called with invalid level: ${logLevel}`); + } + + this.currentLevel = level; + this.methodFactory.replaceMethods(level); + + if (typeof console === 'undefined' && level < this.levels.SILENT) { + // eslint-disable-next-line no-console + console.warn('loglevelnext: console is undefined. The log will produce no output.'); + } + } + + get levels() { // eslint-disable-line class-methods-use-this + return this.methodFactory.levels; + } +}; -- cgit v1.2.3