aboutsummaryrefslogtreecommitdiff
path: root/node_modules/loglevelnext
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/loglevelnext')
-rw-r--r--node_modules/loglevelnext/LICENSE23
-rw-r--r--node_modules/loglevelnext/README.md207
-rw-r--r--node_modules/loglevelnext/dist/.gitkeep0
-rw-r--r--node_modules/loglevelnext/dist/loglevelnext.js503
-rw-r--r--node_modules/loglevelnext/dist/loglevelnext.min.js1
-rw-r--r--node_modules/loglevelnext/factory/PrefixFactory.js46
-rw-r--r--node_modules/loglevelnext/index.js61
-rw-r--r--node_modules/loglevelnext/lib/LogLevel.js78
-rw-r--r--node_modules/loglevelnext/lib/MethodFactory.js119
-rw-r--r--node_modules/loglevelnext/package.json76
10 files changed, 1114 insertions, 0 deletions
diff --git a/node_modules/loglevelnext/LICENSE b/node_modules/loglevelnext/LICENSE
new file mode 100644
index 00000000..0959be37
--- /dev/null
+++ b/node_modules/loglevelnext/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2017 Andrew Powell
+Portions Copyright (c) 2013 Tim Perry
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/loglevelnext/README.md b/node_modules/loglevelnext/README.md
new file mode 100644
index 00000000..9718df30
--- /dev/null
+++ b/node_modules/loglevelnext/README.md
@@ -0,0 +1,207 @@
+
+<div align="center">
+ <img width="150" height="150" src="http://shellscape.org/assets/images/external/loglevelnext-icon.svg">
+</div>
+&nbsp;
+
+[![npm][npm]][npm-url]
+[![node][node]][node-url]
+[![devdeps][devdeps]][devdeps-url]
+[![tests][tests]][tests-url]
+[![coverage][cover]][cover-url]
+
+# loglevelnext
+
+`loglevelnext` is a modern logging library for Node.js and modern browsers,
+written with modern patterns and practices which provides log level mapping of the
+`console` object.
+
+## Getting Started
+
+First thing's first, install the module:
+
+```console
+npm install loglevelnext --save
+```
+
+## Usage
+
+Users can choose to use `loglevelnext` in Node.js or in the client (browser).
+
+```js
+// Node.js
+const log = require('loglevelnext');
+
+log.info('bananas!');
+```
+
+```html
+<!-- browser -->
+<!doctype>
+<html>
+ <head>
+ <script src="/path/to/loglevelnext.js"></script>
+ </head>
+ <body>
+ <script>
+ window.log.info('zomg');
+ </script>
+ </body>
+</html>
+
+```
+
+## Log Levels
+
+By default `loglevelnext` ships supporting the following log level name-value
+pairs:
+
+```js
+{
+ TRACE: 0,
+ DEBUG: 1,
+ INFO: 2,
+ WARN: 3,
+ ERROR: 4,
+ SILENT: 5
+}
+```
+
+## Default Logger
+
+When requiring `loglevelnext` in Node.js the default export will be an instance
+of [`LogLevel`](docs/LogLevel.md) wrapped with some extra sugar.
+
+When loading the `loglevelnext.js` script in the client (browser), the script
+will assign `window.log` to an instance of [`LogLevel`](docs/LogLevel.md),
+wrapped with that same extra sugar.
+
+### Methods
+
+Please see [`LogLevel`](docs/LogLevel.md) for documentation of all methods and
+properties of every log instance, including the default instance.
+
+#### `trace`, `debug`, `info`, `warn`, `error`
+
+These methods correspond to the available log levels and accept parameters
+identical to their `console` counterparts. eg.
+
+```js
+console.info('...');
+console.info('...');
+// ... etc
+```
+
+#### `getLogger(options)`
+
+Returns a new `LogLevel` instance. The `options` parameter should be an `Object`
+matching the options for the [`LogLevel`](docs/LogLevel.md) constructor.
+
+_Note: the logger returned is cached, and subsequent requests for a logger of
+the same name will return the same logger instance. If you require multiple
+unique loggers of the same name, pass an `id` property with a unique identifier
+and `getLogger` will use that over the `name`._
+
+#### `noConflict()`
+
+When using `loglevelnext` in a browser environment, you may encounter a scenario
+in which `window.log` is already assigned when the script loads, resulting in
+`window.log` being reassigned to `loglevelnext`. This method will restore
+`window.log` to it's original value and return the default logger.
+
+### Properties
+
+#### `factories`
+
+Type: `Array [ Class ]`
+
+Gets an `Array` containing the factory classes available within `loglevelnext`
+to outside modules. Particularily useful when creating plugins. eg.
+
+```js
+const log = require('loglevelnext');
+const { MethodFactory } = log.factories;
+class MyFactory extends MethodFactory { ... }
+```
+
+#### `loggers`
+
+Type: `Array [ LogLevel ]`
+
+Gets an `Array` containing references to the currently instantiated loggers.
+
+## Factories aka Plugins
+
+If you're used to using plugins with `loglevel`, fear not. The same capabilities
+are available in `loglevelnext`, but in a much more straightforward and structured
+way. `loglevelnext` supports by way of "Factories." A `Factory` is nothing more
+than a class which defines several base methods that operate on the `console`
+and provide functionality to a `LogLevel` instance. All factories must inherit from the
+[`MethodFactory`][methodFactory] class, and may override any defined class functions.
+
+For an example factory, please have a look at the [`PrefixFactory`][prefixFactory]
+which provides similar functionality as the [loglevel-prefix](loglevelpre) plugin,
+and is the factory which is used when a user passes the `prefix` option to a
+`LogLevel` instance.
+
+## Persisting the Level
+
+Persisting the level of a log between sessions in a browser isn't the job of a
+logging library. Primarily because working with `localStorage` these days is a
+breeze. If you need to store and retrieve a log level value between sessions,
+please look into leveraging the excellent and very tiny [`store2`](https://github.com/nbubna/store)
+library.
+
+## Browser Support
+
+As mentioned, `loglevelnext` is a logging library for Node.js and _modern_
+browsers, which means the latest versions of the major browsers. Unfortunately
+"oldIE" versions aren't officially supported. The minimum Internet Exploder
+version supported is IE10, though [Microsoft no longer supports it][oldie].
+
+If you're in need of support for old or outdated browser versions, please use
+the older [loglevel][loglevel], which supports browsers as old as IE6.
+
+_Note: This library's distribution file is compiled in a way that will
+technically work all the way back to IE8 - as that version and above support
+`localStorage`. However, IE8 and IE9 require that the developer tools be open
+prior to invoking this library._
+
+## Contributing
+
+We welcome your contributions! Please have a read of [CONTRIBUTING.md](CONTRIBUTING.md) for more information on how to get involved.
+
+## Attribution
+
+_This project is a fork of the much-loved [loglevel](loglevel) module._
+
+Base Log SVG by [Freepik](http://www.freepik.com/) from [www.flaticon.com](http://www.flaticon.com).
+
+## License
+
+#### [MIT](./LICENSE)
+
+
+[npm]: https://img.shields.io/npm/v/loglevelnext.svg
+[npm-url]: https://npmjs.com/package/loglevelnext
+
+[node]: https://img.shields.io/node/v/loglevelnext.svg
+[node-url]: https://nodejs.org
+
+[deps]: https://david-dm.org/shellscape/loglevelnext.svg
+[deps-url]: https://david-dm.org/shellscape/loglevelnext
+
+[devdeps]: https://david-dm.org/shellscape/loglevelnext/dev-status.svg
+[devdeps-url]: https://david-dm.org/shellscape/loglevelnext
+
+[tests]: http://img.shields.io/travis/shellscape/loglevelnext.svg
+[tests-url]: https://travis-ci.org/shellscape/loglevelnext
+
+[cover]: https://codecov.io/gh/shellscape/loglevelnext/branch/master/graph/badge.svg
+[cover-url]: https://codecov.io/gh/shellscape/loglevelnext
+
+[loglevel]: https://githhub.com/pimterry/loglevel
+[loglevelpre]: https://github.com/kutuluk/loglevel-plugin-prefix
+[oldie]: https://www.microsoft.com/en-us/windowsforbusiness/end-of-ie-support
+[methodFactory]: lib/MethodFactory.js
+[prefixFactory]: factory/PrefixFactory.js
diff --git a/node_modules/loglevelnext/dist/.gitkeep b/node_modules/loglevelnext/dist/.gitkeep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/node_modules/loglevelnext/dist/.gitkeep
diff --git a/node_modules/loglevelnext/dist/loglevelnext.js b/node_modules/loglevelnext/dist/loglevelnext.js
new file mode 100644
index 00000000..019a98b1
--- /dev/null
+++ b/node_modules/loglevelnext/dist/loglevelnext.js
@@ -0,0 +1,503 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["log"] = factory();
+ else
+ root["log"] = factory();
+})(window, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, {
+/******/ configurable: false,
+/******/ enumerable: true,
+/******/ get: getter
+/******/ });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./factory/PrefixFactory.js":
+/*!**********************************!*\
+ !*** ./factory/PrefixFactory.js ***!
+ \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nfunction _typeof(obj) { 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 _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } _setPrototypeOf(subClass.prototype, superClass && superClass.prototype); 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 _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 _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 _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.getPrototypeOf || function _getPrototypeOf(o) { return o.__proto__; }; return _getPrototypeOf(o); }\n\nvar MethodFactory = __webpack_require__(/*! ../lib/MethodFactory */ \"./lib/MethodFactory.js\");\n\nvar defaults = {\n level: function level(opts) {\n return \"[\".concat(opts.level, \"]\");\n },\n name: function name(opts) {\n return opts.logger.name;\n },\n template: '{{time}} {{level}} ',\n time: function time() {\n return new Date().toTimeString().split(' ')[0];\n }\n};\n\nmodule.exports =\n/*#__PURE__*/\nfunction (_MethodFactory) {\n function PrefixFactory(logger, options) {\n var _this;\n\n _classCallCheck(this, PrefixFactory);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PrefixFactory).call(this, logger));\n _this.options = Object.assign({}, defaults, options);\n return _this;\n }\n\n _createClass(PrefixFactory, [{\n key: \"interpolate\",\n value: function interpolate(level) {\n var _this2 = this;\n\n return this.options.template.replace(/{{([^{}]*)}}/g, function (stache, prop) {\n var fn = _this2.options[prop];\n\n if (fn) {\n return fn({\n level: level,\n logger: _this2.logger\n });\n }\n\n return stache;\n });\n }\n }, {\n key: \"make\",\n value: function make(methodName) {\n var _this3 = this;\n\n var og = _get(_getPrototypeOf(PrefixFactory.prototype), \"make\", this).call(this, methodName);\n\n return function () {\n var output = _this3.interpolate(methodName);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var first = args[0];\n\n if (typeof first === 'string') {\n args[0] = output + first;\n } else {\n args.unshift(output);\n }\n\n og.apply(void 0, args);\n };\n }\n }]);\n\n _inherits(PrefixFactory, _MethodFactory);\n\n return PrefixFactory;\n}(MethodFactory);\n\n//# sourceURL=webpack://log/./factory/PrefixFactory.js?");
+
+/***/ }),
+
+/***/ "./index.js":
+/*!******************!*\
+ !*** ./index.js ***!
+ \******************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n__webpack_require__(/*! object.assign/shim */ \"./node_modules/object.assign/shim.js\")();\n\n__webpack_require__(/*! es6-symbol/implement */ \"./node_modules/es6-symbol/implement.js\");\n/* global window: true */\n\n\nvar LogLevel = __webpack_require__(/*! ./lib/LogLevel */ \"./lib/LogLevel.js\");\n\nvar MethodFactory = __webpack_require__(/*! ./lib/MethodFactory */ \"./lib/MethodFactory.js\");\n\nvar PrefixFactory = __webpack_require__(/*! ./factory/PrefixFactory */ \"./factory/PrefixFactory.js\");\n\nvar defaultLogger = new LogLevel({\n name: 'default'\n});\nvar cache = {\n default: defaultLogger\n}; // Grab the current global log variable in case of overwrite\n\nvar existing = typeof window !== 'undefined' ? window.log : null;\nmodule.exports = Object.assign(defaultLogger, {\n get factories() {\n return {\n MethodFactory: MethodFactory,\n PrefixFactory: PrefixFactory\n };\n },\n\n get loggers() {\n return cache;\n },\n\n getLogger: function getLogger(options) {\n if (typeof options === 'string') {\n options = {\n name: options\n };\n }\n\n if (!options.id) {\n options.id = options.name;\n }\n\n var _options = options,\n name = _options.name,\n id = _options.id;\n var defaults = {\n level: defaultLogger.level\n };\n\n if (typeof name !== 'string' || !name || !name.length) {\n throw new TypeError('You must supply a name when creating a logger.');\n }\n\n var logger = cache[id];\n\n if (!logger) {\n logger = new LogLevel(Object.assign({}, defaults, options));\n cache[id] = logger;\n }\n\n return logger;\n },\n noConflict: function noConflict() {\n if (typeof window !== 'undefined' && window.log === defaultLogger) {\n window.log = existing;\n }\n\n return defaultLogger;\n }\n});\n\n//# sourceURL=webpack://log/./index.js?");
+
+/***/ }),
+
+/***/ "./lib/LogLevel.js":
+/*!*************************!*\
+ !*** ./lib/LogLevel.js ***!
+ \*************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n/* global window: true */\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\nvar PrefixFactory = __webpack_require__(/*! ../factory/PrefixFactory */ \"./factory/PrefixFactory.js\");\n\nvar MethodFactory = __webpack_require__(/*! ./MethodFactory */ \"./lib/MethodFactory.js\");\n\nvar defaults = {\n factory: null,\n level: 'warn',\n name: +new Date(),\n prefix: null\n};\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function LogLevel(options) {\n _classCallCheck(this, LogLevel);\n\n // implement for some _very_ loose type checking. avoids getting into a\n // circular require between MethodFactory and LogLevel\n this.type = 'LogLevel';\n this.options = Object.assign({}, defaults, options);\n this.methodFactory = options.factory;\n\n if (!this.methodFactory) {\n var factory = options.prefix ? new PrefixFactory(this, options.prefix) : new MethodFactory(this);\n this.methodFactory = factory;\n }\n\n if (!this.methodFactory.logger) {\n this.methodFactory.logger = this;\n }\n\n this.name = options.name || '<unknown>'; // this.level is a setter, do this after setting up the factory\n\n this.level = this.options.level;\n }\n\n _createClass(LogLevel, [{\n key: \"disable\",\n value: function disable() {\n this.level = this.levels.SILENT;\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.level = this.levels.TRACE;\n }\n }, {\n key: \"factory\",\n get: function get() {\n return this.methodFactory;\n },\n set: function set(factory) {\n factory.logger = this;\n this.methodFactory = factory;\n this.methodFactory.replaceMethods(this.level);\n }\n }, {\n key: \"level\",\n get: function get() {\n return this.currentLevel;\n },\n set: function set(logLevel) {\n var level = this.methodFactory.distillLevel(logLevel);\n\n if (level == null) {\n throw new Error(\"loglevelnext: setLevel() called with invalid level: \".concat(logLevel));\n }\n\n this.currentLevel = level;\n this.methodFactory.replaceMethods(level);\n\n if (typeof console === 'undefined' && level < this.levels.SILENT) {\n // eslint-disable-next-line no-console\n console.warn('loglevelnext: console is undefined. The log will produce no output.');\n }\n }\n }, {\n key: \"levels\",\n get: function get() {\n // eslint-disable-line class-methods-use-this\n return this.methodFactory.levels;\n }\n }]);\n\n return LogLevel;\n}();\n\n//# sourceURL=webpack://log/./lib/LogLevel.js?");
+
+/***/ }),
+
+/***/ "./lib/MethodFactory.js":
+/*!******************************!*\
+ !*** ./lib/MethodFactory.js ***!
+ \******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\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\nvar noop = function noop() {};\n\nvar levels = Symbol('valid log levels');\nvar instance = Symbol('a log instance');\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function MethodFactory(logger) {\n _classCallCheck(this, MethodFactory);\n\n this[instance] = logger;\n this[levels] = {\n TRACE: 0,\n DEBUG: 1,\n INFO: 2,\n WARN: 3,\n ERROR: 4,\n SILENT: 5\n };\n }\n\n _createClass(MethodFactory, [{\n key: \"bindMethod\",\n // eslint-disable-next-line class-methods-use-this\n value: function bindMethod(obj, methodName) {\n var method = obj[methodName];\n\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n }\n\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function result() {\n // eslint-disable-next-line prefer-rest-params\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }, {\n key: \"distillLevel\",\n value: function distillLevel(level) {\n var result = level;\n\n if (typeof result === 'string' && typeof this.levels[result.toUpperCase()] !== 'undefined') {\n result = this.levels[result.toUpperCase()];\n }\n\n if (this.levelValid(result)) {\n return result;\n }\n }\n }, {\n key: \"levelValid\",\n value: function levelValid(level) {\n if (typeof level === 'number' && level >= 0 && level <= this.levels.SILENT) {\n return true;\n }\n\n return false;\n }\n /**\n * Build the best logging method possible for this env\n * Wherever possible we want to bind, not wrap, to preserve stack traces.\n * Since we're targeting modern browsers, there's no need to wait for the\n * console to become available.\n */\n // eslint-disable-next-line class-methods-use-this\n\n }, {\n key: \"make\",\n value: function make(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n /* eslint-disable no-console */\n\n\n if (typeof console[methodName] !== 'undefined') {\n return this.bindMethod(console, methodName);\n } else if (typeof console.log !== 'undefined') {\n return this.bindMethod(console, 'log');\n }\n /* eslint-enable no-console */\n\n\n return noop;\n }\n }, {\n key: \"replaceMethods\",\n value: function replaceMethods(logLevel) {\n var _this = this;\n\n var level = this.distillLevel(logLevel);\n\n if (level == null) {\n throw new Error(\"loglevelnext: replaceMethods() called with invalid level: \".concat(logLevel));\n }\n\n if (!this.logger || this.logger.type !== 'LogLevel') {\n throw new TypeError('loglevelnext: Logger is undefined or invalid. Please specify a valid Logger instance.');\n }\n\n this.methods.forEach(function (methodName) {\n var methodLevel = _this.levels[methodName.toUpperCase()];\n\n _this.logger[methodName] = methodLevel < level ? noop : _this.make(methodName);\n }); // Define log.log as an alias for log.debug\n\n this.logger.log = this.logger.debug;\n }\n }, {\n key: \"levels\",\n get: function get() {\n return this[levels];\n }\n }, {\n key: \"logger\",\n get: function get() {\n return this[instance];\n },\n set: function set(logger) {\n this[instance] = logger;\n }\n }, {\n key: \"methods\",\n get: function get() {\n return Object.keys(this.levels).map(function (key) {\n return key.toLowerCase();\n }).filter(function (key) {\n return key !== 'silent';\n });\n }\n }]);\n\n return MethodFactory;\n}();\n\n//# sourceURL=webpack://log/./lib/MethodFactory.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d/index.js":
+/*!*********************************!*\
+ !*** ./node_modules/d/index.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar assign = __webpack_require__(/*! es5-ext/object/assign */ \"./node_modules/es5-ext/object/assign/index.js\")\n , normalizeOpts = __webpack_require__(/*! es5-ext/object/normalize-options */ \"./node_modules/es5-ext/object/normalize-options.js\")\n , isCallable = __webpack_require__(/*! es5-ext/object/is-callable */ \"./node_modules/es5-ext/object/is-callable.js\")\n , contains = __webpack_require__(/*! es5-ext/string/#/contains */ \"./node_modules/es5-ext/string/#/contains/index.js\")\n\n , d;\n\nd = module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif ((arguments.length < 2) || (typeof dscr !== 'string')) {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (dscr == null) {\n\t\tc = w = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t\tw = contains.call(dscr, 'w');\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== 'string') {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (get == null) {\n\t\tget = undefined;\n\t} else if (!isCallable(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (set == null) {\n\t\tset = undefined;\n\t} else if (!isCallable(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (dscr == null) {\n\t\tc = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\n\n//# sourceURL=webpack://log/./node_modules/d/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/define-properties/index.js":
+/*!*************************************************!*\
+ !*** ./node_modules/define-properties/index.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar keys = __webpack_require__(/*! object-keys */ \"./node_modules/object-keys/index.js\");\nvar foreach = __webpack_require__(/*! foreach */ \"./node_modules/foreach/index.js\");\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n//# sourceURL=webpack://log/./node_modules/define-properties/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/function/noop.js":
+/*!***********************************************!*\
+ !*** ./node_modules/es5-ext/function/noop.js ***!
+ \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/function/noop.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/global.js":
+/*!****************************************!*\
+ !*** ./node_modules/es5-ext/global.js ***!
+ \****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("/* eslint strict: \"off\" */\n\nmodule.exports = (function () {\n\treturn this;\n}());\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/global.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/assign/index.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/es5-ext/object/assign/index.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nmodule.exports = __webpack_require__(/*! ./is-implemented */ \"./node_modules/es5-ext/object/assign/is-implemented.js\")()\n\t? Object.assign\n\t: __webpack_require__(/*! ./shim */ \"./node_modules/es5-ext/object/assign/shim.js\");\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/assign/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/assign/is-implemented.js":
+/*!**************************************************************!*\
+ !*** ./node_modules/es5-ext/object/assign/is-implemented.js ***!
+ \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== \"function\") return false;\n\tobj = { foo: \"raz\" };\n\tassign(obj, { bar: \"dwa\" }, { trzy: \"trzy\" });\n\treturn (obj.foo + obj.bar + obj.trzy) === \"razdwatrzy\";\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/assign/is-implemented.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/assign/shim.js":
+/*!****************************************************!*\
+ !*** ./node_modules/es5-ext/object/assign/shim.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar keys = __webpack_require__(/*! ../keys */ \"./node_modules/es5-ext/object/keys/index.js\")\n , value = __webpack_require__(/*! ../valid-value */ \"./node_modules/es5-ext/object/valid-value.js\")\n , max = Math.max;\n\nmodule.exports = function (dest, src /*, …srcn*/) {\n\tvar error, i, length = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry {\n\t\t\tdest[key] = src[key];\n\t\t} catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < length; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/assign/shim.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/is-callable.js":
+/*!****************************************************!*\
+ !*** ./node_modules/es5-ext/object/is-callable.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("// Deprecated\n\n\n\nmodule.exports = function (obj) {\n return typeof obj === \"function\";\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/is-callable.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/is-value.js":
+/*!*************************************************!*\
+ !*** ./node_modules/es5-ext/object/is-value.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar _undefined = __webpack_require__(/*! ../function/noop */ \"./node_modules/es5-ext/function/noop.js\")(); // Support ES3 engines\n\nmodule.exports = function (val) {\n return (val !== _undefined) && (val !== null);\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/is-value.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/keys/index.js":
+/*!***************************************************!*\
+ !*** ./node_modules/es5-ext/object/keys/index.js ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nmodule.exports = __webpack_require__(/*! ./is-implemented */ \"./node_modules/es5-ext/object/keys/is-implemented.js\")()\n\t? Object.keys\n\t: __webpack_require__(/*! ./shim */ \"./node_modules/es5-ext/object/keys/shim.js\");\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/keys/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/keys/is-implemented.js":
+/*!************************************************************!*\
+ !*** ./node_modules/es5-ext/object/keys/is-implemented.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys(\"primitive\");\n\t\treturn true;\n\t} catch (e) {\n return false;\n}\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/keys/is-implemented.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/keys/shim.js":
+/*!**************************************************!*\
+ !*** ./node_modules/es5-ext/object/keys/shim.js ***!
+ \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar isValue = __webpack_require__(/*! ../is-value */ \"./node_modules/es5-ext/object/is-value.js\");\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) {\n\treturn keys(isValue(object) ? Object(object) : object);\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/keys/shim.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/normalize-options.js":
+/*!**********************************************************!*\
+ !*** ./node_modules/es5-ext/object/normalize-options.js ***!
+ \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar isValue = __webpack_require__(/*! ./is-value */ \"./node_modules/es5-ext/object/is-value.js\");\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (opts1 /*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (!isValue(options)) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/normalize-options.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/object/valid-value.js":
+/*!****************************************************!*\
+ !*** ./node_modules/es5-ext/object/valid-value.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar isValue = __webpack_require__(/*! ./is-value */ \"./node_modules/es5-ext/object/is-value.js\");\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/object/valid-value.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/string/#/contains/index.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/es5-ext/string/#/contains/index.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nmodule.exports = __webpack_require__(/*! ./is-implemented */ \"./node_modules/es5-ext/string/#/contains/is-implemented.js\")()\n\t? String.prototype.contains\n\t: __webpack_require__(/*! ./shim */ \"./node_modules/es5-ext/string/#/contains/shim.js\");\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/string/#/contains/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/string/#/contains/is-implemented.js":
+/*!******************************************************************!*\
+ !*** ./node_modules/es5-ext/string/#/contains/is-implemented.js ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar str = \"razdwatrzy\";\n\nmodule.exports = function () {\n\tif (typeof str.contains !== \"function\") return false;\n\treturn (str.contains(\"dwa\") === true) && (str.contains(\"foo\") === false);\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/string/#/contains/is-implemented.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es5-ext/string/#/contains/shim.js":
+/*!********************************************************!*\
+ !*** ./node_modules/es5-ext/string/#/contains/shim.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es5-ext/string/#/contains/shim.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es6-symbol/implement.js":
+/*!**********************************************!*\
+ !*** ./node_modules/es6-symbol/implement.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nif (!__webpack_require__(/*! ./is-implemented */ \"./node_modules/es6-symbol/is-implemented.js\")()) {\n\tObject.defineProperty(__webpack_require__(/*! es5-ext/global */ \"./node_modules/es5-ext/global.js\"), 'Symbol',\n\t\t{ value: __webpack_require__(/*! ./polyfill */ \"./node_modules/es6-symbol/polyfill.js\"), configurable: true, enumerable: false,\n\t\t\twritable: true });\n}\n\n\n//# sourceURL=webpack://log/./node_modules/es6-symbol/implement.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es6-symbol/is-implemented.js":
+/*!***************************************************!*\
+ !*** ./node_modules/es6-symbol/is-implemented.js ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar validTypes = { object: true, symbol: true };\n\nmodule.exports = function () {\n\tvar symbol;\n\tif (typeof Symbol !== 'function') return false;\n\tsymbol = Symbol('test symbol');\n\ttry { String(symbol); } catch (e) { return false; }\n\n\t// Return 'true' also for polyfills\n\tif (!validTypes[typeof Symbol.iterator]) return false;\n\tif (!validTypes[typeof Symbol.toPrimitive]) return false;\n\tif (!validTypes[typeof Symbol.toStringTag]) return false;\n\n\treturn true;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es6-symbol/is-implemented.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es6-symbol/is-symbol.js":
+/*!**********************************************!*\
+ !*** ./node_modules/es6-symbol/is-symbol.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nmodule.exports = function (x) {\n\tif (!x) return false;\n\tif (typeof x === 'symbol') return true;\n\tif (!x.constructor) return false;\n\tif (x.constructor.name !== 'Symbol') return false;\n\treturn (x[x.constructor.toStringTag] === 'Symbol');\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es6-symbol/is-symbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es6-symbol/polyfill.js":
+/*!*********************************************!*\
+ !*** ./node_modules/es6-symbol/polyfill.js ***!
+ \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("// ES2015 Symbol polyfill for environments that do not (or partially) support it\n\n\n\nvar d = __webpack_require__(/*! d */ \"./node_modules/d/index.js\")\n , validateSymbol = __webpack_require__(/*! ./validate-symbol */ \"./node_modules/es6-symbol/validate-symbol.js\")\n\n , create = Object.create, defineProperties = Object.defineProperties\n , defineProperty = Object.defineProperty, objPrototype = Object.prototype\n , NativeSymbol, SymbolPolyfill, HiddenSymbol, globalSymbols = create(null)\n , isNativeSafe;\n\nif (typeof Symbol === 'function') {\n\tNativeSymbol = Symbol;\n\ttry {\n\t\tString(NativeSymbol());\n\t\tisNativeSafe = true;\n\t} catch (ignore) {}\n}\n\nvar generateName = (function () {\n\tvar created = create(null);\n\treturn function (desc) {\n\t\tvar postfix = 0, name, ie11BugWorkaround;\n\t\twhile (created[desc + (postfix || '')]) ++postfix;\n\t\tdesc += (postfix || '');\n\t\tcreated[desc] = true;\n\t\tname = '@@' + desc;\n\t\tdefineProperty(objPrototype, name, d.gs(null, function (value) {\n\t\t\t// For IE11 issue see:\n\t\t\t// https://connect.microsoft.com/IE/feedbackdetail/view/1928508/\n\t\t\t// ie11-broken-getters-on-dom-objects\n\t\t\t// https://github.com/medikoo/es6-symbol/issues/12\n\t\t\tif (ie11BugWorkaround) return;\n\t\t\tie11BugWorkaround = true;\n\t\t\tdefineProperty(this, name, d(value));\n\t\t\tie11BugWorkaround = false;\n\t\t}));\n\t\treturn name;\n\t};\n}());\n\n// Internal constructor (not one exposed) for creating Symbol instances.\n// This one is used to ensure that `someSymbol instanceof Symbol` always return false\nHiddenSymbol = function Symbol(description) {\n\tif (this instanceof HiddenSymbol) throw new TypeError('Symbol is not a constructor');\n\treturn SymbolPolyfill(description);\n};\n\n// Exposed `Symbol` constructor\n// (returns instances of HiddenSymbol)\nmodule.exports = SymbolPolyfill = function Symbol(description) {\n\tvar symbol;\n\tif (this instanceof Symbol) throw new TypeError('Symbol is not a constructor');\n\tif (isNativeSafe) return NativeSymbol(description);\n\tsymbol = create(HiddenSymbol.prototype);\n\tdescription = (description === undefined ? '' : String(description));\n\treturn defineProperties(symbol, {\n\t\t__description__: d('', description),\n\t\t__name__: d('', generateName(description))\n\t});\n};\ndefineProperties(SymbolPolyfill, {\n\tfor: d(function (key) {\n\t\tif (globalSymbols[key]) return globalSymbols[key];\n\t\treturn (globalSymbols[key] = SymbolPolyfill(String(key)));\n\t}),\n\tkeyFor: d(function (s) {\n\t\tvar key;\n\t\tvalidateSymbol(s);\n\t\tfor (key in globalSymbols) if (globalSymbols[key] === s) return key;\n\t}),\n\n\t// To ensure proper interoperability with other native functions (e.g. Array.from)\n\t// fallback to eventual native implementation of given symbol\n\thasInstance: d('', (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill('hasInstance')),\n\tisConcatSpreadable: d('', (NativeSymbol && NativeSymbol.isConcatSpreadable) ||\n\t\tSymbolPolyfill('isConcatSpreadable')),\n\titerator: d('', (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill('iterator')),\n\tmatch: d('', (NativeSymbol && NativeSymbol.match) || SymbolPolyfill('match')),\n\treplace: d('', (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill('replace')),\n\tsearch: d('', (NativeSymbol && NativeSymbol.search) || SymbolPolyfill('search')),\n\tspecies: d('', (NativeSymbol && NativeSymbol.species) || SymbolPolyfill('species')),\n\tsplit: d('', (NativeSymbol && NativeSymbol.split) || SymbolPolyfill('split')),\n\ttoPrimitive: d('', (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill('toPrimitive')),\n\ttoStringTag: d('', (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill('toStringTag')),\n\tunscopables: d('', (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill('unscopables'))\n});\n\n// Internal tweaks for real symbol producer\ndefineProperties(HiddenSymbol.prototype, {\n\tconstructor: d(SymbolPolyfill),\n\ttoString: d('', function () { return this.__name__; })\n});\n\n// Proper implementation of methods exposed on Symbol.prototype\n// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype\ndefineProperties(SymbolPolyfill.prototype, {\n\ttoString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),\n\tvalueOf: d(function () { return validateSymbol(this); })\n});\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d('', function () {\n\tvar symbol = validateSymbol(this);\n\tif (typeof symbol === 'symbol') return symbol;\n\treturn symbol.toString();\n}));\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d('c', 'Symbol'));\n\n// Proper implementaton of toPrimitive and toStringTag for returned symbol instances\ndefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag,\n\td('c', SymbolPolyfill.prototype[SymbolPolyfill.toStringTag]));\n\n// Note: It's important to define `toPrimitive` as last one, as some implementations\n// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)\n// And that may invoke error in definition flow:\n// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149\ndefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive,\n\td('c', SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive]));\n\n\n//# sourceURL=webpack://log/./node_modules/es6-symbol/polyfill.js?");
+
+/***/ }),
+
+/***/ "./node_modules/es6-symbol/validate-symbol.js":
+/*!****************************************************!*\
+ !*** ./node_modules/es6-symbol/validate-symbol.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar isSymbol = __webpack_require__(/*! ./is-symbol */ \"./node_modules/es6-symbol/is-symbol.js\");\n\nmodule.exports = function (value) {\n\tif (!isSymbol(value)) throw new TypeError(value + \" is not a symbol\");\n\treturn value;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/es6-symbol/validate-symbol.js?");
+
+/***/ }),
+
+/***/ "./node_modules/foreach/index.js":
+/*!***************************************!*\
+ !*** ./node_modules/foreach/index.js ***!
+ \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n\n\n//# sourceURL=webpack://log/./node_modules/foreach/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/function-bind/implementation.js":
+/*!******************************************************!*\
+ !*** ./node_modules/function-bind/implementation.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/function-bind/implementation.js?");
+
+/***/ }),
+
+/***/ "./node_modules/function-bind/index.js":
+/*!*********************************************!*\
+ !*** ./node_modules/function-bind/index.js ***!
+ \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar implementation = __webpack_require__(/*! ./implementation */ \"./node_modules/function-bind/implementation.js\");\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n//# sourceURL=webpack://log/./node_modules/function-bind/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/has-symbols/shams.js":
+/*!*******************************************!*\
+ !*** ./node_modules/has-symbols/shams.js ***!
+ \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/* eslint complexity: [2, 17], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/has-symbols/shams.js?");
+
+/***/ }),
+
+/***/ "./node_modules/object-keys/index.js":
+/*!*******************************************!*\
+ !*** ./node_modules/object-keys/index.js ***!
+ \*******************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(/*! ./isArguments */ \"./node_modules/object-keys/isArguments.js\");\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$console: true,\n\t$external: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$innerHeight: true,\n\t$innerWidth: true,\n\t$outerHeight: true,\n\t$outerWidth: true,\n\t$pageXOffset: true,\n\t$pageYOffset: true,\n\t$parent: true,\n\t$scrollLeft: true,\n\t$scrollTop: true,\n\t$scrollX: true,\n\t$scrollY: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n//# sourceURL=webpack://log/./node_modules/object-keys/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/object-keys/isArguments.js":
+/*!*************************************************!*\
+ !*** ./node_modules/object-keys/isArguments.js ***!
+ \*************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/object-keys/isArguments.js?");
+
+/***/ }),
+
+/***/ "./node_modules/object.assign/implementation.js":
+/*!******************************************************!*\
+ !*** ./node_modules/object.assign/implementation.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = __webpack_require__(/*! object-keys */ \"./node_modules/object-keys/index.js\");\nvar bind = __webpack_require__(/*! function-bind */ \"./node_modules/function-bind/index.js\");\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = __webpack_require__(/*! has-symbols/shams */ \"./node_modules/has-symbols/shams.js\")();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tsyms = getSymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/object.assign/implementation.js?");
+
+/***/ }),
+
+/***/ "./node_modules/object.assign/polyfill.js":
+/*!************************************************!*\
+ !*** ./node_modules/object.assign/polyfill.js ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar implementation = __webpack_require__(/*! ./implementation */ \"./node_modules/object.assign/implementation.js\");\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/object.assign/polyfill.js?");
+
+/***/ }),
+
+/***/ "./node_modules/object.assign/shim.js":
+/*!********************************************!*\
+ !*** ./node_modules/object.assign/shim.js ***!
+ \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nvar define = __webpack_require__(/*! define-properties */ \"./node_modules/define-properties/index.js\");\nvar getPolyfill = __webpack_require__(/*! ./polyfill */ \"./node_modules/object.assign/polyfill.js\");\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n\n\n//# sourceURL=webpack://log/./node_modules/object.assign/shim.js?");
+
+/***/ })
+
+/******/ });
+}); \ No newline at end of file
diff --git a/node_modules/loglevelnext/dist/loglevelnext.min.js b/node_modules/loglevelnext/dist/loglevelnext.min.js
new file mode 100644
index 00000000..65ef7212
--- /dev/null
+++ b/node_modules/loglevelnext/dist/loglevelnext.min.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.log=e():t.log=e()}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=34)}([function(t,e,n){"use strict";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var o=function(){},i=Symbol("valid log levels"),c=Symbol("a log instance");t.exports=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this[c]=e,this[i]={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5}}var e,n,u;return e=t,(n=[{key:"bindMethod",value:function(t,e){var n=t[e];if("function"==typeof n.bind)return n.bind(t);try{return Function.prototype.bind.call(n,t)}catch(e){return function(){return Function.prototype.apply.apply(n,[t,arguments])}}}},{key:"distillLevel",value:function(t){var e=t;if("string"==typeof e&&void 0!==this.levels[e.toUpperCase()]&&(e=this.levels[e.toUpperCase()]),this.levelValid(e))return e}},{key:"levelValid",value:function(t){return"number"==typeof t&&t>=0&&t<=this.levels.SILENT}},{key:"make",value:function(t){return"debug"===t&&(t="log"),void 0!==console[t]?this.bindMethod(console,t):void 0!==console.log?this.bindMethod(console,"log"):o}},{key:"replaceMethods",value:function(t){var e=this,n=this.distillLevel(t);if(null==n)throw new Error("loglevelnext: replaceMethods() called with invalid level: ".concat(t));if(!this.logger||"LogLevel"!==this.logger.type)throw new TypeError("loglevelnext: Logger is undefined or invalid. Please specify a valid Logger instance.");this.methods.forEach(function(t){var r=e.levels[t.toUpperCase()];e.logger[t]=r<n?o:e.make(t)}),this.logger.log=this.logger.debug}},{key:"levels",get:function(){return this[i]}},{key:"logger",get:function(){return this[c]},set:function(t){this[c]=t}},{key:"methods",get:function(){return Object.keys(this.levels).map(function(t){return t.toLowerCase()}).filter(function(t){return"silent"!==t})}}])&&r(e.prototype,n),u&&r(e,u),t}()},function(t,e,n){"use strict";var r=n(13)();t.exports=function(t){return t!==r&&null!==t}},function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function c(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function u(t,e,n){return(u="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=l(t)););return t}(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function l(t){return(l=Object.getPrototypeOf||function(t){return t.__proto__})(t)}var a=n(0),s={level:function(t){return"[".concat(t.level,"]")},name:function(t){return t.logger.name},template:"{{time}} {{level}} ",time:function(){return(new Date).toTimeString().split(" ")[0]}};t.exports=function(t){function e(t,n){var r;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(r=c(this,l(e).call(this,t))).options=Object.assign({},s,n),r}var n,r,a;return n=e,(r=[{key:"interpolate",value:function(t){var e=this;return this.options.template.replace(/{{([^{}]*)}}/g,function(n,r){var o=e.options[r];return o?o({level:t,logger:e.logger}):n})}},{key:"make",value:function(t){var n=this,r=u(l(e.prototype),"make",this).call(this,t);return function(){for(var e=n.interpolate(t),o=arguments.length,i=new Array(o),c=0;c<o;c++)i[c]=arguments[c];var u=i[0];"string"==typeof u?i[0]=e+u:i.unshift(e),r.apply(void 0,i)}}}])&&i(n.prototype,r),a&&i(n,a),function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");o(t.prototype,e&&e.prototype),e&&o(t,e)}(e,t),e}(a)},function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=Array.prototype.slice,c=n(31),u=Object.prototype.propertyIsEnumerable,l=!u.call({toString:null},"toString"),a=u.call(function(){},"prototype"),s=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],f=function(t){var e=t.constructor;return e&&e.prototype===t},p={$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},y=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!p["$"+t]&&r.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{f(window[t])}catch(t){return!0}}catch(t){return!0}return!1}(),b=function(t){var e=null!==t&&"object"==typeof t,n="[object Function]"===o.call(t),i=c(t),u=e&&"[object String]"===o.call(t),p=[];if(!e&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var b=a&&n;if(u&&t.length>0&&!r.call(t,0))for(var g=0;g<t.length;++g)p.push(String(g));if(i&&t.length>0)for(var h=0;h<t.length;++h)p.push(String(h));else for(var v in t)b&&"prototype"===v||!r.call(t,v)||p.push(String(v));if(l)for(var d=function(t){if("undefined"==typeof window||!y)return f(t);try{return f(t)}catch(t){return!1}}(t),m=0;m<s.length;++m)d&&"constructor"===s[m]||!r.call(t,s[m])||p.push(s[m]);return p};b.shim=function(){if(Object.keys){if(!function(){return 2===(Object.keys(arguments)||"").length}(1,2)){var t=Object.keys;Object.keys=function(e){return c(e)?t(i.call(e)):t(e)}}}else Object.keys=b;return Object.keys||b},t.exports=b},function(t,e,n){"use strict";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var o=n(2),i=n(0),c={factory:null,level:"warn",name:+new Date,prefix:null};t.exports=function(){function t(e){if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.type="LogLevel",this.options=Object.assign({},c,e),this.methodFactory=e.factory,!this.methodFactory){var n=e.prefix?new o(this,e.prefix):new i(this);this.methodFactory=n}this.methodFactory.logger||(this.methodFactory.logger=this),this.name=e.name||"<unknown>",this.level=this.options.level}var e,n,u;return e=t,(n=[{key:"disable",value:function(){this.level=this.levels.SILENT}},{key:"enable",value:function(){this.level=this.levels.TRACE}},{key:"factory",get:function(){return this.methodFactory},set:function(t){t.logger=this,this.methodFactory=t,this.methodFactory.replaceMethods(this.level)}},{key:"level",get:function(){return this.currentLevel},set:function(t){var e=this.methodFactory.distillLevel(t);if(null==e)throw new Error("loglevelnext: setLevel() called with invalid level: ".concat(t));this.currentLevel=e,this.methodFactory.replaceMethods(e),"undefined"==typeof console&&e<this.levels.SILENT&&console.warn("loglevelnext: console is undefined. The log will produce no output.")}},{key:"levels",get:function(){return this.methodFactory.levels}}])&&r(e.prototype,n),u&&r(e,u),t}()},function(t,e,n){"use strict";t.exports=function(t){return!!t&&("symbol"==typeof t||!!t.constructor&&("Symbol"===t.constructor.name&&"Symbol"===t[t.constructor.toStringTag]))}},function(t,e,n){"use strict";var r=n(5);t.exports=function(t){if(!r(t))throw new TypeError(t+" is not a symbol");return t}},function(t,e,n){"use strict";var r=String.prototype.indexOf;t.exports=function(t){return r.call(this,t,arguments[1])>-1}},function(t,e,n){"use strict";var r="razdwatrzy";t.exports=function(){return"function"==typeof r.contains&&(!0===r.contains("dwa")&&!1===r.contains("foo"))}},function(t,e,n){"use strict";t.exports=n(8)()?String.prototype.contains:n(7)},function(t,e,n){"use strict";t.exports=function(t){return"function"==typeof t}},function(t,e,n){"use strict";var r=n(1),o=Array.prototype.forEach,i=Object.create;t.exports=function(t){var e=i(null);return o.call(arguments,function(t){r(t)&&function(t,e){var n;for(n in t)e[n]=t[n]}(Object(t),e)}),e}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t){if(!r(t))throw new TypeError("Cannot use null or undefined");return t}},function(t,e,n){"use strict";t.exports=function(){}},function(t,e,n){"use strict";var r=n(1),o=Object.keys;t.exports=function(t){return o(r(t)?Object(t):t)}},function(t,e,n){"use strict";t.exports=function(){try{return Object.keys("primitive"),!0}catch(t){return!1}}},function(t,e,n){"use strict";t.exports=n(15)()?Object.keys:n(14)},function(t,e,n){"use strict";var r=n(16),o=n(12),i=Math.max;t.exports=function(t,e){var n,c,u,l=i(arguments.length,2);for(t=Object(o(t)),u=function(r){try{t[r]=e[r]}catch(t){n||(n=t)}},c=1;c<l;++c)e=arguments[c],r(e).forEach(u);if(void 0!==n)throw n;return t}},function(t,e,n){"use strict";t.exports=function(){var t,e=Object.assign;return"function"==typeof e&&(e(t={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}},function(t,e,n){"use strict";t.exports=n(18)()?Object.assign:n(17)},function(t,e,n){"use strict";var r=n(19),o=n(11),i=n(10),c=n(9);(t.exports=function(t,e){var n,i,u,l,a;return arguments.length<2||"string"!=typeof t?(l=e,e=t,t=null):l=arguments[2],null==t?(n=u=!0,i=!1):(n=c.call(t,"c"),i=c.call(t,"e"),u=c.call(t,"w")),a={value:e,configurable:n,enumerable:i,writable:u},l?r(o(l),a):a}).gs=function(t,e,n){var u,l,a,s;return"string"!=typeof t?(a=n,n=e,e=t,t=null):a=arguments[3],null==e?e=void 0:i(e)?null==n?n=void 0:i(n)||(a=n,n=void 0):(a=e,e=n=void 0),null==t?(u=!0,l=!1):(u=c.call(t,"c"),l=c.call(t,"e")),s={get:e,set:n,configurable:u,enumerable:l},a?r(o(a),s):s}},function(t,e,n){"use strict";var r,o,i,c,u=n(20),l=n(6),a=Object.create,s=Object.defineProperties,f=Object.defineProperty,p=Object.prototype,y=a(null);if("function"==typeof Symbol){r=Symbol;try{String(r()),c=!0}catch(t){}}var b,g=(b=a(null),function(t){for(var e,n,r=0;b[t+(r||"")];)++r;return b[t+=r||""]=!0,f(p,e="@@"+t,u.gs(null,function(t){n||(n=!0,f(this,e,u(t)),n=!1)})),e});i=function(t){if(this instanceof i)throw new TypeError("Symbol is not a constructor");return o(t)},t.exports=o=function t(e){var n;if(this instanceof t)throw new TypeError("Symbol is not a constructor");return c?r(e):(n=a(i.prototype),e=void 0===e?"":String(e),s(n,{__description__:u("",e),__name__:u("",g(e))}))},s(o,{for:u(function(t){return y[t]?y[t]:y[t]=o(String(t))}),keyFor:u(function(t){var e;for(e in l(t),y)if(y[e]===t)return e}),hasInstance:u("",r&&r.hasInstance||o("hasInstance")),isConcatSpreadable:u("",r&&r.isConcatSpreadable||o("isConcatSpreadable")),iterator:u("",r&&r.iterator||o("iterator")),match:u("",r&&r.match||o("match")),replace:u("",r&&r.replace||o("replace")),search:u("",r&&r.search||o("search")),species:u("",r&&r.species||o("species")),split:u("",r&&r.split||o("split")),toPrimitive:u("",r&&r.toPrimitive||o("toPrimitive")),toStringTag:u("",r&&r.toStringTag||o("toStringTag")),unscopables:u("",r&&r.unscopables||o("unscopables"))}),s(i.prototype,{constructor:u(o),toString:u("",function(){return this.__name__})}),s(o.prototype,{toString:u(function(){return"Symbol ("+l(this).__description__+")"}),valueOf:u(function(){return l(this)})}),f(o.prototype,o.toPrimitive,u("",function(){var t=l(this);return"symbol"==typeof t?t:t.toString()})),f(o.prototype,o.toStringTag,u("c","Symbol")),f(i.prototype,o.toStringTag,u("c",o.prototype[o.toStringTag])),f(i.prototype,o.toPrimitive,u("c",o.prototype[o.toPrimitive]))},function(t,e){t.exports=function(){return this}()},function(t,e,n){"use strict";var r={object:!0,symbol:!0};t.exports=function(){var t;if("function"!=typeof Symbol)return!1;t=Symbol("test symbol");try{String(t)}catch(t){return!1}return!!r[typeof Symbol.iterator]&&(!!r[typeof Symbol.toPrimitive]&&!!r[typeof Symbol.toStringTag])}},function(t,e,n){"use strict";n(23)()||Object.defineProperty(n(22),"Symbol",{value:n(21),configurable:!0,enumerable:!1,writable:!0})},function(t,e,n){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),n=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var r=Object.getOwnPropertySymbols(t);if(1!==r.length||r[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(t,e);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},function(t,e,n){"use strict";var r=Array.prototype.slice,o=Object.prototype.toString;t.exports=function(t){var e=this;if("function"!=typeof e||"[object Function]"!==o.call(e))throw new TypeError("Function.prototype.bind called on incompatible "+e);for(var n,i=r.call(arguments,1),c=Math.max(0,e.length-i.length),u=[],l=0;l<c;l++)u.push("$"+l);if(n=Function("binder","return function ("+u.join(",")+"){ return binder.apply(this,arguments); }")(function(){if(this instanceof n){var o=e.apply(this,i.concat(r.call(arguments)));return Object(o)===o?o:this}return e.apply(t,i.concat(r.call(arguments)))}),e.prototype){var a=function(){};a.prototype=e.prototype,n.prototype=new a,a.prototype=null}return n}},function(t,e,n){"use strict";var r=n(26);t.exports=Function.prototype.bind||r},function(t,e,n){"use strict";var r=n(3),o=n(27),i=n(25)(),c=Object,u=o.call(Function.call,Array.prototype.push),l=o.call(Function.call,Object.prototype.propertyIsEnumerable),a=i?Object.getOwnPropertySymbols:null;t.exports=function(t,e){if(void 0===(n=t)||null===n)throw new TypeError("target must be an object");var n,o,s,f,p,y,b,g,h=c(t);for(o=1;o<arguments.length;++o){s=c(arguments[o]),p=r(s);var v=i&&(Object.getOwnPropertySymbols||a);if(v)for(y=v(s),f=0;f<y.length;++f)g=y[f],l(s,g)&&u(p,g);for(f=0;f<p.length;++f)b=s[g=p[f]],l(s,g)&&(h[g]=b)}return h}},function(t,e,n){"use strict";var r=n(28);t.exports=function(){return Object.assign?function(){if(!Object.assign)return!1;for(var t="abcdefghijklmnopqrst",e=t.split(""),n={},r=0;r<e.length;++r)n[e[r]]=e[r];var o=Object.assign({},n),i="";for(var c in o)i+=c;return t!==i}()?r:function(){if(!Object.assign||!Object.preventExtensions)return!1;var t=Object.preventExtensions({1:2});try{Object.assign(t,"xy")}catch(e){return"y"===t[1]}return!1}()?r:Object.assign:r}},function(t,e){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,e,o){if("[object Function]"!==r.call(e))throw new TypeError("iterator must be a function");var i=t.length;if(i===+i)for(var c=0;c<i;c++)e.call(o,t[c],c,t);else for(var u in t)n.call(t,u)&&e.call(o,t[u],u,t)}},function(t,e,n){"use strict";var r=Object.prototype.toString;t.exports=function(t){var e=r.call(t),n="[object Arguments]"===e;return n||(n="[object Array]"!==e&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===r.call(t.callee)),n}},function(t,e,n){"use strict";var r=n(3),o=n(30),i="function"==typeof Symbol&&"symbol"==typeof Symbol(),c=Object.prototype.toString,u=Object.defineProperty&&function(){var t={};try{for(var e in Object.defineProperty(t,"x",{enumerable:!1,value:t}),t)return!1;return t.x===t}catch(t){return!1}}(),l=function(t,e,n,r){var o;e in t&&("function"!=typeof(o=r)||"[object Function]"!==c.call(o)||!r())||(u?Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:n,writable:!0}):t[e]=n)},a=function(t,e){var n=arguments.length>2?arguments[2]:{},c=r(e);i&&(c=c.concat(Object.getOwnPropertySymbols(e))),o(c,function(r){l(t,r,e[r],n[r])})};a.supportsDescriptors=!!u,t.exports=a},function(t,e,n){"use strict";var r=n(32),o=n(29);t.exports=function(){var t=o();return r(Object,{assign:t},{assign:function(){return Object.assign!==t}}),t}},function(t,e,n){"use strict";n(33)(),n(24);var r=n(4),o=n(0),i=n(2),c=new r({name:"default"}),u={default:c},l="undefined"!=typeof window?window.log:null;t.exports=Object.assign(c,{get factories(){return{MethodFactory:o,PrefixFactory:i}},get loggers(){return u},getLogger:function(t){"string"==typeof t&&(t={name:t}),t.id||(t.id=t.name);var e=t,n=e.name,o=e.id,i={level:c.level};if("string"!=typeof n||!n||!n.length)throw new TypeError("You must supply a name when creating a logger.");var l=u[o];return l||(l=new r(Object.assign({},i,t)),u[o]=l),l},noConflict:function(){return"undefined"!=typeof window&&window.log===c&&(window.log=l),c}})}])}); \ No newline at end of file
diff --git a/node_modules/loglevelnext/factory/PrefixFactory.js b/node_modules/loglevelnext/factory/PrefixFactory.js
new file mode 100644
index 00000000..0f2c3975
--- /dev/null
+++ b/node_modules/loglevelnext/factory/PrefixFactory.js
@@ -0,0 +1,46 @@
+'use strict';
+
+const MethodFactory = require('../lib/MethodFactory');
+
+const defaults = {
+ level: opts => `[${opts.level}]`,
+ name: opts => opts.logger.name,
+ template: '{{time}} {{level}} ',
+ time: () => new Date().toTimeString().split(' ')[0]
+};
+
+module.exports = class PrefixFactory extends MethodFactory {
+ constructor(logger, options) {
+ super(logger);
+ this.options = Object.assign({}, defaults, options);
+ }
+
+ interpolate(level) {
+ return this.options.template.replace(/{{([^{}]*)}}/g, (stache, prop) => {
+ const fn = this.options[prop];
+
+ if (fn) {
+ return fn({ level, logger: this.logger });
+ }
+
+ return stache;
+ });
+ }
+
+ make(methodName) {
+ const og = super.make(methodName);
+
+ return (...args) => {
+ const output = this.interpolate(methodName);
+ const [first] = args;
+
+ if (typeof first === 'string') {
+ args[0] = output + first;
+ } else {
+ args.unshift(output);
+ }
+
+ og(...args);
+ };
+ }
+};
diff --git a/node_modules/loglevelnext/index.js b/node_modules/loglevelnext/index.js
new file mode 100644
index 00000000..000d636d
--- /dev/null
+++ b/node_modules/loglevelnext/index.js
@@ -0,0 +1,61 @@
+'use strict';
+
+require('object.assign/shim')();
+require('es6-symbol/implement');
+
+/* global window: true */
+const LogLevel = require('./lib/LogLevel');
+const MethodFactory = require('./lib/MethodFactory');
+const PrefixFactory = require('./factory/PrefixFactory');
+
+const defaultLogger = new LogLevel({ name: 'default' });
+const cache = { default: defaultLogger };
+
+// Grab the current global log variable in case of overwrite
+const existing = (typeof window !== 'undefined') ? window.log : null;
+
+module.exports = Object.assign(defaultLogger, {
+
+ get factories() {
+ return {
+ MethodFactory,
+ PrefixFactory
+ };
+ },
+
+ get loggers() {
+ return cache;
+ },
+
+ getLogger(options) {
+ if (typeof options === 'string') {
+ options = { name: options };
+ }
+
+ if (!options.id) {
+ options.id = options.name;
+ }
+
+ const { name, id } = options;
+ const defaults = { level: defaultLogger.level };
+
+ if (typeof name !== 'string' || !name || !name.length) {
+ throw new TypeError('You must supply a name when creating a logger.');
+ }
+
+ let logger = cache[id];
+ if (!logger) {
+ logger = new LogLevel(Object.assign({}, defaults, options));
+ cache[id] = logger;
+ }
+ return logger;
+ },
+
+ noConflict() {
+ if (typeof window !== 'undefined' && window.log === defaultLogger) {
+ window.log = existing;
+ }
+
+ return defaultLogger;
+ }
+});
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 || '<unknown>';
+
+ // 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;
+ }
+};
diff --git a/node_modules/loglevelnext/lib/MethodFactory.js b/node_modules/loglevelnext/lib/MethodFactory.js
new file mode 100644
index 00000000..cdf7038d
--- /dev/null
+++ b/node_modules/loglevelnext/lib/MethodFactory.js
@@ -0,0 +1,119 @@
+'use strict';
+
+const noop = () => {};
+const levels = Symbol('valid log levels');
+const instance = Symbol('a log instance');
+
+module.exports = class MethodFactory {
+ constructor(logger) {
+ this[instance] = logger;
+ this[levels] = {
+ TRACE: 0,
+ DEBUG: 1,
+ INFO: 2,
+ WARN: 3,
+ ERROR: 4,
+ SILENT: 5
+ };
+ }
+
+ get levels() {
+ return this[levels];
+ }
+
+ get logger() {
+ return this[instance];
+ }
+
+ set logger(logger) {
+ this[instance] = logger;
+ }
+
+ get methods() {
+ return Object.keys(this.levels)
+ .map(key => key.toLowerCase())
+ .filter(key => key !== 'silent');
+ }
+
+ // eslint-disable-next-line class-methods-use-this
+ bindMethod(obj, methodName) {
+ const method = obj[methodName];
+ if (typeof method.bind === 'function') {
+ return method.bind(obj);
+ }
+
+ try {
+ return Function.prototype.bind.call(method, obj);
+ } catch (e) {
+ // Missing bind shim or IE8 + Modernizr, fallback to wrapping
+ return function result() {
+ // eslint-disable-next-line prefer-rest-params
+ return Function.prototype.apply.apply(method, [obj, arguments]);
+ };
+ }
+ }
+
+ distillLevel(level) {
+ let result = level;
+
+ if (typeof result === 'string' && typeof this.levels[result.toUpperCase()] !== 'undefined') {
+ result = this.levels[result.toUpperCase()];
+ }
+
+ if (this.levelValid(result)) {
+ return result;
+ }
+ }
+
+ levelValid(level) {
+ if (typeof level === 'number' && level >= 0 && level <= this.levels.SILENT) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Build the best logging method possible for this env
+ * Wherever possible we want to bind, not wrap, to preserve stack traces.
+ * Since we're targeting modern browsers, there's no need to wait for the
+ * console to become available.
+ */
+ // eslint-disable-next-line class-methods-use-this
+ make(methodName) {
+ if (methodName === 'debug') {
+ methodName = 'log';
+ }
+
+ /* eslint-disable no-console */
+ if (typeof console[methodName] !== 'undefined') {
+ return this.bindMethod(console, methodName);
+ } else if (typeof console.log !== 'undefined') {
+ return this.bindMethod(console, 'log');
+ }
+
+ /* eslint-enable no-console */
+ return noop;
+ }
+
+ replaceMethods(logLevel) {
+ const level = this.distillLevel(logLevel);
+
+ if (level == null) {
+ throw new Error(`loglevelnext: replaceMethods() called with invalid level: ${logLevel}`);
+ }
+
+ if (!this.logger || this.logger.type !== 'LogLevel') {
+ throw new TypeError('loglevelnext: Logger is undefined or invalid. Please specify a valid Logger instance.');
+ }
+
+ this.methods.forEach((methodName) => {
+ const { [methodName.toUpperCase()]: methodLevel } = this.levels;
+
+ this.logger[methodName] = (methodLevel < level) ? noop : this.make(methodName);
+ });
+
+ // Define log.log as an alias for log.debug
+ this.logger.log = this.logger.debug;
+ }
+};
diff --git a/node_modules/loglevelnext/package.json b/node_modules/loglevelnext/package.json
new file mode 100644
index 00000000..2772015f
--- /dev/null
+++ b/node_modules/loglevelnext/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "loglevelnext",
+ "version": "1.0.5",
+ "description": "A modern logging library for Node.js and modern browsers that provides log level mapping to the console",
+ "license": "MIT",
+ "repository": "shellscape/loglevelnext",
+ "author": "Andrew Powell <andrew@shellscape.org>",
+ "homepage": "https://github.com/shellscape/loglevelnext",
+ "main": "index.js",
+ "engines": {
+ "node": ">= 6"
+ },
+ "scripts": {
+ "build": "npm run build:dev && npm run build:prod",
+ "build:dev": "NODE_ENV=development webpack index.js",
+ "build:prod": "NODE_ENV=production webpack index.js",
+ "ci": "npm run cover -- --report lcovonly && npm run lint && npm run test",
+ "check-node": "check-node-version --node 9",
+ "cover": "istanbul cover node_modules/mocha/bin/_mocha",
+ "lint": "eslint index.js lib test",
+ "test": "npm run test:node && npm run test:browser",
+ "test:browser": "if npm run check-node --silent; then mocha-chrome test/tests/browser/entry.html; else npm run test:browser:skip; fi",
+ "test:browser:skip": "echo \"\\nSkipping Browser Test\\n\\n\\033[32mTests Completed Successfully\\033[0m\"",
+ "test:node": "mocha --full-trace --check-leaks"
+ },
+ "files": [
+ "dist/",
+ "factory/",
+ "lib/",
+ "index.js"
+ ],
+ "keywords": [
+ "browser",
+ "console",
+ "debug",
+ "error",
+ "level",
+ "levels",
+ "log",
+ "logger",
+ "logging",
+ "loglevel",
+ "persist",
+ "persistent",
+ "plugins",
+ "prefix",
+ "trace",
+ "warn"
+ ],
+ "dependencies": {
+ "es6-symbol": "^3.1.1",
+ "object.assign": "^4.1.0"
+ },
+ "devDependencies": {
+ "@babel/cli": "^7.0.0-beta.46",
+ "@babel/core": "^7.0.0-beta.46",
+ "@babel/polyfill": "^7.0.0-beta.46",
+ "@babel/preset-env": "^7.0.0-beta.46",
+ "@babel/register": "^7.0.0-beta.46",
+ "assert": "^1.4.1",
+ "babel-loader": "^8.0.0-beta.2",
+ "better-assert": "github:devinrhode2/better-assert-browser",
+ "chalk": "^2.3.0",
+ "check-node-version": "^3.1.1",
+ "codecov.io": "^0.1.6",
+ "eslint": "^4.13.1",
+ "eslint-config-webpack": "^1.2.5",
+ "eslint-plugin-import": "^2.8.0",
+ "istanbul": "^0.4.5",
+ "mocha": "^5.1.1",
+ "mocha-chrome": "^1.0.2",
+ "sinon": "^4.1.3",
+ "webpack": "^4.0.0-alpha.1",
+ "webpack-cli": "^2.0.2"
+ }
+}