{"version":3,"file":"airbrakeErrorHandling-C4WNYxQM.js","sources":["../../../node_modules/promise-polyfill/src/finally.js","../../../node_modules/promise-polyfill/src/allSettled.js","../../../node_modules/promise-polyfill/src/any.js","../../../node_modules/promise-polyfill/src/index.js","../../../node_modules/@airbrake/browser/esm/jsonify_notice.js","../../../node_modules/@airbrake/browser/esm/metrics.js","../../../node_modules/@airbrake/browser/esm/scope.js","../../../node_modules/stackframe/stackframe.js","../../../node_modules/error-stack-parser/error-stack-parser.js","../../../node_modules/@airbrake/browser/esm/processor/esp.js","../../../node_modules/@airbrake/browser/esm/filter/angular_message.js","../../../node_modules/@airbrake/browser/esm/filter/debounce.js","../../../node_modules/@airbrake/browser/esm/filter/ignore_noise.js","../../../node_modules/@airbrake/browser/esm/filter/uncaught_message.js","../../../node_modules/cross-fetch/dist/browser-ponyfill.js","../../../node_modules/@airbrake/browser/esm/http_req/api.js","../../../node_modules/@airbrake/browser/esm/http_req/fetch.js","../../../node_modules/@airbrake/browser/esm/http_req/node.js","../../../node_modules/@airbrake/browser/esm/http_req/index.js","../../../node_modules/@airbrake/browser/esm/tdshared.js","../../../node_modules/@airbrake/browser/esm/queries.js","../../../node_modules/@airbrake/browser/esm/queues.js","../../../node_modules/@airbrake/browser/esm/routes.js","../../../node_modules/@airbrake/browser/esm/version.js","../../../node_modules/@airbrake/browser/esm/remote_settings.js","../../../node_modules/@airbrake/browser/esm/base_notifier.js","../../../node_modules/@airbrake/browser/esm/filter/window.js","../../../node_modules/@airbrake/browser/esm/instrumentation/console.js","../../../node_modules/@airbrake/browser/esm/instrumentation/dom.js","../../../node_modules/@airbrake/browser/esm/instrumentation/fetch.js","../../../node_modules/@airbrake/browser/esm/instrumentation/location.js","../../../node_modules/@airbrake/browser/esm/instrumentation/xhr.js","../../../node_modules/@airbrake/browser/esm/notifier.js","../../../app/javascript/entrypoints/airbrakeErrorHandling.js"],"sourcesContent":["/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","function allSettled(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(\n new TypeError(\n typeof arr +\n ' ' +\n arr +\n ' is not iterable(cannot read property Symbol(Symbol.iterator))'\n )\n );\n }\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n function(e) {\n args[i] = { status: 'rejected', reason: e };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n );\n return;\n }\n }\n args[i] = { status: 'fulfilled', value: val };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n}\n\nexport default allSettled;\n","/**\n * @constructor\n */\nfunction AggregateError(errors, message) {\n (this.name = 'AggregateError'), (this.errors = errors);\n this.message = message || '';\n}\nAggregateError.prototype = Error.prototype;\n\nfunction any(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(new TypeError('Promise.any accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return reject();\n\n var rejectionReasons = [];\n for (var i = 0; i < args.length; i++) {\n try {\n P.resolve(args[i])\n .then(resolve)\n .catch(function(error) {\n rejectionReasons.push(error);\n if (rejectionReasons.length === args.length) {\n reject(\n new AggregateError(\n rejectionReasons,\n 'All promises were rejected'\n )\n );\n }\n });\n } catch (ex) {\n reject(ex);\n }\n }\n });\n}\n\nexport default any;\n","import promiseFinally from './finally';\nimport allSettled from './allSettled';\nimport any from './any';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.any = any;\n\nPromise.allSettled = allSettled;\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","var FILTERED = '[Filtered]';\nvar MAX_OBJ_LENGTH = 128;\n// jsonifyNotice serializes notice to JSON and truncates params,\n// environment and session keys.\nexport function jsonifyNotice(notice, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.maxLength, maxLength = _c === void 0 ? 64000 : _c, _d = _b.keysBlocklist, keysBlocklist = _d === void 0 ? [] : _d;\n if (notice.errors) {\n for (var i = 0; i < notice.errors.length; i++) {\n var t = new Truncator({ keysBlocklist: keysBlocklist });\n notice.errors[i] = t.truncate(notice.errors[i]);\n }\n }\n var s = '';\n var keys = ['params', 'environment', 'session'];\n for (var level = 0; level < 8; level++) {\n var opts = { level: level, keysBlocklist: keysBlocklist };\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var obj = notice[key];\n if (obj) {\n notice[key] = truncate(obj, opts);\n }\n }\n s = JSON.stringify(notice);\n if (s.length < maxLength) {\n return s;\n }\n }\n var params = {\n json: s.slice(0, Math.floor(maxLength / 2)) + '...',\n };\n keys.push('errors');\n for (var _e = 0, keys_2 = keys; _e < keys_2.length; _e++) {\n var key = keys_2[_e];\n var obj = notice[key];\n if (!obj) {\n continue;\n }\n s = JSON.stringify(obj);\n params[key] = s.length;\n }\n var err = new Error(\"airbrake: notice exceeds max length and can't be truncated\");\n err.params = params;\n throw err;\n}\nfunction scale(num, level) {\n return num >> level || 1;\n}\nvar Truncator = /** @class */ (function () {\n function Truncator(opts) {\n this.maxStringLength = 1024;\n this.maxObjectLength = MAX_OBJ_LENGTH;\n this.maxArrayLength = MAX_OBJ_LENGTH;\n this.maxDepth = 8;\n this.keys = [];\n this.keysBlocklist = [];\n this.seen = [];\n var level = opts.level || 0;\n this.keysBlocklist = opts.keysBlocklist || [];\n this.maxStringLength = scale(this.maxStringLength, level);\n this.maxObjectLength = scale(this.maxObjectLength, level);\n this.maxArrayLength = scale(this.maxArrayLength, level);\n this.maxDepth = scale(this.maxDepth, level);\n }\n Truncator.prototype.truncate = function (value, key, depth) {\n if (key === void 0) { key = ''; }\n if (depth === void 0) { depth = 0; }\n if (value === null || value === undefined) {\n return value;\n }\n switch (typeof value) {\n case 'boolean':\n case 'number':\n case 'function':\n return value;\n case 'string':\n return this.truncateString(value);\n case 'object':\n break;\n default:\n return this.truncateString(String(value));\n }\n if (value instanceof String) {\n return this.truncateString(value.toString());\n }\n if (value instanceof Boolean ||\n value instanceof Number ||\n value instanceof Date ||\n value instanceof RegExp) {\n return value;\n }\n if (value instanceof Error) {\n return this.truncateString(value.toString());\n }\n if (this.seen.indexOf(value) >= 0) {\n return \"[Circular \".concat(this.getPath(value), \"]\");\n }\n var type = objectType(value);\n depth++;\n if (depth > this.maxDepth) {\n return \"[Truncated \".concat(type, \"]\");\n }\n this.keys.push(key);\n this.seen.push(value);\n switch (type) {\n case 'Array':\n return this.truncateArray(value, depth);\n case 'Object':\n return this.truncateObject(value, depth);\n default:\n var saved = this.maxDepth;\n this.maxDepth = 0;\n var obj = this.truncateObject(value, depth);\n obj.__type = type;\n this.maxDepth = saved;\n return obj;\n }\n };\n Truncator.prototype.getPath = function (value) {\n var index = this.seen.indexOf(value);\n var path = [this.keys[index]];\n for (var i = index; i >= 0; i--) {\n var sub = this.seen[i];\n if (sub && getAttr(sub, path[0]) === value) {\n value = sub;\n path.unshift(this.keys[i]);\n }\n }\n return '~' + path.join('.');\n };\n Truncator.prototype.truncateString = function (s) {\n if (s.length > this.maxStringLength) {\n return s.slice(0, this.maxStringLength) + '...';\n }\n return s;\n };\n Truncator.prototype.truncateArray = function (arr, depth) {\n if (depth === void 0) { depth = 0; }\n var length = 0;\n var dst = [];\n for (var i = 0; i < arr.length; i++) {\n var el = arr[i];\n dst.push(this.truncate(el, i.toString(), depth));\n length++;\n if (length >= this.maxArrayLength) {\n break;\n }\n }\n return dst;\n };\n Truncator.prototype.truncateObject = function (obj, depth) {\n if (depth === void 0) { depth = 0; }\n var length = 0;\n var dst = {};\n for (var key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n continue;\n }\n if (isBlocklisted(key, this.keysBlocklist)) {\n dst[key] = FILTERED;\n continue;\n }\n var value = getAttr(obj, key);\n if (value === undefined || typeof value === 'function') {\n continue;\n }\n dst[key] = this.truncate(value, key, depth);\n length++;\n if (length >= this.maxObjectLength) {\n break;\n }\n }\n return dst;\n };\n return Truncator;\n}());\nexport function truncate(value, opts) {\n if (opts === void 0) { opts = {}; }\n var t = new Truncator(opts);\n return t.truncate(value);\n}\nfunction getAttr(obj, attr) {\n // Ignore browser specific exception trying to read an attribute (#79).\n try {\n return obj[attr];\n }\n catch (_) {\n return;\n }\n}\nfunction objectType(obj) {\n var s = Object.prototype.toString.apply(obj);\n return s.slice('[object '.length, -1);\n}\nfunction isBlocklisted(key, keysBlocklist) {\n for (var _i = 0, keysBlocklist_1 = keysBlocklist; _i < keysBlocklist_1.length; _i++) {\n var v = keysBlocklist_1[_i];\n if (v === key) {\n return true;\n }\n if (v instanceof RegExp) {\n if (key.match(v)) {\n return true;\n }\n }\n }\n return false;\n}\n//# sourceMappingURL=jsonify_notice.js.map","var Span = /** @class */ (function () {\n function Span(metric, name, startTime) {\n this._dur = 0;\n this._level = 0;\n this._metric = metric;\n this.name = name;\n this.startTime = startTime || new Date();\n }\n Span.prototype.end = function (endTime) {\n this.endTime = endTime ? endTime : new Date();\n this._dur += this.endTime.getTime() - this.startTime.getTime();\n this._metric._incGroup(this.name, this._dur);\n this._metric = null;\n };\n Span.prototype._pause = function () {\n if (this._paused()) {\n return;\n }\n var now = new Date();\n this._dur += now.getTime() - this.startTime.getTime();\n this.startTime = null;\n };\n Span.prototype._resume = function () {\n if (!this._paused()) {\n return;\n }\n this.startTime = new Date();\n };\n Span.prototype._paused = function () {\n return this.startTime == null;\n };\n return Span;\n}());\nexport { Span };\nvar BaseMetric = /** @class */ (function () {\n function BaseMetric() {\n this._spans = {};\n this._groups = {};\n this.startTime = new Date();\n }\n BaseMetric.prototype.end = function (endTime) {\n if (!this.endTime) {\n this.endTime = endTime || new Date();\n }\n };\n BaseMetric.prototype.isRecording = function () {\n return true;\n };\n BaseMetric.prototype.startSpan = function (name, startTime) {\n var span = this._spans[name];\n if (span) {\n span._level++;\n }\n else {\n span = new Span(this, name, startTime);\n this._spans[name] = span;\n }\n };\n BaseMetric.prototype.endSpan = function (name, endTime) {\n var span = this._spans[name];\n if (!span) {\n console.error('airbrake: span=%s does not exist', name);\n return;\n }\n if (span._level > 0) {\n span._level--;\n }\n else {\n span.end(endTime);\n delete this._spans[span.name];\n }\n };\n BaseMetric.prototype._incGroup = function (name, ms) {\n this._groups[name] = (this._groups[name] || 0) + ms;\n };\n BaseMetric.prototype._duration = function () {\n if (!this.endTime) {\n this.endTime = new Date();\n }\n return this.endTime.getTime() - this.startTime.getTime();\n };\n return BaseMetric;\n}());\nexport { BaseMetric };\nvar NoopMetric = /** @class */ (function () {\n function NoopMetric() {\n }\n NoopMetric.prototype.isRecording = function () {\n return false;\n };\n NoopMetric.prototype.startSpan = function (_name, _startTime) { };\n NoopMetric.prototype.endSpan = function (_name, _startTime) { };\n NoopMetric.prototype._incGroup = function (_name, _ms) { };\n return NoopMetric;\n}());\nexport { NoopMetric };\n//# sourceMappingURL=metrics.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { NoopMetric } from './metrics';\nvar Scope = /** @class */ (function () {\n function Scope() {\n this._noopMetric = new NoopMetric();\n this._context = {};\n this._historyMaxLen = 20;\n this._history = [];\n }\n Scope.prototype.clone = function () {\n var clone = new Scope();\n clone._context = __assign({}, this._context);\n clone._history = this._history.slice();\n return clone;\n };\n Scope.prototype.setContext = function (context) {\n this._context = __assign(__assign({}, this._context), context);\n };\n Scope.prototype.context = function () {\n var ctx = __assign({}, this._context);\n if (this._history.length > 0) {\n ctx.history = this._history.slice();\n }\n return ctx;\n };\n Scope.prototype.pushHistory = function (state) {\n if (this._isDupState(state)) {\n if (this._lastRecord.num) {\n this._lastRecord.num++;\n }\n else {\n this._lastRecord.num = 2;\n }\n return;\n }\n if (!state.date) {\n state.date = new Date();\n }\n this._history.push(state);\n this._lastRecord = state;\n if (this._history.length > this._historyMaxLen) {\n this._history = this._history.slice(-this._historyMaxLen);\n }\n };\n Scope.prototype._isDupState = function (state) {\n if (!this._lastRecord) {\n return false;\n }\n for (var key in state) {\n if (!state.hasOwnProperty(key) || key === 'date') {\n continue;\n }\n if (state[key] !== this._lastRecord[key]) {\n return false;\n }\n }\n return true;\n };\n Scope.prototype.routeMetric = function () {\n return this._routeMetric || this._noopMetric;\n };\n Scope.prototype.setRouteMetric = function (metric) {\n this._routeMetric = metric;\n };\n Scope.prototype.queueMetric = function () {\n return this._queueMetric || this._noopMetric;\n };\n Scope.prototype.setQueueMetric = function (metric) {\n this._queueMetric = metric;\n };\n return Scope;\n}());\nexport { Scope };\n//# sourceMappingURL=scope.js.map","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","import ErrorStackParser from 'error-stack-parser';\nvar hasConsole = typeof console === 'object' && console.warn;\nfunction parse(err) {\n try {\n return ErrorStackParser.parse(err);\n }\n catch (parseErr) {\n if (hasConsole && err.stack) {\n console.warn('ErrorStackParser:', parseErr.toString(), err.stack);\n }\n }\n if (err.fileName) {\n return [err];\n }\n return [];\n}\nexport function espProcessor(err) {\n var backtrace = [];\n if (err.noStack) {\n backtrace.push({\n function: err.functionName || '',\n file: err.fileName || '',\n line: err.lineNumber || 0,\n column: err.columnNumber || 0,\n });\n }\n else {\n var frames_2 = parse(err);\n if (frames_2.length === 0) {\n try {\n throw new Error('fake');\n }\n catch (fakeErr) {\n frames_2 = parse(fakeErr);\n frames_2.shift();\n frames_2.shift();\n }\n }\n for (var _i = 0, frames_1 = frames_2; _i < frames_1.length; _i++) {\n var frame = frames_1[_i];\n backtrace.push({\n function: frame.functionName || '',\n file: frame.fileName || '',\n line: frame.lineNumber || 0,\n column: frame.columnNumber || 0,\n });\n }\n }\n var type = err.name ? err.name : '';\n var msg = err.message ? String(err.message) : String(err);\n return {\n type: type,\n message: msg,\n backtrace: backtrace,\n };\n}\n//# sourceMappingURL=esp.js.map","var re = new RegExp([\n '^',\n '\\\\[(\\\\$.+)\\\\]',\n '\\\\s',\n '([\\\\s\\\\S]+)',\n '$',\n].join(''));\nexport function angularMessageFilter(notice) {\n var err = notice.errors[0];\n if (err.type !== '' && err.type !== 'Error') {\n return notice;\n }\n var m = err.message.match(re);\n if (m !== null) {\n err.type = m[1];\n err.message = m[2];\n }\n return notice;\n}\n//# sourceMappingURL=angular_message.js.map","export function makeDebounceFilter() {\n var lastNoticeJSON;\n var timeout;\n return function (notice) {\n var s = JSON.stringify(notice.errors);\n if (s === lastNoticeJSON) {\n return null;\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n lastNoticeJSON = s;\n timeout = setTimeout(function () {\n lastNoticeJSON = '';\n }, 1000);\n return notice;\n };\n}\n//# sourceMappingURL=debounce.js.map","var IGNORED_MESSAGES = [\n 'Script error',\n 'Script error.',\n 'InvalidAccessError',\n];\nexport function ignoreNoiseFilter(notice) {\n var err = notice.errors[0];\n if (err.type === '' && IGNORED_MESSAGES.indexOf(err.message) !== -1) {\n return null;\n }\n if (err.backtrace && err.backtrace.length > 0) {\n var frame = err.backtrace[0];\n if (frame.file === '') {\n return null;\n }\n }\n return notice;\n}\n//# sourceMappingURL=ignore_noise.js.map","var re = new RegExp([\n '^',\n 'Uncaught\\\\s',\n '(.+?)',\n ':\\\\s',\n '(.+)',\n '$',\n].join(''));\nexport function uncaughtMessageFilter(notice) {\n var err = notice.errors[0];\n if (err.type !== '' && err.type !== 'Error') {\n return notice;\n }\n var m = err.message.match(re);\n if (m !== null) {\n err.type = m[1];\n err.message = m[2];\n }\n return notice;\n}\n//# sourceMappingURL=uncaught_message.js.map","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","export var errors = {\n unauthorized: new Error('airbrake: unauthorized: project id or key are wrong'),\n ipRateLimited: new Error('airbrake: IP is rate limited'),\n};\n//# sourceMappingURL=api.js.map","import fetch from 'cross-fetch';\nimport Promise from 'promise-polyfill';\nimport { errors } from './api';\nvar rateLimitReset = 0;\nexport function request(req) {\n var utime = Date.now() / 1000;\n if (utime < rateLimitReset) {\n return Promise.reject(errors.ipRateLimited);\n }\n var opt = {\n method: req.method,\n body: req.body,\n headers: req.headers,\n };\n return fetch(req.url, opt).then(function (resp) {\n if (resp.status === 401) {\n throw errors.unauthorized;\n }\n if (resp.status === 429) {\n var s = resp.headers.get('X-RateLimit-Delay');\n if (!s) {\n throw errors.ipRateLimited;\n }\n var n = parseInt(s, 10);\n if (n > 0) {\n rateLimitReset = Date.now() / 1000 + n;\n }\n throw errors.ipRateLimited;\n }\n if (resp.status === 204) {\n return { json: null };\n }\n if (resp.status === 404) {\n throw new Error('404 Not Found');\n }\n if (resp.status >= 200 && resp.status < 300) {\n return resp.json().then(function (json) {\n return { json: json };\n });\n }\n if (resp.status >= 400 && resp.status < 500) {\n return resp.json().then(function (json) {\n var err = new Error(json.message);\n throw err;\n });\n }\n return resp.text().then(function (body) {\n var err = new Error(\"airbrake: fetch: unexpected response: code=\".concat(resp.status, \" body='\").concat(body, \"'\"));\n throw err;\n });\n });\n}\n//# sourceMappingURL=fetch.js.map","import Promise from 'promise-polyfill';\nimport { errors } from './api';\nexport function makeRequester(api) {\n return function (req) {\n return request(req, api);\n };\n}\nvar rateLimitReset = 0;\nfunction request(req, api) {\n var utime = Date.now() / 1000;\n if (utime < rateLimitReset) {\n return Promise.reject(errors.ipRateLimited);\n }\n return new Promise(function (resolve, reject) {\n api({\n url: req.url,\n method: req.method,\n body: req.body,\n headers: {\n 'content-type': 'application/json',\n },\n timeout: req.timeout,\n }, function (error, resp, body) {\n if (error) {\n reject(error);\n return;\n }\n if (!resp.statusCode) {\n error = new Error(\"airbrake: request: response statusCode is \".concat(resp.statusCode));\n reject(error);\n return;\n }\n if (resp.statusCode === 401) {\n reject(errors.unauthorized);\n return;\n }\n if (resp.statusCode === 429) {\n reject(errors.ipRateLimited);\n var h = resp.headers['x-ratelimit-delay'];\n if (!h) {\n return;\n }\n var s = void 0;\n if (typeof h === 'string') {\n s = h;\n }\n else if (h instanceof Array) {\n s = h[0];\n }\n else {\n return;\n }\n var n = parseInt(s, 10);\n if (n > 0) {\n rateLimitReset = Date.now() / 1000 + n;\n }\n return;\n }\n if (resp.statusCode === 204) {\n resolve({ json: null });\n return;\n }\n if (resp.statusCode >= 200 && resp.statusCode < 300) {\n var json = void 0;\n try {\n json = JSON.parse(body);\n }\n catch (err) {\n reject(err);\n return;\n }\n resolve(json);\n return;\n }\n if (resp.statusCode >= 400 && resp.statusCode < 500) {\n var json = void 0;\n try {\n json = JSON.parse(body);\n }\n catch (err) {\n reject(err);\n return;\n }\n error = new Error(json.message);\n reject(error);\n return;\n }\n body = body.trim();\n error = new Error(\"airbrake: node: unexpected response: code=\".concat(resp.statusCode, \" body='\").concat(body, \"'\"));\n reject(error);\n });\n });\n}\n//# sourceMappingURL=node.js.map","import { request as fetchRequest } from './fetch';\nimport { makeRequester as makeNodeRequester } from './node';\nexport function makeRequester(opts) {\n if (opts.request) {\n return makeNodeRequester(opts.request);\n }\n return fetchRequest;\n}\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar tdigest;\nexport var hasTdigest = false;\ntry {\n tdigest = require('tdigest');\n hasTdigest = true;\n}\ncatch (err) { }\nvar TDigestStat = /** @class */ (function () {\n function TDigestStat() {\n this.count = 0;\n this.sum = 0;\n this.sumsq = 0;\n this._td = new tdigest.Digest();\n }\n TDigestStat.prototype.add = function (ms) {\n if (ms === 0) {\n ms = 0.00001;\n }\n this.count += 1;\n this.sum += ms;\n this.sumsq += ms * ms;\n if (this._td) {\n this._td.push(ms);\n }\n };\n TDigestStat.prototype.toJSON = function () {\n return {\n count: this.count,\n sum: this.sum,\n sumsq: this.sumsq,\n tdigestCentroids: tdigestCentroids(this._td),\n };\n };\n return TDigestStat;\n}());\nexport { TDigestStat };\nvar TDigestStatGroups = /** @class */ (function (_super) {\n __extends(TDigestStatGroups, _super);\n function TDigestStatGroups() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.groups = {};\n return _this;\n }\n TDigestStatGroups.prototype.addGroups = function (totalMs, groups) {\n this.add(totalMs);\n for (var name_1 in groups) {\n if (groups.hasOwnProperty(name_1)) {\n this.addGroup(name_1, groups[name_1]);\n }\n }\n };\n TDigestStatGroups.prototype.addGroup = function (name, ms) {\n var stat = this.groups[name];\n if (!stat) {\n stat = new TDigestStat();\n this.groups[name] = stat;\n }\n stat.add(ms);\n };\n TDigestStatGroups.prototype.toJSON = function () {\n return {\n count: this.count,\n sum: this.sum,\n sumsq: this.sumsq,\n tdigestCentroids: tdigestCentroids(this._td),\n groups: this.groups,\n };\n };\n return TDigestStatGroups;\n}(TDigestStat));\nexport { TDigestStatGroups };\nfunction tdigestCentroids(td) {\n var means = [];\n var counts = [];\n td.centroids.each(function (c) {\n means.push(c.mean);\n counts.push(c.n);\n });\n return {\n mean: means,\n count: counts,\n };\n}\n//# sourceMappingURL=tdshared.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { makeRequester } from './http_req';\nimport { hasTdigest, TDigestStat } from './tdshared';\nvar FLUSH_INTERVAL = 15000; // 15 seconds\nvar QueryInfo = /** @class */ (function () {\n function QueryInfo(query) {\n if (query === void 0) { query = ''; }\n this.method = '';\n this.route = '';\n this.query = '';\n this.func = '';\n this.file = '';\n this.line = 0;\n this.startTime = new Date();\n this.query = query;\n }\n QueryInfo.prototype._duration = function () {\n if (!this.endTime) {\n this.endTime = new Date();\n }\n return this.endTime.getTime() - this.startTime.getTime();\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nvar QueriesStats = /** @class */ (function () {\n function QueriesStats(opt) {\n this._m = {};\n this._opt = opt;\n this._url = \"\".concat(opt.host, \"/api/v5/projects/\").concat(opt.projectId, \"/queries-stats?key=\").concat(opt.projectKey);\n this._requester = makeRequester(opt);\n }\n QueriesStats.prototype.start = function (query) {\n if (query === void 0) { query = ''; }\n return new QueryInfo(query);\n };\n QueriesStats.prototype.notify = function (q) {\n var _this = this;\n if (!hasTdigest) {\n return;\n }\n if (!this._opt.performanceStats) {\n return;\n }\n if (!this._opt.queryStats) {\n return;\n }\n var ms = q._duration();\n var minute = 60 * 1000;\n var startTime = new Date(Math.floor(q.startTime.getTime() / minute) * minute);\n var key = {\n method: q.method,\n route: q.route,\n query: q.query,\n func: q.func,\n file: q.file,\n line: q.line,\n time: startTime,\n };\n var keyStr = JSON.stringify(key);\n var stat = this._m[keyStr];\n if (!stat) {\n stat = new TDigestStat();\n this._m[keyStr] = stat;\n }\n stat.add(ms);\n if (this._timer) {\n return;\n }\n this._timer = setTimeout(function () {\n _this._flush();\n }, FLUSH_INTERVAL);\n };\n QueriesStats.prototype._flush = function () {\n var queries = [];\n for (var keyStr in this._m) {\n if (!this._m.hasOwnProperty(keyStr)) {\n continue;\n }\n var key = JSON.parse(keyStr);\n var v = __assign(__assign({}, key), this._m[keyStr].toJSON());\n queries.push(v);\n }\n this._m = {};\n this._timer = null;\n var outJSON = JSON.stringify({\n environment: this._opt.environment,\n queries: queries,\n });\n var req = {\n method: 'POST',\n url: this._url,\n body: outJSON,\n };\n this._requester(req)\n .then(function (_resp) {\n // nothing\n })\n .catch(function (err) {\n if (console.error) {\n console.error('can not report queries stats', err);\n }\n });\n };\n return QueriesStats;\n}());\nexport { QueriesStats };\n//# sourceMappingURL=queries.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { makeRequester } from './http_req';\nimport { BaseMetric } from './metrics';\nimport { hasTdigest, TDigestStatGroups } from './tdshared';\nvar FLUSH_INTERVAL = 15000; // 15 seconds\nvar QueueMetric = /** @class */ (function (_super) {\n __extends(QueueMetric, _super);\n function QueueMetric(queue) {\n var _this = _super.call(this) || this;\n _this.queue = queue;\n _this.startTime = new Date();\n return _this;\n }\n return QueueMetric;\n}(BaseMetric));\nexport { QueueMetric };\nvar QueuesStats = /** @class */ (function () {\n function QueuesStats(opt) {\n this._m = {};\n this._opt = opt;\n this._url = \"\".concat(opt.host, \"/api/v5/projects/\").concat(opt.projectId, \"/queues-stats?key=\").concat(opt.projectKey);\n this._requester = makeRequester(opt);\n }\n QueuesStats.prototype.notify = function (q) {\n var _this = this;\n if (!hasTdigest) {\n return;\n }\n if (!this._opt.performanceStats) {\n return;\n }\n if (!this._opt.queueStats) {\n return;\n }\n var ms = q._duration();\n if (ms === 0) {\n ms = 0.00001;\n }\n var minute = 60 * 1000;\n var startTime = new Date(Math.floor(q.startTime.getTime() / minute) * minute);\n var key = {\n queue: q.queue,\n time: startTime,\n };\n var keyStr = JSON.stringify(key);\n var stat = this._m[keyStr];\n if (!stat) {\n stat = new TDigestStatGroups();\n this._m[keyStr] = stat;\n }\n stat.addGroups(ms, q._groups);\n if (this._timer) {\n return;\n }\n this._timer = setTimeout(function () {\n _this._flush();\n }, FLUSH_INTERVAL);\n };\n QueuesStats.prototype._flush = function () {\n var queues = [];\n for (var keyStr in this._m) {\n if (!this._m.hasOwnProperty(keyStr)) {\n continue;\n }\n var key = JSON.parse(keyStr);\n var v = __assign(__assign({}, key), this._m[keyStr].toJSON());\n queues.push(v);\n }\n this._m = {};\n this._timer = null;\n var outJSON = JSON.stringify({\n environment: this._opt.environment,\n queues: queues,\n });\n var req = {\n method: 'POST',\n url: this._url,\n body: outJSON,\n };\n this._requester(req)\n .then(function (_resp) {\n // nothing\n })\n .catch(function (err) {\n if (console.error) {\n console.error('can not report queues breakdowns', err);\n }\n });\n };\n return QueuesStats;\n}());\nexport { QueuesStats };\n//# sourceMappingURL=queues.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { makeRequester } from './http_req';\nimport { BaseMetric } from './metrics';\nimport { hasTdigest, TDigestStat, TDigestStatGroups } from './tdshared';\nvar FLUSH_INTERVAL = 15000; // 15 seconds\nvar RouteMetric = /** @class */ (function (_super) {\n __extends(RouteMetric, _super);\n function RouteMetric(method, route, statusCode, contentType) {\n if (method === void 0) { method = ''; }\n if (route === void 0) { route = ''; }\n if (statusCode === void 0) { statusCode = 0; }\n if (contentType === void 0) { contentType = ''; }\n var _this = _super.call(this) || this;\n _this.method = method;\n _this.route = route;\n _this.statusCode = statusCode;\n _this.contentType = contentType;\n _this.startTime = new Date();\n return _this;\n }\n return RouteMetric;\n}(BaseMetric));\nexport { RouteMetric };\nvar RoutesStats = /** @class */ (function () {\n function RoutesStats(opt) {\n this._m = {};\n this._opt = opt;\n this._url = \"\".concat(opt.host, \"/api/v5/projects/\").concat(opt.projectId, \"/routes-stats?key=\").concat(opt.projectKey);\n this._requester = makeRequester(opt);\n }\n RoutesStats.prototype.notify = function (req) {\n var _this = this;\n if (!hasTdigest) {\n return;\n }\n if (!this._opt.performanceStats) {\n return;\n }\n var ms = req._duration();\n var minute = 60 * 1000;\n var startTime = new Date(Math.floor(req.startTime.getTime() / minute) * minute);\n var key = {\n method: req.method,\n route: req.route,\n statusCode: req.statusCode,\n time: startTime,\n };\n var keyStr = JSON.stringify(key);\n var stat = this._m[keyStr];\n if (!stat) {\n stat = new TDigestStat();\n this._m[keyStr] = stat;\n }\n stat.add(ms);\n if (this._timer) {\n return;\n }\n this._timer = setTimeout(function () {\n _this._flush();\n }, FLUSH_INTERVAL);\n };\n RoutesStats.prototype._flush = function () {\n var routes = [];\n for (var keyStr in this._m) {\n if (!this._m.hasOwnProperty(keyStr)) {\n continue;\n }\n var key = JSON.parse(keyStr);\n var v = __assign(__assign({}, key), this._m[keyStr].toJSON());\n routes.push(v);\n }\n this._m = {};\n this._timer = null;\n var outJSON = JSON.stringify({\n environment: this._opt.environment,\n routes: routes,\n });\n var req = {\n method: 'POST',\n url: this._url,\n body: outJSON,\n };\n this._requester(req)\n .then(function (_resp) {\n // nothing\n })\n .catch(function (err) {\n if (console.error) {\n console.error('can not report routes stats', err);\n }\n });\n };\n return RoutesStats;\n}());\nexport { RoutesStats };\nvar RoutesBreakdowns = /** @class */ (function () {\n function RoutesBreakdowns(opt) {\n this._m = {};\n this._opt = opt;\n this._url = \"\".concat(opt.host, \"/api/v5/projects/\").concat(opt.projectId, \"/routes-breakdowns?key=\").concat(opt.projectKey);\n this._requester = makeRequester(opt);\n }\n RoutesBreakdowns.prototype.notify = function (req) {\n var _this = this;\n if (!hasTdigest) {\n return;\n }\n if (!this._opt.performanceStats) {\n return;\n }\n if (req.statusCode < 200 ||\n (req.statusCode >= 300 && req.statusCode < 400) ||\n req.statusCode === 404 ||\n Object.keys(req._groups).length === 0) {\n return;\n }\n var ms = req._duration();\n if (ms === 0) {\n ms = 0.00001;\n }\n var minute = 60 * 1000;\n var startTime = new Date(Math.floor(req.startTime.getTime() / minute) * minute);\n var key = {\n method: req.method,\n route: req.route,\n responseType: this._responseType(req),\n time: startTime,\n };\n var keyStr = JSON.stringify(key);\n var stat = this._m[keyStr];\n if (!stat) {\n stat = new TDigestStatGroups();\n this._m[keyStr] = stat;\n }\n stat.addGroups(ms, req._groups);\n if (this._timer) {\n return;\n }\n this._timer = setTimeout(function () {\n _this._flush();\n }, FLUSH_INTERVAL);\n };\n RoutesBreakdowns.prototype._flush = function () {\n var routes = [];\n for (var keyStr in this._m) {\n if (!this._m.hasOwnProperty(keyStr)) {\n continue;\n }\n var key = JSON.parse(keyStr);\n var v = __assign(__assign({}, key), this._m[keyStr].toJSON());\n routes.push(v);\n }\n this._m = {};\n this._timer = null;\n var outJSON = JSON.stringify({\n environment: this._opt.environment,\n routes: routes,\n });\n var req = {\n method: 'POST',\n url: this._url,\n body: outJSON,\n };\n this._requester(req)\n .then(function (_resp) {\n // nothing\n })\n .catch(function (err) {\n if (console.error) {\n console.error('can not report routes breakdowns', err);\n }\n });\n };\n RoutesBreakdowns.prototype._responseType = function (req) {\n if (req.statusCode >= 500) {\n return '5xx';\n }\n if (req.statusCode >= 400) {\n return '4xx';\n }\n if (!req.contentType) {\n return '';\n }\n var s = req.contentType.split(';')[0].split('/');\n return s[s.length - 1];\n };\n return RoutesBreakdowns;\n}());\nexport { RoutesBreakdowns };\n//# sourceMappingURL=routes.js.map","export var NOTIFIER_NAME = 'airbrake-js/browser';\nexport var NOTIFIER_VERSION = '2.1.8';\nexport var NOTIFIER_URL = 'https://github.com/airbrake/airbrake-js/tree/master/packages/browser';\n//# sourceMappingURL=version.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { makeRequester } from './http_req';\nimport { NOTIFIER_NAME, NOTIFIER_VERSION } from './version';\n// API version to poll.\nvar API_VER = '2020-06-18';\n// How frequently we should poll the config API.\nvar DEFAULT_INTERVAL = 600000; // 10 minutes\nvar NOTIFIER_INFO = {\n notifier_name: NOTIFIER_NAME,\n notifier_version: NOTIFIER_VERSION,\n os: typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.userAgent\n ? window.navigator.userAgent\n : undefined,\n language: 'JavaScript',\n};\n// Remote config settings.\nvar ERROR_SETTING = 'errors';\nvar APM_SETTING = 'apm';\nvar RemoteSettings = /** @class */ (function () {\n function RemoteSettings(opt) {\n this._opt = opt;\n this._requester = makeRequester(opt);\n this._data = new SettingsData(opt.projectId, {\n project_id: null,\n poll_sec: 0,\n updated_at: 0,\n config_route: '',\n settings: [],\n });\n this._origErrorNotifications = opt.errorNotifications;\n this._origPerformanceStats = opt.performanceStats;\n }\n RemoteSettings.prototype.poll = function () {\n var _this = this;\n // First request is immediate. When it's done, we cancel it since we want to\n // change interval time to the default value.\n var pollerId = setInterval(function () {\n _this._doRequest();\n clearInterval(pollerId);\n }, 0);\n // Second fetch is what always runs in background.\n return setInterval(this._doRequest.bind(this), DEFAULT_INTERVAL);\n };\n RemoteSettings.prototype._doRequest = function () {\n var _this = this;\n this._requester(this._requestParams(this._opt))\n .then(function (resp) {\n _this._data.merge(resp.json);\n _this._opt.host = _this._data.errorHost();\n _this._opt.apmHost = _this._data.apmHost();\n _this._processErrorNotifications(_this._data);\n _this._processPerformanceStats(_this._data);\n })\n .catch(function (_) {\n return;\n });\n };\n RemoteSettings.prototype._requestParams = function (opt) {\n return {\n method: 'GET',\n url: this._pollUrl(opt),\n headers: {\n Accept: 'application/json',\n 'Cache-Control': 'no-cache,no-store',\n },\n };\n };\n RemoteSettings.prototype._pollUrl = function (opt) {\n var url = this._data.configRoute(opt.remoteConfigHost);\n var queryParams = '?';\n for (var _i = 0, _a = this._entries(NOTIFIER_INFO); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n queryParams += \"&\".concat(encodeURIComponent(key), \"=\").concat(encodeURIComponent(value));\n }\n return url + queryParams;\n };\n RemoteSettings.prototype._processErrorNotifications = function (data) {\n if (!this._origErrorNotifications) {\n return;\n }\n this._opt.errorNotifications = data.errorNotifications();\n };\n RemoteSettings.prototype._processPerformanceStats = function (data) {\n if (!this._origPerformanceStats) {\n return;\n }\n this._opt.performanceStats = data.performanceStats();\n };\n // Polyfill from:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#polyfill\n RemoteSettings.prototype._entries = function (obj) {\n var ownProps = Object.keys(obj);\n var i = ownProps.length;\n var resArray = new Array(i);\n while (i--)\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n return resArray;\n };\n return RemoteSettings;\n}());\nexport { RemoteSettings };\nvar SettingsData = /** @class */ (function () {\n function SettingsData(projectId, data) {\n this._projectId = projectId;\n this._data = data;\n }\n SettingsData.prototype.merge = function (other) {\n this._data = __assign(__assign({}, this._data), other);\n };\n SettingsData.prototype.configRoute = function (remoteConfigHost) {\n var host = remoteConfigHost.replace(/\\/$/, '');\n var configRoute = this._data.config_route;\n if (configRoute === null ||\n configRoute === undefined ||\n configRoute === '') {\n return \"\".concat(host, \"/\").concat(API_VER, \"/config/\").concat(this._projectId, \"/config.json\");\n }\n else {\n return \"\".concat(host, \"/\").concat(configRoute);\n }\n };\n SettingsData.prototype.errorNotifications = function () {\n var s = this._findSetting(ERROR_SETTING);\n if (s === null) {\n return true;\n }\n return s.enabled;\n };\n SettingsData.prototype.performanceStats = function () {\n var s = this._findSetting(APM_SETTING);\n if (s === null) {\n return true;\n }\n return s.enabled;\n };\n SettingsData.prototype.errorHost = function () {\n var s = this._findSetting(ERROR_SETTING);\n if (s === null) {\n return null;\n }\n return s.endpoint;\n };\n SettingsData.prototype.apmHost = function () {\n var s = this._findSetting(APM_SETTING);\n if (s === null) {\n return null;\n }\n return s.endpoint;\n };\n SettingsData.prototype._findSetting = function (name) {\n var settings = this._data.settings;\n if (settings === null || settings === undefined) {\n return null;\n }\n var setting = settings.find(function (s) {\n return s.name === name;\n });\n if (setting === undefined) {\n return null;\n }\n return setting;\n };\n return SettingsData;\n}());\nexport { SettingsData };\n//# sourceMappingURL=remote_settings.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport Promise from 'promise-polyfill';\nimport { jsonifyNotice } from './jsonify_notice';\nimport { Scope } from './scope';\nimport { espProcessor } from './processor/esp';\nimport { angularMessageFilter } from './filter/angular_message';\nimport { makeDebounceFilter } from './filter/debounce';\nimport { ignoreNoiseFilter } from './filter/ignore_noise';\nimport { uncaughtMessageFilter } from './filter/uncaught_message';\nimport { makeRequester } from './http_req';\nimport { QueriesStats } from './queries';\nimport { QueueMetric, QueuesStats } from './queues';\nimport { RouteMetric, RoutesBreakdowns, RoutesStats } from './routes';\nimport { NOTIFIER_NAME, NOTIFIER_VERSION, NOTIFIER_URL } from './version';\nimport { RemoteSettings } from './remote_settings';\nvar BaseNotifier = /** @class */ (function () {\n function BaseNotifier(opt) {\n var _this = this;\n this._filters = [];\n this._performanceFilters = [];\n this._scope = new Scope();\n this._onClose = [];\n if (!opt.projectId || !opt.projectKey) {\n throw new Error('airbrake: projectId and projectKey are required');\n }\n this._opt = opt;\n this._opt.host = this._opt.host || 'https://api.airbrake.io';\n this._opt.remoteConfigHost =\n this._opt.remoteConfigHost || 'https://notifier-configs.airbrake.io';\n this._opt.apmHost = this._opt.apmHost || 'https://api.airbrake.io';\n this._opt.timeout = this._opt.timeout || 10000;\n this._opt.keysBlocklist = this._opt.keysBlocklist || [/password/, /secret/];\n this._url = \"\".concat(this._opt.host, \"/api/v3/projects/\").concat(this._opt.projectId, \"/notices?key=\").concat(this._opt.projectKey);\n this._opt.errorNotifications = this._opt.errorNotifications !== false;\n this._opt.performanceStats = this._opt.performanceStats !== false;\n this._opt.queryStats = this._opt.queryStats !== false;\n this._opt.queueStats = this._opt.queueStats !== false;\n this._opt.remoteConfig = this._opt.remoteConfig !== false;\n this._processor = this._opt.processor || espProcessor;\n this._requester = makeRequester(this._opt);\n this.addFilter(ignoreNoiseFilter);\n this.addFilter(makeDebounceFilter());\n this.addFilter(uncaughtMessageFilter);\n this.addFilter(angularMessageFilter);\n this.addFilter(function (notice) {\n notice.context.notifier = {\n name: NOTIFIER_NAME,\n version: NOTIFIER_VERSION,\n url: NOTIFIER_URL,\n };\n if (_this._opt.environment) {\n notice.context.environment = _this._opt.environment;\n }\n return notice;\n });\n this.routes = new Routes(this);\n this.queues = new Queues(this);\n this.queries = new QueriesStats(this._opt);\n if (this._opt.remoteConfig) {\n var pollerId_1 = new RemoteSettings(this._opt).poll();\n this._onClose.push(function () { return clearInterval(pollerId_1); });\n }\n }\n BaseNotifier.prototype.close = function () {\n for (var _i = 0, _a = this._onClose; _i < _a.length; _i++) {\n var fn = _a[_i];\n fn();\n }\n };\n BaseNotifier.prototype.scope = function () {\n return this._scope;\n };\n BaseNotifier.prototype.setActiveScope = function (scope) {\n this._scope = scope;\n };\n BaseNotifier.prototype.addFilter = function (filter) {\n this._filters.push(filter);\n };\n BaseNotifier.prototype.addPerformanceFilter = function (performanceFilter) {\n this._performanceFilters.push(performanceFilter);\n };\n BaseNotifier.prototype.notify = function (err) {\n var notice = {\n errors: [],\n context: __assign(__assign({ severity: 'error' }, this.scope().context()), err.context),\n params: err.params || {},\n environment: err.environment || {},\n session: err.session || {},\n };\n if (typeof err !== 'object' || err.error === undefined) {\n err = { error: err };\n }\n if (!this._opt.errorNotifications) {\n notice.error = new Error(\"airbrake: not sending this error, errorNotifications is disabled err=\".concat(JSON.stringify(err.error)));\n return Promise.resolve(notice);\n }\n if (!err.error) {\n notice.error = new Error(\"airbrake: got err=\".concat(JSON.stringify(err.error), \", wanted an Error\"));\n return Promise.resolve(notice);\n }\n var error = this._processor(err.error);\n notice.errors.push(error);\n for (var _i = 0, _a = this._filters; _i < _a.length; _i++) {\n var filter = _a[_i];\n var r = filter(notice);\n if (r === null) {\n notice.error = new Error('airbrake: error is filtered');\n return Promise.resolve(notice);\n }\n notice = r;\n }\n if (!notice.context) {\n notice.context = {};\n }\n notice.context.language = 'JavaScript';\n return this._sendNotice(notice);\n };\n BaseNotifier.prototype._sendNotice = function (notice) {\n var body = jsonifyNotice(notice, {\n keysBlocklist: this._opt.keysBlocklist,\n });\n if (this._opt.reporter) {\n if (typeof this._opt.reporter === 'function') {\n return this._opt.reporter(notice);\n }\n else {\n console.warn('airbrake: options.reporter must be a function');\n }\n }\n var req = {\n method: 'POST',\n url: this._url,\n body: body,\n };\n return this._requester(req)\n .then(function (resp) {\n notice.id = resp.json.id;\n notice.url = resp.json.url;\n return notice;\n })\n .catch(function (err) {\n notice.error = err;\n return notice;\n });\n };\n BaseNotifier.prototype.wrap = function (fn, props) {\n if (props === void 0) { props = []; }\n if (fn._airbrake) {\n return fn;\n }\n // tslint:disable-next-line:no-this-assignment\n var client = this;\n var airbrakeWrapper = function () {\n var fnArgs = Array.prototype.slice.call(arguments);\n var wrappedArgs = client._wrapArguments(fnArgs);\n try {\n return fn.apply(this, wrappedArgs);\n }\n catch (err) {\n client.notify({ error: err, params: { arguments: fnArgs } });\n client._ignoreNextWindowError();\n throw err;\n }\n };\n for (var prop in fn) {\n if (fn.hasOwnProperty(prop)) {\n airbrakeWrapper[prop] = fn[prop];\n }\n }\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n if (fn.hasOwnProperty(prop)) {\n airbrakeWrapper[prop] = fn[prop];\n }\n }\n airbrakeWrapper._airbrake = true;\n airbrakeWrapper.inner = fn;\n return airbrakeWrapper;\n };\n BaseNotifier.prototype._wrapArguments = function (args) {\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n if (typeof arg === 'function') {\n args[i] = this.wrap(arg);\n }\n }\n return args;\n };\n BaseNotifier.prototype._ignoreNextWindowError = function () { };\n BaseNotifier.prototype.call = function (fn) {\n var _args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n _args[_i - 1] = arguments[_i];\n }\n var wrapper = this.wrap(fn);\n return wrapper.apply(this, Array.prototype.slice.call(arguments, 1));\n };\n return BaseNotifier;\n}());\nexport { BaseNotifier };\nvar Routes = /** @class */ (function () {\n function Routes(notifier) {\n this._notifier = notifier;\n this._routes = new RoutesStats(notifier._opt);\n this._breakdowns = new RoutesBreakdowns(notifier._opt);\n this._opt = notifier._opt;\n }\n Routes.prototype.start = function (method, route, statusCode, contentType) {\n if (method === void 0) { method = ''; }\n if (route === void 0) { route = ''; }\n if (statusCode === void 0) { statusCode = 0; }\n if (contentType === void 0) { contentType = ''; }\n var metric = new RouteMetric(method, route, statusCode, contentType);\n if (!this._opt.performanceStats) {\n return metric;\n }\n var scope = this._notifier.scope().clone();\n scope.setContext({ httpMethod: method, route: route });\n scope.setRouteMetric(metric);\n this._notifier.setActiveScope(scope);\n return metric;\n };\n Routes.prototype.notify = function (req) {\n if (!this._opt.performanceStats) {\n return;\n }\n req.end();\n for (var _i = 0, _a = this._notifier._performanceFilters; _i < _a.length; _i++) {\n var performanceFilter = _a[_i];\n if (performanceFilter(req) === null) {\n return;\n }\n }\n this._routes.notify(req);\n this._breakdowns.notify(req);\n };\n return Routes;\n}());\nvar Queues = /** @class */ (function () {\n function Queues(notifier) {\n this._notifier = notifier;\n this._queues = new QueuesStats(notifier._opt);\n this._opt = notifier._opt;\n }\n Queues.prototype.start = function (queue) {\n var metric = new QueueMetric(queue);\n if (!this._opt.performanceStats) {\n return metric;\n }\n var scope = this._notifier.scope().clone();\n scope.setContext({ queue: queue });\n scope.setQueueMetric(metric);\n this._notifier.setActiveScope(scope);\n return metric;\n };\n Queues.prototype.notify = function (q) {\n if (!this._opt.performanceStats) {\n return;\n }\n q.end();\n this._queues.notify(q);\n };\n return Queues;\n}());\n//# sourceMappingURL=base_notifier.js.map","export function windowFilter(notice) {\n if (window.navigator && window.navigator.userAgent) {\n notice.context.userAgent = window.navigator.userAgent;\n }\n if (window.location) {\n notice.context.url = String(window.location);\n // Set root directory to group errors on different subdomains together.\n notice.context.rootDirectory =\n window.location.protocol + '//' + window.location.host;\n }\n return notice;\n}\n//# sourceMappingURL=window.js.map","var CONSOLE_METHODS = ['debug', 'log', 'info', 'warn', 'error'];\nexport function instrumentConsole(notifier) {\n var _loop_1 = function (m) {\n if (!(m in console)) {\n return \"continue\";\n }\n var oldFn = console[m];\n var newFn = (function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n oldFn.apply(console, args);\n notifier.scope().pushHistory({\n type: 'log',\n severity: m,\n arguments: args,\n });\n });\n newFn.inner = oldFn;\n console[m] = newFn;\n };\n // tslint:disable-next-line:no-this-assignment\n for (var _i = 0, CONSOLE_METHODS_1 = CONSOLE_METHODS; _i < CONSOLE_METHODS_1.length; _i++) {\n var m = CONSOLE_METHODS_1[_i];\n _loop_1(m);\n }\n}\n//# sourceMappingURL=console.js.map","var elemAttrs = ['type', 'name', 'src'];\nexport function instrumentDOM(notifier) {\n var handler = makeEventHandler(notifier);\n if (window.addEventListener) {\n window.addEventListener('load', handler);\n window.addEventListener('error', function (event) {\n if (getProp(event, 'error')) {\n return;\n }\n handler(event);\n }, true);\n }\n if (typeof document === 'object' && document.addEventListener) {\n document.addEventListener('DOMContentLoaded', handler);\n document.addEventListener('click', handler);\n document.addEventListener('keypress', handler);\n }\n}\nfunction makeEventHandler(notifier) {\n return function (event) {\n var target = getProp(event, 'target');\n if (!target) {\n return;\n }\n var state = { type: event.type };\n try {\n state.target = elemPath(target);\n }\n catch (err) {\n state.target = \"<\".concat(String(err), \">\");\n }\n notifier.scope().pushHistory(state);\n };\n}\nfunction elemName(elem) {\n if (!elem) {\n return '';\n }\n var s = [];\n if (elem.tagName) {\n s.push(elem.tagName.toLowerCase());\n }\n if (elem.id) {\n s.push('#');\n s.push(elem.id);\n }\n if (elem.classList && Array.from) {\n s.push('.');\n s.push(Array.from(elem.classList).join('.'));\n }\n else if (elem.className) {\n var str = classNameString(elem.className);\n if (str !== '') {\n s.push('.');\n s.push(str);\n }\n }\n if (elem.getAttribute) {\n for (var _i = 0, elemAttrs_1 = elemAttrs; _i < elemAttrs_1.length; _i++) {\n var attr = elemAttrs_1[_i];\n var value = elem.getAttribute(attr);\n if (value) {\n s.push(\"[\".concat(attr, \"=\\\"\").concat(value, \"\\\"]\"));\n }\n }\n }\n return s.join('');\n}\nfunction classNameString(name) {\n if (name.split) {\n return name.split(' ').join('.');\n }\n if (name.baseVal && name.baseVal.split) {\n // SVGAnimatedString\n return name.baseVal.split(' ').join('.');\n }\n console.error('unsupported HTMLElement.className type', typeof name);\n return '';\n}\nfunction elemPath(elem) {\n var maxLen = 10;\n var path = [];\n var parent = elem;\n while (parent) {\n var name_1 = elemName(parent);\n if (name_1 !== '') {\n path.push(name_1);\n if (path.length > maxLen) {\n break;\n }\n }\n parent = parent.parentNode;\n }\n if (path.length === 0) {\n return String(elem);\n }\n return path.reverse().join(' > ');\n}\nfunction getProp(obj, prop) {\n try {\n return obj[prop];\n }\n catch (_) {\n // Permission denied to access property\n return null;\n }\n}\n//# sourceMappingURL=dom.js.map","export function instrumentFetch(notifier) {\n // tslint:disable-next-line:no-this-assignment\n var oldFetch = window.fetch;\n window.fetch = function (req, options) {\n var state = {\n type: 'xhr',\n date: new Date(),\n };\n state.method = options && options.method ? options.method : 'GET';\n if (typeof req === 'string') {\n state.url = req;\n }\n else {\n state.method = req.method;\n state.url = req.url;\n }\n // Some platforms (e.g. react-native) implement fetch via XHR.\n notifier._ignoreNextXHR++;\n setTimeout(function () { return notifier._ignoreNextXHR--; });\n return oldFetch\n .apply(this, arguments)\n .then(function (resp) {\n state.statusCode = resp.status;\n state.duration = new Date().getTime() - state.date.getTime();\n notifier.scope().pushHistory(state);\n return resp;\n })\n .catch(function (err) {\n state.error = err;\n state.duration = new Date().getTime() - state.date.getTime();\n notifier.scope().pushHistory(state);\n throw err;\n });\n };\n}\n//# sourceMappingURL=fetch.js.map","var lastLocation = '';\n// In some environments (i.e. Cypress) document.location may sometimes be null\nfunction getCurrentLocation() {\n return document.location && document.location.pathname;\n}\nexport function instrumentLocation(notifier) {\n lastLocation = getCurrentLocation();\n var oldFn = window.onpopstate;\n window.onpopstate = function abOnpopstate(_event) {\n var url = getCurrentLocation();\n if (url) {\n recordLocation(notifier, url);\n }\n if (oldFn) {\n return oldFn.apply(this, arguments);\n }\n };\n var oldPushState = history.pushState;\n history.pushState = function abPushState(_state, _title, url) {\n if (url) {\n recordLocation(notifier, url.toString());\n }\n oldPushState.apply(this, arguments);\n };\n}\nfunction recordLocation(notifier, url) {\n var index = url.indexOf('://');\n if (index >= 0) {\n url = url.slice(index + 3);\n index = url.indexOf('/');\n url = index >= 0 ? url.slice(index) : '/';\n }\n else if (url.charAt(0) !== '/') {\n url = '/' + url;\n }\n notifier.scope().pushHistory({\n type: 'location',\n from: lastLocation,\n to: url,\n });\n lastLocation = url;\n}\n//# sourceMappingURL=location.js.map","export function instrumentXHR(notifier) {\n function recordReq(req) {\n var state = req.__state;\n state.statusCode = req.status;\n state.duration = new Date().getTime() - state.date.getTime();\n notifier.scope().pushHistory(state);\n }\n var oldOpen = XMLHttpRequest.prototype.open;\n XMLHttpRequest.prototype.open = function abOpen(method, url, _async, _user, _password) {\n if (notifier._ignoreNextXHR === 0) {\n this.__state = {\n type: 'xhr',\n method: method,\n url: url,\n };\n }\n oldOpen.apply(this, arguments);\n };\n var oldSend = XMLHttpRequest.prototype.send;\n XMLHttpRequest.prototype.send = function abSend(_data) {\n var oldFn = this.onreadystatechange;\n this.onreadystatechange = function (_ev) {\n if (this.readyState === 4 && this.__state) {\n recordReq(this);\n }\n if (oldFn) {\n return oldFn.apply(this, arguments);\n }\n };\n if (this.__state) {\n this.__state.date = new Date();\n }\n return oldSend.apply(this, arguments);\n };\n}\n//# sourceMappingURL=xhr.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport Promise from 'promise-polyfill';\nimport { BaseNotifier } from './base_notifier';\nimport { windowFilter } from './filter/window';\nimport { instrumentConsole } from './instrumentation/console';\nimport { instrumentDOM } from './instrumentation/dom';\nimport { instrumentFetch } from './instrumentation/fetch';\nimport { instrumentLocation } from './instrumentation/location';\nimport { instrumentXHR } from './instrumentation/xhr';\nvar Notifier = /** @class */ (function (_super) {\n __extends(Notifier, _super);\n function Notifier(opt) {\n var _this = _super.call(this, opt) || this;\n _this.offline = false;\n _this.todo = [];\n _this._ignoreWindowError = 0;\n _this._ignoreNextXHR = 0;\n if (typeof window === 'undefined') {\n return _this;\n }\n _this.addFilter(windowFilter);\n if (window.addEventListener) {\n _this.onOnline = _this.onOnline.bind(_this);\n window.addEventListener('online', _this.onOnline);\n _this.onOffline = _this.onOffline.bind(_this);\n window.addEventListener('offline', _this.onOffline);\n _this.onUnhandledrejection = _this.onUnhandledrejection.bind(_this);\n window.addEventListener('unhandledrejection', _this.onUnhandledrejection);\n _this._onClose.push(function () {\n window.removeEventListener('online', _this.onOnline);\n window.removeEventListener('offline', _this.onOffline);\n window.removeEventListener('unhandledrejection', _this.onUnhandledrejection);\n });\n }\n _this._instrument(opt.instrumentation);\n return _this;\n }\n Notifier.prototype._instrument = function (opt) {\n if (opt === void 0) { opt = {}; }\n if (opt.console === undefined) {\n opt.console = !isDevEnv(this._opt.environment);\n }\n if (enabled(opt.onerror)) {\n // tslint:disable-next-line:no-this-assignment\n var self_1 = this;\n var oldHandler_1 = window.onerror;\n window.onerror = function abOnerror() {\n if (oldHandler_1) {\n oldHandler_1.apply(this, arguments);\n }\n self_1.onerror.apply(self_1, arguments);\n };\n }\n instrumentDOM(this);\n if (enabled(opt.fetch) && typeof fetch === 'function') {\n instrumentFetch(this);\n }\n if (enabled(opt.history) && typeof history === 'object') {\n instrumentLocation(this);\n }\n if (enabled(opt.console) && typeof console === 'object') {\n instrumentConsole(this);\n }\n if (enabled(opt.xhr) && typeof XMLHttpRequest !== 'undefined') {\n instrumentXHR(this);\n }\n };\n Notifier.prototype.notify = function (err) {\n var _this = this;\n if (this.offline) {\n return new Promise(function (resolve, reject) {\n _this.todo.push({\n err: err,\n resolve: resolve,\n reject: reject,\n });\n while (_this.todo.length > 100) {\n var j = _this.todo.shift();\n if (j === undefined) {\n break;\n }\n j.resolve({\n error: new Error('airbrake: offline queue is too large'),\n });\n }\n });\n }\n return _super.prototype.notify.call(this, err);\n };\n Notifier.prototype.onOnline = function () {\n this.offline = false;\n var _loop_1 = function (j) {\n this_1.notify(j.err).then(function (notice) {\n j.resolve(notice);\n });\n };\n var this_1 = this;\n for (var _i = 0, _a = this.todo; _i < _a.length; _i++) {\n var j = _a[_i];\n _loop_1(j);\n }\n this.todo = [];\n };\n Notifier.prototype.onOffline = function () {\n this.offline = true;\n };\n Notifier.prototype.onUnhandledrejection = function (e) {\n // Handle native or bluebird Promise rejections\n // https://developer.mozilla.org/en-US/docs/Web/Events/unhandledrejection\n // http://bluebirdjs.com/docs/api/error-management-configuration.html\n var reason = e.reason || (e.detail && e.detail.reason);\n if (!reason) {\n return;\n }\n var msg = reason.message || String(reason);\n if (msg.indexOf && msg.indexOf('airbrake: ') === 0) {\n return;\n }\n if (typeof reason !== 'object' || reason.error === undefined) {\n this.notify({\n error: reason,\n context: {\n unhandledRejection: true,\n },\n });\n return;\n }\n this.notify(__assign(__assign({}, reason), { context: {\n unhandledRejection: true,\n } }));\n };\n Notifier.prototype.onerror = function (message, filename, line, column, err) {\n if (this._ignoreWindowError > 0) {\n return;\n }\n if (err) {\n this.notify({\n error: err,\n context: {\n windowError: true,\n },\n });\n return;\n }\n // Ignore errors without file or line.\n if (!filename || !line) {\n return;\n }\n this.notify({\n error: {\n message: message,\n fileName: filename,\n lineNumber: line,\n columnNumber: column,\n noStack: true,\n },\n context: {\n windowError: true,\n },\n });\n };\n Notifier.prototype._ignoreNextWindowError = function () {\n var _this = this;\n this._ignoreWindowError++;\n setTimeout(function () { return _this._ignoreWindowError--; });\n };\n return Notifier;\n}(BaseNotifier));\nexport { Notifier };\nfunction isDevEnv(env) {\n return env && env.startsWith && env.startsWith('dev');\n}\nfunction enabled(v) {\n return v === undefined || v === true;\n}\n//# sourceMappingURL=notifier.js.map","// eslint-disable-next-line import/no-extraneous-dependencies\nimport { Notifier } from \"@airbrake/browser\";\n\nconst airbrake = new Notifier({\n projectId: 513828,\n projectKey: \"11a30a6671a383d017c6abcada2048d2\"\n});\n\nairbrake.addFilter(notice => {\n const { backtrace } = notice.errors[0];\n\n // We want to check the backtrace to ensure the error comes from our app and not an external source\n const isFromApp = backtrace.every(url => {\n return url.file.includes(\"/app/javascript\");\n });\n\n if (!isFromApp) {\n return null;\n }\n\n return notice;\n});\n"],"names":["finallyConstructor","callback","constructor","value","reason","allSettled","arr","P","resolve","reject","args","remaining","res","i","val","then","e","AggregateError","errors","message","any","rejectionReasons","error","ex","setTimeoutFunc","isArray","x","noop","bind","fn","thisArg","Promise","doResolve","handle","self","deferred","cb","ret","newValue","finale","len","Handler","onFulfilled","onRejected","promise","done","prom","promiseFinally","err","FILTERED","MAX_OBJ_LENGTH","jsonifyNotice","notice","_a","_b","_c","maxLength","_d","keysBlocklist","t","Truncator","s","keys","level","opts","_i","keys_1","key","obj","truncate","params","_e","keys_2","scale","num","depth","type","objectType","saved","index","path","sub","getAttr","length","dst","el","isBlocklisted","attr","keysBlocklist_1","v","Span","metric","name","startTime","endTime","now","BaseMetric","span","ms","NoopMetric","_name","_startTime","_ms","__assign","p","Scope","clone","context","ctx","state","root","factory","module","this","_isNumber","n","_capitalize","str","_getter","booleanProps","numericProps","stringProps","arrayProps","objectProps","props","StackFrame","fileName","lineNumber","columnNumber","functionName","argsStartIndex","argsEndIndex","locationString","parts","j","k","require$$0","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","urlLike","regExp","filtered","line","sanitizedLine","location","locationParts","functionNameRegex","matches","lineRE","lines","result","match","tokens","functionCall","argsRaw","hasConsole","parse","ErrorStackParser","parseErr","espProcessor","backtrace","frames_2","fakeErr","frames_1","frame","msg","re","angularMessageFilter","m","makeDebounceFilter","lastNoticeJSON","timeout","IGNORED_MESSAGES","ignoreNoiseFilter","uncaughtMessageFilter","global","__self__","F","exports","support","isDataView","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","items","iterator","Headers","headers","header","oldValue","consumed","body","fileReaderReady","reader","readBlobAsArrayBuffer","blob","readBlobAsText","readArrayBufferAsText","buf","view","chars","bufferClone","Body","rejected","decode","methods","normalizeMethod","method","upcased","Request","input","options","form","bytes","split","parseHeaders","rawHeaders","preProcessedHeaders","Response","bodyInit","response","redirectStatuses","url","status","fetch","init","request","xhr","abortXhr","rateLimitReset","req","utime","opt","resp","json","makeRequester","api","h","makeNodeRequester","fetchRequest","__extends","extendStatics","d","b","__","tdigest","hasTdigest","TDigestStat","tdigestCentroids","TDigestStatGroups","_super","_this","totalMs","groups","name_1","stat","td","means","counts","c","FLUSH_INTERVAL","QueryInfo","query","QueriesStats","q","minute","keyStr","queries","outJSON","_resp","QueueMetric","queue","QueuesStats","queues","RouteMetric","route","statusCode","contentType","RoutesStats","routes","RoutesBreakdowns","NOTIFIER_NAME","NOTIFIER_VERSION","NOTIFIER_URL","API_VER","DEFAULT_INTERVAL","NOTIFIER_INFO","ERROR_SETTING","APM_SETTING","RemoteSettings","SettingsData","pollerId","_","queryParams","data","ownProps","resArray","projectId","other","remoteConfigHost","host","configRoute","settings","setting","BaseNotifier","Routes","Queues","pollerId_1","scope","filter","performanceFilter","r","client","airbrakeWrapper","fnArgs","wrappedArgs","prop","props_1","arg","wrapper","notifier","windowFilter","CONSOLE_METHODS","instrumentConsole","_loop_1","oldFn","newFn","CONSOLE_METHODS_1","elemAttrs","instrumentDOM","handler","makeEventHandler","event","getProp","target","elemPath","elemName","elem","classNameString","elemAttrs_1","maxLen","parent","instrumentFetch","oldFetch","lastLocation","getCurrentLocation","instrumentLocation","_event","recordLocation","oldPushState","_state","_title","instrumentXHR","recordReq","oldOpen","_async","_user","_password","oldSend","_data","_ev","Notifier","isDevEnv","enabled","self_1","oldHandler_1","this_1","filename","column","env","airbrake"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]}