mirror of https://github.com/IoTcat/FDC.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
912 lines
27 KiB
912 lines
27 KiB
"use strict"; |
|
|
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } |
|
|
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } |
|
|
|
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } |
|
|
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } |
|
|
|
function _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); } |
|
|
|
(function (f) { |
|
if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined") { |
|
module.exports = f(); |
|
} else if (typeof define === "function" && define.amd) { |
|
define([], f); |
|
} else { |
|
var g; |
|
|
|
if (typeof window !== "undefined") { |
|
g = window; |
|
} else if (typeof global !== "undefined") { |
|
g = global; |
|
} else if (typeof self !== "undefined") { |
|
g = self; |
|
} else { |
|
g = this; |
|
} |
|
|
|
g.debug = f(); |
|
} |
|
})(function () { |
|
var define, module, exports; |
|
return function () { |
|
function r(e, n, t) { |
|
function o(i, f) { |
|
if (!n[i]) { |
|
if (!e[i]) { |
|
var c = "function" == typeof require && require; |
|
if (!f && c) return c(i, !0); |
|
if (u) return u(i, !0); |
|
var a = new Error("Cannot find module '" + i + "'"); |
|
throw a.code = "MODULE_NOT_FOUND", a; |
|
} |
|
|
|
var p = n[i] = { |
|
exports: {} |
|
}; |
|
e[i][0].call(p.exports, function (r) { |
|
var n = e[i][1][r]; |
|
return o(n || r); |
|
}, p, p.exports, r, e, n, t); |
|
} |
|
|
|
return n[i].exports; |
|
} |
|
|
|
for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) { |
|
o(t[i]); |
|
} |
|
|
|
return o; |
|
} |
|
|
|
return r; |
|
}()({ |
|
1: [function (require, module, exports) { |
|
/** |
|
* Helpers. |
|
*/ |
|
var s = 1000; |
|
var m = s * 60; |
|
var h = m * 60; |
|
var d = h * 24; |
|
var w = d * 7; |
|
var y = d * 365.25; |
|
/** |
|
* Parse or format the given `val`. |
|
* |
|
* Options: |
|
* |
|
* - `long` verbose formatting [false] |
|
* |
|
* @param {String|Number} val |
|
* @param {Object} [options] |
|
* @throws {Error} throw an error if val is not a non-empty string or a number |
|
* @return {String|Number} |
|
* @api public |
|
*/ |
|
|
|
module.exports = function (val, options) { |
|
options = options || {}; |
|
|
|
var type = _typeof(val); |
|
|
|
if (type === 'string' && val.length > 0) { |
|
return parse(val); |
|
} else if (type === 'number' && isNaN(val) === false) { |
|
return options.long ? fmtLong(val) : fmtShort(val); |
|
} |
|
|
|
throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val)); |
|
}; |
|
/** |
|
* Parse the given `str` and return milliseconds. |
|
* |
|
* @param {String} str |
|
* @return {Number} |
|
* @api private |
|
*/ |
|
|
|
|
|
function parse(str) { |
|
str = String(str); |
|
|
|
if (str.length > 100) { |
|
return; |
|
} |
|
|
|
var match = /^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str); |
|
|
|
if (!match) { |
|
return; |
|
} |
|
|
|
var n = parseFloat(match[1]); |
|
var type = (match[2] || 'ms').toLowerCase(); |
|
|
|
switch (type) { |
|
case 'years': |
|
case 'year': |
|
case 'yrs': |
|
case 'yr': |
|
case 'y': |
|
return n * y; |
|
|
|
case 'weeks': |
|
case 'week': |
|
case 'w': |
|
return n * w; |
|
|
|
case 'days': |
|
case 'day': |
|
case 'd': |
|
return n * d; |
|
|
|
case 'hours': |
|
case 'hour': |
|
case 'hrs': |
|
case 'hr': |
|
case 'h': |
|
return n * h; |
|
|
|
case 'minutes': |
|
case 'minute': |
|
case 'mins': |
|
case 'min': |
|
case 'm': |
|
return n * m; |
|
|
|
case 'seconds': |
|
case 'second': |
|
case 'secs': |
|
case 'sec': |
|
case 's': |
|
return n * s; |
|
|
|
case 'milliseconds': |
|
case 'millisecond': |
|
case 'msecs': |
|
case 'msec': |
|
case 'ms': |
|
return n; |
|
|
|
default: |
|
return undefined; |
|
} |
|
} |
|
/** |
|
* Short format for `ms`. |
|
* |
|
* @param {Number} ms |
|
* @return {String} |
|
* @api private |
|
*/ |
|
|
|
|
|
function fmtShort(ms) { |
|
var msAbs = Math.abs(ms); |
|
|
|
if (msAbs >= d) { |
|
return Math.round(ms / d) + 'd'; |
|
} |
|
|
|
if (msAbs >= h) { |
|
return Math.round(ms / h) + 'h'; |
|
} |
|
|
|
if (msAbs >= m) { |
|
return Math.round(ms / m) + 'm'; |
|
} |
|
|
|
if (msAbs >= s) { |
|
return Math.round(ms / s) + 's'; |
|
} |
|
|
|
return ms + 'ms'; |
|
} |
|
/** |
|
* Long format for `ms`. |
|
* |
|
* @param {Number} ms |
|
* @return {String} |
|
* @api private |
|
*/ |
|
|
|
|
|
function fmtLong(ms) { |
|
var msAbs = Math.abs(ms); |
|
|
|
if (msAbs >= d) { |
|
return plural(ms, msAbs, d, 'day'); |
|
} |
|
|
|
if (msAbs >= h) { |
|
return plural(ms, msAbs, h, 'hour'); |
|
} |
|
|
|
if (msAbs >= m) { |
|
return plural(ms, msAbs, m, 'minute'); |
|
} |
|
|
|
if (msAbs >= s) { |
|
return plural(ms, msAbs, s, 'second'); |
|
} |
|
|
|
return ms + ' ms'; |
|
} |
|
/** |
|
* Pluralization helper. |
|
*/ |
|
|
|
|
|
function plural(ms, msAbs, n, name) { |
|
var isPlural = msAbs >= n * 1.5; |
|
return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); |
|
} |
|
}, {}], |
|
2: [function (require, module, exports) { |
|
// shim for using process in browser |
|
var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it |
|
// don't break things. But we need to wrap it in a try catch in case it is |
|
// wrapped in strict mode code which doesn't define any globals. It's inside a |
|
// function because try/catches deoptimize in certain engines. |
|
|
|
var cachedSetTimeout; |
|
var cachedClearTimeout; |
|
|
|
function defaultSetTimout() { |
|
throw new Error('setTimeout has not been defined'); |
|
} |
|
|
|
function defaultClearTimeout() { |
|
throw new Error('clearTimeout has not been defined'); |
|
} |
|
|
|
(function () { |
|
try { |
|
if (typeof setTimeout === 'function') { |
|
cachedSetTimeout = setTimeout; |
|
} else { |
|
cachedSetTimeout = defaultSetTimout; |
|
} |
|
} catch (e) { |
|
cachedSetTimeout = defaultSetTimout; |
|
} |
|
|
|
try { |
|
if (typeof clearTimeout === 'function') { |
|
cachedClearTimeout = clearTimeout; |
|
} else { |
|
cachedClearTimeout = defaultClearTimeout; |
|
} |
|
} catch (e) { |
|
cachedClearTimeout = defaultClearTimeout; |
|
} |
|
})(); |
|
|
|
function runTimeout(fun) { |
|
if (cachedSetTimeout === setTimeout) { |
|
//normal enviroments in sane situations |
|
return setTimeout(fun, 0); |
|
} // if setTimeout wasn't available but was latter defined |
|
|
|
|
|
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { |
|
cachedSetTimeout = setTimeout; |
|
return setTimeout(fun, 0); |
|
} |
|
|
|
try { |
|
// when when somebody has screwed with setTimeout but no I.E. maddness |
|
return cachedSetTimeout(fun, 0); |
|
} catch (e) { |
|
try { |
|
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally |
|
return cachedSetTimeout.call(null, fun, 0); |
|
} catch (e) { |
|
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error |
|
return cachedSetTimeout.call(this, fun, 0); |
|
} |
|
} |
|
} |
|
|
|
function runClearTimeout(marker) { |
|
if (cachedClearTimeout === clearTimeout) { |
|
//normal enviroments in sane situations |
|
return clearTimeout(marker); |
|
} // if clearTimeout wasn't available but was latter defined |
|
|
|
|
|
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { |
|
cachedClearTimeout = clearTimeout; |
|
return clearTimeout(marker); |
|
} |
|
|
|
try { |
|
// when when somebody has screwed with setTimeout but no I.E. maddness |
|
return cachedClearTimeout(marker); |
|
} catch (e) { |
|
try { |
|
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally |
|
return cachedClearTimeout.call(null, marker); |
|
} catch (e) { |
|
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. |
|
// Some versions of I.E. have different rules for clearTimeout vs setTimeout |
|
return cachedClearTimeout.call(this, marker); |
|
} |
|
} |
|
} |
|
|
|
var queue = []; |
|
var draining = false; |
|
var currentQueue; |
|
var queueIndex = -1; |
|
|
|
function cleanUpNextTick() { |
|
if (!draining || !currentQueue) { |
|
return; |
|
} |
|
|
|
draining = false; |
|
|
|
if (currentQueue.length) { |
|
queue = currentQueue.concat(queue); |
|
} else { |
|
queueIndex = -1; |
|
} |
|
|
|
if (queue.length) { |
|
drainQueue(); |
|
} |
|
} |
|
|
|
function drainQueue() { |
|
if (draining) { |
|
return; |
|
} |
|
|
|
var timeout = runTimeout(cleanUpNextTick); |
|
draining = true; |
|
var len = queue.length; |
|
|
|
while (len) { |
|
currentQueue = queue; |
|
queue = []; |
|
|
|
while (++queueIndex < len) { |
|
if (currentQueue) { |
|
currentQueue[queueIndex].run(); |
|
} |
|
} |
|
|
|
queueIndex = -1; |
|
len = queue.length; |
|
} |
|
|
|
currentQueue = null; |
|
draining = false; |
|
runClearTimeout(timeout); |
|
} |
|
|
|
process.nextTick = function (fun) { |
|
var args = new Array(arguments.length - 1); |
|
|
|
if (arguments.length > 1) { |
|
for (var i = 1; i < arguments.length; i++) { |
|
args[i - 1] = arguments[i]; |
|
} |
|
} |
|
|
|
queue.push(new Item(fun, args)); |
|
|
|
if (queue.length === 1 && !draining) { |
|
runTimeout(drainQueue); |
|
} |
|
}; // v8 likes predictible objects |
|
|
|
|
|
function Item(fun, array) { |
|
this.fun = fun; |
|
this.array = array; |
|
} |
|
|
|
Item.prototype.run = function () { |
|
this.fun.apply(null, this.array); |
|
}; |
|
|
|
process.title = 'browser'; |
|
process.browser = true; |
|
process.env = {}; |
|
process.argv = []; |
|
process.version = ''; // empty string to avoid regexp issues |
|
|
|
process.versions = {}; |
|
|
|
function noop() {} |
|
|
|
process.on = noop; |
|
process.addListener = noop; |
|
process.once = noop; |
|
process.off = noop; |
|
process.removeListener = noop; |
|
process.removeAllListeners = noop; |
|
process.emit = noop; |
|
process.prependListener = noop; |
|
process.prependOnceListener = noop; |
|
|
|
process.listeners = function (name) { |
|
return []; |
|
}; |
|
|
|
process.binding = function (name) { |
|
throw new Error('process.binding is not supported'); |
|
}; |
|
|
|
process.cwd = function () { |
|
return '/'; |
|
}; |
|
|
|
process.chdir = function (dir) { |
|
throw new Error('process.chdir is not supported'); |
|
}; |
|
|
|
process.umask = function () { |
|
return 0; |
|
}; |
|
}, {}], |
|
3: [function (require, module, exports) { |
|
/** |
|
* 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 = require('ms'); |
|
Object.keys(env).forEach(function (key) { |
|
createDebug[key] = env[key]; |
|
}); |
|
/** |
|
* Active `debug` instances. |
|
*/ |
|
|
|
createDebug.instances = []; |
|
/** |
|
* 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 for the debug instance to be colored |
|
* @return {Number|String} An ANSI color code for the given namespace |
|
* @api private |
|
*/ |
|
|
|
function selectColor(namespace) { |
|
var hash = 0; |
|
|
|
for (var 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) { |
|
var prevTime; |
|
|
|
function debug() { |
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { |
|
args[_key] = arguments[_key]; |
|
} |
|
|
|
// Disabled? |
|
if (!debug.enabled) { |
|
return; |
|
} |
|
|
|
var self = debug; // Set `diff` timestamp |
|
|
|
var curr = Number(new Date()); |
|
var 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 |
|
|
|
|
|
var index = 0; |
|
args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) { |
|
// If we encounter an escaped % then don't increase the array index |
|
if (match === '%%') { |
|
return match; |
|
} |
|
|
|
index++; |
|
var formatter = createDebug.formatters[format]; |
|
|
|
if (typeof formatter === 'function') { |
|
var 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); |
|
var logFn = self.log || createDebug.log; |
|
logFn.apply(self, args); |
|
} |
|
|
|
debug.namespace = namespace; |
|
debug.enabled = createDebug.enabled(namespace); |
|
debug.useColors = createDebug.useColors(); |
|
debug.color = selectColor(namespace); |
|
debug.destroy = destroy; |
|
debug.extend = extend; // Debug.formatArgs = formatArgs; |
|
// debug.rawLog = rawLog; |
|
// env-specific initialization logic for debug instances |
|
|
|
if (typeof createDebug.init === 'function') { |
|
createDebug.init(debug); |
|
} |
|
|
|
createDebug.instances.push(debug); |
|
return debug; |
|
} |
|
|
|
function destroy() { |
|
var index = createDebug.instances.indexOf(this); |
|
|
|
if (index !== -1) { |
|
createDebug.instances.splice(index, 1); |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
|
|
function extend(namespace, delimiter) { |
|
var 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.names = []; |
|
createDebug.skips = []; |
|
var i; |
|
var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); |
|
var 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.substr(1) + '$')); |
|
} else { |
|
createDebug.names.push(new RegExp('^' + namespaces + '$')); |
|
} |
|
} |
|
|
|
for (i = 0; i < createDebug.instances.length; i++) { |
|
var instance = createDebug.instances[i]; |
|
instance.enabled = createDebug.enabled(instance.namespace); |
|
} |
|
} |
|
/** |
|
* Disable debug output. |
|
* |
|
* @return {String} namespaces |
|
* @api public |
|
*/ |
|
|
|
|
|
function disable() { |
|
var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) { |
|
return '-' + 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; |
|
} |
|
|
|
var i; |
|
var 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) { |
|
return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*'); |
|
} |
|
/** |
|
* Coerce `val`. |
|
* |
|
* @param {Mixed} val |
|
* @return {Mixed} |
|
* @api private |
|
*/ |
|
|
|
|
|
function coerce(val) { |
|
if (val instanceof Error) { |
|
return val.stack || val.message; |
|
} |
|
|
|
return val; |
|
} |
|
|
|
createDebug.enable(createDebug.load()); |
|
return createDebug; |
|
} |
|
|
|
module.exports = setup; |
|
}, { |
|
"ms": 1 |
|
}], |
|
4: [function (require, module, exports) { |
|
(function (process) { |
|
/* eslint-env browser */ |
|
|
|
/** |
|
* This is the web browser implementation of `debug()`. |
|
*/ |
|
exports.log = log; |
|
exports.formatArgs = formatArgs; |
|
exports.save = save; |
|
exports.load = load; |
|
exports.useColors = useColors; |
|
exports.storage = localstorage(); |
|
/** |
|
* 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; |
|
} |
|
|
|
var 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 |
|
|
|
var index = 0; |
|
var lastC = 0; |
|
args[0].replace(/%[a-zA-Z%]/g, function (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.log()` when available. |
|
* No-op when `console.log` is not a "function". |
|
* |
|
* @api public |
|
*/ |
|
|
|
|
|
function log() { |
|
var _console; |
|
|
|
// This hackery is required for IE8/9, where |
|
// the `console.log` function doesn't have 'apply' |
|
return (typeof console === "undefined" ? "undefined" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments); |
|
} |
|
/** |
|
* 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() { |
|
var 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 = require('./common')(exports); |
|
var formatters = module.exports.formatters; |
|
/** |
|
* 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; |
|
} |
|
}; |
|
}).call(this, require('_process')); |
|
}, { |
|
"./common": 3, |
|
"_process": 2 |
|
}] |
|
}, {}, [4])(4); |
|
});
|
|
|