{"version":3,"file":"@bugsnag.fd0507ec.js","sources":["../../../node_modules/@bugsnag/browser/dist/bugsnag.js","../../../node_modules/@bugsnag/js/browser/notifier.js","../../../node_modules/@bugsnag/plugin-vue/dist/bugsnag-vue.js"],"sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Bugsnag = f()}})(function(){var define,module,exports;\nvar _$breadcrumbTypes_8 = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual'];\n\n// Array#reduce\nvar _$reduce_17 = function (arr, fn, accum) {\n var val = accum;\n\n for (var i = 0, len = arr.length; i < len; i++) {\n val = fn(val, arr[i], i, arr);\n }\n\n return val;\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#filter\n\n\nvar _$filter_12 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return !fn(item, i, arr) ? accum : accum.concat(item);\n }, []);\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#includes\n\n\nvar _$includes_13 = function (arr, x) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum === true || item === x;\n }, false);\n};\n\n// Array#isArray\nvar _$isArray_14 = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n};\n\n/* eslint-disable-next-line no-prototype-builtins */\nvar _hasDontEnumBug = !{\n toString: null\n}.propertyIsEnumerable('toString');\n\nvar _dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor']; // Object#keys\n\nvar _$keys_15 = function (obj) {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n var result = [];\n var prop;\n\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop);\n }\n\n if (!_hasDontEnumBug) return result;\n\n for (var i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i]);\n }\n\n return result;\n};\n\nvar _$intRange_24 = function (min, max) {\n if (min === void 0) {\n min = 1;\n }\n\n if (max === void 0) {\n max = Infinity;\n }\n\n return function (value) {\n return typeof value === 'number' && parseInt('' + value, 10) === value && value >= min && value <= max;\n };\n};\n\n/* removed: var _$filter_12 = require('../es-utils/filter'); */;\n\n/* removed: var _$isArray_14 = require('../es-utils/is-array'); */;\n\nvar _$listOfFunctions_25 = function (value) {\n return typeof value === 'function' || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'function';\n }).length === value.length;\n};\n\nvar _$stringWithLength_26 = function (value) {\n return typeof value === 'string' && !!value.length;\n};\n\nvar _$config_5 = {};\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$keys_15 = require('./lib/es-utils/keys'); */;\n\n/* removed: var _$isArray_14 = require('./lib/es-utils/is-array'); */;\n\n/* removed: var _$includes_13 = require('./lib/es-utils/includes'); */;\n\n/* removed: var _$intRange_24 = require('./lib/validators/int-range'); */;\n\n/* removed: var _$stringWithLength_26 = require('./lib/validators/string-with-length'); */;\n\n/* removed: var _$listOfFunctions_25 = require('./lib/validators/list-of-functions'); */;\n\n/* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */;\n\nvar defaultErrorTypes = function () {\n return {\n unhandledExceptions: true,\n unhandledRejections: true\n };\n};\n\n_$config_5.schema = {\n apiKey: {\n defaultValue: function () {\n return null;\n },\n message: 'is required',\n validate: _$stringWithLength_26\n },\n appVersion: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n appType: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n autoDetectErrors: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n },\n enabledErrorTypes: {\n defaultValue: function () {\n return defaultErrorTypes();\n },\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: function (value) {\n // ensure we have an object\n if (typeof value !== 'object' || !value) return false;\n var providedKeys = _$keys_15(value);\n var defaultKeys = _$keys_15(defaultErrorTypes()); // ensure it only has a subset of the allowed keys\n\n if (_$filter_12(providedKeys, function (k) {\n return _$includes_13(defaultKeys, k);\n }).length < providedKeys.length) return false; // ensure all of the values are boolean\n\n if (_$filter_12(_$keys_15(value), function (k) {\n return typeof value[k] !== 'boolean';\n }).length > 0) return false;\n return true;\n }\n },\n onError: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onSession: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onBreadcrumb: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n endpoints: {\n defaultValue: function () {\n return {\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n };\n },\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: function (val) {\n return (// first, ensure it's an object\n val && typeof val === 'object' && // notify and sessions must always be set\n _$stringWithLength_26(val.notify) && _$stringWithLength_26(val.sessions) && // ensure no keys other than notify/session are set on endpoints object\n _$filter_12(_$keys_15(val), function (k) {\n return !_$includes_13(['notify', 'sessions'], k);\n }).length === 0\n );\n }\n },\n autoTrackSessions: {\n defaultValue: function (val) {\n return true;\n },\n message: 'should be true|false',\n validate: function (val) {\n return val === true || val === false;\n }\n },\n enabledReleaseStages: {\n defaultValue: function () {\n return null;\n },\n message: 'should be an array of strings',\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'string';\n }).length === value.length;\n }\n },\n releaseStage: {\n defaultValue: function () {\n return 'production';\n },\n message: 'should be a string',\n validate: function (value) {\n return typeof value === 'string' && value.length;\n }\n },\n maxBreadcrumbs: {\n defaultValue: function () {\n return 25;\n },\n message: 'should be a number ≤100',\n validate: function (value) {\n return _$intRange_24(0, 100)(value);\n }\n },\n enabledBreadcrumbTypes: {\n defaultValue: function () {\n return _$breadcrumbTypes_8;\n },\n message: \"should be null or a list of available breadcrumb types (\" + _$breadcrumbTypes_8.join(',') + \")\",\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$reduce_17(value, function (accum, maybeType) {\n if (accum === false) return accum;\n return _$includes_13(_$breadcrumbTypes_8, maybeType);\n }, true);\n }\n },\n context: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || typeof value === 'string';\n }\n },\n user: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object with { id, email, name } properties',\n validate: function (value) {\n return value === null || value && _$reduce_17(_$keys_15(value), function (accum, key) {\n return accum && _$includes_13(['id', 'email', 'name'], key);\n }, true);\n }\n },\n metadata: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object',\n validate: function (value) {\n return typeof value === 'object' && value !== null;\n }\n },\n logger: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: function (value) {\n return !value || value && _$reduce_17(['debug', 'info', 'warn', 'error'], function (accum, method) {\n return accum && typeof value[method] === 'function';\n }, true);\n }\n },\n redactedKeys: {\n defaultValue: function () {\n return ['password'];\n },\n message: 'should be an array of strings|regexes',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (s) {\n return typeof s === 'string' || s && typeof s.test === 'function';\n }).length;\n }\n },\n plugins: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of plugin objects',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (p) {\n return p && typeof p === 'object' && typeof p.load === 'function';\n }).length;\n }\n },\n featureFlags: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of objects that have a \"name\" property',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (feature) {\n return feature && typeof feature === 'object' && typeof feature.name === 'string';\n }).length;\n }\n }\n};\n\n// extends helper from babel\n// https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\nvar _$assign_11 = function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#map\n\n\nvar _$map_16 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum.concat(fn(item, i, arr));\n }, []);\n};\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar schema = _$config_5.schema;\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n\nvar _$config_1 = {\n releaseStage: _$assign_11({}, schema.releaseStage, {\n defaultValue: function () {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development';\n return 'production';\n }\n }),\n appType: _extends({}, schema.appType, {\n defaultValue: function () {\n return 'browser';\n }\n }),\n logger: _$assign_11({}, schema.logger, {\n defaultValue: function () {\n return (// set logger based on browser capability\n typeof console !== 'undefined' && typeof console.debug === 'function' ? getPrefixedConsole() : undefined\n );\n }\n })\n};\n\nvar getPrefixedConsole = function () {\n var logger = {};\n var consoleLog = console.log;\n _$map_16(['debug', 'info', 'warn', 'error'], function (method) {\n var consoleMethod = console[method];\n logger[method] = typeof consoleMethod === 'function' ? consoleMethod.bind(console, '[bugsnag]') : consoleLog.bind(console, '[bugsnag]');\n });\n return logger;\n};\n\nvar Breadcrumb = /*#__PURE__*/function () {\n function Breadcrumb(message, metadata, type, timestamp) {\n if (timestamp === void 0) {\n timestamp = new Date();\n }\n\n this.type = type;\n this.message = message;\n this.metadata = metadata;\n this.timestamp = timestamp;\n }\n\n var _proto = Breadcrumb.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n };\n };\n\n return Breadcrumb;\n}();\n\nvar _$Breadcrumb_3 = Breadcrumb;\n\nvar _$stackframe_34 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof _$stackframe_34 === 'object') {\n _$stackframe_34 = factory();\n } else {\n root.StackFrame = factory();\n }\n})(this, function () {\n 'use strict';\n\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 props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\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\n this.args = v;\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 toString: function () {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? '@' + this.getFileName() : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? ':' + this.getLineNumber() : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? ':' + this.getColumnNumber() : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n\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\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\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\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\nvar _$errorStackParser_31 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof _$errorStackParser_31 === 'object') {\n _$errorStackParser_31 = factory(_$stackframe_34);\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 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 // 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 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 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\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '('); // 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\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/); // remove the parenthesized location from the line, if it was matched\n\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1); // if a location was matched, pass it to extractLocation() otherwise pop the last token\n\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\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 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 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 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 parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && 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 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\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 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\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\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 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.replace(//, '$2').replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\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\nvar _$errorStackParser_10 = _$errorStackParser_31;\n\nvar _$safeJsonStringify_30 = function (data, replacer, space, opts) {\n var redactedKeys = opts && opts.redactedKeys ? opts.redactedKeys : [];\n var redactedPaths = opts && opts.redactedPaths ? opts.redactedPaths : [];\n return JSON.stringify(prepareObjForSerialization(data, redactedKeys, redactedPaths), replacer, space);\n};\n\nvar MAX_DEPTH = 20;\nvar MAX_EDGES = 25000;\nvar MIN_PRESERVED_DEPTH = 8;\nvar REPLACEMENT_NODE = '...';\n\nfunction isError(o) {\n return o instanceof Error || /^\\[object (Error|(Dom)?Exception)\\]$/.test(Object.prototype.toString.call(o));\n}\n\nfunction throwsMessage(err) {\n return '[Throws: ' + (err ? err.message : '?') + ']';\n}\n\nfunction find(haystack, needle) {\n for (var i = 0, len = haystack.length; i < len; i++) {\n if (haystack[i] === needle) return true;\n }\n\n return false;\n} // returns true if the string `path` starts with any of the provided `paths`\n\n\nfunction isDescendent(paths, path) {\n for (var i = 0, len = paths.length; i < len; i++) {\n if (path.indexOf(paths[i]) === 0) return true;\n }\n\n return false;\n}\n\nfunction shouldRedact(patterns, key) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n if (typeof patterns[i] === 'string' && patterns[i].toLowerCase() === key.toLowerCase()) return true;\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true;\n }\n\n return false;\n}\n\nfunction __isArray_30(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n}\n\nfunction safelyGetProp(obj, prop) {\n try {\n return obj[prop];\n } catch (err) {\n return throwsMessage(err);\n }\n}\n\nfunction prepareObjForSerialization(obj, redactedKeys, redactedPaths) {\n var seen = []; // store references to objects we have seen before\n\n var edges = 0;\n\n function visit(obj, path) {\n function edgesExceeded() {\n return path.length > MIN_PRESERVED_DEPTH && edges > MAX_EDGES;\n }\n\n edges++;\n if (path.length > MAX_DEPTH) return REPLACEMENT_NODE;\n if (edgesExceeded()) return REPLACEMENT_NODE;\n if (obj === null || typeof obj !== 'object') return obj;\n if (find(seen, obj)) return '[Circular]';\n seen.push(obj);\n\n if (typeof obj.toJSON === 'function') {\n try {\n // we're not going to count this as an edge because it\n // replaces the value of the currently visited object\n edges--;\n var fResult = visit(obj.toJSON(), path);\n seen.pop();\n return fResult;\n } catch (err) {\n return throwsMessage(err);\n }\n }\n\n var er = isError(obj);\n\n if (er) {\n edges--;\n var eResult = visit({\n name: obj.name,\n message: obj.message\n }, path);\n seen.pop();\n return eResult;\n }\n\n if (__isArray_30(obj)) {\n var aResult = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE);\n break;\n }\n\n aResult.push(visit(obj[i], path.concat('[]')));\n }\n\n seen.pop();\n return aResult;\n }\n\n var result = {};\n\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue;\n\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]';\n continue;\n }\n\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE;\n break;\n }\n\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop));\n }\n } catch (e) {}\n\n seen.pop();\n return result;\n }\n\n return visit(obj, []);\n}\n\n/* removed: var _$map_16 = require('./es-utils/map'); */;\n\n/* removed: var _$filter_12 = require('./es-utils/filter'); */;\n\n/* removed: var _$isArray_14 = require('./es-utils/is-array'); */;\n\n/* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */;\n\nfunction add(existingFeatures, existingFeatureKeys, name, variant) {\n if (typeof name !== 'string') {\n return;\n }\n\n if (variant === undefined) {\n variant = null;\n } else if (variant !== null && typeof variant !== 'string') {\n variant = _$safeJsonStringify_30(variant);\n }\n\n var existingIndex = existingFeatureKeys[name];\n\n if (typeof existingIndex === 'number') {\n existingFeatures[existingIndex] = {\n name: name,\n variant: variant\n };\n return;\n }\n\n existingFeatures.push({\n name: name,\n variant: variant\n });\n existingFeatureKeys[name] = existingFeatures.length - 1;\n}\n\nfunction merge(existingFeatures, newFeatures, existingFeatureKeys) {\n if (!_$isArray_14(newFeatures)) {\n return;\n }\n\n for (var i = 0; i < newFeatures.length; ++i) {\n var feature = newFeatures[i];\n\n if (feature === null || typeof feature !== 'object') {\n continue;\n } // 'add' will handle if 'name' doesn't exist & 'variant' is optional\n\n\n add(existingFeatures, existingFeatureKeys, feature.name, feature.variant);\n }\n\n return existingFeatures;\n} // convert feature flags from a map of 'name -> variant' into the format required\n// by the Bugsnag Event API:\n// [{ featureFlag: 'name', variant: 'variant' }, { featureFlag: 'name 2' }]\n\n\nfunction toEventApi(featureFlags) {\n return _$map_16(_$filter_12(featureFlags, Boolean), function (_ref) {\n var name = _ref.name,\n variant = _ref.variant;\n var flag = {\n featureFlag: name\n }; // don't add a 'variant' property unless there's actually a value\n\n if (typeof variant === 'string') {\n flag.variant = variant;\n }\n\n return flag;\n });\n}\n\nfunction clear(features, featuresIndex, name) {\n var existingIndex = featuresIndex[name];\n\n if (typeof existingIndex === 'number') {\n features[existingIndex] = null;\n delete featuresIndex[name];\n }\n}\n\nvar _$featureFlagDelegate_18 = {\n add: add,\n clear: clear,\n merge: merge,\n toEventApi: toEventApi\n};\n\n// Given `err` which may be an error, does it have a stack property which is a string?\nvar _$hasStack_19 = function (err) {\n return !!err && (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) && typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' && err.stack !== err.name + \": \" + err.message;\n};\n\n/**\n * Expose `isError`.\n */\nvar _$isError_32 = __isError_32;\n/**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\nfunction __isError_32(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n\n case '[object Exception]':\n return true;\n\n case '[object DOMException]':\n return true;\n\n default:\n return value instanceof Error;\n }\n}\n\nvar _$iserror_20 = _$isError_32;\n\n/* removed: var _$assign_11 = require('./es-utils/assign'); */;\n\nvar __add_22 = function (state, section, keyOrObj, maybeVal) {\n var _updates;\n\n if (!section) return;\n var updates; // addMetadata(\"section\", null) -> clears section\n\n if (keyOrObj === null) return __clear_22(state, section); // normalise the two supported input types into object form\n\n if (typeof keyOrObj === 'object') updates = keyOrObj;\n if (typeof keyOrObj === 'string') updates = (_updates = {}, _updates[keyOrObj] = maybeVal, _updates); // exit if we don't have an updates object at this point\n\n if (!updates) return; // ensure a section with this name exists\n\n if (!state[section]) state[section] = {}; // merge the updates with the existing section\n\n state[section] = _$assign_11({}, state[section], updates);\n};\n\nvar get = function (state, section, key) {\n if (typeof section !== 'string') return undefined;\n\n if (!key) {\n return state[section];\n }\n\n if (state[section]) {\n return state[section][key];\n }\n\n return undefined;\n};\n\nvar __clear_22 = function (state, section, key) {\n if (typeof section !== 'string') return; // clear an entire section\n\n if (!key) {\n delete state[section];\n return;\n } // clear a single value from a section\n\n\n if (state[section]) {\n delete state[section][key];\n }\n};\n\nvar _$metadataDelegate_22 = {\n add: __add_22,\n get: get,\n clear: __clear_22\n};\n\nvar _$stackGenerator_33 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof _$stackGenerator_33 === 'object') {\n _$stackGenerator_33 = factory(_$stackframe_34);\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n})(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n\n return stack;\n }\n };\n});\n\n/* removed: var _$errorStackParser_10 = require('./lib/error-stack-parser'); */;\n\n/* removed: var _$stackGenerator_33 = require('stack-generator'); */;\n\n/* removed: var _$hasStack_19 = require('./lib/has-stack'); */;\n\n/* removed: var _$map_16 = require('./lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$assign_11 = require('./lib/es-utils/assign'); */;\n\n/* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */;\n\n/* removed: var _$featureFlagDelegate_18 = require('./lib/feature-flag-delegate'); */;\n\n/* removed: var _$iserror_20 = require('./lib/iserror'); */;\n\nvar Event = /*#__PURE__*/function () {\n function Event(errorClass, errorMessage, stacktrace, handledState, originalError) {\n if (stacktrace === void 0) {\n stacktrace = [];\n }\n\n if (handledState === void 0) {\n handledState = defaultHandledState();\n }\n\n this.apiKey = undefined;\n this.context = undefined;\n this.groupingHash = undefined;\n this.originalError = originalError;\n this._handledState = handledState;\n this.severity = this._handledState.severity;\n this.unhandled = this._handledState.unhandled;\n this.app = {};\n this.device = {};\n this.request = {};\n this.breadcrumbs = [];\n this.threads = [];\n this._metadata = {};\n this._features = [];\n this._featuresIndex = {};\n this._user = {};\n this._session = undefined;\n this.errors = [createBugsnagError(errorClass, errorMessage, Event.__type, stacktrace)]; // Flags.\n // Note these are not initialised unless they are used\n // to save unnecessary bytes in the browser bundle\n\n /* this.attemptImmediateDelivery, default: true */\n }\n\n var _proto = Event.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n\n _$featureFlagDelegate_18.add(this._features, this._featuresIndex, name, variant);\n };\n\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n _$featureFlagDelegate_18.merge(this._features, featureFlags, this._featuresIndex);\n };\n\n _proto.getFeatureFlags = function getFeatureFlags() {\n return _$featureFlagDelegate_18.toEventApi(this._features);\n };\n\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n _$featureFlagDelegate_18.clear(this._features, this._featuresIndex, name);\n };\n\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n payloadVersion: '4',\n exceptions: _$map_16(this.errors, function (er) {\n return _$assign_11({}, er, {\n message: er.errorMessage\n });\n }),\n severity: this.severity,\n unhandled: this._handledState.unhandled,\n severityReason: this._handledState.severityReason,\n app: this.app,\n device: this.device,\n request: this.request,\n breadcrumbs: this.breadcrumbs,\n context: this.context,\n groupingHash: this.groupingHash,\n metaData: this._metadata,\n user: this._user,\n session: this._session,\n featureFlags: this.getFeatureFlags()\n };\n };\n\n return Event;\n}(); // takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n// and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\n\n\nvar formatStackframe = function (frame) {\n var f = {\n file: frame.fileName,\n method: normaliseFunctionName(frame.functionName),\n lineNumber: frame.lineNumber,\n columnNumber: frame.columnNumber,\n code: undefined,\n inProject: undefined\n }; // Some instances result in no file:\n // - calling notify() from chrome's terminal results in no file/method.\n // - non-error exception thrown from global code in FF\n // This adds one.\n\n if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code';\n }\n\n return f;\n};\n\nvar normaliseFunctionName = function (name) {\n return /^global code$/i.test(name) ? 'global code' : name;\n};\n\nvar defaultHandledState = function () {\n return {\n unhandled: false,\n severity: 'warning',\n severityReason: {\n type: 'handledException'\n }\n };\n};\n\nvar ensureString = function (str) {\n return typeof str === 'string' ? str : '';\n};\n\nfunction createBugsnagError(errorClass, errorMessage, type, stacktrace) {\n return {\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type: type,\n stacktrace: _$reduce_17(stacktrace, function (accum, frame) {\n var f = formatStackframe(frame); // don't include a stackframe if none of its properties are defined\n\n try {\n if (JSON.stringify(f) === '{}') return accum;\n return accum.concat(f);\n } catch (e) {\n return accum;\n }\n }, [])\n };\n}\n\nfunction getCauseStack(error) {\n if (error.cause) {\n return [error].concat(getCauseStack(error.cause));\n } else {\n return [error];\n }\n} // Helpers\n\n\nEvent.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (_$hasStack_19(error)) return _$errorStackParser_10.parse(error).slice(errorFramesToSkip); // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n\n try {\n return _$filter_12(_$stackGenerator_33.backtrace(), function (frame) {\n return (frame.functionName || '').indexOf('StackGenerator$$') === -1;\n }).slice(1 + backtraceFramesToSkip);\n } catch (e) {\n return [];\n }\n};\n\nEvent.create = function (maybeError, tolerateNonErrors, handledState, component, errorFramesToSkip, logger) {\n if (errorFramesToSkip === void 0) {\n errorFramesToSkip = 0;\n }\n\n var _normaliseError = normaliseError(maybeError, tolerateNonErrors, component, logger),\n error = _normaliseError[0],\n internalFrames = _normaliseError[1];\n\n var event;\n\n try {\n var stacktrace = Event.getStacktrace(error, // if an error was created/throw in the normaliseError() function, we need to\n // tell the getStacktrace() function to skip the number of frames we know will\n // be from our own functions. This is added to the number of frames deep we\n // were told about\n internalFrames > 0 ? 1 + internalFrames + errorFramesToSkip : 0, // if there's no stacktrace, the callstack may be walked to generated one.\n // this is how many frames should be removed because they come from our library\n 1 + errorFramesToSkip);\n event = new Event(error.name, error.message, stacktrace, handledState, maybeError);\n } catch (e) {\n event = new Event(error.name, error.message, [], handledState, maybeError);\n }\n\n if (error.name === 'InvalidError') {\n event.addMetadata(\"\" + component, 'non-error parameter', makeSerialisable(maybeError));\n }\n\n if (error.cause) {\n var _event$errors;\n\n var causes = getCauseStack(error).slice(1);\n var normalisedCauses = _$map_16(causes, function (cause) {\n // Only get stacktrace for error causes that are a valid JS Error and already have a stack\n var stacktrace = _$iserror_20(cause) && _$hasStack_19(cause) ? _$errorStackParser_10.parse(cause) : [];\n\n var _normaliseError2 = normaliseError(cause, true, 'error cause'),\n error = _normaliseError2[0];\n\n if (error.name === 'InvalidError') event.addMetadata('error cause', makeSerialisable(cause));\n return createBugsnagError(error.name, error.message, Event.__type, stacktrace);\n });\n\n (_event$errors = event.errors).push.apply(_event$errors, normalisedCauses);\n }\n\n return event;\n};\n\nvar makeSerialisable = function (err) {\n if (err === null) return 'null';\n if (err === undefined) return 'undefined';\n return err;\n};\n\nvar normaliseError = function (maybeError, tolerateNonErrors, component, logger) {\n var error;\n var internalFrames = 0;\n\n var createAndLogInputError = function (reason) {\n var verb = component === 'error cause' ? 'was' : 'received';\n if (logger) logger.warn(component + \" \" + verb + \" a non-error: \\\"\" + reason + \"\\\"\");\n var err = new Error(component + \" \" + verb + \" a non-error. See \\\"\" + component + \"\\\" tab for more detail.\");\n err.name = 'InvalidError';\n return err;\n }; // In some cases:\n //\n // - the promise rejection handler (both in the browser and node)\n // - the node uncaughtException handler\n //\n // We are really limited in what we can do to get a stacktrace. So we use the\n // tolerateNonErrors option to ensure that the resulting error communicates as\n // such.\n\n\n if (!tolerateNonErrors) {\n if (_$iserror_20(maybeError)) {\n error = maybeError;\n } else {\n error = createAndLogInputError(typeof maybeError);\n internalFrames += 2;\n }\n } else {\n switch (typeof maybeError) {\n case 'string':\n case 'number':\n case 'boolean':\n error = new Error(String(maybeError));\n internalFrames += 1;\n break;\n\n case 'function':\n error = createAndLogInputError('function');\n internalFrames += 2;\n break;\n\n case 'object':\n if (maybeError !== null && _$iserror_20(maybeError)) {\n error = maybeError;\n } else if (maybeError !== null && hasNecessaryFields(maybeError)) {\n error = new Error(maybeError.message || maybeError.errorMessage);\n error.name = maybeError.name || maybeError.errorClass;\n internalFrames += 1;\n } else {\n error = createAndLogInputError(maybeError === null ? 'null' : 'unsupported object');\n internalFrames += 2;\n }\n\n break;\n\n default:\n error = createAndLogInputError('nothing');\n internalFrames += 2;\n }\n }\n\n if (!_$hasStack_19(error)) {\n // in IE10/11 a new Error() doesn't have a stacktrace until you throw it, so try that here\n try {\n throw error;\n } catch (e) {\n if (_$hasStack_19(e)) {\n error = e; // if the error only got a stacktrace after we threw it here, we know it\n // will only have one extra internal frame from this function, regardless\n // of whether it went through createAndLogInputError() or not\n\n internalFrames = 1;\n }\n }\n }\n\n return [error, internalFrames];\n}; // default value for stacktrace.type\n\n\nEvent.__type = 'browserjs';\n\nvar hasNecessaryFields = function (error) {\n return (typeof error.name === 'string' || typeof error.errorClass === 'string') && (typeof error.message === 'string' || typeof error.errorMessage === 'string');\n};\n\nvar _$Event_6 = Event;\n\n// This is a heavily modified/simplified version of\n// https://github.com/othiym23/async-some\n// with the logic flipped so that it is akin to the\n// synchronous \"every\" method instead of \"some\".\n// run the asynchronous test function (fn) over each item in the array (arr)\n// in series until:\n// - fn(item, cb) => calls cb(null, false)\n// - or the end of the array is reached\n// the callback (cb) will be passed (null, false) if any of the items in arr\n// caused fn to call back with false, otherwise it will be passed (null, true)\nvar _$asyncEvery_7 = function (arr, fn, cb) {\n var index = 0;\n\n var next = function () {\n if (index >= arr.length) return cb(null, true);\n fn(arr[index], function (err, result) {\n if (err) return cb(err);\n if (result === false) return cb(null, false);\n index++;\n next();\n });\n };\n\n next();\n};\n\n/* removed: var _$asyncEvery_7 = require('./async-every'); */;\n\nvar _$callbackRunner_9 = function (callbacks, event, onCallbackError, cb) {\n // This function is how we support different kinds of callback:\n // - synchronous - return value\n // - node-style async with callback - cb(err, value)\n // - promise/thenable - resolve(value)\n // It normalises each of these into the lowest common denominator – a node-style callback\n var runMaybeAsyncCallback = function (fn, cb) {\n if (typeof fn !== 'function') return cb(null);\n\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n var ret = fn(event); // check if it returned a \"thenable\" (promise)\n\n if (ret && typeof ret.then === 'function') {\n return ret.then( // resolve\n function (val) {\n return setTimeout(function () {\n return cb(null, val);\n });\n }, // reject\n function (err) {\n setTimeout(function () {\n onCallbackError(err);\n return cb(null, true);\n });\n });\n }\n\n return cb(null, ret);\n } // if function is async…\n\n\n fn(event, function (err, result) {\n if (err) {\n onCallbackError(err);\n return cb(null);\n }\n\n cb(null, result);\n });\n } catch (e) {\n onCallbackError(e);\n cb(null);\n }\n };\n\n _$asyncEvery_7(callbacks, runMaybeAsyncCallback, cb);\n};\n\nvar _$syncCallbackRunner_23 = function (callbacks, callbackArg, callbackType, logger) {\n var ignore = false;\n var cbs = callbacks.slice();\n\n while (!ignore) {\n if (!cbs.length) break;\n\n try {\n ignore = cbs.pop()(callbackArg) === false;\n } catch (e) {\n logger.error(\"Error occurred in \" + callbackType + \" callback, continuing anyway\\u2026\");\n logger.error(e);\n }\n }\n\n return ignore;\n};\n\nvar _$pad_29 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n\n/* removed: var _$pad_29 = require('./pad.js'); */;\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = 0;\n\nfor (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n}\n\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = _$pad_29((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\n\nvar _$fingerprint_28 = function fingerprint() {\n return clientId;\n};\n\n/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n/* removed: var _$fingerprint_28 = require('./lib/fingerprint.js'); */;\n\n/* removed: var _$pad_29 = require('./lib/pad.js'); */;\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock() {\n return _$pad_29((Math.random() * discreteValues << 0).toString(base), blockSize);\n}\n\nfunction safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n\n return c - 1;\n}\n\nfunction cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = _$pad_29(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_28(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n return letter + timestamp + counter + print + random;\n}\n\ncuid.fingerprint = _$fingerprint_28;\nvar _$cuid_27 = cuid;\n\n/* removed: var _$cuid_27 = require('@bugsnag/cuid'); */;\n\nvar Session = /*#__PURE__*/function () {\n function Session() {\n this.id = _$cuid_27();\n this.startedAt = new Date();\n this._handled = 0;\n this._unhandled = 0;\n this._user = {};\n this.app = {};\n this.device = {};\n }\n\n var _proto = Session.prototype;\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: {\n handled: this._handled,\n unhandled: this._unhandled\n }\n };\n };\n\n _proto._track = function _track(event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1;\n };\n\n return Session;\n}();\n\nvar _$Session_35 = Session;\n\n/* removed: var _$config_5 = require('./config'); */;\n\n/* removed: var _$Event_6 = require('./event'); */;\n\n/* removed: var _$Breadcrumb_3 = require('./breadcrumb'); */;\n\n/* removed: var _$Session_35 = require('./session'); */;\n\n/* removed: var _$map_16 = require('./lib/es-utils/map'); */;\n\n/* removed: var _$includes_13 = require('./lib/es-utils/includes'); */;\n\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$keys_15 = require('./lib/es-utils/keys'); */;\n\n/* removed: var _$assign_11 = require('./lib/es-utils/assign'); */;\n\n/* removed: var _$callbackRunner_9 = require('./lib/callback-runner'); */;\n\n/* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */;\n\n/* removed: var _$syncCallbackRunner_23 = require('./lib/sync-callback-runner'); */;\n\n/* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */;\n\nvar __add_4 = _$featureFlagDelegate_18.add,\n __clear_4 = _$featureFlagDelegate_18.clear,\n __merge_4 = _$featureFlagDelegate_18.merge;\n\nvar noop = function () {};\n\nvar Client = /*#__PURE__*/function () {\n function Client(configuration, schema, internalPlugins, notifier) {\n var _this = this;\n\n if (schema === void 0) {\n schema = _$config_5.schema;\n }\n\n if (internalPlugins === void 0) {\n internalPlugins = [];\n }\n\n // notifier id\n this._notifier = notifier; // intialise opts and config\n\n this._config = {};\n this._schema = schema; // i/o\n\n this._delivery = {\n sendSession: noop,\n sendEvent: noop\n };\n this._logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n }; // plugins\n\n this._plugins = {}; // state\n\n this._breadcrumbs = [];\n this._session = null;\n this._metadata = {};\n this._featuresIndex = {};\n this._features = [];\n this._context = undefined;\n this._user = {}; // callbacks:\n // e: onError\n // s: onSession\n // sp: onSessionPayload\n // b: onBreadcrumb\n // (note these names are minified by hand because object\n // properties are not safe to minify automatically)\n\n this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n }; // expose internal constructors\n\n this.Client = Client;\n this.Event = _$Event_6;\n this.Breadcrumb = _$Breadcrumb_3;\n this.Session = _$Session_35;\n this._config = this._configure(configuration, internalPlugins);\n _$map_16(internalPlugins.concat(this._config.plugins), function (pl) {\n if (pl) _this._loadPlugin(pl);\n }); // when notify() is called we need to know how many frames are from our own source\n // this inital value is 1 not 0 because we wrap notify() to ensure it is always\n // bound to have the client as its `this` value – see below.\n\n this._depth = 1;\n var self = this;\n var notify = this.notify;\n\n this.notify = function () {\n return notify.apply(self, arguments);\n };\n }\n\n var _proto = Client.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n\n __add_4(this._features, this._featuresIndex, name, variant);\n };\n\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n __merge_4(this._features, featureFlags, this._featuresIndex);\n };\n\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n __clear_4(this._features, this._featuresIndex, name);\n };\n\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n\n _proto.getContext = function getContext() {\n return this._context;\n };\n\n _proto.setContext = function setContext(c) {\n this._context = c;\n };\n\n _proto._configure = function _configure(opts, internalPlugins) {\n var schema = _$reduce_17(internalPlugins, function (schema, plugin) {\n if (plugin && plugin.configSchema) return _$assign_11({}, schema, plugin.configSchema);\n return schema;\n }, this._schema); // accumulate configuration and error messages\n\n var _reduce = _$reduce_17(_$keys_15(schema), function (accum, key) {\n var defaultValue = schema[key].defaultValue(opts[key]);\n\n if (opts[key] !== undefined) {\n var valid = schema[key].validate(opts[key]);\n\n if (!valid) {\n accum.errors[key] = schema[key].message;\n accum.config[key] = defaultValue;\n } else {\n if (schema[key].allowPartialObject) {\n accum.config[key] = _$assign_11(defaultValue, opts[key]);\n } else {\n accum.config[key] = opts[key];\n }\n }\n } else {\n accum.config[key] = defaultValue;\n }\n\n return accum;\n }, {\n errors: {},\n config: {}\n }),\n errors = _reduce.errors,\n config = _reduce.config;\n\n if (schema.apiKey) {\n // missing api key is the only fatal error\n if (!config.apiKey) throw new Error('No Bugsnag API Key set'); // warn about an apikey that is not of the expected format\n\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters';\n } // update and elevate some options\n\n\n this._metadata = _$assign_11({}, config.metadata);\n __merge_4(this._features, config.featureFlags, this._featuresIndex);\n this._user = _$assign_11({}, config.user);\n this._context = config.context;\n if (config.logger) this._logger = config.logger; // add callbacks\n\n if (config.onError) this._cbs.e = this._cbs.e.concat(config.onError);\n if (config.onBreadcrumb) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb);\n if (config.onSession) this._cbs.s = this._cbs.s.concat(config.onSession); // finally warn about any invalid config where we fell back to the default\n\n if (_$keys_15(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts));\n }\n\n return config;\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto._loadPlugin = function _loadPlugin(plugin) {\n var result = plugin.load(this); // JS objects are not the safest way to store arbitrarily keyed values,\n // so bookend the key with some characters that prevent tampering with\n // stuff like __proto__ etc. (only store the result if the plugin had a\n // name)\n\n if (plugin.name) this._plugins[\"~\" + plugin.name + \"~\"] = result;\n return this;\n };\n\n _proto.getPlugin = function getPlugin(name) {\n return this._plugins[\"~\" + name + \"~\"];\n };\n\n _proto._setDelivery = function _setDelivery(d) {\n this._delivery = d(this);\n };\n\n _proto.startSession = function startSession() {\n var session = new _$Session_35();\n session.app.releaseStage = this._config.releaseStage;\n session.app.version = this._config.appVersion;\n session.app.type = this._config.appType;\n session._user = _$assign_11({}, this._user); // run onSession callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.s, session, 'onSession', this._logger);\n\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback');\n\n return this;\n }\n\n return this._sessionDelegate.startSession(this, session);\n };\n\n _proto.addOnError = function addOnError(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.e[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnError = function removeOnError(fn) {\n this._cbs.e = _$filter_12(this._cbs.e, function (f) {\n return f !== fn;\n });\n };\n\n _proto._addOnSessionPayload = function _addOnSessionPayload(fn) {\n this._cbs.sp.push(fn);\n };\n\n _proto.addOnSession = function addOnSession(fn) {\n this._cbs.s.push(fn);\n };\n\n _proto.removeOnSession = function removeOnSession(fn) {\n this._cbs.s = _$filter_12(this._cbs.s, function (f) {\n return f !== fn;\n });\n };\n\n _proto.addOnBreadcrumb = function addOnBreadcrumb(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.b[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnBreadcrumb = function removeOnBreadcrumb(fn) {\n this._cbs.b = _$filter_12(this._cbs.b, function (f) {\n return f !== fn;\n });\n };\n\n _proto.pauseSession = function pauseSession() {\n return this._sessionDelegate.pauseSession(this);\n };\n\n _proto.resumeSession = function resumeSession() {\n return this._sessionDelegate.resumeSession(this);\n };\n\n _proto.leaveBreadcrumb = function leaveBreadcrumb(message, metadata, type) {\n // coerce bad values so that the defaults get set\n message = typeof message === 'string' ? message : '';\n type = typeof type === 'string' && _$includes_13(_$breadcrumbTypes_8, type) ? type : 'manual';\n metadata = typeof metadata === 'object' && metadata !== null ? metadata : {}; // if no message, discard\n\n if (!message) return;\n var crumb = new _$Breadcrumb_3(message, metadata, type); // run onBreadcrumb callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.b, crumb, 'onBreadcrumb', this._logger);\n\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback');\n\n return;\n } // push the valid crumb onto the queue and maintain the length\n\n\n this._breadcrumbs.push(crumb);\n\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs);\n }\n };\n\n _proto._isBreadcrumbTypeEnabled = function _isBreadcrumbTypeEnabled(type) {\n var types = this._config.enabledBreadcrumbTypes;\n return types === null || _$includes_13(types, type);\n };\n\n _proto.notify = function notify(maybeError, onError, postReportCallback) {\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n\n var event = _$Event_6.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger);\n\n this._notify(event, onError, postReportCallback);\n };\n\n _proto._notify = function _notify(event, onError, postReportCallback) {\n var _this2 = this;\n\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n\n event.app = _$assign_11({}, event.app, {\n releaseStage: this._config.releaseStage,\n version: this._config.appVersion,\n type: this._config.appType\n });\n event.context = event.context || this._context;\n event._metadata = _$assign_11({}, event._metadata, this._metadata);\n event._user = _$assign_11({}, event._user, this._user);\n event.breadcrumbs = this._breadcrumbs.slice();\n __merge_4(event._features, this._features, event._featuresIndex); // exit early if events should not be sent on the current releaseStage\n\n if (this._config.enabledReleaseStages !== null && !_$includes_13(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration');\n\n return postReportCallback(null, event);\n }\n\n var originalSeverity = event.severity;\n\n var onCallbackError = function (err) {\n // errors in callbacks are tolerated but we want to log them out\n _this2._logger.error('Error occurred in onError callback, continuing anyway…');\n\n _this2._logger.error(err);\n };\n\n var callbacks = [].concat(this._cbs.e).concat(onError);\n _$callbackRunner_9(callbacks, event, onCallbackError, function (err, shouldSend) {\n if (err) onCallbackError(err);\n\n if (!shouldSend) {\n _this2._logger.debug('Event not sent due to onError callback');\n\n return postReportCallback(null, event);\n }\n\n if (_this2._isBreadcrumbTypeEnabled('error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(_this2, event.errors[0].errorClass, {\n errorClass: event.errors[0].errorClass,\n errorMessage: event.errors[0].errorMessage,\n severity: event.severity\n }, 'error');\n }\n\n if (originalSeverity !== event.severity) {\n event._handledState.severityReason = {\n type: 'userCallbackSetSeverity'\n };\n }\n\n if (event.unhandled !== event._handledState.unhandled) {\n event._handledState.severityReason.unhandledOverridden = true;\n event._handledState.unhandled = event.unhandled;\n }\n\n if (_this2._session) {\n _this2._session._track(event);\n\n event._session = _this2._session;\n }\n\n _this2._delivery.sendEvent({\n apiKey: event.apiKey || _this2._config.apiKey,\n notifier: _this2._notifier,\n events: [event]\n }, function (err) {\n return postReportCallback(err, event);\n });\n });\n };\n\n return Client;\n}();\n\nvar generateConfigErrorMessage = function (errors, rawInput) {\n var er = new Error(\"Invalid configuration\\n\" + _$map_16(_$keys_15(errors), function (key) {\n return \" - \" + key + \" \" + errors[key] + \", got \" + stringify(rawInput[key]);\n }).join('\\n\\n'));\n return er;\n};\n\nvar stringify = function (val) {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val);\n\n default:\n return String(val);\n }\n};\n\nvar _$Client_4 = Client;\n\nvar _$jsonPayload_21 = {};\n/* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */;\n\nvar EVENT_REDACTION_PATHS = ['events.[].metaData', 'events.[].breadcrumbs.[].metaData', 'events.[].request'];\n\n_$jsonPayload_21.event = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier: \"WARNING!\\nSerialized payload was \" + payload.length / 10e5 + \"MB (limit = 1MB)\\nmetadata was removed\"\n };\n payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n }\n\n return payload;\n};\n\n_$jsonPayload_21.session = function (session, redactedKeys) {\n var payload = _$safeJsonStringify_30(session, null, null);\n return payload;\n};\n\nvar _$delivery_36 = {};\n/* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */;\n\n_$delivery_36 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n var url = getApiUrl(client._config, 'notify', '4', win);\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.onerror = function () {\n var err = new Error('Event failed to send');\n\n client._logger.error('Event failed to send…', err);\n\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n\n cb(err);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n var url = getApiUrl(client._config, 'sessions', '1', win);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n }\n };\n};\n\nvar getApiUrl = function (config, endpoint, version, win) {\n // IE8 doesn't support Date.prototype.toISOstring(), but it does convert a date\n // to an ISO string when you use JSON stringify. Simply parsing the result of\n // JSON.stringify is smaller than using a toISOstring() polyfill.\n var isoDate = JSON.parse(JSON.stringify(new Date()));\n var url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol);\n return url + \"?apiKey=\" + encodeURIComponent(config.apiKey) + \"&payloadVersion=\" + version + \"&sentAt=\" + encodeURIComponent(isoDate);\n};\n\nvar matchPageProtocol = _$delivery_36._matchPageProtocol = function (endpoint, pageProtocol) {\n return pageProtocol === 'http:' ? endpoint.replace(/^https:/, 'http:') : endpoint;\n};\n\n/* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */;\n\nvar _$delivery_37 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n try {\n var url = client._config.endpoints.notify;\n var req = new win.XMLHttpRequest();\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n var status = req.status;\n\n if (status === 0 || status >= 400) {\n client._logger.error('Event failed to send…');\n\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n }\n\n cb(null);\n }\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '4');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n }\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n try {\n var url = client._config.endpoints.sessions;\n var req = new win.XMLHttpRequest();\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null);\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '1');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n }\n };\n};\n\nvar appStart = new Date();\n\nvar reset = function () {\n appStart = new Date();\n};\n\nvar _$app_38 = {\n name: 'appDuration',\n load: function (client) {\n client.addOnError(function (event) {\n var now = new Date();\n event.app.duration = now - appStart;\n }, true);\n return {\n reset: reset\n };\n }\n};\n\n/*\n * Sets the default context to be the current URL\n */\nvar _$context_39 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.context !== undefined) return;\n event.context = win.location.pathname;\n }, true);\n }\n };\n};\n\nvar _$pad_43 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n\n/* removed: var _$pad_43 = require('./pad.js'); */;\n\nvar __env_42 = typeof window === 'object' ? window : self;\nvar __globalCount_42 = 0;\n\nfor (var __prop_42 in __env_42) {\n if (Object.hasOwnProperty.call(__env_42, __prop_42)) __globalCount_42++;\n}\n\nvar __mimeTypesLength_42 = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar __clientId_42 = _$pad_43((__mimeTypesLength_42 + navigator.userAgent.length).toString(36) + __globalCount_42.toString(36), 4);\n\nvar _$fingerprint_42 = function fingerprint() {\n return __clientId_42;\n};\n\n/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n/* removed: var _$fingerprint_42 = require('./lib/fingerprint.js'); */;\n\n/* removed: var _$pad_43 = require('./lib/pad.js'); */;\n\nvar __c_41 = 0,\n __blockSize_41 = 4,\n __base_41 = 36,\n __discreteValues_41 = Math.pow(__base_41, __blockSize_41);\n\nfunction __randomBlock_41() {\n return _$pad_43((Math.random() * __discreteValues_41 << 0).toString(__base_41), __blockSize_41);\n}\n\nfunction __safeCounter_41() {\n __c_41 = __c_41 < __discreteValues_41 ? __c_41 : 0;\n __c_41++; // this is not subliminal\n\n return __c_41 - 1;\n}\n\nfunction __cuid_41() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(__base_41),\n // Prevent same-machine collisions.\n counter = _$pad_43(__safeCounter_41().toString(__base_41), __blockSize_41),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_42(),\n // Grab some more chars from Math.random()\n random = __randomBlock_41() + __randomBlock_41();\n return letter + timestamp + counter + print + random;\n}\n\n__cuid_41.fingerprint = _$fingerprint_42;\nvar _$cuid_41 = __cuid_41;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n\nvar BUGSNAG_ANONYMOUS_ID_KEY = 'bugsnag-anonymous-id';\n\nvar getDeviceId = function (win) {\n try {\n var storage = win.localStorage;\n var id = storage.getItem(BUGSNAG_ANONYMOUS_ID_KEY); // If we get an ID, make sure it looks like a valid cuid. The length can\n // fluctuate slightly, so some leeway is built in\n\n if (id && /^c[a-z0-9]{20,32}$/.test(id)) {\n return id;\n }\n\n /* removed: var _$cuid_41 = require('@bugsnag/cuid'); */;\n\n id = _$cuid_41();\n storage.setItem(BUGSNAG_ANONYMOUS_ID_KEY, id);\n return id;\n } catch (err) {// If localStorage is not available (e.g. because it's disabled) then give up\n }\n};\n/*\n * Automatically detects browser device details\n */\n\n\nvar _$device_40 = function (nav, win) {\n if (nav === void 0) {\n nav = navigator;\n }\n\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n var device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n };\n\n if (win && win.screen && win.screen.orientation && win.screen.orientation.type) {\n device.orientation = win.screen.orientation.type;\n } else if (win && win.document) {\n device.orientation = win.document.documentElement.clientWidth > win.document.documentElement.clientHeight ? 'landscape' : 'portrait';\n }\n\n if (client._config.generateAnonymousId) {\n device.id = getDeviceId(win);\n }\n\n client.addOnSession(function (session) {\n session.device = _$assign_11({}, session.device, device); // only set device id if collectUserIp is false\n\n if (!client._config.collectUserIp) setDefaultUserId(session);\n }); // add time just as the event is sent\n\n client.addOnError(function (event) {\n event.device = _$assign_11({}, event.device, device, {\n time: new Date()\n });\n if (!client._config.collectUserIp) setDefaultUserId(event);\n }, true);\n },\n configSchema: {\n generateAnonymousId: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n};\n\nvar setDefaultUserId = function (eventOrSession) {\n // device id is also used to populate the user id field, if it's not already set\n var user = eventOrSession.getUser();\n\n if (!user || !user.id) {\n eventOrSession.setUser(eventOrSession.device.id);\n }\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Sets the event request: { url } to be the current href\n */\n\n\nvar _$request_44 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.request && event.request.url) return;\n event.request = _$assign_11({}, event.request, {\n url: win.location.href\n });\n }, true);\n }\n };\n};\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n\nvar _$session_45 = {\n load: function (client) {\n client._sessionDelegate = sessionDelegate;\n }\n};\nvar sessionDelegate = {\n startSession: function (client, session) {\n var sessionClient = client;\n sessionClient._session = session;\n sessionClient._pausedSession = null; // exit early if the current releaseStage is not enabled\n\n if (sessionClient._config.enabledReleaseStages !== null && !_$includes_13(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration');\n\n return sessionClient;\n }\n\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [{\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }]\n });\n\n return sessionClient;\n },\n resumeSession: function (client) {\n // Do nothing if there's already an active session\n if (client._session) {\n return client;\n } // If we have a paused session then make it the active session\n\n\n if (client._pausedSession) {\n client._session = client._pausedSession;\n client._pausedSession = null;\n return client;\n } // Otherwise start a new session\n\n\n return client.startSession();\n },\n pauseSession: function (client) {\n client._pausedSession = client._session;\n client._session = null;\n }\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Prevent collection of user IPs\n */\n\n\nvar _$clientIp_46 = {\n load: function (client) {\n if (client._config.collectUserIp) return;\n client.addOnError(function (event) {\n // If user.id is explicitly undefined, it will be missing from the payload. It needs\n // removing so that the following line replaces it\n if (event._user && typeof event._user.id === 'undefined') delete event._user.id;\n event._user = _$assign_11({\n id: '[REDACTED]'\n }, event._user);\n event.request = _$assign_11({\n clientIp: '[REDACTED]'\n }, event.request);\n });\n },\n configSchema: {\n collectUserIp: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n }\n }\n};\n\nvar _$consoleBreadcrumbs_47 = {};\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */;\n/*\n * Leaves breadcrumbs when console log methods are called\n */\n\n\n_$consoleBreadcrumbs_47.load = function (client) {\n var isDev = /^(local-)?dev(elopment)?$/.test(client._config.releaseStage);\n if (isDev || !client._isBreadcrumbTypeEnabled('log')) return;\n _$map_16(CONSOLE_LOG_METHODS, function (method) {\n var original = console[method];\n\n console[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n client.leaveBreadcrumb('Console output', _$reduce_17(args, function (accum, arg, i) {\n // do the best/simplest stringification of each argument\n var stringified = '[Unknown value]'; // this may fail if the input is:\n // - an object whose [[Prototype]] is null (no toString)\n // - an object with a broken toString or @@toPrimitive implementation\n\n try {\n stringified = String(arg);\n } catch (e) {} // if it stringifies to [object Object] attempt to JSON stringify\n\n\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try {\n stringified = JSON.stringify(arg);\n } catch (e) {}\n }\n\n accum[\"[\" + i + \"]\"] = stringified;\n return accum;\n }, {\n severity: method.indexOf('group') === 0 ? 'log' : method\n }), 'log');\n original.apply(console, args);\n };\n\n console[method]._restore = function () {\n console[method] = original;\n };\n });\n};\n\nif (\"production\" !== 'production') {\n _$consoleBreadcrumbs_47.destroy = function () {\n return CONSOLE_LOG_METHODS.forEach(function (method) {\n if (typeof console[method]._restore === 'function') console[method]._restore();\n });\n };\n}\n\nvar CONSOLE_LOG_METHODS = _$filter_12(['log', 'debug', 'info', 'warn', 'error'], function (method) {\n return typeof console !== 'undefined' && typeof console[method] === 'function';\n});\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */;\n\nvar MAX_LINE_LENGTH = 200;\nvar MAX_SCRIPT_LENGTH = 500000;\n\nvar _$inlineScriptContent_48 = function (doc, win) {\n if (doc === void 0) {\n doc = document;\n }\n\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!client._config.trackInlineScripts) return;\n var originalLocation = win.location.href;\n var html = ''; // in IE8-10 the 'interactive' state can fire too soon (before scripts have finished executing), so in those\n // we wait for the 'complete' state before assuming that synchronous scripts are no longer executing\n\n var isOldIe = !!doc.attachEvent;\n var DOMContentLoaded = isOldIe ? doc.readyState === 'complete' : doc.readyState !== 'loading';\n\n var getHtml = function () {\n return doc.documentElement.outerHTML;\n }; // get whatever HTML exists at this point in time\n\n\n html = getHtml();\n var prev = doc.onreadystatechange; // then update it when the DOM content has loaded\n\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml();\n DOMContentLoaded = true;\n }\n\n try {\n prev.apply(this, arguments);\n } catch (e) {}\n };\n\n var _lastScript = null;\n\n var updateLastScript = function (script) {\n _lastScript = script;\n };\n\n var getCurrentScript = function () {\n var script = doc.currentScript || _lastScript;\n\n if (!script && !DOMContentLoaded) {\n var scripts = doc.scripts || doc.getElementsByTagName('script');\n script = scripts[scripts.length - 1];\n }\n\n return script;\n };\n\n var addSurroundingCode = function (lineNumber) {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml(); // simulate the raw html\n\n var htmlLines = [''].concat(html.split('\\n'));\n var zeroBasedLine = lineNumber - 1;\n var start = Math.max(zeroBasedLine - 3, 0);\n var end = Math.min(zeroBasedLine + 3, htmlLines.length);\n return _$reduce_17(htmlLines.slice(start, end), function (accum, line, i) {\n accum[start + 1 + i] = line.length <= MAX_LINE_LENGTH ? line : line.substr(0, MAX_LINE_LENGTH);\n return accum;\n }, {});\n };\n\n client.addOnError(function (event) {\n // remove any of our own frames that may be part the stack this\n // happens before the inline script check as it happens for all errors\n event.errors[0].stacktrace = _$filter_12(event.errors[0].stacktrace, function (f) {\n return !/__trace__$/.test(f.method);\n });\n var frame = event.errors[0].stacktrace[0]; // if frame.file exists and is not the original location of the page, this can't be an inline script\n\n if (frame && frame.file && frame.file.replace(/#.*$/, '') !== originalLocation.replace(/#.*$/, '')) return; // grab the last script known to have run\n\n var currentScript = getCurrentScript();\n\n if (currentScript) {\n var content = currentScript.innerHTML;\n event.addMetadata('script', 'content', content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH)); // only attempt to grab some surrounding code if we have a line number\n\n if (frame && frame.lineNumber) {\n frame.code = addSurroundingCode(frame.lineNumber);\n }\n }\n }, true); // Proxy all the timer functions whose callback is their 0th argument.\n // Keep a reference to the original setTimeout because we need it later\n\n var _map = _$map_16(['setTimeout', 'setInterval', 'setImmediate', 'requestAnimationFrame'], function (fn) {\n return __proxy(win, fn, function (original) {\n return __traceOriginalScript(original, function (args) {\n return {\n get: function () {\n return args[0];\n },\n replace: function (fn) {\n args[0] = fn;\n }\n };\n });\n });\n }),\n _setTimeout = _map[0]; // Proxy all the host objects whose prototypes have an addEventListener function\n\n\n _$map_16(['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'], function (o) {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return;\n\n __proxy(win[o].prototype, 'addEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor);\n });\n\n __proxy(win[o].prototype, 'removeEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor, true);\n });\n });\n\n function __traceOriginalScript(fn, callbackAccessor, alsoCallOriginal) {\n if (alsoCallOriginal === void 0) {\n alsoCallOriginal = false;\n }\n\n return function () {\n // this is required for removeEventListener to remove anything added with\n // addEventListener before the functions started being wrapped by Bugsnag\n var args = [].slice.call(arguments);\n\n try {\n var cba = callbackAccessor(args);\n var cb = cba.get();\n if (alsoCallOriginal) fn.apply(this, args);\n if (typeof cb !== 'function') return fn.apply(this, args);\n\n if (cb.__trace__) {\n cba.replace(cb.__trace__);\n } else {\n var script = getCurrentScript(); // this function mustn't be annonymous due to a bug in the stack\n // generation logic, meaning it gets tripped up\n // see: https://github.com/stacktracejs/stack-generator/issues/6\n\n cb.__trace__ = function __trace__() {\n // set the script that called this function\n updateLastScript(script); // immediately unset the currentScript synchronously below, however\n // if this cb throws an error the line after will not get run so schedule\n // an almost-immediate aysnc update too\n\n _setTimeout(function () {\n updateLastScript(null);\n }, 0);\n\n var ret = cb.apply(this, arguments);\n updateLastScript(null);\n return ret;\n };\n\n cb.__trace__.__trace__ = cb.__trace__;\n cba.replace(cb.__trace__);\n }\n } catch (e) {// swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n } // IE8 doesn't let you call .apply() on setTimeout/setInterval\n\n\n if (fn.apply) return fn.apply(this, args);\n\n switch (args.length) {\n case 1:\n return fn(args[0]);\n\n case 2:\n return fn(args[0], args[1]);\n\n default:\n return fn();\n }\n };\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n};\n\nfunction __proxy(host, name, replacer) {\n var original = host[name];\n if (!original) return original;\n var replacement = replacer(original);\n host[name] = replacement;\n return original;\n}\n\nfunction eventTargetCallbackAccessor(args) {\n var isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function';\n return {\n get: function () {\n return isEventHandlerObj ? args[1].handleEvent : args[1];\n },\n replace: function (fn) {\n if (isEventHandlerObj) {\n args[1].handleEvent = fn;\n } else {\n args[1] = fn;\n }\n }\n };\n}\n\n/*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\nvar _$interactionBreadcrumbs_49 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('user')) return;\n win.addEventListener('click', function (event) {\n var targetText, targetSelector;\n\n try {\n targetText = getNodeText(event.target);\n targetSelector = getNodeSelector(event.target, win);\n } catch (e) {\n targetText = '[hidden]';\n targetSelector = '[hidden]';\n\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z');\n }\n\n client.leaveBreadcrumb('UI click', {\n targetText: targetText,\n targetSelector: targetSelector\n }, 'user');\n }, true);\n }\n };\n}; // extract text content from a element\n\n\nvar getNodeText = function (el) {\n var text = el.textContent || el.innerText || '';\n if (!text && (el.type === 'submit' || el.type === 'button')) text = el.value;\n text = text.replace(/^\\s+|\\s+$/g, ''); // trim whitespace\n\n return truncate(text, 140);\n}; // Create a label from tagname, id and css class of the element\n\n\nfunction getNodeSelector(el, win) {\n var parts = [el.tagName];\n if (el.id) parts.push('#' + el.id);\n if (el.className && el.className.length) parts.push(\".\" + el.className.split(' ').join('.')); // Can't get much more advanced with the current browser\n\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('');\n\n try {\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('');\n } catch (e) {\n // Sometimes the query selector can be invalid just return it as-is\n return parts.join('');\n } // try to get a more specific selector if this one matches more than one element\n\n\n if (el.parentNode.childNodes.length > 1) {\n var index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1;\n parts.push(\":nth-child(\" + index + \")\");\n }\n\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join(''); // try prepending the parent node selector\n\n if (el.parentNode) return getNodeSelector(el.parentNode, win) + \" > \" + parts.join('');\n return parts.join('');\n}\n\nfunction truncate(value, length) {\n var ommision = '(...)';\n if (value && value.length <= length) return value;\n return value.slice(0, length - ommision.length) + ommision;\n}\n\nvar _$navigationBreadcrumbs_50 = {};\n/*\n* Leaves breadcrumbs when navigation methods are called or events are emitted\n*/\n_$navigationBreadcrumbs_50 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('navigation')) return; // returns a function that will drop a breadcrumb with a given name\n\n var drop = function (name) {\n return function () {\n return client.leaveBreadcrumb(name, {}, 'navigation');\n };\n }; // simple drops – just names, no meta\n\n\n win.addEventListener('pagehide', drop('Page hidden'), true);\n win.addEventListener('pageshow', drop('Page shown'), true);\n win.addEventListener('load', drop('Page loaded'), true);\n win.document.addEventListener('DOMContentLoaded', drop('DOMContentLoaded'), true); // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n\n win.addEventListener('load', function () {\n return win.addEventListener('popstate', drop('Navigated back'), true);\n }); // hashchange has some metadata that we care about\n\n win.addEventListener('hashchange', function (event) {\n var metadata = event.oldURL ? {\n from: relativeLocation(event.oldURL, win),\n to: relativeLocation(event.newURL, win),\n state: getCurrentState(win)\n } : {\n to: relativeLocation(win.location.href, win)\n };\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation');\n }, true); // the only way to know about replaceState/pushState is to wrap them… >_<\n\n if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win);\n if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win);\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n }\n\n return plugin;\n};\n\nif (\"production\" !== 'production') {\n _$navigationBreadcrumbs_50.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n} // takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns\n// just the path and hash parts, e.g. /pages/01.html?yes=no#section-2\n\n\nvar relativeLocation = function (url, win) {\n var a = win.document.createElement('A');\n a.href = url;\n return \"\" + a.pathname + a.search + a.hash;\n};\n\nvar stateChangeToMetadata = function (win, state, title, url) {\n var currentPath = relativeLocation(win.location.href, win);\n return {\n title: title,\n state: state,\n prevState: getCurrentState(win),\n to: url || currentPath,\n from: currentPath\n };\n};\n\nvar wrapHistoryFn = function (client, target, fn, win) {\n var orig = target[fn];\n\n target[fn] = function (state, title, url) {\n client.leaveBreadcrumb(\"History \" + fn, stateChangeToMetadata(win, state, title, url), 'navigation'); // if throttle plugin is in use, reset the event sent count\n\n if (typeof client.resetEventCount === 'function') client.resetEventCount(); // if the client is operating in auto session-mode, a new route should trigger a new session\n\n if (client._config.autoTrackSessions) client.startSession(); // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect\n // to '/undefined'. therefore we only pass the url if it's not undefined.\n\n orig.apply(target, [state, title].concat(url !== undefined ? url : []));\n };\n\n if (\"production\" !== 'production') {\n target[fn]._restore = function () {\n target[fn] = orig;\n };\n }\n};\n\nvar getCurrentState = function (win) {\n try {\n return win.history.state;\n } catch (e) {}\n};\n\nvar BREADCRUMB_TYPE = 'request';\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n/*\n * Leaves breadcrumbs when network requests occur\n */\n\n\nvar _$networkBreadcrumbs_51 = function (_ignoredUrls, win) {\n if (_ignoredUrls === void 0) {\n _ignoredUrls = [];\n }\n\n if (win === void 0) {\n win = window;\n }\n\n var restoreFunctions = [];\n var plugin = {\n load: function (client) {\n if (!client._isBreadcrumbTypeEnabled('request')) return;\n var ignoredUrls = [client._config.endpoints.notify, client._config.endpoints.sessions].concat(_ignoredUrls);\n monkeyPatchXMLHttpRequest();\n monkeyPatchFetch(); // XMLHttpRequest monkey patch\n\n function monkeyPatchXMLHttpRequest() {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return;\n var nativeOpen = win.XMLHttpRequest.prototype.open; // override native open()\n\n win.XMLHttpRequest.prototype.open = function open(method, url) {\n var _this = this;\n\n var requestSetupKey = false;\n\n var error = function () {\n return handleXHRError(method, url);\n };\n\n var load = function () {\n return handleXHRLoad(method, url, _this.status);\n }; // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n\n\n if (requestSetupKey) {\n this.removeEventListener('load', load);\n this.removeEventListener('error', error);\n } // attach load event listener\n\n\n this.addEventListener('load', load); // attach error event listener\n\n this.addEventListener('error', error);\n requestSetupKey = true;\n nativeOpen.apply(this, arguments);\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.XMLHttpRequest.prototype.open = nativeOpen;\n });\n }\n }\n\n function handleXHRLoad(method, url, status) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n\n return;\n } // an XMLHttpRequest's URL can be an object as long as its 'toString'\n // returns a URL, e.g. a HTMLAnchorElement\n\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n }\n\n var metadata = {\n status: status,\n request: method + \" \" + url\n };\n\n if (status >= 400) {\n // contacted server but got an error response\n client.leaveBreadcrumb('XMLHttpRequest failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('XMLHttpRequest succeeded', metadata, BREADCRUMB_TYPE);\n }\n }\n\n function handleXHRError(method, url) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n\n return;\n }\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n } // failed to contact server\n\n\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n } // window.fetch monkey patch\n\n\n function monkeyPatchFetch() {\n // only patch it if it exists and if it is not a polyfill (patching a polyfilled\n // fetch() results in duplicate breadcrumbs for the same request because the\n // implementation uses XMLHttpRequest which is also patched)\n if (!('fetch' in win) || win.fetch.polyfill) return;\n var oldFetch = win.fetch;\n\n win.fetch = function fetch() {\n var _arguments = arguments;\n var urlOrRequest = arguments[0];\n var options = arguments[1];\n var method;\n var url = null;\n\n if (urlOrRequest && typeof urlOrRequest === 'object') {\n url = urlOrRequest.url;\n\n if (options && 'method' in options) {\n method = options.method;\n } else if (urlOrRequest && 'method' in urlOrRequest) {\n method = urlOrRequest.method;\n }\n } else {\n url = urlOrRequest;\n\n if (options && 'method' in options) {\n method = options.method;\n }\n }\n\n if (method === undefined) {\n method = 'GET';\n }\n\n return new Promise(function (resolve, reject) {\n // pass through to native fetch\n oldFetch.apply(void 0, _arguments).then(function (response) {\n handleFetchSuccess(response, method, url);\n resolve(response);\n })[\"catch\"](function (error) {\n handleFetchError(method, url);\n reject(error);\n });\n });\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.fetch = oldFetch;\n });\n }\n }\n\n var handleFetchSuccess = function (response, method, url) {\n var metadata = {\n status: response.status,\n request: method + \" \" + url\n };\n\n if (response.status >= 400) {\n // when the request comes back with a 4xx or 5xx status it does not reject the fetch promise,\n client.leaveBreadcrumb('fetch() failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('fetch() succeeded', metadata, BREADCRUMB_TYPE);\n }\n };\n\n var handleFetchError = function (method, url) {\n client.leaveBreadcrumb('fetch() error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n };\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function () {\n restoreFunctions.forEach(function (fn) {\n return fn();\n });\n restoreFunctions = [];\n };\n }\n\n return plugin;\n};\n\n/* removed: var _$intRange_24 = require('@bugsnag/core/lib/validators/int-range'); */;\n/*\n * Throttles and dedupes events\n */\n\n\nvar _$throttle_52 = {\n load: function (client) {\n // track sent events for each init of the plugin\n var n = 0; // add onError hook\n\n client.addOnError(function (event) {\n // have max events been sent already?\n if (n >= client._config.maxEvents) {\n client._logger.warn(\"Cancelling event send due to maxEvents per session limit of \" + client._config.maxEvents + \" being reached\");\n\n return false;\n }\n\n n++;\n });\n\n client.resetEventCount = function () {\n n = 0;\n };\n },\n configSchema: {\n maxEvents: {\n defaultValue: function () {\n return 10;\n },\n message: 'should be a positive integer ≤100',\n validate: function (val) {\n return _$intRange_24(1, 100)(val);\n }\n }\n }\n};\n\nvar _$stripQueryString_53 = {};\n/*\n * Remove query strings (and fragments) from stacktraces\n */\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n_$stripQueryString_53 = {\n load: function (client) {\n client.addOnError(function (event) {\n var allFrames = _$reduce_17(event.errors, function (accum, er) {\n return accum.concat(er.stacktrace);\n }, []);\n _$map_16(allFrames, function (frame) {\n frame.file = strip(frame.file);\n });\n });\n }\n};\n\nvar strip = _$stripQueryString_53._strip = function (str) {\n return typeof str === 'string' ? str.replace(/\\?.*$/, '').replace(/#.*$/, '') : str;\n};\n\n/*\n * Automatically notifies Bugsnag when window.onerror is called\n */\nvar _$onerror_54 = function (win, component) {\n if (win === void 0) {\n win = window;\n }\n\n if (component === void 0) {\n component = 'window onerror';\n }\n\n return {\n load: function (client) {\n if (!client._config.autoDetectErrors) return;\n if (!client._config.enabledErrorTypes.unhandledExceptions) return;\n\n function onerror(messageOrEvent, url, lineNo, charNo, error) {\n // Ignore errors with no info due to CORS settings\n if (lineNo === 0 && /Script error\\.?/.test(messageOrEvent)) {\n client._logger.warn('Ignoring cross-domain or eval script error. See docs: https://tinyurl.com/yy3rn63z');\n } else {\n // any error sent to window.onerror is unhandled and has severity=error\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event; // window.onerror can be called in a number of ways. This big if-else is how we\n // figure out which arguments were supplied, and what kind of values it received.\n\n if (error) {\n // if the last parameter (error) was supplied, this is a modern browser's\n // way of saying \"this value was thrown and not caught\"\n event = client.Event.create(error, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n } else if ( // This complex case detects \"error\" events that are typically synthesised\n // by jquery's trigger method (although can be created in other ways). In\n // order to detect this:\n // - the first argument (message) must exist and be an object (most likely it's a jQuery event)\n // - the second argument (url) must either not exist or be something other than a string (if it\n // exists and is not a string, it'll be the extraParameters argument from jQuery's trigger()\n // function)\n // - the third, fourth and fifth arguments must not exist (lineNo, charNo and error)\n typeof messageOrEvent === 'object' && messageOrEvent !== null && (!url || typeof url !== 'string') && !lineNo && !charNo && !error) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n var name = messageOrEvent.type ? \"Event: \" + messageOrEvent.type : 'Error'; // attempt to find a message from one of the conventional properties, but\n // default to empty string (the event will fill it with a placeholder)\n\n var message = messageOrEvent.message || messageOrEvent.detail || '';\n event = client.Event.create({\n name: name,\n message: message\n }, true, handledState, component, 1); // provide the original thing onerror received – not our error-like object we passed to _notify\n\n event.originalError = messageOrEvent; // include the raw input as metadata – it might contain more info than we extracted\n\n event.addMetadata(component, {\n event: messageOrEvent,\n extraParameters: url\n });\n } else {\n // Lastly, if there was no \"error\" parameter this event was probably from an old\n // browser that doesn't support that. Instead we need to generate a stacktrace.\n event = client.Event.create(messageOrEvent, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n }\n\n client._notify(event);\n }\n\n if (typeof prevOnError === 'function') prevOnError.apply(this, arguments);\n }\n\n var prevOnError = win.onerror;\n win.onerror = onerror;\n }\n };\n}; // Sometimes the stacktrace has less information than was passed to window.onerror.\n// This function will augment the first stackframe with any useful info that was\n// received as arguments to the onerror callback.\n\n\nvar decorateStack = function (stack, url, lineNo, charNo) {\n if (!stack[0]) stack.push({});\n var culprit = stack[0];\n if (!culprit.file && typeof url === 'string') culprit.file = url;\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo;\n\n if (!culprit.columnNumber) {\n if (isActualNumber(charNo)) {\n culprit.columnNumber = charNo;\n } else if (window.event && isActualNumber(window.event.errorCharacter)) {\n culprit.columnNumber = window.event.errorCharacter;\n }\n }\n};\n\nvar isActualNumber = function (n) {\n return typeof n === 'number' && String.call(n) !== 'NaN';\n};\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$iserror_20 = require('@bugsnag/core/lib/iserror'); */;\n\nvar _listener;\n/*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\n\n\nvar _$unhandledRejection_55 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function (client) {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return;\n\n var listener = function (evt) {\n var error = evt.reason;\n var isBluebird = false; // accessing properties on evt.detail can throw errors (see #394)\n\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason;\n isBluebird = true;\n }\n } catch (e) {}\n\n var event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledPromiseRejection'\n }\n }, 'unhandledrejection handler', 1, client._logger);\n\n if (isBluebird) {\n _$map_16(event.errors[0].stacktrace, fixBluebirdStacktrace(error));\n }\n\n client._notify(event, function (event) {\n if (_$iserror_20(event.originalError) && !event.originalError.stack) {\n var _event$addMetadata;\n\n event.addMetadata('unhandledRejection handler', (_event$addMetadata = {}, _event$addMetadata[Object.prototype.toString.call(event.originalError)] = {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }, _event$addMetadata));\n }\n });\n };\n\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener);\n } else {\n win.onunhandledrejection = function (reason, promise) {\n listener({\n detail: {\n reason: reason,\n promise: promise\n }\n });\n };\n }\n\n _listener = listener;\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener);\n } else {\n win.onunhandledrejection = null;\n }\n }\n\n _listener = null;\n };\n }\n\n return plugin;\n}; // The stack parser on bluebird stacks in FF get a suprious first frame:\n//\n// Error: derp\n// b@http://localhost:5000/bluebird.html:22:24\n// a@http://localhost:5000/bluebird.html:18:9\n// @http://localhost:5000/bluebird.html:14:9\n//\n// results in\n// […]\n// 0: Object { file: \"Error: derp\", method: undefined, lineNumber: undefined, … }\n// 1: Object { file: \"http://localhost:5000/bluebird.html\", method: \"b\", lineNumber: 22, … }\n// 2: Object { file: \"http://localhost:5000/bluebird.html\", method: \"a\", lineNumber: 18, … }\n// 3: Object { file: \"http://localhost:5000/bluebird.html\", lineNumber: 14, columnNumber: 9, … }\n//\n// so the following reduce/accumulator function removes such frames\n//\n// Bluebird pads method names with spaces so trim that too…\n// https://github.com/petkaantonov/bluebird/blob/b7f21399816d02f979fe434585334ce901dcaf44/src/debuggability.js#L568-L571\n\n\nvar fixBluebirdStacktrace = function (error) {\n return function (frame) {\n if (frame.file === error.toString()) return;\n\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '');\n }\n };\n};\n\nvar _$notifier_2 = {};\nvar name = 'Bugsnag JavaScript';\nvar version = '7.19.0';\nvar url = 'https://github.com/bugsnag/bugsnag-js';\n\n/* removed: var _$Client_4 = require('@bugsnag/core/client'); */;\n\n/* removed: var _$Event_6 = require('@bugsnag/core/event'); */;\n\n/* removed: var _$Session_35 = require('@bugsnag/core/session'); */;\n\n/* removed: var _$Breadcrumb_3 = require('@bugsnag/core/breadcrumb'); */;\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$keys_15 = require('@bugsnag/core/lib/es-utils/keys'); */;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */; // extend the base config schema with some browser-specific options\n\n\nvar __schema_2 = _$assign_11({}, _$config_5.schema, _$config_1);\n\n/* removed: var _$onerror_54 = require('@bugsnag/plugin-window-onerror'); */;\n\n/* removed: var _$unhandledRejection_55 = require('@bugsnag/plugin-window-unhandled-rejection'); */;\n\n/* removed: var _$app_38 = require('@bugsnag/plugin-app-duration'); */;\n\n/* removed: var _$device_40 = require('@bugsnag/plugin-browser-device'); */;\n\n/* removed: var _$context_39 = require('@bugsnag/plugin-browser-context'); */;\n\n/* removed: var _$request_44 = require('@bugsnag/plugin-browser-request'); */;\n\n/* removed: var _$throttle_52 = require('@bugsnag/plugin-simple-throttle'); */;\n\n/* removed: var _$consoleBreadcrumbs_47 = require('@bugsnag/plugin-console-breadcrumbs'); */;\n\n/* removed: var _$networkBreadcrumbs_51 = require('@bugsnag/plugin-network-breadcrumbs'); */;\n\n/* removed: var _$navigationBreadcrumbs_50 = require('@bugsnag/plugin-navigation-breadcrumbs'); */;\n\n/* removed: var _$interactionBreadcrumbs_49 = require('@bugsnag/plugin-interaction-breadcrumbs'); */;\n\n/* removed: var _$inlineScriptContent_48 = require('@bugsnag/plugin-inline-script-content'); */;\n\n/* removed: var _$session_45 = require('@bugsnag/plugin-browser-session'); */;\n\n/* removed: var _$clientIp_46 = require('@bugsnag/plugin-client-ip'); */;\n\n/* removed: var _$stripQueryString_53 = require('@bugsnag/plugin-strip-query-string'); */; // delivery mechanisms\n\n\n/* removed: var _$delivery_36 = require('@bugsnag/delivery-x-domain-request'); */;\n\n/* removed: var _$delivery_37 = require('@bugsnag/delivery-xml-http-request'); */;\n\nvar Bugsnag = {\n _client: null,\n createClient: function (opts) {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = {\n apiKey: opts\n };\n if (!opts) opts = {};\n var internalPlugins = [// add browser-specific plugins\n _$app_38, _$device_40(), _$context_39(), _$request_44(), _$throttle_52, _$session_45, _$clientIp_46, _$stripQueryString_53, _$onerror_54(), _$unhandledRejection_55(), _$navigationBreadcrumbs_50(), _$interactionBreadcrumbs_49(), _$networkBreadcrumbs_51(), _$consoleBreadcrumbs_47, // this one added last to avoid wrapping functionality before bugsnag uses it\n _$inlineScriptContent_48()]; // configure a client with user supplied options\n\n var bugsnag = new _$Client_4(opts, __schema_2, internalPlugins, {\n name: name,\n version: version,\n url: url\n }); // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n\n bugsnag._setDelivery(window.XDomainRequest ? _$delivery_36 : _$delivery_37);\n\n bugsnag._logger.debug('Loaded!');\n\n bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state');\n return bugsnag._config.autoTrackSessions ? bugsnag.startSession() : bugsnag;\n },\n start: function (opts) {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.');\n\n return Bugsnag._client;\n }\n\n Bugsnag._client = Bugsnag.createClient(opts);\n return Bugsnag._client;\n },\n isStarted: function () {\n return Bugsnag._client != null;\n }\n};\n_$map_16(['resetEventCount'].concat(_$keys_15(_$Client_4.prototype)), function (m) {\n if (/^_/.test(m)) return;\n\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(\"Bugsnag.\" + m + \"() was called before Bugsnag.start()\");\n Bugsnag._client._depth += 1;\n\n var ret = Bugsnag._client[m].apply(Bugsnag._client, arguments);\n\n Bugsnag._client._depth -= 1;\n return ret;\n };\n});\n_$notifier_2 = Bugsnag;\n_$notifier_2.Client = _$Client_4;\n_$notifier_2.Event = _$Event_6;\n_$notifier_2.Session = _$Session_35;\n_$notifier_2.Breadcrumb = _$Breadcrumb_3; // Export a \"default\" property for compatibility with ESM imports\n\n_$notifier_2[\"default\"] = Bugsnag;\n\nreturn _$notifier_2;\n\n});\n//# sourceMappingURL=bugsnag.js.map\n","module.exports = require('@bugsnag/browser')\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.BugsnagPluginVue = f()}})(function(){var define,module,exports;\nvar _this = this,\n _ErrorTypeStrings;\n\nvar _$vue_2 = function (app, client) {\n var prev = app.config.errorHandler;\n\n var handler = function (err, vm, info) {\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event = client.Event.create(err, true, handledState, 'vue error handler', 1);\n event.addMetadata('vue', {\n errorInfo: ErrorTypeStrings[info] || info,\n component: vm ? formatComponentName(vm, true) : undefined,\n props: vm && vm.$options ? vm.$options.propsData : undefined\n });\n\n client._notify(event);\n\n if (typeof console !== 'undefined' && typeof console.error === 'function') console.error(err);\n if (typeof prev === 'function') prev.call(_this, err, vm, info);\n };\n\n app.config.errorHandler = handler;\n};\n\nfunction formatComponentName(vm) {\n if (vm.$parent === null) return 'App';\n return vm.$options && vm.$options.name ? vm.$options.name : 'Anonymous';\n} // We copy in the following data structures from Vue's source so we can map the \"info\" parameter in the errorhandler\n// callback (which is supplied as either a string or int) back to something meaningful\n// https://github.com/vuejs/vue-next/blob/d5cce47789db8f37b9f5f8ea6602ea63e3a04b07/packages/runtime-core/src/component.ts#L153-L167\n\n\nvar LifecycleHooks = {\n BEFORE_CREATE: 'bc',\n CREATED: 'c',\n BEFORE_MOUNT: 'bm',\n MOUNTED: 'm',\n BEFORE_UPDATE: 'bu',\n UPDATED: 'u',\n BEFORE_UNMOUNT: 'bum',\n UNMOUNTED: 'um',\n DEACTIVATED: 'da',\n ACTIVATED: 'a',\n RENDER_TRIGGERED: 'rtg',\n RENDER_TRACKED: 'rtc',\n ERROR_CAPTURED: 'ec'\n}; // https://github.com/vuejs/vue-next/blob/d5cce47789db8f37b9f5f8ea6602ea63e3a04b07/packages/runtime-core/src/errorHandling.ts#L6-L24\n\nvar ErrorCodes = {\n SETUP_FUNCTION: 0,\n RENDER_FUNCTION: 1,\n WATCH_GETTER: 2,\n WATCH_CALLBACK: 3,\n WATCH_CLEANUP: 4,\n NATIVE_EVENT_HANDLER: 5,\n COMPONENT_EVENT_HANDLER: 6,\n VNODE_HOOK: 7,\n DIRECTIVE_HOOK: 8,\n TRANSITION_HOOK: 9,\n APP_ERROR_HANDLER: 10,\n APP_WARN_HANDLER: 11,\n FUNCTION_REF: 12,\n ASYNC_COMPONENT_LOADER: 13,\n SCHEDULER: 14\n}; // https://github.com/vuejs/vue-next/blob/d5cce47789db8f37b9f5f8ea6602ea63e3a04b07/packages/runtime-core/src/errorHandling.ts#L26-L57\n\nvar ErrorTypeStrings = (_ErrorTypeStrings = {}, _ErrorTypeStrings[LifecycleHooks.BEFORE_CREATE] = 'beforeCreate hook', _ErrorTypeStrings[LifecycleHooks.CREATED] = 'created hook', _ErrorTypeStrings[LifecycleHooks.BEFORE_MOUNT] = 'beforeMount hook', _ErrorTypeStrings[LifecycleHooks.MOUNTED] = 'mounted hook', _ErrorTypeStrings[LifecycleHooks.BEFORE_UPDATE] = 'beforeUpdate hook', _ErrorTypeStrings[LifecycleHooks.UPDATED] = 'updated', _ErrorTypeStrings[LifecycleHooks.BEFORE_UNMOUNT] = 'beforeUnmount hook', _ErrorTypeStrings[LifecycleHooks.UNMOUNTED] = 'unmounted hook', _ErrorTypeStrings[LifecycleHooks.ACTIVATED] = 'activated hook', _ErrorTypeStrings[LifecycleHooks.DEACTIVATED] = 'deactivated hook', _ErrorTypeStrings[LifecycleHooks.ERROR_CAPTURED] = 'errorCaptured hook', _ErrorTypeStrings[LifecycleHooks.RENDER_TRACKED] = 'renderTracked hook', _ErrorTypeStrings[LifecycleHooks.RENDER_TRIGGERED] = 'renderTriggered hook', _ErrorTypeStrings[ErrorCodes.SETUP_FUNCTION] = 'setup function', _ErrorTypeStrings[ErrorCodes.RENDER_FUNCTION] = 'render function', _ErrorTypeStrings[ErrorCodes.WATCH_GETTER] = 'watcher getter', _ErrorTypeStrings[ErrorCodes.WATCH_CALLBACK] = 'watcher callback', _ErrorTypeStrings[ErrorCodes.WATCH_CLEANUP] = 'watcher cleanup function', _ErrorTypeStrings[ErrorCodes.NATIVE_EVENT_HANDLER] = 'native event handler', _ErrorTypeStrings[ErrorCodes.COMPONENT_EVENT_HANDLER] = 'component event handler', _ErrorTypeStrings[ErrorCodes.VNODE_HOOK] = 'vnode hook', _ErrorTypeStrings[ErrorCodes.DIRECTIVE_HOOK] = 'directive hook', _ErrorTypeStrings[ErrorCodes.TRANSITION_HOOK] = 'transition hook', _ErrorTypeStrings[ErrorCodes.APP_ERROR_HANDLER] = 'app errorHandler', _ErrorTypeStrings[ErrorCodes.APP_WARN_HANDLER] = 'app warnHandler', _ErrorTypeStrings[ErrorCodes.FUNCTION_REF] = 'ref function', _ErrorTypeStrings[ErrorCodes.ASYNC_COMPONENT_LOADER] = 'async component loader', _ErrorTypeStrings[ErrorCodes.SCHEDULER] = 'scheduler flush. This is likely a Vue internals bug. ' + 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/vue-next', _ErrorTypeStrings);\n\nvar _$vue2_3 = {};\nvar ___this_3 = this;\n\n_$vue2_3 = function (Vue, client) {\n var prev = Vue.config.errorHandler;\n\n var handler = function (err, vm, info) {\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event = client.Event.create(err, true, handledState, 'vue error handler', 1);\n event.addMetadata('vue', {\n errorInfo: info,\n component: vm ? __formatComponentName_3(vm, true) : undefined,\n props: vm ? vm.$options.propsData : undefined\n });\n\n client._notify(event);\n\n if (typeof console !== 'undefined' && typeof console.error === 'function') console.error(err);\n if (typeof prev === 'function') prev.call(___this_3, err, vm, info);\n };\n\n Vue.config.errorHandler = handler;\n}; // taken and reworked from Vue.js source\n\n\nvar __formatComponentName_3 = function (vm, includeFile) {\n if (vm.$root === vm) return '';\n var options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (name ? '<' + classify(name) + '>' : '') + (file && includeFile !== false ? ' at ' + file : '');\n}; // taken and reworked from Vue.js source\n\n\nvar classify = _$vue2_3.classify = function (str) {\n return str.replace(/(?:^|[-_])(\\w)/g, function (c) {\n return c.toUpperCase();\n }).replace(/[-_]/g, '');\n};\n\nvar _$src_1 = {};\n/* removed: var _$vue2_3 = require('./vue2'); */;\n\n/* removed: var _$vue_2 = require('./vue'); */;\n\n_$src_1 = /*#__PURE__*/function () {\n function BugsnagPluginVue() {\n // Fetch Vue from the window object, if it exists\n var globalVue = typeof window !== 'undefined' && window.Vue;\n this.name = 'vue';\n this.lazy = arguments.length === 0 && !globalVue;\n\n if (!this.lazy) {\n this.Vue = (arguments.length <= 0 ? undefined : arguments[0]) || globalVue;\n if (!this.Vue) throw new Error('@bugsnag/plugin-vue reference to `Vue` was undefined');\n }\n }\n\n var _proto = BugsnagPluginVue.prototype;\n\n _proto.load = function load(client) {\n if (this.Vue) {\n _$vue2_3(this.Vue, client);\n return {\n installVueErrorHandler: function () {\n return client._logger.warn('installVueErrorHandler() was called unnecessarily');\n }\n };\n }\n\n return {\n install: function (app) {\n if (!app) client._logger.error(new Error('@bugsnag/plugin-vue reference to Vue `app` was undefined'));\n _$vue_2(app, client);\n },\n installVueErrorHandler: function (Vue) {\n if (!Vue) client._logger.error(new Error('@bugsnag/plugin-vue reference to `Vue` was undefined'));\n _$vue2_3(Vue, client);\n }\n };\n };\n\n return BugsnagPluginVue;\n}(); // add a default export for ESM modules without interop\n\n\n_$src_1[\"default\"] = _$src_1;\n\nreturn _$src_1;\n\n});\n//# sourceMappingURL=bugsnag-vue.js.map\n"],"names":["f","module","_$breadcrumbTypes_8","_$reduce_17","arr","fn","accum","val","i","len","_$filter_12","item","_$includes_13","x","_$isArray_14","obj","_hasDontEnumBug","_dontEnums","_$keys_15","result","prop","_$intRange_24","min","max","value","_$listOfFunctions_25","_$stringWithLength_26","_$config_5","defaultErrorTypes","providedKeys","defaultKeys","k","maybeType","key","method","s","p","feature","_$assign_11","target","source","_$map_16","_extends","schema","_$config_1","getPrefixedConsole","logger","consoleLog","consoleMethod","Breadcrumb","message","metadata","type","timestamp","_proto","_$Breadcrumb_3","_$stackframe_34","root","factory","_isNumber","n","_capitalize","str","_getter","booleanProps","numericProps","stringProps","arrayProps","props","StackFrame","v","functionName","args","fileName","lineNumber","columnNumber","j","_$errorStackParser_31","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","error","urlLike","regExp","parts","filtered","line","sanitizedLine","location","tokens","locationParts","functionNameRegex","matches","e","lineRE","lines","match","functionCall","argsRaw","_$errorStackParser_10","_$safeJsonStringify_30","data","replacer","space","opts","redactedKeys","redactedPaths","prepareObjForSerialization","MAX_DEPTH","MAX_EDGES","MIN_PRESERVED_DEPTH","REPLACEMENT_NODE","isError","o","throwsMessage","err","find","haystack","needle","isDescendent","paths","path","shouldRedact","patterns","__isArray_30","safelyGetProp","seen","edges","visit","edgesExceeded","fResult","er","eResult","aResult","add","existingFeatures","existingFeatureKeys","name","variant","existingIndex","merge","newFeatures","toEventApi","featureFlags","_ref","flag","clear","features","featuresIndex","_$featureFlagDelegate_18","_$hasStack_19","_$isError_32","__isError_32","_$iserror_20","__add_22","state","section","keyOrObj","maybeVal","_updates","updates","__clear_22","get","_$metadataDelegate_22","_$stackGenerator_33","stack","maxStackSize","curr","Event","errorClass","errorMessage","stacktrace","handledState","originalError","defaultHandledState","createBugsnagError","id","email","formatStackframe","frame","normaliseFunctionName","ensureString","getCauseStack","errorFramesToSkip","backtraceFramesToSkip","maybeError","tolerateNonErrors","component","_normaliseError","normaliseError","internalFrames","event","makeSerialisable","_event$errors","causes","normalisedCauses","cause","_normaliseError2","createAndLogInputError","reason","verb","hasNecessaryFields","_$Event_6","_$asyncEvery_7","cb","index","next","_$callbackRunner_9","callbacks","onCallbackError","runMaybeAsyncCallback","ret","_$syncCallbackRunner_23","callbackArg","callbackType","ignore","cbs","_$pad_29","num","size","env","globalCount","mimeTypesLength","clientId","_$fingerprint_28","c","blockSize","base","discreteValues","randomBlock","safeCounter","cuid","letter","counter","print","random","_$cuid_27","Session","_$Session_35","__add_4","__clear_4","__merge_4","noop","Client","configuration","internalPlugins","notifier","_this","pl","self","notify","plugin","_reduce","defaultValue","valid","errors","config","generateConfigErrorMessage","d","session","front","crumb","types","onError","postReportCallback","_this2","originalSeverity","shouldSend","rawInput","stringify","_$Client_4","_$jsonPayload_21","EVENT_REDACTION_PATHS","payload","_$delivery_36","client","win","url","getApiUrl","body","req","endpoint","version","isoDate","matchPageProtocol","pageProtocol","_$delivery_37","status","appStart","reset","_$app_38","now","_$context_39","_$pad_43","__env_42","__globalCount_42","__prop_42","__mimeTypesLength_42","__clientId_42","_$fingerprint_42","__c_41","__blockSize_41","__base_41","__discreteValues_41","__randomBlock_41","__safeCounter_41","__cuid_41","_$cuid_41","BUGSNAG_ANONYMOUS_ID_KEY","getDeviceId","storage","_$device_40","nav","device","setDefaultUserId","eventOrSession","user","_$request_44","_$session_45","sessionDelegate","sessionClient","_$clientIp_46","_$consoleBreadcrumbs_47","isDev","CONSOLE_LOG_METHODS","original","_len","_key","arg","stringified","MAX_LINE_LENGTH","MAX_SCRIPT_LENGTH","_$inlineScriptContent_48","doc","originalLocation","html","isOldIe","DOMContentLoaded","getHtml","prev","_lastScript","updateLastScript","script","getCurrentScript","scripts","addSurroundingCode","htmlLines","zeroBasedLine","start","end","currentScript","content","_map","__proxy","__traceOriginalScript","_setTimeout","eventTargetCallbackAccessor","callbackAccessor","alsoCallOriginal","cba","host","replacement","isEventHandlerObj","_$interactionBreadcrumbs_49","targetText","targetSelector","getNodeText","getNodeSelector","el","text","truncate","length","ommision","_$navigationBreadcrumbs_50","drop","relativeLocation","getCurrentState","wrapHistoryFn","a","stateChangeToMetadata","title","currentPath","orig","BREADCRUMB_TYPE","_$networkBreadcrumbs_51","_ignoredUrls","ignoredUrls","monkeyPatchXMLHttpRequest","monkeyPatchFetch","nativeOpen","requestSetupKey","handleXHRError","load","handleXHRLoad","oldFetch","_arguments","urlOrRequest","options","resolve","reject","response","handleFetchSuccess","handleFetchError","_$throttle_52","_$stripQueryString_53","allFrames","strip","_$onerror_54","onerror","messageOrEvent","lineNo","charNo","decorateStack","prevOnError","culprit","isActualNumber","_$unhandledRejection_55","listener","evt","isBluebird","fixBluebirdStacktrace","_event$addMetadata","promise","_$notifier_2","__schema_2","Bugsnag","bugsnag","m","require$$0","_ErrorTypeStrings","_$vue_2","app","handler","vm","info","ErrorTypeStrings","formatComponentName","LifecycleHooks","ErrorCodes","_$vue2_3","___this_3","Vue","__formatComponentName_3","includeFile","file","classify","_$src_1","BugsnagPluginVue","globalVue"],"mappings":"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"}