New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

beaver-logger

Package Overview
Dependencies
Maintainers
2
Versions
76
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

beaver-logger - npm Package Compare versions

Comparing version 3.0.17 to 4.0.0

dist/beaver-logger.js.map

2501

dist/beaver-logger.js

@@ -1,1661 +0,842 @@

(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define("$logger", [], factory);
else if(typeof exports === 'object')
exports["$logger"] = factory();
else
root["$logger"] = factory();
})(this, 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] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = 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;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _interface = __webpack_require__(1);
Object.keys(_interface).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _interface[key];
}
});
});
var INTERFACE = _interopRequireWildcard(_interface);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
exports['default'] = INTERFACE;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _logger = __webpack_require__(2);
Object.keys(_logger).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _logger[key];
}
});
});
var _init = __webpack_require__(11);
Object.keys(_init).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _init[key];
}
});
});
var _transitions = __webpack_require__(13);
Object.keys(_transitions).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _transitions[key];
}
});
});
var _builders = __webpack_require__(9);
Object.keys(_builders).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _builders[key];
}
});
});
var _config = __webpack_require__(10);
Object.keys(_config).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _config[key];
}
});
});
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.track = exports.flush = exports.tracking = exports.buffer = undefined;
exports.getTransport = getTransport;
exports.setTransport = setTransport;
exports.print = print;
exports.immediateFlush = immediateFlush;
exports.log = log;
exports.prefix = prefix;
exports.debug = debug;
exports.info = info;
exports.warn = warn;
exports.error = error;
var _util = __webpack_require__(3);
var _builders = __webpack_require__(9);
var _config = __webpack_require__(10);
var buffer = exports.buffer = [];
var tracking = exports.tracking = [];
var transport = function transport(headers, data, options) {
return (0, _util.ajax)('post', _config.config.uri, headers, data, options);
};
function getTransport() {
return transport;
}
function setTransport(newTransport) {
transport = newTransport;
}
var loaded = false;
setTimeout(function () {
loaded = true;
}, 1);
function print(level, event, payload) {
if (typeof window === 'undefined' || !window.console || !window.console.log) {
return;
}
if (!loaded) {
return setTimeout(function () {
return print(level, event, payload);
}, 1);
}
var logLevel = _config.config.logLevel;
if (window.LOG_LEVEL) {
logLevel = window.LOG_LEVEL;
}
if (_config.logLevels.indexOf(level) > _config.logLevels.indexOf(logLevel)) {
return;
}
payload = payload || {};
var args = [event];
if ((0, _util.isIE)()) {
payload = JSON.stringify(payload);
}
args.push(payload);
if (payload.error || payload.warning) {
args.push('\n\n', payload.error || payload.warning);
}
try {
if (window.console[level] && window.console[level].apply) {
window.console[level].apply(window.console, args);
} else if (window.console.log && window.console.log.apply) {
window.console.log.apply(window.console, args);
}
} catch (err) {
// pass
}
}
function immediateFlush() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$fireAndForget = _ref.fireAndForget,
fireAndForget = _ref$fireAndForget === undefined ? false : _ref$fireAndForget;
if (typeof window === 'undefined') {
return;
}
if (!_config.config.uri) {
return;
}
var hasBuffer = buffer.length;
var hasTracking = tracking.length;
if (!hasBuffer && !hasTracking) {
return;
}
var meta = {};
for (var _iterator = _builders.metaBuilders, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref2;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref2 = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref2 = _i.value;
}
var builder = _ref2;
try {
(0, _util.extend)(meta, builder(meta), false);
} catch (err) {
console.error('Error in custom meta builder:', err.stack || err.toString());
}
}
var headers = {};
for (var _iterator2 = _builders.headerBuilders, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref3;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref3 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref3 = _i2.value;
}
var _builder = _ref3;
try {
(0, _util.extend)(headers, _builder(headers), false);
} catch (err) {
console.error('Error in custom header builder:', err.stack || err.toString());
}
}
var events = buffer;
var req = transport(headers, {
events: events,
meta: meta,
tracking: tracking
}, {
fireAndForget: fireAndForget
});
exports.buffer = buffer = [];
exports.tracking = tracking = [];
return req;
}
var _flush = (0, _util.promiseDebounce)(immediateFlush, _config.config.debounceInterval);
exports.flush = _flush;
function enqueue(level, event, payload) {
buffer.push({
level: level,
event: event,
payload: payload
});
if (_config.config.autoLog.indexOf(level) > -1) {
_flush();
}
}
function log(level, event, payload) {
if (typeof window === 'undefined') {
return;
}
if (_config.config.prefix) {
event = _config.config.prefix + '_' + event;
}
payload = payload || {};
if (typeof payload === 'string') {
payload = {
message: payload
};
} else if (payload instanceof Error) {
payload = {
error: payload.stack || payload.toString()
};
}
try {
JSON.stringify(payload);
} catch (err) {
return;
}
payload.timestamp = Date.now();
for (var _iterator3 = _builders.payloadBuilders, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
var _ref4;
if (_isArray3) {
if (_i3 >= _iterator3.length) break;
_ref4 = _iterator3[_i3++];
} else {
_i3 = _iterator3.next();
if (_i3.done) break;
_ref4 = _i3.value;
}
var builder = _ref4;
try {
(0, _util.extend)(payload, builder(payload), false);
} catch (err) {
console.error('Error in custom payload builder:', err.stack || err.toString());
}
}
if (!_config.config.silent) {
print(level, event, payload);
}
if (buffer.length === _config.config.sizeLimit) {
enqueue('info', 'logger_max_buffer_length');
} else if (buffer.length < _config.config.sizeLimit) {
enqueue(level, event, payload);
}
}
function prefix(name) {
return {
debug: function debug(event, payload) {
return log('debug', name + '_' + event, payload);
},
info: function info(event, payload) {
return log('info', name + '_' + event, payload);
},
warn: function warn(event, payload) {
return log('warn', name + '_' + event, payload);
},
error: function error(event, payload) {
return log('error', name + '_' + event, payload);
},
track: function track(payload) {
return _track(payload);
},
flush: function flush() {
return _flush();
}
};
}
function debug(event, payload) {
return log('debug', event, payload);
}
function info(event, payload) {
return log('info', event, payload);
}
function warn(event, payload) {
return log('warn', event, payload);
}
function error(event, payload) {
return log('error', event, payload);
}
function _track(payload) {
if (typeof window === 'undefined') {
return;
}
if (payload) {
try {
JSON.stringify(payload);
} catch (err) {
return;
}
for (var _iterator4 = _builders.trackingBuilders, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
var _ref5;
if (_isArray4) {
if (_i4 >= _iterator4.length) break;
_ref5 = _iterator4[_i4++];
} else {
_i4 = _iterator4.next();
if (_i4.done) break;
_ref5 = _i4.value;
}
var builder = _ref5;
try {
(0, _util.extend)(payload, builder(payload), false);
} catch (err) {
console.error('Error in custom tracking builder:', err.stack || err.toString());
}
}
print('debug', 'tracking', payload);
tracking.push(payload);
}
}
exports.track = _track;
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.extend = extend;
exports.isSameProtocol = isSameProtocol;
exports.isSameDomain = isSameDomain;
exports.ajax = ajax;
exports.promiseDebounce = promiseDebounce;
exports.onWindowReady = onWindowReady;
exports.safeInterval = safeInterval;
exports.uniqueID = uniqueID;
exports.isIE = isIE;
var _src = __webpack_require__(4);
function extend(dest, src) {
var over = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
dest = dest || {};
src = src || {};
for (var i in src) {
if (src.hasOwnProperty(i)) {
if (over || !dest.hasOwnProperty(i)) {
dest[i] = src[i];
}
}
}
return dest;
}
function isSameProtocol(url) {
return window.location.protocol === url.split('/')[0];
}
function isSameDomain(url) {
var match = url.match(/https?:\/\/[^/]+/);
if (!match) {
return true;
}
return match[0] === window.location.protocol + '//' + window.location.host;
}
function ajax(method, url) {
var headers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
var _ref = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
_ref$fireAndForget = _ref.fireAndForget,
fireAndForget = _ref$fireAndForget === undefined ? false : _ref$fireAndForget;
return new _src.ZalgoPromise(function (resolve) {
var XRequest = window.XMLHttpRequest || window.ActiveXObject;
if (window.XDomainRequest && !isSameDomain(url)) {
if (!isSameProtocol(url)) {
return resolve();
}
XRequest = window.XDomainRequest;
}
var req = new XRequest('MSXML2.XMLHTTP.3.0');
req.open(method.toUpperCase(), url, true);
if (typeof req.setRequestHeader === 'function') {
req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
req.setRequestHeader('Content-type', 'application/json');
for (var headerName in headers) {
if (headers.hasOwnProperty(headerName)) {
req.setRequestHeader(headerName, headers[headerName]);
}
}
}
if (fireAndForget) {
resolve();
} else {
req.onreadystatechange = function () {
if (req.readyState > 3) {
resolve();
}
};
}
req.send(JSON.stringify(data).replace(/&/g, '%26'));
});
}
function promiseDebounce(method, interval) {
var debounce = {};
return function () {
var args = arguments;
if (debounce.timeout) {
clearTimeout(debounce.timeout);
delete debounce.timeout;
}
debounce.timeout = setTimeout(function () {
var resolver = debounce.resolver;
var rejector = debounce.rejector;
delete debounce.promise;
delete debounce.resolver;
delete debounce.rejector;
delete debounce.timeout;
return _src.ZalgoPromise.resolve().then(function () {
return method.apply(null, args);
}).then(resolver, rejector);
}, interval);
debounce.promise = debounce.promise || new _src.ZalgoPromise(function (resolver, rejector) {
debounce.resolver = resolver;
debounce.rejector = rejector;
});
return debounce.promise;
};
}
function onWindowReady() {
return new _src.ZalgoPromise(function (resolve) {
if (typeof document !== 'undefined' && document.readyState === 'complete') {
resolve();
}
window.addEventListener('load', resolve);
});
}
function safeInterval(method, time) {
var timeout = void 0;
function loop() {
timeout = setTimeout(function () {
method();
loop();
}, time);
}
loop();
return {
cancel: function cancel() {
clearTimeout(timeout);
}
};
}
function uniqueID() {
var chars = '0123456789abcdef';
return 'xxxxxxxxxx'.replace(/./g, function () {
return chars.charAt(Math.floor(Math.random() * chars.length));
});
}
function isIE() {
return Boolean(window.document.documentMode);
}
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _promise = __webpack_require__(5);
Object.defineProperty(exports, 'ZalgoPromise', {
enumerable: true,
get: function get() {
return _promise.ZalgoPromise;
}
});
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ZalgoPromise = undefined;
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _utils = __webpack_require__(6);
var _exceptions = __webpack_require__(7);
var _global = __webpack_require__(8);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var ZalgoPromise = function () {
function ZalgoPromise(handler) {
var _this = this;
_classCallCheck(this, ZalgoPromise);
this.resolved = false;
this.rejected = false;
this.errorHandled = false;
this.handlers = [];
if (handler) {
var _result = void 0;
var _error = void 0;
var resolved = false;
var rejected = false;
var isAsync = false;
try {
handler(function (res) {
if (isAsync) {
_this.resolve(res);
} else {
resolved = true;
_result = res;
}
}, function (err) {
if (isAsync) {
_this.reject(err);
} else {
rejected = true;
_error = err;
}
});
} catch (err) {
this.reject(err);
return;
}
isAsync = true;
if (resolved) {
// $FlowFixMe
this.resolve(_result);
} else if (rejected) {
this.reject(_error);
}
}
}
_createClass(ZalgoPromise, [{
key: 'resolve',
value: function resolve(result) {
if (this.resolved || this.rejected) {
return this;
}
if ((0, _utils.isPromise)(result)) {
throw new Error('Can not resolve promise with another promise');
}
this.resolved = true;
this.value = result;
this.dispatch();
return this;
}
}, {
key: 'reject',
value: function reject(error) {
var _this2 = this;
if (this.resolved || this.rejected) {
return this;
}
if ((0, _utils.isPromise)(error)) {
throw new Error('Can not reject promise with another promise');
}
if (!error) {
var _err = error && typeof error.toString === 'function' ? error.toString() : Object.prototype.toString.call(error);
error = new Error('Expected reject to be called with Error, got ' + _err);
}
this.rejected = true;
this.error = error;
if (!this.errorHandled) {
setTimeout(function () {
if (!_this2.errorHandled) {
(0, _exceptions.dispatchPossiblyUnhandledError)(error);
}
}, 1);
}
this.dispatch();
return this;
}
}, {
key: 'asyncReject',
value: function asyncReject(error) {
this.errorHandled = true;
this.reject(error);
}
// eslint-disable-next-line complexity
}, {
key: 'dispatch',
value: function dispatch() {
var _this3 = this;
var dispatching = this.dispatching,
resolved = this.resolved,
rejected = this.rejected,
handlers = this.handlers;
if (dispatching) {
return;
}
if (!resolved && !rejected) {
return;
}
this.dispatching = true;
(0, _global.getGlobal)().activeCount += 1;
var _loop = function _loop(i) {
var _handlers$i = handlers[i],
onSuccess = _handlers$i.onSuccess,
onError = _handlers$i.onError,
promise = _handlers$i.promise;
var result = void 0;
if (resolved) {
try {
result = onSuccess ? onSuccess(_this3.value) : _this3.value;
} catch (err) {
promise.reject(err);
return 'continue';
}
} else if (rejected) {
if (!onError) {
promise.reject(_this3.error);
return 'continue';
}
try {
result = onError(_this3.error);
} catch (err) {
promise.reject(err);
return 'continue';
}
}
if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {
if (result.resolved) {
promise.resolve(result.value);
} else {
promise.reject(result.error);
}
result.errorHandled = true;
} else if ((0, _utils.isPromise)(result)) {
if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {
if (result.resolved) {
promise.resolve(result.value);
} else {
promise.reject(result.error);
}
} else {
// $FlowFixMe
result.then(function (res) {
// eslint-disable-line promise/catch-or-return
promise.resolve(res);
}, function (err) {
promise.reject(err);
});
}
} else {
promise.resolve(result);
}
};
for (var i = 0; i < handlers.length; i++) {
var _ret = _loop(i);
if (_ret === 'continue') continue;
}
handlers.length = 0;
this.dispatching = false;
(0, _global.getGlobal)().activeCount -= 1;
if ((0, _global.getGlobal)().activeCount === 0) {
ZalgoPromise.flushQueue();
}
}
}, {
key: 'then',
value: function then(onSuccess, onError) {
if (onSuccess && typeof onSuccess !== 'function' && !onSuccess.call) {
throw new Error('Promise.then expected a function for success handler');
}
if (onError && typeof onError !== 'function' && !onError.call) {
throw new Error('Promise.then expected a function for error handler');
}
var promise = new ZalgoPromise();
this.handlers.push({
promise: promise,
onSuccess: onSuccess,
onError: onError
});
this.errorHandled = true;
this.dispatch();
return promise;
}
}, {
key: 'catch',
value: function _catch(onError) {
return this.then(undefined, onError);
}
}, {
key: 'finally',
value: function _finally(handler) {
return this.then(function (result) {
return ZalgoPromise['try'](handler).then(function () {
return result;
});
}, function (err) {
return ZalgoPromise['try'](handler).then(function () {
throw err;
});
});
}
}, {
key: 'timeout',
value: function timeout(time, err) {
var _this4 = this;
if (this.resolved || this.rejected) {
return this;
}
var timeout = setTimeout(function () {
if (_this4.resolved || _this4.rejected) {
return;
}
_this4.reject(err || new Error('Promise timed out after ' + time + 'ms'));
}, time);
return this.then(function (result) {
clearTimeout(timeout);
return result;
});
}
// $FlowFixMe
}, {
key: 'toPromise',
value: function toPromise() {
// $FlowFixMe
if (typeof Promise === 'undefined') {
throw new TypeError('Could not find Promise');
}
// $FlowFixMe
return Promise.resolve(this);
}
}], [{
key: 'resolve',
value: function resolve(value) {
if (value instanceof ZalgoPromise) {
return value;
}
if ((0, _utils.isPromise)(value)) {
// $FlowFixMe
return new ZalgoPromise(function (resolve, reject) {
return value.then(resolve, reject);
});
}
return new ZalgoPromise().resolve(value);
}
}, {
key: 'reject',
value: function reject(error) {
return new ZalgoPromise().reject(error);
}
}, {
key: 'all',
value: function all(promises) {
var promise = new ZalgoPromise();
var count = promises.length;
var results = [];
if (!count) {
promise.resolve(results);
return promise;
}
var _loop2 = function _loop2(i) {
var prom = promises[i];
if (prom instanceof ZalgoPromise) {
if (prom.resolved) {
results[i] = prom.value;
count -= 1;
return 'continue';
}
} else if (!(0, _utils.isPromise)(prom)) {
results[i] = prom;
count -= 1;
return 'continue';
}
ZalgoPromise.resolve(prom).then(function (result) {
// eslint-disable-line promise/catch-or-return
results[i] = result;
count -= 1;
if (count === 0) {
promise.resolve(results);
}
}, function (err) {
promise.reject(err);
});
};
for (var i = 0; i < promises.length; i++) {
var _ret2 = _loop2(i);
if (_ret2 === 'continue') continue;
}
if (count === 0) {
promise.resolve(results);
}
return promise;
}
}, {
key: 'hash',
value: function hash(promises) {
var result = {};
return ZalgoPromise.all(Object.keys(promises).map(function (key) {
return ZalgoPromise.resolve(promises[key]).then(function (value) {
result[key] = value;
});
})).then(function () {
return result;
});
}
}, {
key: 'map',
value: function map(items, method) {
// $FlowFixMe
return ZalgoPromise.all(items.map(method));
}
}, {
key: 'onPossiblyUnhandledException',
value: function onPossiblyUnhandledException(handler) {
return (0, _exceptions.onPossiblyUnhandledException)(handler);
}
}, {
key: 'try',
value: function _try(method, context, args) {
var result = void 0;
try {
// $FlowFixMe
result = method.apply(context, args || []);
} catch (err) {
return ZalgoPromise.reject(err);
}
return ZalgoPromise.resolve(result);
}
}, {
key: 'delay',
value: function delay(_delay) {
return new ZalgoPromise(function (resolve) {
setTimeout(resolve, _delay);
});
}
}, {
key: 'isPromise',
value: function isPromise(value) {
if (value && value instanceof ZalgoPromise) {
return true;
}
return (0, _utils.isPromise)(value);
}
}, {
key: 'flush',
value: function flush() {
var promise = new ZalgoPromise();
(0, _global.getGlobal)().flushPromises.push(promise);
if ((0, _global.getGlobal)().activeCount === 0) {
ZalgoPromise.flushQueue();
}
return promise;
}
}, {
key: 'flushQueue',
value: function flushQueue() {
var promisesToFlush = (0, _global.getGlobal)().flushPromises;
(0, _global.getGlobal)().flushPromises = [];
for (var _iterator = promisesToFlush, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var _promise = _ref;
_promise.resolve();
}
}
}]);
return ZalgoPromise;
}();
exports.ZalgoPromise = ZalgoPromise;
/***/ }),
/* 6 */
/***/ (function(module, exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isPromise = isPromise;
function isPromise(item) {
try {
if (!item) {
return false;
}
if (typeof Promise !== 'undefined' && item instanceof Promise) {
return true;
}
if (typeof window !== 'undefined' && window.Window && item instanceof window.Window) {
return false;
}
if (typeof window !== 'undefined' && window.constructor && item instanceof window.constructor) {
return false;
}
var _toString = {}.toString;
if (_toString) {
var name = _toString.call(item);
if (name === '[object Window]' || name === '[object global]' || name === '[object DOMWindow]') {
return false;
}
}
if (typeof item.then === 'function') {
return true;
}
} catch (err) {
return false;
}
return false;
}
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.dispatchPossiblyUnhandledError = dispatchPossiblyUnhandledError;
exports.onPossiblyUnhandledException = onPossiblyUnhandledException;
var _global = __webpack_require__(8);
function dispatchPossiblyUnhandledError(err) {
if ((0, _global.getGlobal)().dispatchedErrors.indexOf(err) !== -1) {
return;
}
(0, _global.getGlobal)().dispatchedErrors.push(err);
setTimeout(function () {
throw err;
}, 1);
for (var j = 0; j < (0, _global.getGlobal)().possiblyUnhandledPromiseHandlers.length; j++) {
(0, _global.getGlobal)().possiblyUnhandledPromiseHandlers[j](err);
}
}
function onPossiblyUnhandledException(handler) {
(0, _global.getGlobal)().possiblyUnhandledPromiseHandlers.push(handler);
return {
cancel: function cancel() {
(0, _global.getGlobal)().possiblyUnhandledPromiseHandlers.splice((0, _global.getGlobal)().possiblyUnhandledPromiseHandlers.indexOf(handler), 1);
}
};
}
/***/ }),
/* 8 */
/***/ (function(module, exports) {
/* WEBPACK VAR INJECTION */(function(global) {'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getGlobal = getGlobal;
function getGlobal() {
var glob = void 0;
if (typeof window !== 'undefined') {
glob = window;
} else if (typeof global !== 'undefined') {
glob = global;
} else {
throw new TypeError('Can not find global');
}
var zalgoGlobal = glob.__zalgopromise__ = glob.__zalgopromise__ || {};
zalgoGlobal.flushPromises = zalgoGlobal.flushPromises || [];
zalgoGlobal.activeCount = zalgoGlobal.activeCount || 0;
zalgoGlobal.possiblyUnhandledPromiseHandlers = zalgoGlobal.possiblyUnhandledPromiseHandlers || [];
zalgoGlobal.dispatchedErrors = zalgoGlobal.dispatchedErrors || [];
return zalgoGlobal;
}
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
/***/ }),
/* 9 */
/***/ (function(module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addPayloadBuilder = addPayloadBuilder;
exports.addMetaBuilder = addMetaBuilder;
exports.addTrackingBuilder = addTrackingBuilder;
exports.addHeaderBuilder = addHeaderBuilder;
var payloadBuilders = exports.payloadBuilders = [];
var metaBuilders = exports.metaBuilders = [];
var trackingBuilders = exports.trackingBuilders = [];
var headerBuilders = exports.headerBuilders = [];
function addPayloadBuilder(builder) {
payloadBuilders.push(builder);
}
function addMetaBuilder(builder) {
metaBuilders.push(builder);
}
function addTrackingBuilder(builder) {
trackingBuilders.push(builder);
}
function addHeaderBuilder(builder) {
headerBuilders.push(builder);
}
/***/ }),
/* 10 */
/***/ (function(module, exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var config = exports.config = {
uri: '',
prefix: '',
initial_state_name: 'init',
flushInterval: 10 * 60 * 1000,
debounceInterval: 10,
sizeLimit: 300,
// Supress `console.log`s when `true`
// Recommended for production usage
silent: false,
heartbeat: true,
heartbeatConsoleLog: true,
heartbeatInterval: 5000,
heartbeatTooBusy: false,
heartbeatTooBusyThreshold: 10000,
logLevel: 'warn',
autoLog: ['warn', 'error'],
logUnload: true,
logPerformance: true
};
var logLevels = exports.logLevels = ['error', 'warn', 'info', 'debug'];
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.init = init;
var _config = __webpack_require__(10);
var _util = __webpack_require__(3);
var _performance = __webpack_require__(12);
var _logger = __webpack_require__(2);
var initiated = false;
function init(conf) {
(0, _util.extend)(_config.config, conf || {});
if (initiated) {
return;
}
initiated = true;
if (_config.config.logPerformance) {
(0, _performance.initPerformance)();
}
if (_config.config.heartbeat) {
(0, _performance.initHeartBeat)();
}
if (_config.config.logUnload) {
window.addEventListener('beforeunload', function () {
(0, _logger.info)('window_beforeunload');
(0, _logger.immediateFlush)({ fireAndForget: true });
});
window.addEventListener('unload', function () {
(0, _logger.info)('window_unload');
(0, _logger.immediateFlush)({ fireAndForget: true });
});
}
if (_config.config.flushInterval) {
setInterval(_logger.flush, _config.config.flushInterval);
}
if (window.beaverLogQueue) {
window.beaverLogQueue.forEach(function (payload) {
(0, _logger.log)(payload.level, payload.event, payload);
});
delete window.beaverLogQueue;
}
}
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.reqTimer = exports.clientTimer = undefined;
exports.now = now;
exports.reqStartElapsed = reqStartElapsed;
exports.initHeartBeat = initHeartBeat;
exports.initPerformance = initPerformance;
var _config = __webpack_require__(10);
var _logger = __webpack_require__(2);
var _builders = __webpack_require__(9);
var _util = __webpack_require__(3);
var enablePerformance = window && window.performance && performance.now && performance.timing && performance.timing.connectEnd && performance.timing.navigationStart && Math.abs(performance.now() - Date.now()) > 1000 && performance.now() - (performance.timing.connectEnd - performance.timing.navigationStart) > 0;
function now() {
if (enablePerformance) {
return performance.now();
} else {
return Date.now();
}
}
function timer(startTime) {
startTime = startTime !== undefined ? startTime : now();
return {
startTime: startTime,
elapsed: function elapsed() {
return parseInt(now() - startTime, 10);
},
reset: function reset() {
startTime = now();
}
};
}
function reqStartElapsed() {
if (enablePerformance) {
var timing = window.performance.timing;
return parseInt(timing.connectEnd - timing.navigationStart, 10);
}
}
var clientTimer = exports.clientTimer = timer();
var reqTimer = exports.reqTimer = timer(reqStartElapsed());
function initHeartBeat() {
var heartBeatTimer = timer();
var heartbeatCount = 0;
(0, _util.safeInterval)(function () {
if (_config.config.heartbeatMaxThreshold && heartbeatCount > _config.config.heartbeatMaxThreshold) {
return;
}
heartbeatCount += 1;
var elapsed = heartBeatTimer.elapsed();
var lag = elapsed - _config.config.heartbeatInterval;
var heartbeatPayload = {
count: heartbeatCount,
elapsed: elapsed
};
if (_config.config.heartbeatTooBusy) {
heartbeatPayload.lag = lag;
if (lag >= _config.config.heartbeatTooBusyThreshold) {
(0, _logger.info)('toobusy', heartbeatPayload, {
noConsole: !_config.config.heartbeatConsoleLog
});
}
}
(0, _logger.info)('heartbeat', heartbeatPayload, {
noConsole: !_config.config.heartbeatConsoleLog
});
}, _config.config.heartbeatInterval);
}
function initPerformance() {
if (!enablePerformance) {
return (0, _logger.info)('no_performance_data');
}
(0, _builders.addPayloadBuilder)(function () {
var payload = {};
payload.client_elapsed = clientTimer.elapsed();
if (enablePerformance) {
payload.req_elapsed = reqTimer.elapsed();
}
return payload;
});
(0, _util.onWindowReady)().then(function () {
var keys = ['connectEnd', 'connectStart', 'domComplete', 'domContentLoadedEventEnd', 'domContentLoadedEventStart', 'domInteractive', 'domLoading', 'domainLookupEnd', 'domainLookupStart', 'fetchStart', 'loadEventEnd', 'loadEventStart', 'navigationStart', 'redirectEnd', 'redirectStart', 'requestStart', 'responseEnd', 'responseStart', 'secureConnectionStart', 'unloadEventEnd', 'unloadEventStart'];
var timing = {};
keys.forEach(function (key) {
timing[key] = parseInt(window.performance.timing[key], 10) || 0;
});
var offset = timing.connectEnd - timing.navigationStart;
if (timing.connectEnd) {
Object.keys(timing).forEach(function (name) {
var time = timing[name];
if (time) {
(0, _logger.info)('timing_' + name, {
client_elapsed: parseInt(time - timing.connectEnd - (clientTimer.startTime - offset), 10),
req_elapsed: parseInt(time - timing.connectEnd, 10)
});
}
});
}
(0, _logger.info)('timing', timing);
(0, _logger.info)('memory', window.performance.memory);
(0, _logger.info)('navigation', window.performance.navigation);
if (window.performance.getEntries) {
window.performance.getEntries().forEach(function (resource) {
if (['link', 'script', 'img', 'css'].indexOf(resource.initiatorType) > -1) {
(0, _logger.info)(resource.initiatorType, resource);
}
});
}
});
}
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.startTransition = startTransition;
exports.endTransition = endTransition;
exports.transition = transition;
var _performance = __webpack_require__(12);
var _logger = __webpack_require__(2);
var _builders = __webpack_require__(9);
var _util = __webpack_require__(3);
var _config = __webpack_require__(10);
var windowID = (0, _util.uniqueID)();
var pageID = (0, _util.uniqueID)();
var currentState = _config.config.initial_state_name;
var startTime = void 0;
function startTransition() {
startTime = (0, _performance.now)();
}
function endTransition(toState) {
startTime = startTime || (0, _performance.reqStartElapsed)();
var currentTime = (0, _performance.now)();
var elapsedTime = void 0;
if (startTime !== undefined) {
elapsedTime = parseInt(currentTime - startTime, 0);
}
var transitionName = 'transition_' + currentState + '_to_' + toState;
(0, _logger.info)(transitionName, {
duration: elapsedTime
});
(0, _logger.track)({
transition: transitionName,
transition_time: elapsedTime
});
(0, _logger.immediateFlush)();
startTime = currentTime;
currentState = toState;
pageID = (0, _util.uniqueID)();
}
function transition(toState) {
startTransition();
endTransition(toState);
}
(0, _builders.addPayloadBuilder)(function () {
return {
windowID: windowID,
pageID: pageID
};
});
(0, _builders.addMetaBuilder)(function () {
return {
state: 'ui_' + currentState
};
});
/***/ })
/******/ ])
!function(root, factory) {
"object" == typeof exports && "object" == typeof module ? module.exports = factory() : "function" == typeof define && define.amd ? define("beaver", [], factory) : "object" == typeof exports ? exports.beaver = factory() : root.beaver = factory();
}("undefined" != typeof self ? self : this, function() {
return function(modules) {
var installedModules = {};
function __webpack_require__(moduleId) {
if (installedModules[moduleId]) return installedModules[moduleId].exports;
var module = installedModules[moduleId] = {
i: moduleId,
l: !1,
exports: {}
};
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
module.l = !0;
return module.exports;
}
__webpack_require__.m = modules;
__webpack_require__.c = installedModules;
__webpack_require__.d = function(exports, name, getter) {
__webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {
configurable: !1,
enumerable: !0,
get: getter
});
};
__webpack_require__.n = function(module) {
var getter = module && module.__esModule ? function() {
return module.default;
} : function() {
return module;
};
__webpack_require__.d(getter, "a", getter);
return getter;
};
__webpack_require__.o = function(object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
__webpack_require__.p = "";
return __webpack_require__(__webpack_require__.s = "./src/index.js");
}({
"./node_modules/belter/src/device.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_exports__.a = function() {
return !!(window.navigator.mockUserAgent || window.navigator.userAgent).match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i);
};
},
"./node_modules/belter/src/dom.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_exports__.a = function() {
return "undefined" != typeof window;
};
__webpack_require__("./node_modules/zalgo-promise/src/index.js"), __webpack_require__("./node_modules/belter/src/util.js"),
__webpack_require__("./node_modules/belter/src/device.js");
},
"./node_modules/belter/src/experiment.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__("./node_modules/belter/src/util.js"), __webpack_require__("./node_modules/belter/src/storage.js");
},
"./node_modules/belter/src/global.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__("./node_modules/belter/src/util.js");
},
"./node_modules/belter/src/http.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_exports__.a = function(_ref) {
var url = _ref.url, _ref$method = _ref.method, method = void 0 === _ref$method ? "get" : _ref$method, _ref$headers = _ref.headers, headers = void 0 === _ref$headers ? {} : _ref$headers, json = _ref.json, data = _ref.data, body = _ref.body, _ref$win = _ref.win, win = void 0 === _ref$win ? window : _ref$win, _ref$timeout = _ref.timeout, timeout = void 0 === _ref$timeout ? 0 : _ref$timeout;
return new __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__.a(function(resolve, reject) {
if (json && data || json && body || data && json) throw new Error("Only options.json or options.data or options.body should be passed");
for (var normalizedHeaders = {}, _i4 = 0, _Object$keys2 = Object.keys(headers), _length4 = null == _Object$keys2 ? 0 : _Object$keys2.length; _i4 < _length4; _i4++) {
var _key2 = _Object$keys2[_i4];
normalizedHeaders[_key2.toLowerCase()] = headers[_key2];
}
json ? normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || "application/json" : (data || body) && (normalizedHeaders[HEADERS.CONTENT_TYPE] = normalizedHeaders[HEADERS.CONTENT_TYPE] || "application/x-www-form-urlencoded; charset=utf-8");
normalizedHeaders[HEADERS.ACCEPT] = normalizedHeaders[HEADERS.ACCEPT] || "application/json";
for (var _i6 = 0, _length6 = null == headerBuilders ? 0 : headerBuilders.length; _i6 < _length6; _i6++) for (var builtHeaders = (0,
headerBuilders[_i6])(), _i8 = 0, _Object$keys4 = Object.keys(builtHeaders), _length8 = null == _Object$keys4 ? 0 : _Object$keys4.length; _i8 < _length8; _i8++) {
var _key3 = _Object$keys4[_i8];
normalizedHeaders[_key3.toLowerCase()] = builtHeaders[_key3];
}
var xhr = new win.XMLHttpRequest();
xhr.addEventListener("load", function() {
var responseHeaders = function() {
for (var result = {}, _i2 = 0, _rawHeaders$trim$spli2 = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "").trim().split("\n"), _length2 = null == _rawHeaders$trim$spli2 ? 0 : _rawHeaders$trim$spli2.length; _i2 < _length2; _i2++) {
var _line$split = _rawHeaders$trim$spli2[_i2].split(":"), _key = _line$split[0], values = _line$split.slice(1);
result[_key.toLowerCase()] = values.join(":").trim();
}
return result;
}(this.getAllResponseHeaders());
if (!this.status) return reject(new Error("Request to " + method.toLowerCase() + " " + url + " failed: no response status code."));
var contentType = responseHeaders["content-type"], isJSON = contentType && (0 === contentType.indexOf("application/json") || 0 === contentType.indexOf("text/json")), res = this.responseText;
try {
res = JSON.parse(this.responseText);
} catch (err) {
if (isJSON) return reject(new Error("Invalid json: " + this.responseText + "."));
}
if (this.status >= 400) {
var message = "Request to " + method.toLowerCase() + " " + url + " failed with " + this.status + " error.";
if (res) {
"object" === (void 0 === res ? "undefined" : _typeof(res)) && null !== res && (res = JSON.stringify(res, null, 4));
message = message + "\n\n" + res + "\n";
}
return reject(new Error(message));
}
return resolve(res);
}, !1);
xhr.addEventListener("error", function(evt) {
reject(new Error("Request to " + method.toLowerCase() + " " + url + " failed: " + evt.toString() + "."));
}, !1);
xhr.open(method, url, !0);
for (var _key4 in normalizedHeaders) normalizedHeaders.hasOwnProperty(_key4) && xhr.setRequestHeader(_key4, normalizedHeaders[_key4]);
json ? body = JSON.stringify(json) : data && (body = Object.keys(data).map(function(key) {
return encodeURIComponent(key) + "=" + (data ? encodeURIComponent(data[key]) : "");
}).join("&"));
xhr.timeout = timeout;
xhr.ontimeout = function() {
reject(new Error("Request to " + method.toLowerCase() + " " + url + " has timed out"));
};
xhr.send(body);
});
};
var __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__ = __webpack_require__("./node_modules/zalgo-promise/src/index.js"), _typeof = (__webpack_require__("./node_modules/cross-domain-utils/src/index.js"),
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj;
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
}), HEADERS = {
CONTENT_TYPE: "content-type",
ACCEPT: "accept"
}, headerBuilders = [];
},
"./node_modules/belter/src/index.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__("./node_modules/belter/src/device.js");
var __WEBPACK_IMPORTED_MODULE_1__dom__ = __webpack_require__("./node_modules/belter/src/dom.js");
__webpack_require__.d(__webpack_exports__, "isBrowser", function() {
return __WEBPACK_IMPORTED_MODULE_1__dom__.a;
});
__webpack_require__("./node_modules/belter/src/experiment.js"), __webpack_require__("./node_modules/belter/src/global.js"),
__webpack_require__("./node_modules/belter/src/jsx.jsx"), __webpack_require__("./node_modules/belter/src/storage.js");
var __WEBPACK_IMPORTED_MODULE_6__util__ = __webpack_require__("./node_modules/belter/src/util.js");
__webpack_require__.d(__webpack_exports__, "extend", function() {
return __WEBPACK_IMPORTED_MODULE_6__util__.a;
});
__webpack_require__.d(__webpack_exports__, "noop", function() {
return __WEBPACK_IMPORTED_MODULE_6__util__.e;
});
__webpack_require__.d(__webpack_exports__, "promiseDebounce", function() {
return __WEBPACK_IMPORTED_MODULE_6__util__.f;
});
__webpack_require__.d(__webpack_exports__, "safeInterval", function() {
return __WEBPACK_IMPORTED_MODULE_6__util__.i;
});
var __WEBPACK_IMPORTED_MODULE_7__http__ = __webpack_require__("./node_modules/belter/src/http.js");
__webpack_require__.d(__webpack_exports__, "request", function() {
return __WEBPACK_IMPORTED_MODULE_7__http__.a;
});
var __WEBPACK_IMPORTED_MODULE_8__types__ = __webpack_require__("./node_modules/belter/src/types.js");
__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8__types__);
},
"./node_modules/belter/src/jsx.jsx": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__("./node_modules/belter/src/util.js"), Object.assign;
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
}
function htmlEncode() {
return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "").toString().replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/\//g, "&#x2F;");
}
!function(_JsxHTMLNode) {
!function(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
enumerable: !1,
writable: !0,
configurable: !0
}
});
superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass);
}(JsxHTMLNodeContainer, _JsxHTMLNode);
function JsxHTMLNodeContainer(children) {
_classCallCheck(this, JsxHTMLNodeContainer);
return function(self, call) {
if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return !call || "object" != typeof call && "function" != typeof call ? self : call;
}(this, _JsxHTMLNode.call(this, "", {}, children));
}
JsxHTMLNodeContainer.prototype.toString = function() {
return this.childrenToString();
};
}(function() {
function JsxHTMLNode(name, props, children) {
_classCallCheck(this, JsxHTMLNode);
this.name = name;
this.props = props;
this.children = children;
}
JsxHTMLNode.prototype.toString = function() {
return "<" + this.name + (this.props ? " " : "") + (this.props ? this.propsToString() : "") + ">" + this.childrenToString() + "</" + this.name + ">";
};
JsxHTMLNode.prototype.propsToString = function() {
var props = this.props;
return props ? Object.keys(props).filter(function(key) {
return "innerHTML" !== key && props && !1 !== props[key];
}).map(function(key) {
if (props) {
var val = props[key];
if (!0 === val) return "" + htmlEncode(key);
if ("string" == typeof val) return htmlEncode(key) + '="' + htmlEncode(val) + '"';
}
return "";
}).filter(Boolean).join(" ") : "";
};
JsxHTMLNode.prototype.childrenToString = function() {
if (this.props && this.props.innerHTML) return this.props.innerHTML;
if (!this.children) return "";
var result = "";
!function iterate(children) {
for (var _i2 = 0, _length2 = null == children ? 0 : children.length; _i2 < _length2; _i2++) {
var child = children[_i2];
null !== child && void 0 !== child && (Array.isArray(child) ? iterate(child) : result += child instanceof JsxHTMLNode ? child.toString() : htmlEncode(child));
}
}(this.children);
return result;
};
return JsxHTMLNode;
}());
},
"./node_modules/belter/src/storage.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_exports__.a = function(_ref) {
var name = _ref.name, _ref$version = _ref.version, version = void 0 === _ref$version ? "latest" : _ref$version, _ref$lifetime = _ref.lifetime, lifetime = void 0 === _ref$lifetime ? 3e5 : _ref$lifetime, STORAGE_KEY = "__" + name + "_" + version + "_storage__", accessedStorage = void 0;
function getState(handler) {
var localStorageEnabled = Object(__WEBPACK_IMPORTED_MODULE_0__util__.d)(), storage = void 0;
accessedStorage && (storage = accessedStorage);
if (!storage && localStorageEnabled) {
var rawStorage = window.localStorage.getItem(STORAGE_KEY);
rawStorage && (storage = JSON.parse(rawStorage));
}
storage || (storage = Object(__WEBPACK_IMPORTED_MODULE_0__util__.b)()[STORAGE_KEY]);
storage || (storage = {
id: Object(__WEBPACK_IMPORTED_MODULE_0__util__.k)()
});
storage.id || (storage.id = Object(__WEBPACK_IMPORTED_MODULE_0__util__.k)());
accessedStorage = storage;
var result = handler(storage);
localStorageEnabled ? window.localStorage.setItem(STORAGE_KEY, JSON.stringify(storage)) : Object(__WEBPACK_IMPORTED_MODULE_0__util__.b)()[STORAGE_KEY] = storage;
accessedStorage = null;
return result;
}
function getSession(handler) {
return getState(function(storage) {
var session = storage.__session__, now = Date.now();
session && now - session.created > lifetime && (session = null);
session || (session = {
guid: Object(__WEBPACK_IMPORTED_MODULE_0__util__.k)(),
created: now
});
storage.__session__ = session;
return handler(session);
});
}
return {
getState: getState,
getID: function() {
return getState(function(storage) {
return storage.id;
});
},
getSessionState: function(handler) {
return getSession(function(session) {
session.state = session.state || {};
return handler(session.state);
});
},
getSessionID: function() {
return getSession(function(session) {
return session.guid;
});
}
};
};
var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__("./node_modules/belter/src/util.js");
},
"./node_modules/belter/src/types.js": function(module, exports) {},
"./node_modules/belter/src/util.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_exports__.b = getGlobal;
__webpack_exports__.c = inlineMemoize;
__webpack_exports__.e = function() {};
__webpack_exports__.k = function() {
var chars = "0123456789abcdef";
return "xxxxxxxxxx".replace(/./g, function() {
return chars.charAt(Math.floor(Math.random() * chars.length));
}) + "_" + base64encode(new Date().toISOString().slice(11, 19).replace("T", ".")).replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
};
__webpack_exports__.d = function isLocalStorageEnabled() {
return inlineMemoize(isLocalStorageEnabled, function() {
try {
if ("undefined" == typeof window) return !1;
if (window.localStorage) {
var _value = Math.random().toString();
window.localStorage.setItem("__test__localStorage__", _value);
var result = window.localStorage.getItem("__test__localStorage__");
window.localStorage.removeItem("__test__localStorage__");
if (_value === result) return !0;
}
} catch (err) {}
return !1;
});
};
__webpack_exports__.a = function(obj, source) {
if (!source) return obj;
if (Object.assign) return Object.assign(obj, source);
for (var _key2 in source) source.hasOwnProperty(_key2) && (obj[_key2] = source[_key2]);
return obj;
};
__webpack_exports__.g = function(str, regex, handler) {
var results = [];
str.replace(regex, function() {
results.push(handler.apply(null, arguments));
});
return results;
};
__webpack_exports__.j = function(svg) {
return "data:image/svg+xml;base64," + base64encode(svg);
};
__webpack_exports__.h = function(text, regex) {
var result = [];
text.replace(regex, function(token) {
result.push(token);
return "";
});
return result;
};
__webpack_exports__.f = function(method) {
var delay = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 50, promise = void 0, timeout = void 0;
return function() {
timeout && clearTimeout(timeout);
var localPromise = promise = promise || new __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__.a();
timeout = setTimeout(function() {
promise = null;
timeout = null;
__WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__.a.try(method).then(function(result) {
return localPromise.resolve(result);
}, function(err) {
return localPromise.reject(err);
});
}, delay);
return localPromise;
};
};
__webpack_exports__.i = function(method, time) {
var timeout = void 0;
!function loop() {
timeout = setTimeout(function() {
method();
loop();
}, time);
}();
return {
cancel: function() {
clearTimeout(timeout);
}
};
};
var __WEBPACK_IMPORTED_MODULE_0_zalgo_promise_src__ = __webpack_require__("./node_modules/zalgo-promise/src/index.js");
function getGlobal() {
if ("undefined" != typeof window) return window;
if ("undefined" != typeof global) return global;
throw new Error("No global found");
}
function inlineMemoize(method, logic) {
var args = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [];
method.__memoized__ || (method.__memoized__ = function(method) {
var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (method.__memoized__) return method.__memoized__;
var cache = {};
method.__memoized__ = function() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
if (method.__memoized__ && method.__memoized__.__calling__) throw new Error("Can not call memoized method recursively");
var key = void 0;
try {
key = JSON.stringify(Array.prototype.slice.call(arguments));
} catch (err) {
throw new Error("Arguments not serializable -- can not be used to memoize");
}
var cacheTime = options.time;
cache[key] && cacheTime && Date.now() - cache[key].time < cacheTime && delete cache[key];
var glob = getGlobal();
glob.__CACHE_START_TIME__ && cache[key] && cache[key].time < glob.__CACHE_START_TIME__ && delete cache[key];
if (cache[key]) return cache[key].value;
method.__memoized__.__calling__ = !0;
var time = Date.now(), value = method.apply(this, arguments);
method.__memoized__.__calling__ = !1;
cache[key] = {
time: time,
value: value
};
return cache[key].value;
};
return method.__memoized__;
}(logic));
return method.__memoized__.apply(method, args);
}
function base64encode(str) {
return window.btoa(str);
}
},
"./node_modules/cross-domain-utils/src/index.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__("./node_modules/cross-domain-utils/src/utils.js");
var __WEBPACK_IMPORTED_MODULE_1__types__ = __webpack_require__("./node_modules/cross-domain-utils/src/types.js");
__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__types__);
},
"./node_modules/cross-domain-utils/src/types.js": function(module, exports) {},
"./node_modules/cross-domain-utils/src/utils.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
},
"./node_modules/zalgo-promise/src/index.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
function utils_isPromise(item) {
try {
if (!item) return !1;
if ("undefined" != typeof Promise && item instanceof Promise) return !0;
if ("undefined" != typeof window && window.Window && item instanceof window.Window) return !1;
if ("undefined" != typeof window && window.constructor && item instanceof window.constructor) return !1;
var _toString = {}.toString;
if (_toString) {
var name = _toString.call(item);
if ("[object Window]" === name || "[object global]" === name || "[object DOMWindow]" === name) return !1;
}
if ("function" == typeof item.then) return !0;
} catch (err) {
return !1;
}
return !1;
}
function getGlobal() {
var glob = void 0;
if ("undefined" != typeof window) glob = window; else {
if ("undefined" == typeof global) throw new TypeError("Can not find global");
glob = global;
}
var zalgoGlobal = glob.__zalgopromise__ = glob.__zalgopromise__ || {};
zalgoGlobal.flushPromises = zalgoGlobal.flushPromises || [];
zalgoGlobal.activeCount = zalgoGlobal.activeCount || 0;
zalgoGlobal.possiblyUnhandledPromiseHandlers = zalgoGlobal.possiblyUnhandledPromiseHandlers || [];
zalgoGlobal.dispatchedErrors = zalgoGlobal.dispatchedErrors || [];
return zalgoGlobal;
}
var promise_ZalgoPromise = function() {
function ZalgoPromise(handler) {
var _this = this;
!function(instance, Constructor) {
if (!(instance instanceof ZalgoPromise)) throw new TypeError("Cannot call a class as a function");
}(this);
this.resolved = !1;
this.rejected = !1;
this.errorHandled = !1;
this.handlers = [];
if (handler) {
var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;
try {
handler(function(res) {
if (isAsync) _this.resolve(res); else {
resolved = !0;
_result = res;
}
}, function(err) {
if (isAsync) _this.reject(err); else {
rejected = !0;
_error = err;
}
});
} catch (err) {
this.reject(err);
return;
}
isAsync = !0;
resolved ? this.resolve(_result) : rejected && this.reject(_error);
}
}
ZalgoPromise.prototype.resolve = function(result) {
if (this.resolved || this.rejected) return this;
if (utils_isPromise(result)) throw new Error("Can not resolve promise with another promise");
this.resolved = !0;
this.value = result;
this.dispatch();
return this;
};
ZalgoPromise.prototype.reject = function(error) {
var _this2 = this;
if (this.resolved || this.rejected) return this;
if (utils_isPromise(error)) throw new Error("Can not reject promise with another promise");
if (!error) {
var _err = error && "function" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);
error = new Error("Expected reject to be called with Error, got " + _err);
}
this.rejected = !0;
this.error = error;
this.errorHandled || setTimeout(function() {
_this2.errorHandled || function(err) {
if (-1 === getGlobal().dispatchedErrors.indexOf(err)) {
getGlobal().dispatchedErrors.push(err);
setTimeout(function() {
throw err;
}, 1);
for (var j = 0; j < getGlobal().possiblyUnhandledPromiseHandlers.length; j++) getGlobal().possiblyUnhandledPromiseHandlers[j](err);
}
}(error);
}, 1);
this.dispatch();
return this;
};
ZalgoPromise.prototype.asyncReject = function(error) {
this.errorHandled = !0;
this.reject(error);
};
ZalgoPromise.prototype.dispatch = function() {
var _this3 = this, dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;
if (!dispatching && (resolved || rejected)) {
this.dispatching = !0;
getGlobal().activeCount += 1;
for (var _loop = function(i) {
var _handlers$i = handlers[i], onSuccess = _handlers$i.onSuccess, onError = _handlers$i.onError, promise = _handlers$i.promise, result = void 0;
if (resolved) try {
result = onSuccess ? onSuccess(_this3.value) : _this3.value;
} catch (err) {
promise.reject(err);
return "continue";
} else if (rejected) {
if (!onError) {
promise.reject(_this3.error);
return "continue";
}
try {
result = onError(_this3.error);
} catch (err) {
promise.reject(err);
return "continue";
}
}
if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {
result.resolved ? promise.resolve(result.value) : promise.reject(result.error);
result.errorHandled = !0;
} else utils_isPromise(result) ? result instanceof ZalgoPromise && (result.resolved || result.rejected) ? result.resolved ? promise.resolve(result.value) : promise.reject(result.error) : result.then(function(res) {
promise.resolve(res);
}, function(err) {
promise.reject(err);
}) : promise.resolve(result);
}, i = 0; i < handlers.length; i++) _loop(i);
handlers.length = 0;
this.dispatching = !1;
getGlobal().activeCount -= 1;
0 === getGlobal().activeCount && ZalgoPromise.flushQueue();
}
};
ZalgoPromise.prototype.then = function(onSuccess, onError) {
if (onSuccess && "function" != typeof onSuccess && !onSuccess.call) throw new Error("Promise.then expected a function for success handler");
if (onError && "function" != typeof onError && !onError.call) throw new Error("Promise.then expected a function for error handler");
var promise = new ZalgoPromise();
this.handlers.push({
promise: promise,
onSuccess: onSuccess,
onError: onError
});
this.errorHandled = !0;
this.dispatch();
return promise;
};
ZalgoPromise.prototype.catch = function(onError) {
return this.then(void 0, onError);
};
ZalgoPromise.prototype.finally = function(handler) {
return this.then(function(result) {
return ZalgoPromise.try(handler).then(function() {
return result;
});
}, function(err) {
return ZalgoPromise.try(handler).then(function() {
throw err;
});
});
};
ZalgoPromise.prototype.timeout = function(time, err) {
var _this4 = this;
if (this.resolved || this.rejected) return this;
var timeout = setTimeout(function() {
_this4.resolved || _this4.rejected || _this4.reject(err || new Error("Promise timed out after " + time + "ms"));
}, time);
return this.then(function(result) {
clearTimeout(timeout);
return result;
});
};
ZalgoPromise.prototype.toPromise = function() {
if ("undefined" == typeof Promise) throw new TypeError("Could not find Promise");
return Promise.resolve(this);
};
ZalgoPromise.resolve = function(value) {
return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {
return value.then(resolve, reject);
}) : new ZalgoPromise().resolve(value);
};
ZalgoPromise.reject = function(error) {
return new ZalgoPromise().reject(error);
};
ZalgoPromise.all = function(promises) {
var promise = new ZalgoPromise(), count = promises.length, results = [];
if (!count) {
promise.resolve(results);
return promise;
}
for (var _loop2 = function(i) {
var prom = promises[i];
if (prom instanceof ZalgoPromise) {
if (prom.resolved) {
results[i] = prom.value;
count -= 1;
return "continue";
}
} else if (!utils_isPromise(prom)) {
results[i] = prom;
count -= 1;
return "continue";
}
ZalgoPromise.resolve(prom).then(function(result) {
results[i] = result;
0 == (count -= 1) && promise.resolve(results);
}, function(err) {
promise.reject(err);
});
}, i = 0; i < promises.length; i++) _loop2(i);
0 === count && promise.resolve(results);
return promise;
};
ZalgoPromise.hash = function(promises) {
var result = {};
return ZalgoPromise.all(Object.keys(promises).map(function(key) {
return ZalgoPromise.resolve(promises[key]).then(function(value) {
result[key] = value;
});
})).then(function() {
return result;
});
};
ZalgoPromise.map = function(items, method) {
return ZalgoPromise.all(items.map(method));
};
ZalgoPromise.onPossiblyUnhandledException = function(handler) {
return function(handler) {
getGlobal().possiblyUnhandledPromiseHandlers.push(handler);
return {
cancel: function() {
getGlobal().possiblyUnhandledPromiseHandlers.splice(getGlobal().possiblyUnhandledPromiseHandlers.indexOf(handler), 1);
}
};
}(handler);
};
ZalgoPromise.try = function(method, context, args) {
var result = void 0;
try {
result = method.apply(context, args || []);
} catch (err) {
return ZalgoPromise.reject(err);
}
return ZalgoPromise.resolve(result);
};
ZalgoPromise.delay = function(_delay) {
return new ZalgoPromise(function(resolve) {
setTimeout(resolve, _delay);
});
};
ZalgoPromise.isPromise = function(value) {
return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);
};
ZalgoPromise.flush = function() {
var promise = new ZalgoPromise();
getGlobal().flushPromises.push(promise);
0 === getGlobal().activeCount && ZalgoPromise.flushQueue();
return promise;
};
ZalgoPromise.flushQueue = function() {
var promisesToFlush = getGlobal().flushPromises;
getGlobal().flushPromises = [];
for (var _i2 = 0, _length2 = null == promisesToFlush ? 0 : promisesToFlush.length; _i2 < _length2; _i2++) promisesToFlush[_i2].resolve();
};
return ZalgoPromise;
}();
__webpack_require__.d(__webpack_exports__, "a", function() {
return promise_ZalgoPromise;
});
},
"./src/index.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", {
value: !0
});
var src = __webpack_require__("./node_modules/zalgo-promise/src/index.js"), belter_src = __webpack_require__("./node_modules/belter/src/index.js"), LOG_LEVEL = {
DEBUG: "debug",
INFO: "info",
WARN: "warn",
ERROR: "error"
}, AUTO_FLUSH_LEVEL = [ LOG_LEVEL.WARN, LOG_LEVEL.ERROR ], LOG_LEVEL_PRIORITY = [ LOG_LEVEL.ERROR, LOG_LEVEL.WARN, LOG_LEVEL.INFO, LOG_LEVEL.DEBUG ], FLUSH_INTERVAL = 6e4, DEFAULT_LOG_LEVEL = LOG_LEVEL.WARN, _extends = Object.assign || function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
}
return target;
};
function httpTransport(_ref) {
var url = _ref.url, method = _ref.method, headers = _ref.headers, json = _ref.json;
return Object(belter_src.request)({
url: url,
method: method,
headers: headers,
json: json
}).then(belter_src.noop);
}
function Logger(_ref2) {
var url = _ref2.url, prefix = _ref2.prefix, _ref2$logLevel = _ref2.logLevel, logLevel = void 0 === _ref2$logLevel ? DEFAULT_LOG_LEVEL : _ref2$logLevel, _ref2$transport = _ref2.transport, transport = void 0 === _ref2$transport ? httpTransport : _ref2$transport, _ref2$flushInterval = _ref2.flushInterval, flushInterval = void 0 === _ref2$flushInterval ? FLUSH_INTERVAL : _ref2$flushInterval, events = [], tracking = [], payloadBuilders = [], metaBuilders = [], trackingBuilders = [], headerBuilders = [];
function print(level, event, payload) {
if (Object(belter_src.isBrowser)() && window.console && window.console.log) {
var consoleLogLevel = logLevel;
window.LOG_LEVEL && -1 !== LOG_LEVEL_PRIORITY.indexOf(window.LOG_LEVEL) && (consoleLogLevel = window.LOG_LEVEL);
if (!(LOG_LEVEL_PRIORITY.indexOf(level) > LOG_LEVEL_PRIORITY.indexOf(consoleLogLevel))) {
var args = [ event ];
args.push(payload);
(payload.error || payload.warning) && args.push("\n\n", payload.error || payload.warning);
try {
window.console[level] && window.console[level].apply ? window.console[level].apply(window.console, args) : window.console.log && window.console.log.apply && window.console.log.apply(window.console, args);
} catch (err) {}
}
}
}
function immediateFlush() {
return src.a.try(function() {
if (Object(belter_src.isBrowser)() && (events.length || tracking.length)) {
for (var meta = {}, _i2 = 0, _length2 = null == metaBuilders ? 0 : metaBuilders.length; _i2 < _length2; _i2++) {
var builder = metaBuilders[_i2];
Object(belter_src.extend)(meta, builder(meta));
}
for (var headers = {}, _i4 = 0, _length4 = null == headerBuilders ? 0 : headerBuilders.length; _i4 < _length4; _i4++) {
var _builder = headerBuilders[_i4];
Object(belter_src.extend)(headers, _builder(headers));
}
var req = transport({
method: "POST",
url: url,
headers: headers,
json: {
events: events,
meta: meta,
tracking: tracking
}
});
events = [];
tracking = [];
return req.then(belter_src.noop);
}
});
}
var flush = Object(belter_src.promiseDebounce)(immediateFlush);
function log(level, event) {
var payload = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
if (Object(belter_src.isBrowser)()) {
prefix && (event = prefix + "_" + event);
payload = _extends({}, payload, {
timestamp: Date.now().toString()
});
for (var _i6 = 0, _length6 = null == payloadBuilders ? 0 : payloadBuilders.length; _i6 < _length6; _i6++) {
var builder = payloadBuilders[_i6];
Object(belter_src.extend)(payload, builder(payload));
}
!function(level, event, payload) {
events.push({
level: level,
event: event,
payload: payload
});
-1 !== AUTO_FLUSH_LEVEL.indexOf(level) && flush();
}(level, event, payload);
print(level, event, payload);
}
}
Object(belter_src.safeInterval)(flush, flushInterval);
return {
debug: function(event, payload) {
log(LOG_LEVEL.DEBUG, event, payload);
},
info: function(event, payload) {
log(LOG_LEVEL.INFO, event, payload);
},
warn: function(event, payload) {
log(LOG_LEVEL.WARN, event, payload);
},
error: function(event, payload) {
log(LOG_LEVEL.ERROR, event, payload);
},
track: function() {
var payload = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
if (Object(belter_src.isBrowser)()) {
for (var _i8 = 0, _length8 = null == trackingBuilders ? 0 : trackingBuilders.length; _i8 < _length8; _i8++) {
var builder = trackingBuilders[_i8];
Object(belter_src.extend)(payload, builder(payload));
}
print(LOG_LEVEL.DEBUG, "track", payload);
tracking.push(payload);
}
},
flush: flush,
immediateFlush: immediateFlush,
addPayloadBuilder: function(builder) {
payloadBuilders.push(builder);
},
addMetaBuilder: function(builder) {
metaBuilders.push(builder);
},
addTrackingBuilder: function(builder) {
trackingBuilders.push(builder);
},
addHeaderBuilder: function(builder) {
headerBuilders.push(builder);
},
setTransport: function(newTransport) {
transport = newTransport;
}
};
}
__webpack_require__.d(__webpack_exports__, "Logger", function() {
return Logger;
});
__webpack_require__.d(__webpack_exports__, "LOG_LEVEL", function() {
return LOG_LEVEL;
});
}
});
});
;
//# sourceMappingURL=beaver-logger.js.map
//# sourceMappingURL=beaver-logger.js.map

