Skip to content
Snippets Groups Projects
onDeleteAccount.js 8.09 MiB
Newer Older
  • Learn to ignore specific revisions
  • 
    exports.init = init;
    exports.log = log;
    exports.formatArgs = formatArgs;
    exports.save = save;
    exports.load = load;
    exports.useColors = useColors;
    exports.destroy = util.deprecate(
    	() => {},
    	'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'
    );
    
    /**
     * Colors.
     */
    
    exports.colors = [6, 2, 3, 4, 5, 1];
    
    try {
    	// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)
    	// eslint-disable-next-line import/no-extraneous-dependencies
    
    	const supportsColor = __webpack_require__(1408);
    
    
    	if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
    		exports.colors = [
    			20,
    			21,
    			26,
    			27,
    			32,
    			33,
    			38,
    			39,
    			40,
    			41,
    			42,
    			43,
    			44,
    			45,
    			56,
    			57,
    			62,
    			63,
    			68,
    			69,
    			74,
    			75,
    			76,
    			77,
    			78,
    			79,
    			80,
    			81,
    			92,
    			93,
    			98,
    			99,
    			112,
    			113,
    			128,
    			129,
    			134,
    			135,
    			148,
    			149,
    			160,
    			161,
    			162,
    			163,
    			164,
    			165,
    			166,
    			167,
    			168,
    			169,
    			170,
    			171,
    			172,
    			173,
    			178,
    			179,
    			184,
    			185,
    			196,
    			197,
    			198,
    			199,
    			200,
    			201,
    			202,
    			203,
    			204,
    			205,
    			206,
    			207,
    			208,
    			209,
    			214,
    			215,
    			220,
    			221
    		];
    	}
    } catch (error) {
    	// Swallow - we only care if `supports-color` is available; it doesn't have to be.
    }
    
    /**
     * Build up the default `inspectOpts` object from the environment variables.
     *
     *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
     */
    
    exports.inspectOpts = Object.keys(process.env).filter(key => {
    	return /^debug_/i.test(key);
    }).reduce((obj, key) => {
    	// Camel-case
    	const prop = key
    		.substring(6)
    		.toLowerCase()
    		.replace(/_([a-z])/g, (_, k) => {
    			return k.toUpperCase();
    		});
    
    	// Coerce string value into JS value
    	let val = process.env[key];
    	if (/^(yes|on|true|enabled)$/i.test(val)) {
    		val = true;
    	} else if (/^(no|off|false|disabled)$/i.test(val)) {
    		val = false;
    	} else if (val === 'null') {
    		val = null;
    	} else {
    		val = Number(val);
    	}
    
    	obj[prop] = val;
    	return obj;
    }, {});
    
    /**
     * Is stdout a TTY? Colored output is enabled when `true`.
     */
    
    function useColors() {
    	return 'colors' in exports.inspectOpts ?
    		Boolean(exports.inspectOpts.colors) :
    		tty.isatty(process.stderr.fd);
    }
    
    /**
     * Adds ANSI color escape codes if enabled.
     *
     * @api public
     */
    
    function formatArgs(args) {
    	const {namespace: name, useColors} = this;
    
    	if (useColors) {
    		const c = this.color;
    		const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c);
    		const prefix = `  ${colorCode};1m${name} \u001B[0m`;
    
    		args[0] = prefix + args[0].split('\n').join('\n' + prefix);
    		args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m');
    	} else {
    		args[0] = getDate() + name + ' ' + args[0];
    	}
    }
    
    function getDate() {
    	if (exports.inspectOpts.hideDate) {
    		return '';
    	}
    	return new Date().toISOString() + ' ';
    }
    
    /**
     * Invokes `util.format()` with the specified arguments and writes to stderr.
     */
    
    function log(...args) {
    	return process.stderr.write(util.format(...args) + '\n');
    }
    
    /**
     * Save `namespaces`.
     *
     * @param {String} namespaces
     * @api private
     */
    function save(namespaces) {
    	if (namespaces) {
    		process.env.DEBUG = namespaces;
    	} else {
    		// If you set a process.env field to null or undefined, it gets cast to the
    		// string 'null' or 'undefined'. Just delete instead.
    		delete process.env.DEBUG;
    	}
    }
    
    /**
     * Load `namespaces`.
     *
     * @return {String} returns the previously persisted debug modes
     * @api private
     */
    
    function load() {
    	return process.env.DEBUG;
    }
    
    /**
     * Init logic for `debug` instances.
     *
     * Create a new `inspectOpts` object in case `useColors` is set
     * differently for a particular `debug` instance.
     */
    
    function init(debug) {
    	debug.inspectOpts = {};
    
    	const keys = Object.keys(exports.inspectOpts);
    	for (let i = 0; i < keys.length; i++) {
    		debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
    	}
    }
    
    
    module.exports = __webpack_require__(1679)(exports);
    
    
    const {formatters} = module.exports;
    
    /**
     * Map %o to `util.inspect()`, all on a single line.
     */
    
    formatters.o = function (v) {
    	this.inspectOpts.colors = this.useColors;
    	return util.inspect(v, this.inspectOpts)
    		.split('\n')
    		.map(str => str.trim())
    		.join(' ');
    };
    
    /**
     * Map %O to `util.inspect()`, allowing multiple lines if needed.
     */
    
    formatters.O = function (v) {
    	this.inspectOpts.colors = this.useColors;
    	return util.inspect(v, this.inspectOpts);
    };
    
    
    /***/ }),
    
    /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
    
    "use strict";
    
    var __importDefault = (this && this.__importDefault) || function (mod) {
        return (mod && mod.__esModule) ? mod : { "default": mod };
    };
    const events_1 = __webpack_require__(250);
    
    const debug_1 = __importDefault(__webpack_require__(1682));
    const promisify_1 = __importDefault(__webpack_require__(1686));
    
    const debug = debug_1.default('agent-base');
    function isAgent(v) {
        return Boolean(v) && typeof v.addRequest === 'function';
    }
    function isSecureEndpoint() {
        const { stack } = new Error();
        if (typeof stack !== 'string')
            return false;
        return stack.split('\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);
    }
    function createAgent(callback, opts) {
        return new createAgent.Agent(callback, opts);
    }
    (function (createAgent) {
        /**
         * Base `http.Agent` implementation.
         * No pooling/keep-alive is implemented by default.
         *
         * @param {Function} callback
         * @api public
         */
        class Agent extends events_1.EventEmitter {
            constructor(callback, _opts) {
                super();
                let opts = _opts;
                if (typeof callback === 'function') {
                    this.callback = callback;
                }
                else if (callback) {
                    opts = callback;
                }
                // Timeout for the socket to be returned from the callback
                this.timeout = null;
                if (opts && typeof opts.timeout === 'number') {
                    this.timeout = opts.timeout;
                }
                // These aren't actually used by `agent-base`, but are required
                // for the TypeScript definition files in `@types/node` :/
                this.maxFreeSockets = 1;
                this.maxSockets = 1;
                this.maxTotalSockets = Infinity;
                this.sockets = {};
                this.freeSockets = {};
                this.requests = {};
                this.options = {};
            }
            get defaultPort() {
                if (typeof this.explicitDefaultPort === 'number') {
                    return this.explicitDefaultPort;
                }
                return isSecureEndpoint() ? 443 : 80;
            }
            set defaultPort(v) {
                this.explicitDefaultPort = v;
            }
            get protocol() {
                if (typeof this.explicitProtocol === 'string') {
                    return this.explicitProtocol;
                }
                return isSecureEndpoint() ? 'https:' : 'http:';
            }
            set protocol(v) {
                this.explicitProtocol = v;
            }
            callback(req, opts, fn) {
                throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`');
            }
            /**
             * Called by node-core's "_http_client.js" module when creating
             * a new HTTP request with this Agent instance.
             *
             * @api public
             */
            addRequest(req, _opts) {
                const opts = Object.assign({}, _opts);
                if (typeof opts.secureEndpoint !== 'boolean') {
                    opts.secureEndpoint = isSecureEndpoint();
                }
                if (opts.host == null) {
                    opts.host = 'localhost';
                }
                if (opts.port == null) {
                    opts.port = opts.secureEndpoint ? 443 : 80;
                }
                if (opts.protocol == null) {
                    opts.protocol = opts.secureEndpoint ? 'https:' : 'http:';
                }
                if (opts.host && opts.path) {
                    // If both a `host` and `path` are specified then it's most
                    // likely the result of a `url.parse()` call... we need to
                    // remove the `path` portion so that `net.connect()` doesn't
                    // attempt to open that as a unix socket file.
                    delete opts.path;
                }
                delete opts.agent;
                delete opts.hostname;
                delete opts._defaultAgent;
                delete opts.defaultPort;
                delete opts.createConnection;
                // Hint to use "Connection: close"
                // XXX: non-documented `http` module API :(
                req._last = true;
                req.shouldKeepAlive = false;
                let timedOut = false;
                let timeoutId = null;
                const timeoutMs = opts.timeout || this.timeout;
                const onerror = (err) => {
                    if (req._hadError)
                        return;
                    req.emit('error', err);
                    // For Safety. Some additional errors might fire later on
                    // and we need to make sure we don't double-fire the error event.
                    req._hadError = true;
                };
                const ontimeout = () => {
                    timeoutId = null;
                    timedOut = true;
                    const err = new Error(`A "socket" was not created for HTTP request before ${timeoutMs}ms`);
                    err.code = 'ETIMEOUT';
                    onerror(err);
                };
                const callbackError = (err) => {
                    if (timedOut)
                        return;
                    if (timeoutId !== null) {
                        clearTimeout(timeoutId);
                        timeoutId = null;
                    }
                    onerror(err);
                };
                const onsocket = (socket) => {
                    if (timedOut)
                        return;
                    if (timeoutId != null) {
                        clearTimeout(timeoutId);
                        timeoutId = null;
                    }
                    if (isAgent(socket)) {
                        // `socket` is actually an `http.Agent` instance, so
                        // relinquish responsibility for this `req` to the Agent
                        // from here on
                        debug('Callback returned another Agent instance %o', socket.constructor.name);
                        socket.addRequest(req, opts);
                        return;
                    }
                    if (socket) {
                        socket.once('free', () => {
                            this.freeSocket(socket, opts);
                        });
                        req.onSocket(socket);
                        return;
                    }
                    const err = new Error(`no Duplex stream was returned to agent-base for \`${req.method} ${req.path}\``);
                    onerror(err);
                };
                if (typeof this.callback !== 'function') {
                    onerror(new Error('`callback` is not defined'));
                    return;
                }
                if (!this.promisifiedCallback) {
                    if (this.callback.length >= 3) {
                        debug('Converting legacy callback function to promise');
                        this.promisifiedCallback = promisify_1.default(this.callback);
                    }
                    else {
                        this.promisifiedCallback = this.callback;
                    }
                }
                if (typeof timeoutMs === 'number' && timeoutMs > 0) {
                    timeoutId = setTimeout(ontimeout, timeoutMs);
                }
                if ('port' in opts && typeof opts.port !== 'number') {
                    opts.port = Number(opts.port);
                }
                try {
                    debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`);
                    Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError);
                }
                catch (err) {
                    Promise.reject(err).catch(callbackError);
                }
            }
            freeSocket(socket, opts) {
                debug('Freeing socket %o %o', socket.constructor.name, opts);
                socket.destroy();
            }
            destroy() {
                debug('Destroying agent %o', this.constructor.name);
            }
        }
        createAgent.Agent = Agent;
        // So that `instanceof` works correctly
        createAgent.prototype = createAgent.Agent.prototype;
    })(createAgent || (createAgent = {}));
    module.exports = createAgent;
    //# sourceMappingURL=index.js.map
    
    /***/ }),
    
    /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
    
    /**
     * Detect Electron renderer / nwjs process, which is node, but we should
     * treat as a browser.
     */
    
    if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
    
    	module.exports = __webpack_require__(1683);
    
    } else {
    
    	module.exports = __webpack_require__(1685);
    
    240483 240484 240485 240486 240487 240488 240489 240490 240491 240492 240493 240494 240495 240496 240497 240498 240499 240500 240501 240502 240503 240504 240505 240506 240507 240508 240509 240510 240511 240512 240513 240514 240515 240516 240517 240518 240519 240520 240521 240522 240523 240524 240525 240526 240527 240528 240529 240530 240531 240532 240533 240534 240535 240536 240537 240538 240539 240540 240541 240542 240543 240544 240545 240546 240547 240548 240549 240550 240551 240552 240553 240554 240555 240556 240557 240558 240559 240560 240561 240562 240563 240564 240565 240566 240567 240568 240569 240570 240571 240572 240573 240574 240575 240576 240577 240578 240579 240580 240581 240582 240583 240584 240585 240586 240587 240588 240589 240590 240591 240592 240593 240594 240595 240596 240597 240598 240599 240600 240601 240602 240603 240604 240605 240606 240607 240608 240609 240610 240611 240612 240613 240614 240615 240616 240617 240618 240619 240620 240621 240622 240623 240624 240625 240626 240627 240628 240629 240630 240631 240632 240633 240634 240635 240636 240637 240638 240639 240640 240641 240642 240643 240644 240645 240646 240647 240648 240649 240650 240651 240652 240653 240654 240655 240656 240657 240658 240659 240660 240661 240662 240663 240664 240665 240666 240667 240668 240669 240670 240671 240672 240673 240674 240675 240676 240677 240678 240679 240680 240681 240682 240683 240684 240685 240686 240687 240688 240689 240690 240691 240692 240693 240694 240695 240696 240697 240698 240699 240700 240701 240702 240703 240704 240705 240706 240707 240708 240709 240710 240711 240712 240713 240714 240715 240716 240717 240718 240719 240720 240721 240722 240723 240724 240725 240726 240727 240728 240729 240730 240731 240732 240733 240734 240735 240736 240737 240738
    /***/ ((module, exports, __webpack_require__) => {
    
    /* eslint-env browser */
    
    /**
     * This is the web browser implementation of `debug()`.
     */
    
    exports.formatArgs = formatArgs;
    exports.save = save;
    exports.load = load;
    exports.useColors = useColors;
    exports.storage = localstorage();
    exports.destroy = (() => {
    	let warned = false;
    
    	return () => {
    		if (!warned) {
    			warned = true;
    			console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
    		}
    	};
    })();
    
    /**
     * Colors.
     */
    
    exports.colors = [
    	'#0000CC',
    	'#0000FF',
    	'#0033CC',
    	'#0033FF',
    	'#0066CC',
    	'#0066FF',
    	'#0099CC',
    	'#0099FF',
    	'#00CC00',
    	'#00CC33',
    	'#00CC66',
    	'#00CC99',
    	'#00CCCC',
    	'#00CCFF',
    	'#3300CC',
    	'#3300FF',
    	'#3333CC',
    	'#3333FF',
    	'#3366CC',
    	'#3366FF',
    	'#3399CC',
    	'#3399FF',
    	'#33CC00',
    	'#33CC33',
    	'#33CC66',
    	'#33CC99',
    	'#33CCCC',
    	'#33CCFF',
    	'#6600CC',
    	'#6600FF',
    	'#6633CC',
    	'#6633FF',
    	'#66CC00',
    	'#66CC33',
    	'#9900CC',
    	'#9900FF',
    	'#9933CC',
    	'#9933FF',
    	'#99CC00',
    	'#99CC33',
    	'#CC0000',
    	'#CC0033',
    	'#CC0066',
    	'#CC0099',
    	'#CC00CC',
    	'#CC00FF',
    	'#CC3300',
    	'#CC3333',
    	'#CC3366',
    	'#CC3399',
    	'#CC33CC',
    	'#CC33FF',
    	'#CC6600',
    	'#CC6633',
    	'#CC9900',
    	'#CC9933',
    	'#CCCC00',
    	'#CCCC33',
    	'#FF0000',
    	'#FF0033',
    	'#FF0066',
    	'#FF0099',
    	'#FF00CC',
    	'#FF00FF',
    	'#FF3300',
    	'#FF3333',
    	'#FF3366',
    	'#FF3399',
    	'#FF33CC',
    	'#FF33FF',
    	'#FF6600',
    	'#FF6633',
    	'#FF9900',
    	'#FF9933',
    	'#FFCC00',
    	'#FFCC33'
    ];
    
    /**
     * Currently only WebKit-based Web Inspectors, Firefox >= v31,
     * and the Firebug extension (any Firefox version) are known
     * to support "%c" CSS customizations.
     *
     * TODO: add a `localStorage` variable to explicitly enable/disable colors
     */
    
    // eslint-disable-next-line complexity
    function useColors() {
    	// NB: In an Electron preload script, document will be defined but not fully
    	// initialized. Since we know we're in Chrome, we'll just detect this case
    	// explicitly
    	if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
    		return true;
    	}
    
    	// Internet Explorer and Edge do not support colors.
    	if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
    		return false;
    	}
    
    	// Is webkit? http://stackoverflow.com/a/16459606/376773
    	// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
    	return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
    		// Is firebug? http://stackoverflow.com/a/398120/376773
    		(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
    		// Is firefox >= v31?
    		// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
    		(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
    		// Double check webkit in userAgent just in case we are in a worker
    		(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
    }
    
    /**
     * Colorize log arguments if enabled.
     *
     * @api public
     */
    
    function formatArgs(args) {
    	args[0] = (this.useColors ? '%c' : '') +
    		this.namespace +
    		(this.useColors ? ' %c' : ' ') +
    		args[0] +
    		(this.useColors ? '%c ' : ' ') +
    		'+' + module.exports.humanize(this.diff);
    
    	if (!this.useColors) {
    		return;
    	}
    
    	const c = 'color: ' + this.color;
    	args.splice(1, 0, c, 'color: inherit');
    
    	// The final "%c" is somewhat tricky, because there could be other
    	// arguments passed either before or after the %c, so we need to
    	// figure out the correct index to insert the CSS into
    	let index = 0;
    	let lastC = 0;
    	args[0].replace(/%[a-zA-Z%]/g, match => {
    		if (match === '%%') {
    			return;
    		}
    		index++;
    		if (match === '%c') {
    			// We only are interested in the *last* %c
    			// (the user may have provided their own)
    			lastC = index;
    		}
    	});
    
    	args.splice(lastC, 0, c);
    }
    
    /**
     * Invokes `console.debug()` when available.
     * No-op when `console.debug` is not a "function".
     * If `console.debug` is not available, falls back
     * to `console.log`.
     *
     * @api public
     */
    exports.log = console.debug || console.log || (() => {});
    
    /**
     * Save `namespaces`.
     *
     * @param {String} namespaces
     * @api private
     */
    function save(namespaces) {
    	try {
    		if (namespaces) {
    			exports.storage.setItem('debug', namespaces);
    		} else {
    			exports.storage.removeItem('debug');
    		}
    	} catch (error) {
    		// Swallow
    		// XXX (@Qix-) should we be logging these?
    	}
    }
    
    /**
     * Load `namespaces`.
     *
     * @return {String} returns the previously persisted debug modes
     * @api private
     */
    function load() {
    	let r;
    	try {
    		r = exports.storage.getItem('debug');
    	} catch (error) {
    		// Swallow
    		// XXX (@Qix-) should we be logging these?
    	}
    
    	// If debug isn't set in LS, and we're in Electron, try to load $DEBUG
    	if (!r && typeof process !== 'undefined' && 'env' in process) {
    		r = process.env.DEBUG;
    	}
    
    	return r;
    }
    
    /**
     * Localstorage attempts to return the localstorage.
     *
     * This is necessary because safari throws
     * when a user disables cookies/localstorage
     * and you attempt to access it.
     *
     * @return {LocalStorage}
     * @api private
     */
    
    function localstorage() {
    	try {
    		// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
    		// The Browser also has localStorage in the global context.
    		return localStorage;
    	} catch (error) {
    		// Swallow
    		// XXX (@Qix-) should we be logging these?
    	}
    }
    
    
    module.exports = __webpack_require__(1684)(exports);
    
    
    const {formatters} = module.exports;
    
    /**
     * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
     */
    
    formatters.j = function (v) {
    	try {
    		return JSON.stringify(v);
    	} catch (error) {
    		return '[UnexpectedJSONParseError]: ' + error.message;
    	}
    };
    
    
    /***/ }),
    
    /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
    
    
    /**
     * This is the common logic for both the Node.js and web browser
     * implementations of `debug()`.
     */
    
    function setup(env) {
    	createDebug.debug = createDebug;
    	createDebug.default = createDebug;
    	createDebug.coerce = coerce;
    	createDebug.disable = disable;
    	createDebug.enable = enable;
    	createDebug.enabled = enabled;
    
    	createDebug.humanize = __webpack_require__(1405);
    
    240774 240775 240776 240777 240778 240779 240780 240781 240782 240783 240784 240785 240786 240787 240788 240789 240790 240791 240792 240793 240794 240795 240796 240797 240798 240799 240800 240801 240802 240803 240804 240805 240806 240807 240808 240809 240810 240811 240812 240813 240814 240815 240816 240817 240818 240819 240820 240821 240822 240823 240824 240825 240826 240827 240828 240829 240830 240831 240832 240833 240834 240835 240836 240837 240838 240839 240840 240841 240842 240843 240844 240845 240846 240847 240848 240849 240850 240851 240852 240853 240854 240855 240856 240857 240858 240859 240860 240861 240862 240863 240864 240865 240866 240867 240868 240869 240870 240871 240872 240873 240874 240875 240876 240877 240878 240879 240880 240881 240882 240883 240884 240885 240886 240887 240888 240889 240890 240891 240892 240893 240894 240895 240896 240897 240898 240899 240900 240901 240902 240903 240904 240905 240906 240907 240908 240909 240910 240911 240912 240913 240914 240915 240916 240917 240918 240919 240920 240921 240922 240923 240924 240925 240926 240927 240928 240929 240930 240931 240932 240933 240934 240935 240936 240937 240938 240939 240940 240941 240942 240943 240944 240945 240946 240947 240948 240949 240950 240951 240952 240953 240954 240955 240956 240957 240958 240959 240960 240961 240962 240963 240964 240965 240966 240967 240968 240969 240970 240971 240972 240973 240974 240975 240976 240977 240978 240979 240980 240981 240982 240983 240984 240985 240986 240987 240988 240989 240990 240991 240992 240993 240994 240995 240996 240997 240998 240999 241000
    	createDebug.destroy = destroy;
    
    	Object.keys(env).forEach(key => {
    		createDebug[key] = env[key];
    	});
    
    	/**
    	* The currently active debug mode names, and names to skip.
    	*/
    
    	createDebug.names = [];
    	createDebug.skips = [];
    
    	/**
    	* Map of special "%n" handling functions, for the debug "format" argument.
    	*
    	* Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
    	*/
    	createDebug.formatters = {};
    
    	/**
    	* Selects a color for a debug namespace
    	* @param {String} namespace The namespace string for the debug instance to be colored
    	* @return {Number|String} An ANSI color code for the given namespace
    	* @api private
    	*/
    	function selectColor(namespace) {
    		let hash = 0;
    
    		for (let i = 0; i < namespace.length; i++) {
    			hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
    			hash |= 0; // Convert to 32bit integer
    		}
    
    		return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
    	}
    	createDebug.selectColor = selectColor;
    
    	/**
    	* Create a debugger with the given `namespace`.
    	*
    	* @param {String} namespace
    	* @return {Function}
    	* @api public
    	*/
    	function createDebug(namespace) {
    		let prevTime;
    		let enableOverride = null;
    		let namespacesCache;
    		let enabledCache;
    
    		function debug(...args) {
    			// Disabled?
    			if (!debug.enabled) {
    				return;
    			}
    
    			const self = debug;
    
    			// Set `diff` timestamp
    			const curr = Number(new Date());
    			const ms = curr - (prevTime || curr);
    			self.diff = ms;
    			self.prev = prevTime;
    			self.curr = curr;
    			prevTime = curr;
    
    			args[0] = createDebug.coerce(args[0]);
    
    			if (typeof args[0] !== 'string') {
    				// Anything else let's inspect with %O
    				args.unshift('%O');
    			}
    
    			// Apply any `formatters` transformations
    			let index = 0;
    			args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
    				// If we encounter an escaped % then don't increase the array index
    				if (match === '%%') {
    					return '%';
    				}
    				index++;
    				const formatter = createDebug.formatters[format];
    				if (typeof formatter === 'function') {
    					const val = args[index];
    					match = formatter.call(self, val);
    
    					// Now we need to remove `args[index]` since it's inlined in the `format`
    					args.splice(index, 1);
    					index--;
    				}
    				return match;
    			});
    
    			// Apply env-specific formatting (colors, etc.)
    			createDebug.formatArgs.call(self, args);
    
    			const logFn = self.log || createDebug.log;
    			logFn.apply(self, args);
    		}
    
    		debug.namespace = namespace;
    		debug.useColors = createDebug.useColors();
    		debug.color = createDebug.selectColor(namespace);
    		debug.extend = extend;
    		debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.
    
    		Object.defineProperty(debug, 'enabled', {
    			enumerable: true,
    			configurable: false,
    			get: () => {
    				if (enableOverride !== null) {
    					return enableOverride;
    				}
    				if (namespacesCache !== createDebug.namespaces) {
    					namespacesCache = createDebug.namespaces;
    					enabledCache = createDebug.enabled(namespace);
    				}
    
    				return enabledCache;
    			},
    			set: v => {
    				enableOverride = v;
    			}
    		});
    
    		// Env-specific initialization logic for debug instances
    		if (typeof createDebug.init === 'function') {
    			createDebug.init(debug);
    		}
    
    		return debug;
    	}
    
    	function extend(namespace, delimiter) {
    		const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
    		newDebug.log = this.log;
    		return newDebug;
    	}
    
    	/**
    	* Enables a debug mode by namespaces. This can include modes
    	* separated by a colon and wildcards.
    	*
    	* @param {String} namespaces
    	* @api public
    	*/
    	function enable(namespaces) {
    		createDebug.save(namespaces);
    		createDebug.namespaces = namespaces;
    
    		createDebug.names = [];
    		createDebug.skips = [];
    
    		let i;
    		const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
    		const len = split.length;
    
    		for (i = 0; i < len; i++) {
    			if (!split[i]) {
    				// ignore empty strings
    				continue;
    			}
    
    			namespaces = split[i].replace(/\*/g, '.*?');
    
    			if (namespaces[0] === '-') {
    				createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
    			} else {
    				createDebug.names.push(new RegExp('^' + namespaces + '$'));
    			}
    		}
    	}
    
    	/**
    	* Disable debug output.
    	*
    	* @return {String} namespaces
    	* @api public
    	*/
    	function disable() {
    		const namespaces = [
    			...createDebug.names.map(toNamespace),
    			...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)
    		].join(',');
    		createDebug.enable('');
    		return namespaces;
    	}
    
    	/**
    	* Returns true if the given mode name is enabled, false otherwise.
    	*
    	* @param {String} name
    	* @return {Boolean}
    	* @api public
    	*/
    	function enabled(name) {
    		if (name[name.length - 1] === '*') {
    			return true;
    		}
    
    		let i;
    		let len;
    
    		for (i = 0, len = createDebug.skips.length; i < len; i++) {
    			if (createDebug.skips[i].test(name)) {
    				return false;
    			}
    		}
    
    		for (i = 0, len = createDebug.names.length; i < len; i++) {
    			if (createDebug.names[i].test(name)) {
    				return true;
    			}
    		}
    
    		return false;
    	}
    
    	/**
    	* Convert regexp to namespace
    	*
    	* @param {RegExp} regxep
    	* @return {String} namespace
    	* @api private
    	*/
    	function toNamespace(regexp) {