@@ -1,1 +0,3 @@

!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("$logger",[],n):"object"==typeof exports?exports.$logger=n():e.$logger=n()}(this,function(){return function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var t={};return n.m=e,n.c=t,n.p="",n(0)}([function(e,n,t){"use strict";function r(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n.default=e,n}Object.defineProperty(n,"__esModule",{value:!0});var o=t(1);Object.keys(o).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}})});var i=r(o);n.default=i},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(2);Object.keys(r).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}})});var o=t(11);Object.keys(o).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}})});var i=t(13);Object.keys(i).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(n,e,{enumerable:!0,get:function(){return i[e]}})});var a=t(9);Object.keys(a).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}})});var u=t(10);Object.keys(u).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(n,e,{enumerable:!0,get:function(){return u[e]}})})},function(e,n,t){"use strict";function r(){return b}function o(e){b=e}function i(e,n,t){if("undefined"!=typeof window&&window.console&&window.console.log){if(!_)return setTimeout(function(){return i(e,n,t)},1);var r=m.config.logLevel;if(window.LOG_LEVEL&&(r=window.LOG_LEVEL),!(m.logLevels.indexOf(e)>m.logLevels.indexOf(r))){t=t||{};var o=[n];(0,p.isIE)()&&(t=JSON.stringify(t)),o.push(t),(t.error||t.warning)&&o.push("\n\n",t.error||t.warning);try{window.console[e]&&window.console[e].apply?window.console[e].apply(window.console,o):window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,o)}catch(e){}}}}function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.fireAndForget,r=void 0!==t&&t;if("undefined"!=typeof window&&m.config.uri){var o=w.length,i=y.length;if(o||i){for(var a={},u=g.metaBuilders,c=Array.isArray(u),s=0,u=c?u:u[Symbol.iterator]();;){var l;if(c){if(s>=u.length)break;l=u[s++]}else{if(s=u.next(),s.done)break;l=s.value}var f=l;try{(0,p.extend)(a,f(a),!1)}catch(e){console.error("Error in custom meta builder:",e.stack||e.toString())}}for(var d={},v=g.headerBuilders,h=Array.isArray(v),_=0,v=h?v:v[Symbol.iterator]();;){var P;if(h){if(_>=v.length)break;P=v[_++]}else{if(_=v.next(),_.done)break;P=_.value}var j=P;try{(0,p.extend)(d,j(d),!1)}catch(e){console.error("Error in custom header builder:",e.stack||e.toString())}}var E=w,k=b(d,{events:E,meta:a,tracking:y},{fireAndForget:r});return n.buffer=w=[],n.tracking=y=[],k}}}function u(e,n,t){w.push({level:e,event:n,payload:t}),m.config.autoLog.indexOf(e)>-1&&P()}function c(e,n,t){if("undefined"!=typeof window){m.config.prefix&&(n=m.config.prefix+"_"+n),t=t||{},"string"==typeof t?t={message:t}:t instanceof Error&&(t={error:t.stack||t.toString()});try{JSON.stringify(t)}catch(e){return}t.timestamp=Date.now();for(var r=g.payloadBuilders,o=Array.isArray(r),a=0,r=o?r:r[Symbol.iterator]();;){var c;if(o){if(a>=r.length)break;c=r[a++]}else{if(a=r.next(),a.done)break;c=a.value}var s=c;try{(0,p.extend)(t,s(t),!1)}catch(e){console.error("Error in custom payload builder:",e.stack||e.toString())}}m.config.silent||i(e,n,t),w.length===m.config.sizeLimit?u("info","logger_max_buffer_length"):w.length<m.config.sizeLimit&&u(e,n,t)}}function s(e){return{debug:function(n,t){return c("debug",e+"_"+n,t)},info:function(n,t){return c("info",e+"_"+n,t)},warn:function(n,t){return c("warn",e+"_"+n,t)},error:function(n,t){return c("error",e+"_"+n,t)},track:function(e){return h(e)},flush:function(){return P()}}}function l(e,n){return c("debug",e,n)}function f(e,n){return c("info",e,n)}function d(e,n){return c("warn",e,n)}function v(e,n){return c("error",e,n)}function h(e){if("undefined"!=typeof window&&e){try{JSON.stringify(e)}catch(e){return}for(var n=g.trackingBuilders,t=Array.isArray(n),r=0,n=t?n:n[Symbol.iterator]();;){var o;if(t){if(r>=n.length)break;o=n[r++]}else{if(r=n.next(),r.done)break;o=r.value}var a=o;try{(0,p.extend)(e,a(e),!1)}catch(e){console.error("Error in custom tracking builder:",e.stack||e.toString())}}i("debug","tracking",e),y.push(e)}}Object.defineProperty(n,"__esModule",{value:!0}),n.track=n.flush=n.tracking=n.buffer=void 0,n.getTransport=r,n.setTransport=o,n.print=i,n.immediateFlush=a,n.log=c,n.prefix=s,n.debug=l,n.info=f,n.warn=d,n.error=v;var p=t(3),g=t(9),m=t(10),w=n.buffer=[],y=n.tracking=[],b=function(e,n,t){return(0,p.ajax)("post",m.config.uri,e,n,t)},_=!1;setTimeout(function(){_=!0},1);var P=(0,p.promiseDebounce)(a,m.config.debounceInterval);n.flush=P,n.track=h},function(e,n,t){"use strict";function r(e,n){var t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=e||{},n=n||{};for(var r in n)n.hasOwnProperty(r)&&(!t&&e.hasOwnProperty(r)||(e[r]=n[r]));return e}function o(e){return window.location.protocol===e.split("/")[0]}function i(e){var n=e.match(/https?:\/\/[^\/]+/);return!n||n[0]===window.location.protocol+"//"+window.location.host}function a(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},u=a.fireAndForget,c=void 0!==u&&u;return new d.ZalgoPromise(function(a){var u=window.XMLHttpRequest||window.ActiveXObject;if(window.XDomainRequest&&!i(n)){if(!o(n))return a();u=window.XDomainRequest}var s=new u("MSXML2.XMLHTTP.3.0");if(s.open(e.toUpperCase(),n,!0),"function"==typeof s.setRequestHeader){s.setRequestHeader("X-Requested-With","XMLHttpRequest"),s.setRequestHeader("Content-type","application/json");for(var l in t)t.hasOwnProperty(l)&&s.setRequestHeader(l,t[l])}c?a():s.onreadystatechange=function(){s.readyState>3&&a()},s.send(JSON.stringify(r).replace(/&/g,"%26"))})}function u(e,n){var t={};return function(){var r=arguments;return t.timeout&&(clearTimeout(t.timeout),delete t.timeout),t.timeout=setTimeout(function(){var n=t.resolver,o=t.rejector;return delete t.promise,delete t.resolver,delete t.rejector,delete t.timeout,d.ZalgoPromise.resolve().then(function(){return e.apply(null,r)}).then(n,o)},n),t.promise=t.promise||new d.ZalgoPromise(function(e,n){t.resolver=e,t.rejector=n}),t.promise}}function c(){return new d.ZalgoPromise(function(e){"undefined"!=typeof document&&"complete"===document.readyState&&e(),window.addEventListener("load",e)})}function s(e,n){function t(){r=setTimeout(function(){e(),t()},n)}var r=void 0;return t(),{cancel:function(){clearTimeout(r)}}}function l(){var e="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,function(){return e.charAt(Math.floor(Math.random()*e.length))})}function f(){return Boolean(window.document.documentMode)}Object.defineProperty(n,"__esModule",{value:!0}),n.extend=r,n.isSameProtocol=o,n.isSameDomain=i,n.ajax=a,n.promiseDebounce=u,n.onWindowReady=c,n.safeInterval=s,n.uniqueID=l,n.isIE=f;var d=t(4)},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(5);Object.defineProperty(n,"ZalgoPromise",{enumerable:!0,get:function(){return r.ZalgoPromise}})},function(e,n,t){"use strict";function r(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.ZalgoPromise=void 0;var o=function(){function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(n,t,r){return t&&e(n.prototype,t),r&&e(n,r),n}}(),i=t(6),a=t(7),u=t(8),c=function(){function e(n){var t=this;if(r(this,e),this.resolved=!1,this.rejected=!1,this.errorHandled=!1,this.handlers=[],n){var o=void 0,i=void 0,a=!1,u=!1,c=!1;try{n(function(e){c?t.resolve(e):(a=!0,o=e)},function(e){c?t.reject(e):(u=!0,i=e)})}catch(e){return void this.reject(e)}c=!0,a?this.resolve(o):u&&this.reject(i)}}return o(e,[{key:"resolve",value:function(e){if(this.resolved||this.rejected)return this;if((0,i.isPromise)(e))throw new Error("Can not resolve promise with another promise");return this.resolved=!0,this.value=e,this.dispatch(),this}},{key:"reject",value:function(e){var n=this;if(this.resolved||this.rejected)return this;if((0,i.isPromise)(e))throw new Error("Can not reject promise with another promise");if(!e){var t=e&&"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e);e=new Error("Expected reject to be called with Error, got "+t)}return this.rejected=!0,this.error=e,this.errorHandled||setTimeout(function(){n.errorHandled||(0,a.dispatchPossiblyUnhandledError)(e)},1),this.dispatch(),this}},{key:"asyncReject",value:function(e){this.errorHandled=!0,this.reject(e)}},{key:"dispatch",value:function(){var n=this,t=this.dispatching,r=this.resolved,o=this.rejected,a=this.handlers;if(!t&&(r||o)){this.dispatching=!0,(0,u.getGlobal)().activeCount+=1;for(var c=function(t){var u=a[t],c=u.onSuccess,s=u.onError,l=u.promise,f=void 0;if(r)try{f=c?c(n.value):n.value}catch(e){return l.reject(e),"continue"}else if(o){if(!s)return l.reject(n.error),"continue";try{f=s(n.error)}catch(e){return l.reject(e),"continue"}}f instanceof e&&(f.resolved||f.rejected)?(f.resolved?l.resolve(f.value):l.reject(f.error),f.errorHandled=!0):(0,i.isPromise)(f)?f instanceof e&&(f.resolved||f.rejected)?f.resolved?l.resolve(f.value):l.reject(f.error):f.then(function(e){l.resolve(e)},function(e){l.reject(e)}):l.resolve(f)},s=0;s<a.length;s++){c(s)}a.length=0,this.dispatching=!1,(0,u.getGlobal)().activeCount-=1,0===(0,u.getGlobal)().activeCount&&e.flushQueue()}}},{key:"then",value:function(n,t){if(n&&"function"!=typeof n&&!n.call)throw new Error("Promise.then expected a function for success handler");if(t&&"function"!=typeof t&&!t.call)throw new Error("Promise.then expected a function for error handler");var r=new e;return this.handlers.push({promise:r,onSuccess:n,onError:t}),this.errorHandled=!0,this.dispatch(),r}},{key:"catch",value:function(e){return this.then(void 0,e)}},{key:"finally",value:function(n){return this.then(function(t){return e.try(n).then(function(){return t})},function(t){return e.try(n).then(function(){throw t})})}},{key:"timeout",value:function e(n,t){var r=this;if(this.resolved||this.rejected)return this;var e=setTimeout(function(){r.resolved||r.rejected||r.reject(t||new Error("Promise timed out after "+n+"ms"))},n);return this.then(function(n){return clearTimeout(e),n})}},{key:"toPromise",value:function(){if("undefined"==typeof Promise)throw new TypeError("Could not find Promise");return Promise.resolve(this)}}],[{key:"resolve",value:function(n){return n instanceof e?n:(0,i.isPromise)(n)?new e(function(e,t){return n.then(e,t)}):(new e).resolve(n)}},{key:"reject",value:function(n){return(new e).reject(n)}},{key:"all",value:function(n){var t=new e,r=n.length,o=[];if(!r)return t.resolve(o),t;for(var a=function(a){var u=n[a];if(u instanceof e){if(u.resolved)return o[a]=u.value,r-=1,"continue"}else if(!(0,i.isPromise)(u))return o[a]=u,r-=1,"continue";e.resolve(u).then(function(e){o[a]=e,r-=1,0===r&&t.resolve(o)},function(e){t.reject(e)})},u=0;u<n.length;u++){a(u)}return 0===r&&t.resolve(o),t}},{key:"hash",value:function(n){var t={};return e.all(Object.keys(n).map(function(r){return e.resolve(n[r]).then(function(e){t[r]=e})})).then(function(){return t})}},{key:"map",value:function(n,t){return e.all(n.map(t))}},{key:"onPossiblyUnhandledException",value:function(e){return(0,a.onPossiblyUnhandledException)(e)}},{key:"try",value:function(n,t,r){var o=void 0;try{o=n.apply(t,r||[])}catch(n){return e.reject(n)}return e.resolve(o)}},{key:"delay",value:function(n){return new e(function(e){setTimeout(e,n)})}},{key:"isPromise",value:function(n){return!!(n&&n instanceof e)||(0,i.isPromise)(n)}},{key:"flush",value:function(){var n=new e;return(0,u.getGlobal)().flushPromises.push(n),0===(0,u.getGlobal)().activeCount&&e.flushQueue(),n}},{key:"flushQueue",value:function(){var e=(0,u.getGlobal)().flushPromises;(0,u.getGlobal)().flushPromises=[];for(var n=e,t=Array.isArray(n),r=0,n=t?n:n[Symbol.iterator]();;){var o;if(t){if(r>=n.length)break;o=n[r++]}else{if(r=n.next(),r.done)break;o=r.value}var i=o;i.resolve()}}}]),e}();n.ZalgoPromise=c},function(e,n){"use strict";function t(e){try{if(!e)return!1;if("undefined"!=typeof Promise&&e instanceof Promise)return!0;if("undefined"!=typeof window&&window.Window&&e instanceof window.Window)return!1;if("undefined"!=typeof window&&window.constructor&&e instanceof window.constructor)return!1;var n={}.toString;if(n){var t=n.call(e);if("[object Window]"===t||"[object global]"===t||"[object DOMWindow]"===t)return!1}if("function"==typeof e.then)return!0}catch(e){return!1}return!1}Object.defineProperty(n,"__esModule",{value:!0}),n.isPromise=t},function(e,n,t){"use strict";function r(e){if((0,i.getGlobal)().dispatchedErrors.indexOf(e)===-1){(0,i.getGlobal)().dispatchedErrors.push(e),setTimeout(function(){throw e},1);for(var n=0;n<(0,i.getGlobal)().possiblyUnhandledPromiseHandlers.length;n++)(0,i.getGlobal)().possiblyUnhandledPromiseHandlers[n](e)}}function o(e){return(0,i.getGlobal)().possiblyUnhandledPromiseHandlers.push(e),{cancel:function(){(0,i.getGlobal)().possiblyUnhandledPromiseHandlers.splice((0,i.getGlobal)().possiblyUnhandledPromiseHandlers.indexOf(e),1)}}}Object.defineProperty(n,"__esModule",{value:!0}),n.dispatchPossiblyUnhandledError=r,n.onPossiblyUnhandledException=o;var i=t(8)},function(e,n){(function(e){"use strict";function t(){var n=void 0;if("undefined"!=typeof window)n=window;else{if("undefined"==typeof e)throw new TypeError("Can not find global");n=e}var t=n.__zalgopromise__=n.__zalgopromise__||{};return t.flushPromises=t.flushPromises||[],t.activeCount=t.activeCount||0,t.possiblyUnhandledPromiseHandlers=t.possiblyUnhandledPromiseHandlers||[],t.dispatchedErrors=t.dispatchedErrors||[],t}Object.defineProperty(n,"__esModule",{value:!0}),n.getGlobal=t}).call(n,function(){return this}())},function(e,n){"use strict";function t(e){a.push(e)}function r(e){u.push(e)}function o(e){c.push(e)}function i(e){s.push(e)}Object.defineProperty(n,"__esModule",{value:!0}),n.addPayloadBuilder=t,n.addMetaBuilder=r,n.addTrackingBuilder=o,n.addHeaderBuilder=i;var a=n.payloadBuilders=[],u=n.metaBuilders=[],c=n.trackingBuilders=[],s=n.headerBuilders=[]},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.config={uri:"",prefix:"",initial_state_name:"init",flushInterval:6e5,debounceInterval:10,sizeLimit:300,silent:!1,heartbeat:!0,heartbeatConsoleLog:!0,heartbeatInterval:5e3,heartbeatTooBusy:!1,heartbeatTooBusyThreshold:1e4,logLevel:"warn",autoLog:["warn","error"],logUnload:!0,logPerformance:!0},n.logLevels=["error","warn","info","debug"]},function(e,n,t){"use strict";function r(e){(0,i.extend)(o.config,e||{}),c||(c=!0,o.config.logPerformance&&(0,a.initPerformance)(),o.config.heartbeat&&(0,a.initHeartBeat)(),o.config.logUnload&&(window.addEventListener("beforeunload",function(){(0,u.info)("window_beforeunload"),(0,u.immediateFlush)({fireAndForget:!0})}),window.addEventListener("unload",function(){(0,u.info)("window_unload"),(0,u.immediateFlush)({fireAndForget:!0})})),o.config.flushInterval&&setInterval(u.flush,o.config.flushInterval),window.beaverLogQueue&&(window.beaverLogQueue.forEach(function(e){(0,u.log)(e.level,e.event,e)}),delete window.beaverLogQueue))}Object.defineProperty(n,"__esModule",{value:!0}),n.init=r;var o=t(10),i=t(3),a=t(12),u=t(2),c=!1},function(e,n,t){"use strict";function r(){return d?performance.now():Date.now()}function o(e){return e=void 0!==e?e:r(),{startTime:e,elapsed:function(){return parseInt(r()-e,10)},reset:function(){e=r()}}}function i(){if(d){var e=window.performance.timing;return parseInt(e.connectEnd-e.navigationStart,10)}}function a(){var e=o(),n=0;(0,f.safeInterval)(function(){if(!(c.config.heartbeatMaxThreshold&&n>c.config.heartbeatMaxThreshold)){n+=1;var t=e.elapsed(),r=t-c.config.heartbeatInterval,o={count:n,elapsed:t};c.config.heartbeatTooBusy&&(o.lag=r,r>=c.config.heartbeatTooBusyThreshold&&(0,s.info)("toobusy",o,{noConsole:!c.config.heartbeatConsoleLog})),(0,s.info)("heartbeat",o,{noConsole:!c.config.heartbeatConsoleLog})}},c.config.heartbeatInterval)}function u(){return d?((0,l.addPayloadBuilder)(function(){var e={};return e.client_elapsed=v.elapsed(),d&&(e.req_elapsed=h.elapsed()),e}),void(0,f.onWindowReady)().then(function(){var e=["connectEnd","connectStart","domComplete","domContentLoadedEventEnd","domContentLoadedEventStart","domInteractive","domLoading","domainLookupEnd","domainLookupStart","fetchStart","loadEventEnd","loadEventStart","navigationStart","redirectEnd","redirectStart","requestStart","responseEnd","responseStart","secureConnectionStart","unloadEventEnd","unloadEventStart"],n={};e.forEach(function(e){n[e]=parseInt(window.performance.timing[e],10)||0});var t=n.connectEnd-n.navigationStart;n.connectEnd&&Object.keys(n).forEach(function(e){var r=n[e];r&&(0,s.info)("timing_"+e,{client_elapsed:parseInt(r-n.connectEnd-(v.startTime-t),10),req_elapsed:parseInt(r-n.connectEnd,10)})}),(0,s.info)("timing",n),(0,s.info)("memory",window.performance.memory),(0,s.info)("navigation",window.performance.navigation),window.performance.getEntries&&window.performance.getEntries().forEach(function(e){["link","script","img","css"].indexOf(e.initiatorType)>-1&&(0,s.info)(e.initiatorType,e)})})):(0,s.info)("no_performance_data")}Object.defineProperty(n,"__esModule",{value:!0}),n.reqTimer=n.clientTimer=void 0,n.now=r,n.reqStartElapsed=i,n.initHeartBeat=a,n.initPerformance=u;var c=t(10),s=t(2),l=t(9),f=t(3),d=window&&window.performance&&performance.now&&performance.timing&&performance.timing.connectEnd&&performance.timing.navigationStart&&Math.abs(performance.now()-Date.now())>1e3&&performance.now()-(performance.timing.connectEnd-performance.timing.navigationStart)>0,v=n.clientTimer=o(),h=n.reqTimer=o(i())},function(e,n,t){"use strict";function r(){h=(0,a.now)()}function o(e){h=h||(0,a.reqStartElapsed)();var n=(0,a.now)(),t=void 0;void 0!==h&&(t=parseInt(n-h,0));var r="transition_"+v+"_to_"+e;(0,u.info)(r,{duration:t}),(0,u.track)({transition:r,transition_time:t}),(0,u.immediateFlush)(),h=n,v=e,d=(0,s.uniqueID)()}function i(e){r(),o(e)}Object.defineProperty(n,"__esModule",{value:!0}),n.startTransition=r,n.endTransition=o,n.transition=i;var a=t(12),u=t(2),c=t(9),s=t(3),l=t(10),f=(0,s.uniqueID)(),d=(0,s.uniqueID)(),v=l.config.initial_state_name,h=void 0;(0,c.addPayloadBuilder)(function(){return{windowID:f,pageID:d}}),(0,c.addMetaBuilder)(function(){return{state:"ui_"+v}})}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("beaver",[],t):"object"==typeof exports?exports.beaver=t():e.beaver=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t,n){"use strict";t.b=o,t.c=i,t.e=function(){},t.k=function(){var e="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,function(){return e.charAt(Math.floor(Math.random()*e.length))})+"_"+u((new Date).toISOString().slice(11,19).replace("T",".")).replace(/[^a-zA-Z0-9]/g,"").toLowerCase()},t.d=function e(){return i(e,function(){try{if("undefined"==typeof window)return!1;if(window.localStorage){var e=Math.random().toString();window.localStorage.setItem("__test__localStorage__",e);var t=window.localStorage.getItem("__test__localStorage__");if(window.localStorage.removeItem("__test__localStorage__"),e===t)return!0}}catch(e){}return!1})},t.a=function(e,t){if(!t)return e;if(Object.assign)return Object.assign(e,t);for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},t.g=function(e,t,n){var r=[];return e.replace(t,function(){r.push(n.apply(null,arguments))}),r},t.j=function(e){return"data:image/svg+xml;base64,"+u(e)},t.h=function(e,t){var n=[];return e.replace(t,function(e){return n.push(e),""}),n},t.f=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,n=void 0,o=void 0;return function(){o&&clearTimeout(o);var i=n=n||new r.a;return o=setTimeout(function(){n=null,o=null,r.a.try(e).then(function(e){return i.resolve(e)},function(e){return i.reject(e)})},t),i}},t.i=function(e,t){var n=void 0;return function r(){n=setTimeout(function(){e(),r()},t)}(),{cancel:function(){clearTimeout(n)}}};var r=n(1);function o(){if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("No global found")}function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return e.__memoized__||(e.__memoized__=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e.__memoized__)return e.__memoized__;var n={};return e.__memoized__=function(){for(var r=arguments.length,i=Array(r),u=0;u<r;u++)i[u]=arguments[u];if(e.__memoized__&&e.__memoized__.__calling__)throw new Error("Can not call memoized method recursively");var s=void 0;try{s=JSON.stringify(Array.prototype.slice.call(arguments))}catch(e){throw new Error("Arguments not serializable -- can not be used to memoize")}var c=t.time;n[s]&&c&&Date.now()-n[s].time<c&&delete n[s];var a=o();if(a.__CACHE_START_TIME__&&n[s]&&n[s].time<a.__CACHE_START_TIME__&&delete n[s],n[s])return n[s].value;e.__memoized__.__calling__=!0;var f=Date.now(),l=e.apply(this,arguments);return e.__memoized__.__calling__=!1,n[s]={time:f,value:l},n[s].value},e.__memoized__}(t)),e.__memoized__.apply(e,n)}function u(e){return window.btoa(e)}},function(e,t,n){"use strict";function r(e){try{if(!e)return!1;if("undefined"!=typeof Promise&&e instanceof Promise)return!0;if("undefined"!=typeof window&&window.Window&&e instanceof window.Window)return!1;if("undefined"!=typeof window&&window.constructor&&e instanceof window.constructor)return!1;var t={}.toString;if(t){var n=t.call(e);if("[object Window]"===n||"[object global]"===n||"[object DOMWindow]"===n)return!1}if("function"==typeof e.then)return!0}catch(e){return!1}return!1}function o(){var e=void 0;if("undefined"!=typeof window)e=window;else{if("undefined"==typeof global)throw new TypeError("Can not find global");e=global}var t=e.__zalgopromise__=e.__zalgopromise__||{};return t.flushPromises=t.flushPromises||[],t.activeCount=t.activeCount||0,t.possiblyUnhandledPromiseHandlers=t.possiblyUnhandledPromiseHandlers||[],t.dispatchedErrors=t.dispatchedErrors||[],t}var i=function(){function e(t){var n=this;if(function(t,n){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this),this.resolved=!1,this.rejected=!1,this.errorHandled=!1,this.handlers=[],t){var r=void 0,o=void 0,i=!1,u=!1,s=!1;try{t(function(e){s?n.resolve(e):(i=!0,r=e)},function(e){s?n.reject(e):(u=!0,o=e)})}catch(e){return void this.reject(e)}s=!0,i?this.resolve(r):u&&this.reject(o)}}return e.prototype.resolve=function(e){if(this.resolved||this.rejected)return this;if(r(e))throw new Error("Can not resolve promise with another promise");return this.resolved=!0,this.value=e,this.dispatch(),this},e.prototype.reject=function(e){var t=this;if(this.resolved||this.rejected)return this;if(r(e))throw new Error("Can not reject promise with another promise");if(!e){var n=e&&"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e);e=new Error("Expected reject to be called with Error, got "+n)}return this.rejected=!0,this.error=e,this.errorHandled||setTimeout(function(){t.errorHandled||function(e){if(-1===o().dispatchedErrors.indexOf(e)){o().dispatchedErrors.push(e),setTimeout(function(){throw e},1);for(var t=0;t<o().possiblyUnhandledPromiseHandlers.length;t++)o().possiblyUnhandledPromiseHandlers[t](e)}}(e)},1),this.dispatch(),this},e.prototype.asyncReject=function(e){this.errorHandled=!0,this.reject(e)},e.prototype.dispatch=function(){var t=this,n=this.dispatching,i=this.resolved,u=this.rejected,s=this.handlers;if(!n&&(i||u)){this.dispatching=!0,o().activeCount+=1;for(var c=function(n){var o=s[n],c=o.onSuccess,a=o.onError,f=o.promise,l=void 0;if(i)try{l=c?c(t.value):t.value}catch(e){return f.reject(e),"continue"}else if(u){if(!a)return f.reject(t.error),"continue";try{l=a(t.error)}catch(e){return f.reject(e),"continue"}}l instanceof e&&(l.resolved||l.rejected)?(l.resolved?f.resolve(l.value):f.reject(l.error),l.errorHandled=!0):r(l)?l instanceof e&&(l.resolved||l.rejected)?l.resolved?f.resolve(l.value):f.reject(l.error):l.then(function(e){f.resolve(e)},function(e){f.reject(e)}):f.resolve(l)},a=0;a<s.length;a++)c(a);s.length=0,this.dispatching=!1,o().activeCount-=1,0===o().activeCount&&e.flushQueue()}},e.prototype.then=function(t,n){if(t&&"function"!=typeof t&&!t.call)throw new Error("Promise.then expected a function for success handler");if(n&&"function"!=typeof n&&!n.call)throw new Error("Promise.then expected a function for error handler");var r=new e;return this.handlers.push({promise:r,onSuccess:t,onError:n}),this.errorHandled=!0,this.dispatch(),r},e.prototype.catch=function(e){return this.then(void 0,e)},e.prototype.finally=function(t){return this.then(function(n){return e.try(t).then(function(){return n})},function(n){return e.try(t).then(function(){throw n})})},e.prototype.timeout=function(e,t){var n=this;if(this.resolved||this.rejected)return this;var r=setTimeout(function(){n.resolved||n.rejected||n.reject(t||new Error("Promise timed out after "+e+"ms"))},e);return this.then(function(e){return clearTimeout(r),e})},e.prototype.toPromise=function(){if("undefined"==typeof Promise)throw new TypeError("Could not find Promise");return Promise.resolve(this)},e.resolve=function(t){return t instanceof e?t:r(t)?new e(function(e,n){return t.then(e,n)}):(new e).resolve(t)},e.reject=function(t){return(new e).reject(t)},e.all=function(t){var n=new e,o=t.length,i=[];if(!o)return n.resolve(i),n;for(var u=function(u){var s=t[u];if(s instanceof e){if(s.resolved)return i[u]=s.value,o-=1,"continue"}else if(!r(s))return i[u]=s,o-=1,"continue";e.resolve(s).then(function(e){i[u]=e,0==(o-=1)&&n.resolve(i)},function(e){n.reject(e)})},s=0;s<t.length;s++)u(s);return 0===o&&n.resolve(i),n},e.hash=function(t){var n={};return e.all(Object.keys(t).map(function(r){return e.resolve(t[r]).then(function(e){n[r]=e})})).then(function(){return n})},e.map=function(t,n){return e.all(t.map(n))},e.onPossiblyUnhandledException=function(e){return function(e){return o().possiblyUnhandledPromiseHandlers.push(e),{cancel:function(){o().possiblyUnhandledPromiseHandlers.splice(o().possiblyUnhandledPromiseHandlers.indexOf(e),1)}}}(e)},e.try=function(t,n,r){var o=void 0;try{o=t.apply(n,r||[])}catch(t){return e.reject(t)}return e.resolve(o)},e.delay=function(t){return new e(function(e){setTimeout(e,t)})},e.isPromise=function(t){return!!(t&&t instanceof e)||r(t)},e.flush=function(){var t=new e;return o().flushPromises.push(t),0===o().activeCount&&e.flushQueue(),t},e.flushQueue=function(){var e=o().flushPromises;o().flushPromises=[];for(var t=0,n=null==e?0:e.length;t<n;t++)e[t].resolve()},e}();n.d(t,"a",function(){return i})},function(e,t,n){"use strict";t.a=function(){return!!(window.navigator.mockUserAgent||window.navigator.userAgent).match(/Android|webOS|iPhone|iPad|iPod|bada|Symbian|Palm|CriOS|BlackBerry|IEMobile|WindowsMobile|Opera Mini/i)}},function(e,t,n){"use strict";t.a=function(e){var t=e.name,n=e.version,o=void 0===n?"latest":n,i=e.lifetime,u=void 0===i?3e5:i,s="__"+t+"_"+o+"_storage__",c=void 0;function a(e){var t=Object(r.d)(),n=void 0;if(c&&(n=c),!n&&t){var o=window.localStorage.getItem(s);o&&(n=JSON.parse(o))}n||(n=Object(r.b)()[s]),n||(n={id:Object(r.k)()}),n.id||(n.id=Object(r.k)()),c=n;var i=e(n);return t?window.localStorage.setItem(s,JSON.stringify(n)):Object(r.b)()[s]=n,c=null,i}function f(e){return a(function(t){var n=t.__session__,o=Date.now();return n&&o-n.created>u&&(n=null),n||(n={guid:Object(r.k)(),created:o}),t.__session__=n,e(n)})}return{getState:a,getID:function(){return a(function(e){return e.id})},getSessionState:function(e){return f(function(t){return t.state=t.state||{},e(t.state)})},getSessionID:function(){return f(function(e){return e.guid})}}};var r=n(0)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=n(5),i={DEBUG:"debug",INFO:"info",WARN:"warn",ERROR:"error"},u=[i.WARN,i.ERROR],s=[i.ERROR,i.WARN,i.INFO,i.DEBUG],c=6e4,a=i.WARN,f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function l(e){var t=e.url,n=e.method,r=e.headers,i=e.json;return Object(o.request)({url:t,method:n,headers:r,json:i}).then(o.noop)}function d(e){var t=e.url,n=e.prefix,d=e.logLevel,h=void 0===d?a:d,p=e.transport,v=void 0===p?l:p,w=e.flushInterval,m=void 0===w?c:w,_=[],y=[],g=[],b=[],j=[],O=[];function E(e,t,n){if(Object(o.isBrowser)()&&window.console&&window.console.log){var r=h;if(window.LOG_LEVEL&&-1!==s.indexOf(window.LOG_LEVEL)&&(r=window.LOG_LEVEL),!(s.indexOf(e)>s.indexOf(r))){var i=[t];i.push(n),(n.error||n.warning)&&i.push("\n\n",n.error||n.warning);try{window.console[e]&&window.console[e].apply?window.console[e].apply(window.console,i):window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,i)}catch(e){}}}}function T(){return r.a.try(function(){if(Object(o.isBrowser)()&&(_.length||y.length)){for(var e={},n=0,r=null==b?0:b.length;n<r;n++){var i=b[n];Object(o.extend)(e,i(e))}for(var u={},s=0,c=null==O?0:O.length;s<c;s++){var a=O[s];Object(o.extend)(u,a(u))}var f=v({method:"POST",url:t,headers:u,json:{events:_,meta:e,tracking:y}});return _=[],y=[],f.then(o.noop)}})}var S=Object(o.promiseDebounce)(T);function x(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(Object(o.isBrowser)()){n&&(t=n+"_"+t),r=f({},r,{timestamp:Date.now().toString()});for(var i=0,s=null==g?0:g.length;i<s;i++){var c=g[i];Object(o.extend)(r,c(r))}!function(e,t,n){_.push({level:e,event:t,payload:n}),-1!==u.indexOf(e)&&S()}(e,t,r),E(e,t,r)}}return Object(o.safeInterval)(S,m),{debug:function(e,t){x(i.DEBUG,e,t)},info:function(e,t){x(i.INFO,e,t)},warn:function(e,t){x(i.WARN,e,t)},error:function(e,t){x(i.ERROR,e,t)},track:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(Object(o.isBrowser)()){for(var t=0,n=null==j?0:j.length;t<n;t++){var r=j[t];Object(o.extend)(e,r(e))}E(i.DEBUG,"track",e),y.push(e)}},flush:S,immediateFlush:T,addPayloadBuilder:function(e){g.push(e)},addMetaBuilder:function(e){b.push(e)},addTrackingBuilder:function(e){j.push(e)},addHeaderBuilder:function(e){O.push(e)},setTransport:function(e){v=e}}}n.d(t,"Logger",function(){return d}),n.d(t,"LOG_LEVEL",function(){return i})},function(e,t,n){"use strict";n(2);var r=n(6);n.d(t,"isBrowser",function(){return r.a}),n(7),n(8),n(9),n(3);var o=n(0);n.d(t,"extend",function(){return o.a}),n.d(t,"noop",function(){return o.e}),n.d(t,"promiseDebounce",function(){return o.f}),n.d(t,"safeInterval",function(){return o.i});var i=n(10);n.d(t,"request",function(){return i.a});var u=n(14);n.n(u)},function(e,t,n){"use strict";t.a=function(){return"undefined"!=typeof window},n(1),n(0),n(2)},function(e,t,n){"use strict";n(0),n(3)},function(e,t,n){"use strict";n(0)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/\//g,"&#x2F;")}n(0),Object.assign,function(e){function t(n){return r(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,"",{},n))}(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)})(t,e),t.prototype.toString=function(){return this.childrenToString()}}(function(){function e(t,n,o){r(this,e),this.name=t,this.props=n,this.children=o}return e.prototype.toString=function(){return"<"+this.name+(this.props?" ":"")+(this.props?this.propsToString():"")+">"+this.childrenToString()+"</"+this.name+">"},e.prototype.propsToString=function(){var e=this.props;return e?Object.keys(e).filter(function(t){return"innerHTML"!==t&&e&&!1!==e[t]}).map(function(t){if(e){var n=e[t];if(!0===n)return""+o(t);if("string"==typeof n)return o(t)+'="'+o(n)+'"'}return""}).filter(Boolean).join(" "):""},e.prototype.childrenToString=function(){if(this.props&&this.props.innerHTML)return this.props.innerHTML;if(!this.children)return"";var t="";return function n(r){for(var i=0,u=null==r?0:r.length;i<u;i++){var s=r[i];null!==s&&void 0!==s&&(Array.isArray(s)?n(s):t+=s instanceof e?s.toString():o(s))}}(this.children),t},e}())},function(e,t,n){"use strict";t.a=function(e){var t=e.url,n=e.method,s=void 0===n?"get":n,c=e.headers,a=void 0===c?{}:c,f=e.json,l=e.data,d=e.body,h=e.win,p=void 0===h?window:h,v=e.timeout,w=void 0===v?0:v;return new r.a(function(e,n){if(f&&l||f&&d||l&&f)throw new Error("Only options.json or options.data or options.body should be passed");for(var r={},c=0,h=Object.keys(a),v=null==h?0:h.length;c<v;c++){var m=h[c];r[m.toLowerCase()]=a[m]}f?r[i.CONTENT_TYPE]=r[i.CONTENT_TYPE]||"application/json":(l||d)&&(r[i.CONTENT_TYPE]=r[i.CONTENT_TYPE]||"application/x-www-form-urlencoded; charset=utf-8"),r[i.ACCEPT]=r[i.ACCEPT]||"application/json";for(var _=0,y=null==u?0:u.length;_<y;_++)for(var g=(0,u[_])(),b=0,j=Object.keys(g),O=null==j?0:j.length;b<O;b++){var E=j[b];r[E.toLowerCase()]=g[E]}var T=new p.XMLHttpRequest;for(var S in T.addEventListener("load",function(){var r=function(){for(var e={},t=0,n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").trim().split("\n"),r=null==n?0:n.length;t<r;t++){var o=n[t].split(":"),i=o[0],u=o.slice(1);e[i.toLowerCase()]=u.join(":").trim()}return e}(this.getAllResponseHeaders());if(!this.status)return n(new Error("Request to "+s.toLowerCase()+" "+t+" failed: no response status code."));var i=r["content-type"],u=i&&(0===i.indexOf("application/json")||0===i.indexOf("text/json")),c=this.responseText;try{c=JSON.parse(this.responseText)}catch(e){if(u)return n(new Error("Invalid json: "+this.responseText+"."))}if(this.status>=400){var a="Request to "+s.toLowerCase()+" "+t+" failed with "+this.status+" error.";return c&&("object"===(void 0===c?"undefined":o(c))&&null!==c&&(c=JSON.stringify(c,null,4)),a=a+"\n\n"+c+"\n"),n(new Error(a))}return e(c)},!1),T.addEventListener("error",function(e){n(new Error("Request to "+s.toLowerCase()+" "+t+" failed: "+e.toString()+"."))},!1),T.open(s,t,!0),r)r.hasOwnProperty(S)&&T.setRequestHeader(S,r[S]);f?d=JSON.stringify(f):l&&(d=Object.keys(l).map(function(e){return encodeURIComponent(e)+"="+(l?encodeURIComponent(l[e]):"")}).join("&")),T.timeout=w,T.ontimeout=function(){n(new Error("Request to "+s.toLowerCase()+" "+t+" has timed out"))},T.send(d)})};var r=n(1),o=(n(11),"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e}),i={CONTENT_TYPE:"content-type",ACCEPT:"accept"},u=[]},function(e,t,n){"use strict";n(12);var r=n(13);n.n(r)},function(e,t,n){"use strict"},function(e,t){},function(e,t){}])});
//# sourceMappingURL=beaver-logger.min.js.map
//# sourceMappingURL=beaver-logger.min.js.map
{
"name": "beaver-logger",
"version": "3.0.17",
"version": "4.0.0",
"description": "Client side logger.",
"main": "index.js",
"main": "dist/beaver-logger.js",
"scripts": {
"test": "gulp lint && karma start"
"setup": "npm install && npm run flow-typed",
"lint": "eslint client/ server/ test/ *.js",
"flow-typed": "flow-typed install",
"flow": "flow",
"karma": "cross-env NODE_ENV=test babel-node --plugins=transform-es2015-modules-commonjs ./node_modules/.bin/karma start",
"babel": "babel src/ --out-dir dist/module",
"webpack": "babel-node --plugins=transform-es2015-modules-commonjs ./node_modules/.bin/webpack --progress",
"test": "npm run lint && npm run flow-typed && npm run flow && npm run karma",
"build": "npm run test && npm run babel && npm run webpack",
"release": "./publish.sh",
"release:patch": "./publish.sh patch",
"release:minor": "./publish.sh minor",
"release:major": "./publish.sh major",
"clean": "rimraf dist coverage",
"reinstall": "rimraf flow-typed && rimraf node_modules && npm install && flow-typed install"
},

@@ -33,43 +47,14 @@ "repository": {

"devDependencies": {
"babel-core": "^6.7.7",
"babel-eslint": "^6.0.4",
"babel-loader": "^6.2.4",
"babel-plugin-add-module-exports": "^0.1.4",
"babel-plugin-syntax-object-rest-spread": "^6.5.0",
"babel-plugin-transform-es2015-for-of": "^6.18.0",
"babel-plugin-transform-es3-member-expression-literals": "^6.5.0",
"babel-plugin-transform-es3-property-literals": "^6.5.0",
"babel-plugin-transform-flow-strip-types": "^6.22.0",
"babel-plugin-transform-object-rest-spread": "^6.6.5",
"babel-preset-es2015": "^6.6.0",
"chai": "^3.5.0",
"es6-symbol": "^3.0.2",
"eslint": "^2.8.0",
"gulp": "^3.9.1",
"gulp-eslint": "^2.0.0",
"gulp-karma": "0.0.5",
"gulp-webpack": "^1.5.0",
"istanbul-instrumenter-loader": "^0.2.0",
"karma": "^0.13.22",
"karma-chrome-launcher": "^1.0.1",
"karma-commonjs": "^1.0.0",
"karma-coverage": "^1.0.0",
"karma-mocha": "^1.0.1",
"karma-phantomjs-launcher": "^1.0.0",
"karma-sinon-chai": "^1.2.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.26",
"karma-webpack": "^1.7.0",
"lolex": "^1.5.0",
"mocha": "^2.5.3",
"phantomjs-prebuilt": "^2.1.7",
"sinon": "^1.17.4",
"sinon-chai": "^2.8.0",
"sync-browser-mocks": "^1.0.2",
"webpack": "^1.13.1",
"yargs": "^4.7.1"
"flow-bin": "^0.70.0",
"grumbler-scripts": "^2.0.56",
"mocha": "^3.5.3",
"sync-browser-mocks": "^1.0.44"
},
"dependencies": {
"belter": "^1.0.17",
"zalgo-promise": "^1.0.26"
},
"peerDependencies": {
"express": "^4"
}
}

@@ -7,4 +7,2 @@ beaver-logger

- Buffer your front-end logs and periodically send them to the server side
- Allow you to log page transitions and gather performance stats
- Automatically log window performance stats, where available, and watch for event loop delays
- Automatically flush logs for any errors or warnings

@@ -17,3 +15,10 @@

## Setup
```javascript
var $logger = beaver.Logger({
url: '/my/logger/url'
});
```
## Basic logging

@@ -33,25 +38,2 @@

## Transitions
### `$logger.startTransition();`
Call this when you start an ajax call or some other loading period, with the intention of moving to another page.
### `$logger.endTransition(<nextStateName>);`
Call this when you transition to the next page. beaver-logger will automatically log the transition, and how long it took. The logs will be auto-flushed after this call.
### `$logger.transition(<nextStateName>);`
This is a short-hand for `logger.startTransition(); $logger.endTransition(<nextStateName>);` when there is no loading time, and the transition from one state to another is instant. The logs will be auto-flushed after this call.
## Initialization and configuration
### `$logger.init(<config>);`
Set the logger up with your configuration options. This is optional. Configuration options are listed below.
## Advanced

@@ -109,3 +91,3 @@

Flushes the logs to the server side. Recommended you don't call this manually, as it will happen automatically on page transitions, or after a configured interval.
Flushes the logs to the server side. Recommended you don't call this manually, as it will happen automatically after a configured interval.

@@ -116,5 +98,5 @@

- Install via npm or bower
- Install via npm
`npm install --save beaver-logger` or `bower install --save beaver-logger`
`npm install --save beaver-logger`

@@ -134,53 +116,22 @@ - Include in your project

Front-End Configuration
-----------------------
Configuration
-------------
Full configuration options:
```javascript
$logger.init({
```javascript
var $logger = beaver.Logger({
// URI to post logs to
uri: '/api/log',
// Url to send logs to
url: '/my/logger/url',
// State name to post logs under
initial_state_name: 'init',
// Prefix to prepend to all events
prefix: 'myapp',
// Interval at which to automatically flush logs to the server
flushInterval: 10 * 60 * 1000,
// Log level to display in the browser console
logLevel: beaver.LOG_LEVEL.WARN,
// Interval at which to debounce $logger.flush calls
debounceInterval: 10,
// Limit on number of logs before auto-flush happens
sizeLimit: 300,
// Supress `console.log`s when `true`
// Recommended for production usage
silent: false,
// Enable or disable heartbeats, which run on an interval
heartbeat: true,
// Heartbeat log interval
heartbeatInterval: 5000,
// Maximum number of sequential heartbeat logs
heartbeatMaxThreshold: 50,
// Monitors for event loop delays and triggers a toobusy event
heartbeatTooBusy: false,
// Event loop delay which triggers a toobusy event
heartbeatTooBusyThreshold: 10000,
// Log levels which trigger an auto-flush to the server
autoLog: ['warn', 'error'],
// Log window.onunload and window.beforeUnload events?
logUnload: true,
// Log unload synchronously, to guarantee the log gets through?
logUnloadSync: false,
// Log performance stats from the browser automatically?
logPerformance: true
// Interval to flush logs to server
flushInterval: 60 * 1000
});

@@ -187,0 +138,0 @@ ```

@@ -1,173 +0,3 @@

var util = require('./util');
var url = require('url');
/* @flow */
var defaultLogger = {
log: function(req, level, name, payload) {
var date = payload.timestamp
? new Date(payload.timestamp).toString()
: new Date().toString();
var str = [
name,
'\t[ ',
date,
' ]\n',
Object.keys(payload)
.map(function(key) {
return '\t' + key + ': ' + payload[key];
})
.join('\n'),
'\n'
].join('');
console[level].call(console, str);
},
track: function(req, tracking) {
console.log(
'[track]\n',
Object.keys(tracking)
.map(function(key) {
return '\t' + key + ': ' + tracking[key];
})
.join('\n'),
'\n'
);
},
meta: function(req, meta) {
console.log(
'[meta]\n',
Object.keys(meta)
.map(function(key) {
return '\t' + key + ': ' + meta[key];
})
.join('\n'),
'\n'
);
}
};
var log = (module.exports.log = function log(req, logger, logs) {
var events = logs.events || [];
var meta = logs.meta || {};
var tracking = logs.tracking || {};
if (Array.isArray(events)) {
events.forEach(function(event) {
if (!event.event) {
return;
}
event.level = event.level || 'info';
event.payload = event.payload || {};
var _log = logger instanceof Function ? logger : logger.log;
if (_log instanceof Function) {
return _log(req, event.level, event.event, event.payload);
}
var _logLevel = logger[event.level];
if (_logLevel instanceof Function) {
return _logLevel(req, event.event, event.payload);
}
defaultLogger.log(req, event.level, event.event, event.payload);
});
}
if (logger.meta) {
logger.meta(req, meta);
}
if (logger.track) {
logger.track(req, tracking);
}
});
var handleRequest = (module.exports.handleRequest = function handleRequest(
req,
logger
) {
var method = req.method || 'get';
var query = req.query || {};
var body = req.body || {};
if (method.toLowerCase() === 'post') {
return log(req, logger, body);
} else {
var event = query.event;
var level = query.level || 'info';
var state = query.state;
var payload = util.extend({}, query);
delete payload.event;
delete payload.level;
delete payload.state;
return log(req, logger, {
events: [
{
level: level,
event: event,
payload: payload
}
],
meta: {
state: state
}
});
}
});
module.exports.expressEndpoint = function expressEndpoint(options) {
options = options || {};
options.uri = options.uri || '/';
options.logger = options.logger || defaultLogger;
var app = require('express')();
app.all(options.uri, function(req, res, next) {
if (options.enableCors) {
if (req.get('origin')) {
var parsedUrl = url.parse(req.get('origin')) || {};
res.header(
'Access-Control-Allow-Origin',
parsedUrl.protocol + '//' + parsedUrl.host
);
} else {
res.header('Access-Control-Allow-Origin', '*');
}
var corsRequestHeaders = req.headers['access-control-request-headers'];
if (corsRequestHeaders) {
res.header('Access-Control-Allow-Headers', corsRequestHeaders);
}
var corsRequestMethod = req.headers['access-control-request-method'];
if (corsRequestMethod) {
res.header('Access-Control-Allow-Methods', corsRequestMethod);
}
}
if (req.method.toLowerCase === 'options') {
return res.status(200).send();
}
try {
handleRequest(req, options.logger);
res.status(200).send();
} catch (err) {
console.error(err.stack || err.toString());
res.status(500).send();
}
});
return app;
};
export * from './server';
SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc