{"version":3,"sources":["../../node_modules/browser-pack-flat/_prelude","../core/lib/breadcrumb-types.js","../core/lib/es-utils/reduce.js","../core/lib/es-utils/filter.js","../core/lib/es-utils/includes.js","../core/lib/es-utils/is-array.js","../core/lib/es-utils/keys.js","../core/lib/validators/int-range.js","../core/lib/validators/list-of-functions.js","../core/lib/validators/string-with-length.js","../core/config.js","../core/lib/es-utils/assign.js","../core/lib/es-utils/map.js","src/config.js","../core/breadcrumb.js","../core/node_modules/stackframe/stackframe.js","../core/node_modules/error-stack-parser/error-stack-parser.js","../core/lib/error-stack-parser.js","../core/lib/has-stack.js","../core/lib/iserror.js","../core/node_modules/iserror/index.js","../core/lib/metadata-delegate.js","../core/node_modules/stack-generator/stack-generator.js","../core/event.js","../core/lib/js-runtime.js","../core/lib/sync-callback-runner.js","../core/node_modules/@bugsnag/cuid/lib/pad.js","../core/node_modules/@bugsnag/cuid/lib/fingerprint.browser.js","../core/node_modules/@bugsnag/cuid/index.js","../core/session.js","../core/client.js","../core/lib/callback-runner.js","../core/lib/async-every.js","../core/node_modules/@bugsnag/safe-json-stringify/index.js","../core/lib/json-payload.js","../delivery-x-domain-request/delivery.js","../delivery-xml-http-request/delivery.js","../plugin-browser-session/session.js","../plugin-client-ip/client-ip.js","../plugin-console-breadcrumbs/console-breadcrumbs.js","../plugin-inline-script-content/inline-script-content.js","../plugin-interaction-breadcrumbs/interaction-breadcrumbs.js","../plugin-navigation-breadcrumbs/navigation-breadcrumbs.js","../plugin-network-breadcrumbs/network-breadcrumbs.js","../plugin-simple-throttle/throttle.js","../plugin-strip-query-string/strip-query-string.js","../plugin-window-onerror/onerror.js","../plugin-window-unhandled-rejection/unhandled-rejection.js","src/notifier.js","../plugin-browser-request/request.js","../plugin-browser-context/context.js","../plugin-browser-device/device.js","../../node_modules/browser-pack-flat/_postlude"],"names":["f","exports","module","define","amd","window","global","self","this","Bugsnag","_$breadcrumbTypes_8","_$reduce_17","arr","fn","accum","val","i","len","length","_$filter_12","item","concat","_$includes_13","x","_$isArray_14","obj","Object","prototype","toString","call","_hasDontEnumBug","propertyIsEnumerable","_dontEnums","_$keys_15","prop","result","hasOwnProperty","push","_$intRange_24","min","max","Infinity","value","parseInt","_$listOfFunctions_25","_$stringWithLength_26","_$config_5","schema","apiKey","defaultValue","message","validate","appVersion","undefined","appType","autoDetectErrors","enabledErrorTypes","unhandledExceptions","unhandledRejections","allowPartialObject","providedKeys","defaultKeys","k","onError","onSession","onBreadcrumb","endpoints","notify","sessions","autoTrackSessions","enabledReleaseStages","releaseStage","maxBreadcrumbs","enabledBreadcrumbTypes","join","maybeType","context","user","key","metadata","logger","method","redactedKeys","s","test","plugins","p","load","_$assign_11","target","arguments","source","_$map_16","_$config_1","location","host","console","debug","getPrefixedConsole","consoleLog","log","consoleMethod","bind","_$Breadcrumb_3","Breadcrumb","type","timestamp","Date","toJSON","name","metaData","root","factory","_$stackframe_34","StackFrame","_isNumber","n","isNaN","parseFloat","isFinite","_capitalize","str","charAt","toUpperCase","substring","_getter","booleanProps","numericProps","stringProps","props","getArgs","args","setArgs","v","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","getFunctionName","getFileName","getLineNumber","getColumnNumber","Boolean","j","Number","String","_$errorStackParser_31","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","error","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","indexOf","parts","exec","replace","split","filter","line","map","sanitizedLine","tokens","slice","locationParts","pop","functionName","fileName","lineNumber","columnNumber","functionNameRegex","matches","e","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","shift","_$errorStackParser_10","_$hasStack_18","err","_$iserror_19","isError","clear","state","section","_$metadataDelegate_22","add","keyOrObj","maybeVal","_updates","updates","get","_$stackGenerator_33","StackGenerator","backtrace","opts","maxStackSize","curr","callee","Array","RegExp","$1","caller","Event","errorClass","errorMessage","handledState","originalError","defaultHandledState","groupingHash","_handledState","severity","unhandled","app","device","request","breadcrumbs","_metadata","_user","_session","errors","ensureString","frame","formatStackframe","JSON","stringify","addMetadata","getMetadata","clearMetadata","getUser","setUser","id","email","payloadVersion","exceptions","er","severityReason","session","file","normaliseFunctionName","code","inProject","getStacktrace","errorFramesToSkip","backtraceFramesToSkip","create","maybeError","tolerateNonErrors","component","event","_normaliseError","normaliseError","internalFrames","makeSerialisable","createAndLogInputError","reason","warn","hasNecessaryFields","_$Event_6","_$syncCallbackRunner_23","callbacks","callbackArg","callbackType","ignore","cbs","_$pad_29","num","size","substr","env","globalCount","mimeTypesLength","navigator","mimeTypes","clientId","userAgent","_$fingerprint_28","c","blockSize","base","discreteValues","Math","pow","randomBlock","random","cuid","getTime","safeCounter","fingerprint","_$cuid_27","_$Session_35","Session","startedAt","_handled","_unhandled","events","handled","_track","noop","Client","configuration","internalPlugins","notifier","_this","_notifier","_config","_schema","_delivery","sendSession","sendEvent","_logger","info","_plugins","_breadcrumbs","_context","_cbs","sp","b","_configure","pl","_loadPlugin","_depth","apply","getContext","setContext","plugin","configSchema","_reduce","config","generateConfigErrorMessage","getPlugin","_setDelivery","d","startSession","version","_sessionDelegate","addOnError","front","removeOnError","_addOnSessionPayload","addOnSession","removeOnSession","addOnBreadcrumb","removeOnBreadcrumb","pauseSession","resumeSession","leaveBreadcrumb","crumb","cb","_notify","_this2","onCallbackError","index","next","originalSeverity","ret","then","setTimeout","shouldSend","rawInput","_$Client_4","_$safeJsonStringify_30","data","replacer","space","redactedPaths","prepareObjForSerialization","seen","edges","visit","path","edgesExceeded","MIN_PRESERVED_DEPTH","MAX_EDGES","MAX_DEPTH","REPLACEMENT_NODE","find","fResult","throwsMessage","o","eResult","aResult","isDescendent","shouldRedact","safelyGetProp","haystack","needle","paths","patterns","EVENT_REDACTION_PATHS","_$jsonPayload_21","payload","_$delivery_36","client","win","url","getApiUrl","req","XDomainRequest","onload","open","send","endpoint","isoDate","matchPageProtocol","protocol","encodeURIComponent","_matchPageProtocol","pageProtocol","_$delivery_37","XMLHttpRequest","onreadystatechange","readyState","DONE","setRequestHeader","toISOString","_$session_41","sessionDelegate","sessionClient","_pausedSession","_$clientIp_42","collectUserIp","clientIp","isDev","CONSOLE_LOG_METHODS","original","_len","_key","arg","stringified","_restore","_$inlineScriptContent_44","doc","document","trackInlineScripts","originalLocation","href","html","DOMContentLoaded","getHtml","documentElement","outerHTML","prev","_lastScript","updateLastScript","script","getCurrentScript","currentScript","scripts","getElementsByTagName","content","innerHTML","htmlLines","zeroBasedLine","start","end","addSurroundingCode","_setTimeout","__proxy","__traceOriginalScript","eventTargetCallbackAccessor","callbackAccessor","alsoCallOriginal","cba","__trace__","replacement","isEventHandlerObj","handleEvent","_$interactionBreadcrumbs_45","addEventListener","targetText","targetSelector","getNodeText","getNodeSelector","el","tagName","className","querySelectorAll","parentNode","childNodes","text","textContent","innerText","truncate","_$navigationBreadcrumbs_46","drop","oldURL","from","relativeLocation","to","newURL","getCurrentState","history","replaceState","wrapHistoryFn","pushState","a","createElement","pathname","search","hash","orig","title","currentPath","prevState","resetEventCount","BREADCRUMB_TYPE","REQUEST_URL_KEY","REQUEST_METHOD_KEY","_$throttle_48","maxEvents","strip","_$stripQueryString_49","allFrames","_strip","decorateStack","lineNo","charNo","culprit","isActualNumber","errorCharacter","fixBluebirdStacktrace","__schema_2","_client","createClient","nav","locale","browserLanguage","systemLanguage","userLanguage","language","time","prevOnError","onerror","messageOrEvent","detail","extraParameters","listener","evt","isBluebird","_event$addMetadata","onunhandledrejection","promise","_$unhandledRejection_51","_ignoredUrls","ignoredUrls","monkeyPatchXMLHttpRequest","nativeOpen","removeEventListener","handleXHRLoad","handleXHRError","monkeyPatchFetch","fetch","polyfill","oldFetch","_arguments","urlOrRequest","options","Promise","resolve","reject","response","handleFetchSuccess","handleFetchError","status","_$networkBreadcrumbs_47","_$consoleBreadcrumbs_43","bugsnag","m","_$notifier_2"],"mappings":"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","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;\n","module.exports = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual']\n","// Array#reduce\nmodule.exports = (arr, fn, accum) => {\n let val = accum\n for (let i = 0, len = arr.length; i < len; i++) val = fn(val, arr[i], i, arr)\n return val\n}\n","const reduce = require('./reduce')\n\n// Array#filter\nmodule.exports = (arr, fn) =>\n reduce(arr, (accum, item, i, arr) => !fn(item, i, arr) ? accum : accum.concat(item), [])\n","const reduce = require('./reduce')\n// Array#includes\nmodule.exports = (arr, x) =>\n reduce(arr, (accum, item, i, arr) => accum === true || item === x, false)\n","// Array#isArray\nmodule.exports = obj => Object.prototype.toString.call(obj) === '[object Array]'\n","/* eslint-disable-next-line no-prototype-builtins */\nconst _hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString')\nconst _dontEnums = [\n 'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty',\n 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'\n]\n\n// Object#keys\nmodule.exports = obj => {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n const result = []\n let prop\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop)\n }\n if (!_hasDontEnumBug) return result\n for (let i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i])\n }\n return result\n}\n","module.exports = (min = 1, max = Infinity) => value =>\n typeof value === 'number' &&\n parseInt('' + value, 10) === value &&\n value >= min && value <= max\n","const filter = require('../es-utils/filter')\nconst isArray = require('../es-utils/is-array')\n\nmodule.exports = value => typeof value === 'function' || (isArray(value) && filter(value, f => typeof f === 'function').length === value.length)\n","module.exports = value => typeof value === 'string' && !!value.length\n","const filter = require('./lib/es-utils/filter')\nconst reduce = require('./lib/es-utils/reduce')\nconst keys = require('./lib/es-utils/keys')\nconst isArray = require('./lib/es-utils/is-array')\nconst includes = require('./lib/es-utils/includes')\nconst intRange = require('./lib/validators/int-range')\nconst stringWithLength = require('./lib/validators/string-with-length')\nconst listOfFunctions = require('./lib/validators/list-of-functions')\n\nconst BREADCRUMB_TYPES = require('./lib/breadcrumb-types')\nconst defaultErrorTypes = () => ({ unhandledExceptions: true, unhandledRejections: true })\n\nmodule.exports.schema = {\n apiKey: {\n defaultValue: () => null,\n message: 'is required',\n validate: stringWithLength\n },\n appVersion: {\n defaultValue: () => undefined,\n message: 'should be a string',\n validate: value => value === undefined || stringWithLength(value)\n },\n appType: {\n defaultValue: () => undefined,\n message: 'should be a string',\n validate: value => value === undefined || stringWithLength(value)\n },\n autoDetectErrors: {\n defaultValue: () => true,\n message: 'should be true|false',\n validate: value => value === true || value === false\n },\n enabledErrorTypes: {\n defaultValue: () => defaultErrorTypes(),\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: value => {\n // ensure we have an object\n if (typeof value !== 'object' || !value) return false\n const providedKeys = keys(value)\n const defaultKeys = keys(defaultErrorTypes())\n // ensure it only has a subset of the allowed keys\n if (filter(providedKeys, k => includes(defaultKeys, k)).length < providedKeys.length) return false\n // ensure all of the values are boolean\n if (filter(keys(value), k => typeof value[k] !== 'boolean').length > 0) return false\n return true\n }\n },\n onError: {\n defaultValue: () => [],\n message: 'should be a function or array of functions',\n validate: listOfFunctions\n },\n onSession: {\n defaultValue: () => [],\n message: 'should be a function or array of functions',\n validate: listOfFunctions\n },\n onBreadcrumb: {\n defaultValue: () => [],\n message: 'should be a function or array of functions',\n validate: listOfFunctions\n },\n endpoints: {\n defaultValue: () => ({\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n }),\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: val =>\n // first, ensure it's an object\n (val && typeof val === 'object') &&\n (\n // notify and sessions must always be set\n stringWithLength(val.notify) && stringWithLength(val.sessions)\n ) &&\n // ensure no keys other than notify/session are set on endpoints object\n filter(keys(val), k => !includes(['notify', 'sessions'], k)).length === 0\n },\n autoTrackSessions: {\n defaultValue: val => true,\n message: 'should be true|false',\n validate: val => val === true || val === false\n },\n enabledReleaseStages: {\n defaultValue: () => null,\n message: 'should be an array of strings',\n validate: value => value === null || (isArray(value) && filter(value, f => typeof f === 'string').length === value.length)\n },\n releaseStage: {\n defaultValue: () => 'production',\n message: 'should be a string',\n validate: value => typeof value === 'string' && value.length\n },\n maxBreadcrumbs: {\n defaultValue: () => 25,\n message: 'should be a number ≤100',\n validate: value => intRange(0, 100)(value)\n },\n enabledBreadcrumbTypes: {\n defaultValue: () => BREADCRUMB_TYPES,\n message: `should be null or a list of available breadcrumb types (${BREADCRUMB_TYPES.join(',')})`,\n validate: value => value === null || (isArray(value) && reduce(value, (accum, maybeType) => {\n if (accum === false) return accum\n return includes(BREADCRUMB_TYPES, maybeType)\n }, true))\n },\n context: {\n defaultValue: () => undefined,\n message: 'should be a string',\n validate: value => value === undefined || typeof value === 'string'\n },\n user: {\n defaultValue: () => ({}),\n message: 'should be an object with { id, email, name } properties',\n validate: value =>\n (value === null) ||\n (value && reduce(\n keys(value),\n (accum, key) => accum && includes(['id', 'email', 'name'], key),\n true\n ))\n },\n metadata: {\n defaultValue: () => ({}),\n message: 'should be an object',\n validate: (value) => typeof value === 'object' && value !== null\n },\n logger: {\n defaultValue: () => undefined,\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: value =>\n (!value) ||\n (value && reduce(\n ['debug', 'info', 'warn', 'error'],\n (accum, method) => accum && typeof value[method] === 'function',\n true\n ))\n },\n redactedKeys: {\n defaultValue: () => ['password'],\n message: 'should be an array of strings|regexes',\n validate: value =>\n isArray(value) && value.length === filter(value, s =>\n (typeof s === 'string' || (s && typeof s.test === 'function'))\n ).length\n },\n plugins: {\n defaultValue: () => ([]),\n message: 'should be an array of plugin objects',\n validate: value =>\n isArray(value) && value.length === filter(value, p =>\n (p && typeof p === 'object' && typeof p.load === 'function')\n ).length\n }\n}\n","// extends helper from babel\n// https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\nmodule.exports = function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i]\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n return target\n}\n","const reduce = require('./reduce')\n\n// Array#map\nmodule.exports = (arr, fn) =>\n reduce(arr, (accum, item, i, arr) => accum.concat(fn(item, i, arr)), [])\n","const { schema } = require('@bugsnag/core/config')\nconst map = require('@bugsnag/core/lib/es-utils/map')\nconst assign = require('@bugsnag/core/lib/es-utils/assign')\n\nmodule.exports = {\n releaseStage: assign({}, schema.releaseStage, {\n defaultValue: () => {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development'\n return 'production'\n }\n }),\n logger: assign({}, schema.logger, {\n defaultValue: () =>\n // set logger based on browser capability\n (typeof console !== 'undefined' && typeof console.debug === 'function')\n ? getPrefixedConsole()\n : undefined\n })\n}\n\nconst getPrefixedConsole = () => {\n const logger = {}\n const consoleLog = console.log\n map(['debug', 'info', 'warn', 'error'], (method) => {\n const consoleMethod = console[method]\n logger[method] = typeof consoleMethod === 'function'\n ? consoleMethod.bind(console, '[bugsnag]')\n : consoleLog.bind(console, '[bugsnag]')\n })\n return logger\n}\n","class Breadcrumb {\n constructor (message, metadata, type, timestamp = new Date()) {\n this.type = type\n this.message = message\n this.metadata = metadata\n this.timestamp = timestamp\n }\n\n toJSON () {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n }\n }\n}\n\nmodule.exports = Breadcrumb\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n\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 this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var 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 StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\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\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","module.exports = require('error-stack-parser')\n","// Given `err` which may be an error, does it have a stack property which is a string?\nmodule.exports = err =>\n !!err &&\n (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) &&\n typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' &&\n err.stack !== `${err.name}: ${err.message}`\n","module.exports = require('iserror')\n","\n/**\n * Expose `isError`.\n */\n\nmodule.exports = isError;\n\n/**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\nfunction isError(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]': return true;\n case '[object Exception]': return true;\n case '[object DOMException]': return true;\n default: return value instanceof Error;\n }\n}\n","const assign = require('./es-utils/assign')\n\nconst add = (state, section, keyOrObj, maybeVal) => {\n if (!section) return\n let updates\n\n // addMetadata(\"section\", null) -> clears section\n if (keyOrObj === null) return clear(state, section)\n\n // normalise the two supported input types into object form\n if (typeof keyOrObj === 'object') updates = keyOrObj\n if (typeof keyOrObj === 'string') updates = { [keyOrObj]: maybeVal }\n\n // exit if we don't have an updates object at this point\n if (!updates) return\n\n // ensure a section with this name exists\n if (!state[section]) state[section] = {}\n\n // merge the updates with the existing section\n state[section] = assign({}, state[section], updates)\n}\n\nconst get = (state, section, key) => {\n if (typeof section !== 'string') return undefined\n if (!key) {\n return state[section]\n }\n if (state[section]) {\n return state[section][key]\n }\n return undefined\n}\n\nconst clear = (state, section, key) => {\n if (typeof section !== 'string') return\n\n // clear an entire section\n if (!key) {\n delete state[section]\n return\n }\n\n // clear a single value from a section\n if (state[section]) {\n delete state[section][key]\n }\n}\n\nmodule.exports = { add, get, clear }\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\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 while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n } else {\n stack.push(new StackFrame({args: args}));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n}));\n","const ErrorStackParser = require('./lib/error-stack-parser')\nconst StackGenerator = require('stack-generator')\nconst hasStack = require('./lib/has-stack')\nconst map = require('./lib/es-utils/map')\nconst reduce = require('./lib/es-utils/reduce')\nconst filter = require('./lib/es-utils/filter')\nconst assign = require('./lib/es-utils/assign')\nconst jsRuntime = require('./lib/js-runtime')\nconst metadataDelegate = require('./lib/metadata-delegate')\nconst isError = require('./lib/iserror')\n\nclass Event {\n constructor (errorClass, errorMessage, stacktrace = [], handledState = defaultHandledState(), originalError) {\n this.apiKey = undefined\n this.context = undefined\n this.groupingHash = undefined\n this.originalError = originalError\n\n this._handledState = handledState\n this.severity = this._handledState.severity\n this.unhandled = this._handledState.unhandled\n\n this.app = {}\n this.device = {}\n this.request = {}\n\n this.breadcrumbs = []\n\n this._metadata = {}\n this._user = {}\n this._session = undefined\n\n this.errors = [\n {\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type: jsRuntime,\n stacktrace: reduce(stacktrace, (accum, frame) => {\n const f = formatStackframe(frame)\n // don't include a stackframe if none of its properties are defined\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\n // 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 addMetadata (section, keyOrObj, maybeVal) {\n return metadataDelegate.add(this._metadata, section, keyOrObj, maybeVal)\n }\n\n getMetadata (section, key) {\n return metadataDelegate.get(this._metadata, section, key)\n }\n\n clearMetadata (section, key) {\n return metadataDelegate.clear(this._metadata, section, key)\n }\n\n getUser () {\n return this._user\n }\n\n setUser (id, email, name) {\n this._user = { id, email, name }\n }\n\n toJSON () {\n return {\n payloadVersion: '4',\n exceptions: map(this.errors, er => assign({}, er, { message: er.errorMessage })),\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 }\n }\n}\n\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)\nconst formatStackframe = frame => {\n const 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 }\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 if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code'\n }\n return f\n}\n\nconst normaliseFunctionName = name => /^global code$/i.test(name) ? 'global code' : name\n\nconst defaultHandledState = () => ({\n unhandled: false,\n severity: 'warning',\n severityReason: { type: 'handledException' }\n})\n\nconst ensureString = (str) => typeof str === 'string' ? str : ''\n\n// Helpers\n\nEvent.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (hasStack(error)) return ErrorStackParser.parse(error).slice(errorFramesToSkip)\n // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n try {\n return filter(StackGenerator.backtrace(), frame =>\n (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 = 0, logger) {\n const [error, internalFrames] = normaliseError(maybeError, tolerateNonErrors, component, logger)\n let event\n try {\n const stacktrace = Event.getStacktrace(\n error,\n // 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,\n // 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 )\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 if (error.name === 'InvalidError') {\n event.addMetadata(`${component}`, 'non-error parameter', makeSerialisable(maybeError))\n }\n return event\n}\n\nconst makeSerialisable = (err) => {\n if (err === null) return 'null'\n if (err === undefined) return 'undefined'\n return err\n}\n\nconst normaliseError = (maybeError, tolerateNonErrors, component, logger) => {\n let error\n let internalFrames = 0\n\n const createAndLogInputError = (reason) => {\n if (logger) logger.warn(`${component} received a non-error: \"${reason}\"`)\n const err = new Error(`${component} received a non-error. See \"${component}\" tab for more detail.`)\n err.name = 'InvalidError'\n return err\n }\n\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 if (!tolerateNonErrors) {\n if (isError(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 case 'function':\n error = createAndLogInputError('function')\n internalFrames += 2\n break\n case 'object':\n if (maybeError !== null && isError(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 break\n default:\n error = createAndLogInputError('nothing')\n internalFrames += 2\n }\n }\n\n if (!hasStack(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(e)) {\n error = e\n // 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 internalFrames = 1\n }\n }\n }\n\n return [error, internalFrames]\n}\n\nconst hasNecessaryFields = error =>\n (typeof error.name === 'string' || typeof error.errorClass === 'string') &&\n (typeof error.message === 'string' || typeof error.errorMessage === 'string')\n\nmodule.exports = Event\n","module.exports = process.env.IS_BROWSER\n ? 'browserjs'\n : ((typeof navigator !== 'undefined' && navigator.product === 'ReactNative')\n ? (typeof Expo !== 'undefined' ? 'expojs' : 'reactnativejs')\n : 'nodejs')\n","module.exports = (callbacks, callbackArg, callbackType, logger) => {\n let ignore = false\n const cbs = callbacks.slice()\n while (!ignore) {\n if (!cbs.length) break\n try {\n ignore = cbs.pop()(callbackArg) === false\n } catch (e) {\n logger.error(`Error occurred in ${callbackType} callback, continuing anyway…`)\n logger.error(e)\n }\n }\n return ignore\n}\n","module.exports = function pad (num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n","var pad = require('./pad.js');\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = 0;\nfor (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n}\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength +\n navigator.userAgent.length).toString(36) +\n globalCount.toString(36), 4);\n\nmodule.exports = function fingerprint () {\n return clientId;\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\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = 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((Math.random() *\n discreteValues << 0)\n .toString(base), blockSize);\n}\n\nfunction safeCounter () {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\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', // hard-coded allows for sequential access\n\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\n // Prevent same-machine collisions.\n counter = pad(safeCounter().toString(base), blockSize),\n\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(),\n\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n\n return letter + timestamp + counter + print + random;\n}\n\ncuid.fingerprint = fingerprint;\n\nmodule.exports = cuid;\n","const cuid = require('@bugsnag/cuid')\n\nclass Session {\n constructor () {\n this.id = cuid()\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 getUser () {\n return this._user\n }\n\n setUser (id, email, name) {\n this._user = { id, email, name }\n }\n\n toJSON () {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: { handled: this._handled, unhandled: this._unhandled }\n }\n }\n\n _track (event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1\n }\n}\n\nmodule.exports = Session\n","const config = require('./config')\nconst Event = require('./event')\nconst Breadcrumb = require('./breadcrumb')\nconst Session = require('./session')\nconst map = require('./lib/es-utils/map')\nconst includes = require('./lib/es-utils/includes')\nconst filter = require('./lib/es-utils/filter')\nconst reduce = require('./lib/es-utils/reduce')\nconst keys = require('./lib/es-utils/keys')\nconst assign = require('./lib/es-utils/assign')\nconst runCallbacks = require('./lib/callback-runner')\nconst metadataDelegate = require('./lib/metadata-delegate')\nconst runSyncCallbacks = require('./lib/sync-callback-runner')\nconst BREADCRUMB_TYPES = require('./lib/breadcrumb-types')\n\nconst noop = () => {}\n\nclass Client {\n constructor (configuration, schema = config.schema, internalPlugins = [], notifier) {\n // notifier id\n this._notifier = notifier\n\n // intialise opts and config\n this._config = {}\n this._schema = schema\n\n // i/o\n this._delivery = { sendSession: noop, sendEvent: noop }\n this._logger = { debug: noop, info: noop, warn: noop, error: noop }\n\n // plugins\n this._plugins = {}\n\n // state\n this._breadcrumbs = []\n this._session = null\n this._metadata = {}\n this._context = undefined\n this._user = {}\n\n // 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 this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n }\n\n // expose internal constructors\n this.Client = Client\n this.Event = Event\n this.Breadcrumb = Breadcrumb\n this.Session = Session\n\n this._config = this._configure(configuration, internalPlugins)\n map(internalPlugins.concat(this._config.plugins), pl => {\n if (pl) this._loadPlugin(pl)\n })\n\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 this._depth = 1\n\n const self = this\n const notify = this.notify\n this.notify = function () {\n return notify.apply(self, arguments)\n }\n }\n\n addMetadata (section, keyOrObj, maybeVal) {\n return metadataDelegate.add(this._metadata, section, keyOrObj, maybeVal)\n }\n\n getMetadata (section, key) {\n return metadataDelegate.get(this._metadata, section, key)\n }\n\n clearMetadata (section, key) {\n return metadataDelegate.clear(this._metadata, section, key)\n }\n\n getContext () {\n return this._context\n }\n\n setContext (c) {\n this._context = c\n }\n\n _configure (opts, internalPlugins) {\n const schema = reduce(internalPlugins, (schema, plugin) => {\n if (plugin && plugin.configSchema) return assign({}, schema, plugin.configSchema)\n return schema\n }, this._schema)\n\n // accumulate configuration and error messages\n const { errors, config } = reduce(keys(schema), (accum, key) => {\n const defaultValue = schema[key].defaultValue(opts[key])\n\n if (opts[key] !== undefined) {\n const valid = schema[key].validate(opts[key])\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(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 }, { errors: {}, 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')\n // warn about an apikey that is not of the expected format\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters'\n }\n\n // update and elevate some options\n this._metadata = assign({}, config.metadata)\n this._user = assign({}, config.user)\n this._context = config.context\n if (config.logger) this._logger = config.logger\n\n // add callbacks\n if (config.onError && config.onError.length) this._cbs.e = this._cbs.e.concat(config.onError)\n if (config.onBreadcrumb && config.onBreadcrumb.length) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb)\n if (config.onSession && config.onSession.length) this._cbs.s = this._cbs.s.concat(config.onSession)\n\n // finally warn about any invalid config where we fell back to the default\n if (keys(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts))\n }\n\n return config\n }\n\n getUser () {\n return this._user\n }\n\n setUser (id, email, name) {\n this._user = { id, email, name }\n }\n\n _loadPlugin (plugin) {\n const result = plugin.load(this)\n // 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 if (plugin.name) this._plugins[`~${plugin.name}~`] = result\n return this\n }\n\n getPlugin (name) {\n return this._plugins[`~${name}~`]\n }\n\n _setDelivery (d) {\n this._delivery = d(this)\n }\n\n startSession () {\n const session = new Session()\n\n session.app.releaseStage = this._config.releaseStage\n session.app.version = this._config.appVersion\n session.app.type = this._config.appType\n\n session._user = assign({}, this._user)\n\n // run onSession callbacks\n const ignore = runSyncCallbacks(this._cbs.s, session, 'onSession', this._logger)\n\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback')\n return this\n }\n return this._sessionDelegate.startSession(this, session)\n }\n\n addOnError (fn, front = false) {\n this._cbs.e[front ? 'unshift' : 'push'](fn)\n }\n\n removeOnError (fn) {\n this._cbs.e = filter(this._cbs.e, f => f !== fn)\n }\n\n _addOnSessionPayload (fn) {\n this._cbs.sp.push(fn)\n }\n\n addOnSession (fn) {\n this._cbs.s.push(fn)\n }\n\n removeOnSession (fn) {\n this._cbs.s = filter(this._cbs.s, f => f !== fn)\n }\n\n addOnBreadcrumb (fn) {\n this._cbs.b.push(fn)\n }\n\n removeOnBreadcrumb (fn) {\n this._cbs.b = filter(this._cbs.b, f => f !== fn)\n }\n\n pauseSession () {\n return this._sessionDelegate.pauseSession(this)\n }\n\n resumeSession () {\n return this._sessionDelegate.resumeSession(this)\n }\n\n 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(BREADCRUMB_TYPES, type)) ? type : 'manual'\n metadata = typeof metadata === 'object' && metadata !== null ? metadata : {}\n\n // if no message, discard\n if (!message) return\n\n const crumb = new Breadcrumb(message, metadata, type)\n\n // run onBreadcrumb callbacks\n const ignore = runSyncCallbacks(this._cbs.b, crumb, 'onBreadcrumb', this._logger)\n\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback')\n return\n }\n\n // push the valid crumb onto the queue and maintain the length\n this._breadcrumbs.push(crumb)\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs)\n }\n }\n\n notify (maybeError, onError, cb = noop) {\n const event = Event.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger)\n this._notify(event, onError, cb)\n }\n\n _notify (event, onError, cb = noop) {\n event.app = assign({}, 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({}, event._metadata, this._metadata)\n event._user = assign({}, event._user, this._user)\n event.breadcrumbs = this._breadcrumbs.slice()\n\n if (this._session) {\n this._session._track(event)\n event._session = this._session\n }\n\n // exit early if events should not be sent on the current releaseStage\n if (this._config.enabledReleaseStages !== null && !includes(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration')\n return cb(null, event)\n }\n\n const originalSeverity = event.severity\n\n const onCallbackError = err => {\n // errors in callbacks are tolerated but we want to log them out\n this._logger.error('Error occurred in onError callback, continuing anyway…')\n this._logger.error(err)\n }\n\n const callbacks = [].concat(this._cbs.e).concat(onError)\n runCallbacks(callbacks, event, onCallbackError, (err, shouldSend) => {\n if (err) onCallbackError(err)\n\n if (!shouldSend) {\n this._logger.debug('Event not sent due to onError callback')\n return cb(null, event)\n }\n\n if (includes(this._config.enabledBreadcrumbTypes, 'error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(this, 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 = { type: 'userCallbackSetSeverity' }\n }\n\n this._delivery.sendEvent({\n apiKey: event.apiKey || this._config.apiKey,\n notifier: this._notifier,\n events: [event]\n }, (err) => cb(err, event))\n })\n }\n}\n\nconst generateConfigErrorMessage = (errors, rawInput) => {\n const er = new Error(\n `Invalid configuration\\n${map(keys(errors), key => ` - ${key} ${errors[key]}, got ${stringify(rawInput[key])}`).join('\\n\\n')}`)\n return er\n}\n\nconst stringify = val => {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val)\n default: return String(val)\n }\n}\n\nmodule.exports = Client\n","const some = require('./async-every')\n\nmodule.exports = (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 const runMaybeAsyncCallback = (fn, cb) => {\n if (typeof fn !== 'function') return cb(null)\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n const ret = fn(event)\n // check if it returned a \"thenable\" (promise)\n if (ret && typeof ret.then === 'function') {\n return ret.then(\n // resolve\n val => setTimeout(() => cb(null, val)),\n // reject\n err => {\n setTimeout(() => {\n onCallbackError(err)\n return cb(null, true)\n })\n }\n )\n }\n return cb(null, ret)\n }\n // if function is async…\n fn(event, (err, result) => {\n if (err) {\n onCallbackError(err)\n return cb(null)\n }\n cb(null, result)\n })\n } catch (e) {\n onCallbackError(e)\n cb(null)\n }\n }\n\n some(callbacks, runMaybeAsyncCallback, cb)\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\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)\nmodule.exports = (arr, fn, cb) => {\n let index = 0\n\n const next = () => {\n if (index >= arr.length) return cb(null, true)\n fn(arr[index], (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","module.exports = 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(\n prepareObjForSerialization(data, redactedKeys, redactedPaths),\n replacer,\n space\n )\n}\n\nvar MAX_DEPTH = 20\nvar MAX_EDGES = 25000\nvar MIN_PRESERVED_DEPTH = 8\n\nvar REPLACEMENT_NODE = '...'\n\nfunction isError (o) {\n return o instanceof Error ||\n /^\\[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 return false\n}\n\n// returns true if the string `path` starts with any of the provided `paths`\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 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] === key) return true\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true\n }\n return false\n}\n\nfunction isArray (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 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\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\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 if (er) {\n edges--\n var eResult = visit({ name: obj.name, message: obj.message }, path)\n seen.pop()\n return eResult\n }\n\n if (isArray(obj)) {\n var aResult = []\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE)\n break\n }\n aResult.push(visit(obj[i], path.concat('[]')))\n }\n seen.pop()\n return aResult\n }\n\n var result = {}\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]'\n continue\n }\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE\n break\n }\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop))\n }\n } catch (e) {}\n seen.pop()\n return result\n }\n\n return visit(obj, [])\n}\n","const jsonStringify = require('@bugsnag/safe-json-stringify')\nconst EVENT_REDACTION_PATHS = [\n 'events.[].metaData',\n 'events.[].breadcrumbs.[].metaData',\n 'events.[].request'\n]\n\nmodule.exports.event = (event, redactedKeys) => {\n let payload = jsonStringify(event, null, null, { redactedPaths: EVENT_REDACTION_PATHS, redactedKeys })\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier:\n`WARNING!\nSerialized payload was ${payload.length / 10e5}MB (limit = 1MB)\nmetadata was removed`\n }\n payload = jsonStringify(event, null, null, { redactedPaths: EVENT_REDACTION_PATHS, redactedKeys })\n if (payload.length > 10e5) throw new Error('payload exceeded 1MB limit')\n }\n return payload\n}\n\nmodule.exports.session = (event, redactedKeys) => {\n const payload = jsonStringify(event, null, null)\n if (payload.length > 10e5) throw new Error('payload exceeded 1MB limit')\n return payload\n}\n","const payload = require('@bugsnag/core/lib/json-payload')\n\nmodule.exports = (client, win = window) => ({\n sendEvent: (event, cb = () => {}) => {\n const url = getApiUrl(client._config, 'notify', '4', win)\n const req = new win.XDomainRequest()\n req.onload = function () {\n cb(null)\n }\n req.open('POST', url)\n setTimeout(() => {\n try {\n req.send(payload.event(event, client._config.redactedKeys))\n } catch (e) {\n client._logger.error(e)\n cb(e)\n }\n }, 0)\n },\n sendSession: (session, cb = () => {}) => {\n const url = getApiUrl(client._config, 'sessions', '1', win)\n const req = new win.XDomainRequest()\n req.onload = function () {\n cb(null)\n }\n req.open('POST', url)\n setTimeout(() => {\n try {\n req.send(payload.session(session, client._config.redactedKeys))\n } catch (e) {\n client._logger.error(e)\n cb(e)\n }\n }, 0)\n }\n})\n\nconst getApiUrl = (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 const isoDate = JSON.parse(JSON.stringify(new Date()))\n const url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol)\n return `${url}?apiKey=${encodeURIComponent(config.apiKey)}&payloadVersion=${version}&sentAt=${encodeURIComponent(isoDate)}`\n}\n\nconst matchPageProtocol = module.exports._matchPageProtocol = (endpoint, pageProtocol) =>\n pageProtocol === 'http:'\n ? endpoint.replace(/^https:/, 'http:')\n : endpoint\n","const payload = require('@bugsnag/core/lib/json-payload')\n\nmodule.exports = (client, win = window) => ({\n sendEvent: (event, cb = () => {}) => {\n try {\n const url = client._config.endpoints.notify\n const req = new win.XMLHttpRequest()\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null)\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(payload.event(event, client._config.redactedKeys))\n } catch (e) {\n client._logger.error(e)\n }\n },\n sendSession: (session, cb = () => {}) => {\n try {\n const url = client._config.endpoints.sessions\n const req = new win.XMLHttpRequest()\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null)\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(payload.session(session, client._config.redactedKeys))\n } catch (e) {\n client._logger.error(e)\n }\n }\n})\n","const includes = require('@bugsnag/core/lib/es-utils/includes')\n\nmodule.exports = {\n load: client => { client._sessionDelegate = sessionDelegate }\n}\n\nconst sessionDelegate = {\n startSession: (client, session) => {\n const sessionClient = client\n sessionClient._session = session\n sessionClient._pausedSession = null\n\n // exit early if the current releaseStage is not enabled\n if (sessionClient._config.enabledReleaseStages !== null && !includes(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration')\n return sessionClient\n }\n\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [\n {\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }\n ]\n })\n return sessionClient\n },\n resumeSession: (client) => {\n if (client._pausedSession) {\n client._session = client._pausedSession\n client._pausedSession = null\n return client\n } else {\n return client.startSession()\n }\n },\n pauseSession: (client) => {\n client._pausedSession = client._session\n client._session = null\n }\n}\n","const assign = require('@bugsnag/core/lib/es-utils/assign')\n\n/*\n * Prevent collection of user IPs\n */\nmodule.exports = {\n load: (client) => {\n if (client._config.collectUserIp) return\n\n client.addOnError(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({ id: '[REDACTED]' }, event._user)\n event.request = assign({ clientIp: '[REDACTED]' }, event.request)\n })\n },\n configSchema: {\n collectUserIp: {\n defaultValue: () => true,\n message: 'should be true|false',\n validate: value => value === true || value === false\n }\n }\n}\n","const map = require('@bugsnag/core/lib/es-utils/map')\nconst reduce = require('@bugsnag/core/lib/es-utils/reduce')\nconst filter = require('@bugsnag/core/lib/es-utils/filter')\nconst includes = require('@bugsnag/core/lib/es-utils/includes')\n\n/*\n * Leaves breadcrumbs when console log methods are called\n */\nexports.load = (client) => {\n const isDev = /^dev(elopment)?$/.test(client._config.releaseStage)\n\n if (!client._config.enabledBreadcrumbTypes || !includes(client._config.enabledBreadcrumbTypes, 'log') || isDev) return\n\n map(CONSOLE_LOG_METHODS, method => {\n const original = console[method]\n console[method] = (...args) => {\n client.leaveBreadcrumb('Console output', reduce(args, (accum, arg, i) => {\n // do the best/simplest stringification of each argument\n let stringified = '[Unknown value]'\n // 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 try { stringified = String(arg) } catch (e) {}\n // if it stringifies to [object Object] attempt to JSON stringify\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try { stringified = JSON.stringify(arg) } catch (e) {}\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 console[method]._restore = () => { console[method] = original }\n })\n}\n\nif (process.env.NODE_ENV !== 'production') {\n exports.destroy = () => CONSOLE_LOG_METHODS.forEach(method => {\n if (typeof console[method]._restore === 'function') console[method]._restore()\n })\n}\n\nconst CONSOLE_LOG_METHODS = filter(['log', 'debug', 'info', 'warn', 'error'], method =>\n typeof console !== 'undefined' && typeof console[method] === 'function'\n)\n","const map = require('@bugsnag/core/lib/es-utils/map')\nconst reduce = require('@bugsnag/core/lib/es-utils/reduce')\nconst filter = require('@bugsnag/core/lib/es-utils/filter')\n\nconst MAX_LINE_LENGTH = 200\nconst MAX_SCRIPT_LENGTH = 500000\n\nmodule.exports = (doc = document, win = window) => ({\n load: (client) => {\n if (!client._config.trackInlineScripts) return\n\n const originalLocation = win.location.href\n let html = ''\n let DOMContentLoaded = false\n const getHtml = () => doc.documentElement.outerHTML\n\n // get whatever HTML exists at this point in time\n html = getHtml()\n const prev = doc.onreadystatechange\n // then update it when the DOM content has loaded\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml()\n DOMContentLoaded = true\n }\n try { prev.apply(this, arguments) } catch (e) {}\n }\n\n let _lastScript = null\n const updateLastScript = script => {\n _lastScript = script\n }\n\n const getCurrentScript = () => {\n let script = doc.currentScript || _lastScript\n if (!script && !DOMContentLoaded) {\n const scripts = doc.scripts || doc.getElementsByTagName('script')\n script = scripts[scripts.length - 1]\n }\n return script\n }\n\n const addSurroundingCode = lineNumber => {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml()\n // simulate the raw html\n const htmlLines = [''].concat(html.split('\\n'))\n const zeroBasedLine = lineNumber - 1\n const start = Math.max(zeroBasedLine - 3, 0)\n const end = Math.min(zeroBasedLine + 3, htmlLines.length)\n return reduce(htmlLines.slice(start, end), (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(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(event.errors[0].stacktrace, f => !(/__trace__$/.test(f.method)))\n\n const frame = event.errors[0].stacktrace[0]\n\n // if frame.file exists and is not the original location of the page, this can't be an inline script\n if (frame && frame.file && frame.file.replace(/#.*$/, '') !== originalLocation.replace(/#.*$/, '')) return\n\n // grab the last script known to have run\n const currentScript = getCurrentScript()\n if (currentScript) {\n const content = currentScript.innerHTML\n event.addMetadata(\n 'script',\n 'content',\n content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH)\n )\n }\n\n // only attempt to grab some surrounding code if we have a line number\n if (!frame || !frame.lineNumber) return\n frame.code = addSurroundingCode(frame.lineNumber)\n }, true)\n\n // 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 const [_setTimeout] = map([\n 'setTimeout',\n 'setInterval',\n 'setImmediate',\n 'requestAnimationFrame'\n ], fn =>\n __proxy(win, fn, original =>\n __traceOriginalScript(original, args => ({\n get: () => args[0],\n replace: fn => { args[0] = fn }\n }))\n )\n )\n\n // Proxy all the host objects whose prototypes have an addEventListener function\n map([\n 'EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode',\n 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase',\n 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow',\n 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList',\n 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'\n ], o => {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return\n __proxy(win[o].prototype, 'addEventListener', original =>\n __traceOriginalScript(original, eventTargetCallbackAccessor)\n )\n __proxy(win[o].prototype, 'removeEventListener', original =>\n __traceOriginalScript(original, eventTargetCallbackAccessor, true)\n )\n })\n\n function __traceOriginalScript (fn, callbackAccessor, alsoCallOriginal = false) {\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 const args = [].slice.call(arguments)\n try {\n const cba = callbackAccessor(args)\n const cb = cba.get()\n if (alsoCallOriginal) fn.apply(this, args)\n if (typeof cb !== 'function') return fn.apply(this, args)\n if (cb.__trace__) {\n cba.replace(cb.__trace__)\n } else {\n const script = getCurrentScript()\n // 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 cb.__trace__ = function __trace__ () {\n // set the script that called this function\n updateLastScript(script)\n // 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 _setTimeout(function () { updateLastScript(null) }, 0)\n const ret = cb.apply(this, arguments)\n updateLastScript(null)\n return ret\n }\n cb.__trace__.__trace__ = cb.__trace__\n cba.replace(cb.__trace__)\n }\n } catch (e) {\n // swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n }\n // IE8 doesn't let you call .apply() on setTimeout/setInterval\n if (fn.apply) return fn.apply(this, args)\n switch (args.length) {\n case 1: return fn(args[0])\n case 2: return fn(args[0], args[1])\n default: return fn()\n }\n }\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: value => value === true || value === false,\n defaultValue: () => true,\n message: 'should be true|false'\n }\n }\n})\n\nfunction __proxy (host, name, replacer) {\n const original = host[name]\n if (!original) return original\n const replacement = replacer(original)\n host[name] = replacement\n return original\n}\n\nfunction eventTargetCallbackAccessor (args) {\n const 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","const includes = require('@bugsnag/core/lib/es-utils/includes')\n\n/*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\nmodule.exports = (win = window) => ({\n load: (client) => {\n if (!('addEventListener' in win)) return\n\n if (!client._config.enabledBreadcrumbTypes || !includes(client._config.enabledBreadcrumbTypes, 'user')) return\n\n win.addEventListener('click', (event) => {\n let targetText, targetSelector\n try {\n targetText = getNodeText(event.target)\n targetSelector = getNodeSelector(event.target, win)\n } catch (e) {\n targetText = '[hidden]'\n targetSelector = '[hidden]'\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z')\n }\n client.leaveBreadcrumb('UI click', { targetText, targetSelector }, 'user')\n }, true)\n }\n})\n\n// extract text content from a element\nconst getNodeText = el => {\n let 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 return truncate(text, 140)\n}\n\n// Create a label from tagname, id and css class of the element\nfunction getNodeSelector (el, win) {\n const parts = [el.tagName]\n if (el.id) parts.push('#' + el.id)\n if (el.className && el.className.length) parts.push(`.${el.className.split(' ').join('.')}`)\n // Can't get much more advanced with the current browser\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('')\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 }\n // try to get a more specific selector if this one matches more than one element\n if (el.parentNode.childNodes.length > 1) {\n const index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1\n parts.push(`:nth-child(${index})`)\n }\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('')\n // try prepending the parent node selector\n if (el.parentNode) return `${getNodeSelector(el.parentNode, win)} > ${parts.join('')}`\n return parts.join('')\n}\n\nfunction truncate (value, length) {\n const ommision = '(...)'\n if (value && value.length <= length) return value\n return value.slice(0, length - ommision.length) + ommision\n}\n","const includes = require('@bugsnag/core/lib/es-utils/includes')\n\n/*\n* Leaves breadcrumbs when navigation methods are called or events are emitted\n*/\nmodule.exports = (win = window) => {\n const plugin = {\n load: (client) => {\n if (!('addEventListener' in win)) return\n\n if (!client._config.enabledBreadcrumbTypes || !includes(client._config.enabledBreadcrumbTypes, 'navigation')) return\n\n // returns a function that will drop a breadcrumb with a given name\n const drop = name => () => client.leaveBreadcrumb(name, {}, 'navigation')\n\n // simple drops – just names, no meta\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)\n // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n win.addEventListener('load', () => win.addEventListener('popstate', drop('Navigated back'), true))\n\n // hashchange has some metadata that we care about\n win.addEventListener('hashchange', event => {\n const metadata = event.oldURL\n ? { from: relativeLocation(event.oldURL, win), to: relativeLocation(event.newURL, win), state: getCurrentState(win) }\n : { to: relativeLocation(win.location.href, win) }\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation')\n }, true)\n\n // 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 client.leaveBreadcrumb('Bugsnag loaded', {}, 'navigation')\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n plugin.destroy = (win = window) => {\n win.history.replaceState._restore()\n win.history.pushState._restore()\n }\n }\n\n return plugin\n}\n\nif (process.env.NODE_ENV !== 'production') {\n exports.destroy = (win = window) => {\n win.history.replaceState._restore()\n win.history.pushState._restore()\n }\n}\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\nconst relativeLocation = (url, win) => {\n const a = win.document.createElement('A')\n a.href = url\n return `${a.pathname}${a.search}${a.hash}`\n}\n\nconst stateChangeToMetadata = (win, state, title, url) => {\n const currentPath = relativeLocation(win.location.href, win)\n return { title, state, prevState: getCurrentState(win), to: url || currentPath, from: currentPath }\n}\n\nconst wrapHistoryFn = (client, target, fn, win) => {\n const orig = target[fn]\n target[fn] = (state, title, url) => {\n client.leaveBreadcrumb(`History ${fn}`, stateChangeToMetadata(win, state, title, url), 'navigation')\n // if throttle plugin is in use, reset the event sent count\n if (typeof client.resetEventCount === 'function') client.resetEventCount()\n // if the client is operating in auto session-mode, a new route should trigger a new session\n if (client._config.autoTrackSessions) client.startSession()\n // 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 orig.apply(target, [state, title].concat(url !== undefined ? url : []))\n }\n if (process.env.NODE_ENV !== 'production') {\n target[fn]._restore = () => { target[fn] = orig }\n }\n}\n\nconst getCurrentState = (win) => {\n try {\n return win.history.state\n } catch (e) {}\n}\n","const BREADCRUMB_TYPE = 'request'\n\n// keys to safely store metadata on the request object\nconst REQUEST_SETUP_KEY = 'BS~~S'\nconst REQUEST_URL_KEY = 'BS~~U'\nconst REQUEST_METHOD_KEY = 'BS~~M'\n\nconst includes = require('@bugsnag/core/lib/es-utils/includes')\n\n/*\n * Leaves breadcrumbs when network requests occur\n */\nmodule.exports = (_ignoredUrls = [], win = window) => {\n let restoreFunctions = []\n const plugin = {\n load: client => {\n if (!client._config.enabledBreadcrumbTypes || !includes(client._config.enabledBreadcrumbTypes, 'request')) return\n\n const ignoredUrls = [\n client._config.endpoints.notify,\n client._config.endpoints.sessions\n ].concat(_ignoredUrls)\n\n monkeyPatchXMLHttpRequest()\n monkeyPatchFetch()\n\n // XMLHttpRequest monkey patch\n function monkeyPatchXMLHttpRequest () {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return\n const nativeOpen = win.XMLHttpRequest.prototype.open\n\n // override native open()\n win.XMLHttpRequest.prototype.open = function open (method, url) {\n // store url and HTTP method for later\n this[REQUEST_URL_KEY] = url\n this[REQUEST_METHOD_KEY] = method\n\n // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n if (this[REQUEST_SETUP_KEY]) {\n this.removeEventListener('load', handleXHRLoad)\n this.removeEventListener('error', handleXHRError)\n }\n\n // attach load event listener\n this.addEventListener('load', handleXHRLoad)\n // attach error event listener\n this.addEventListener('error', handleXHRError)\n\n this[REQUEST_SETUP_KEY] = true\n\n nativeOpen.apply(this, arguments)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n restoreFunctions.push(() => {\n win.XMLHttpRequest.prototype.open = nativeOpen\n })\n }\n }\n\n function handleXHRLoad () {\n if (includes(ignoredUrls, this[REQUEST_URL_KEY])) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return\n }\n const metadata = {\n status: this.status,\n request: `${this[REQUEST_METHOD_KEY]} ${this[REQUEST_URL_KEY]}`\n }\n if (this.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 () {\n if (includes(ignoredUrls, this[REQUEST_URL_KEY])) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return\n }\n // failed to contact server\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: `${this[REQUEST_METHOD_KEY]} ${this[REQUEST_URL_KEY]}`\n }, BREADCRUMB_TYPE)\n }\n\n // window.fetch monkey patch\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\n const oldFetch = win.fetch\n win.fetch = function fetch () {\n const urlOrRequest = arguments[0]\n const options = arguments[1]\n\n let method\n let url = null\n\n if (urlOrRequest && typeof urlOrRequest === 'object') {\n url = urlOrRequest.url\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 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((resolve, reject) => {\n // pass through to native fetch\n oldFetch(...arguments)\n .then(response => {\n handleFetchSuccess(response, method, url)\n resolve(response)\n })\n .catch(error => {\n handleFetchError(method, url)\n reject(error)\n })\n })\n }\n\n if (process.env.NODE_ENV !== 'production') {\n restoreFunctions.push(() => {\n win.fetch = oldFetch\n })\n }\n }\n\n const handleFetchSuccess = (response, method, url) => {\n const metadata = {\n status: response.status,\n request: `${method} ${url}`\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 const handleFetchError = (method, url) => {\n client.leaveBreadcrumb('fetch() error', { request: `${method} ${url}` }, BREADCRUMB_TYPE)\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n plugin.destroy = () => {\n restoreFunctions.forEach(fn => fn())\n restoreFunctions = []\n }\n }\n\n return plugin\n}\n","const intRange = require('@bugsnag/core/lib/validators/int-range')\n\n/*\n * Throttles and dedupes events\n */\n\nmodule.exports = {\n load: (client) => {\n // track sent events for each init of the plugin\n let n = 0\n\n // add onError hook\n client.addOnError((event) => {\n // have max events been sent already?\n if (n >= client._config.maxEvents) return false\n n++\n })\n\n client.resetEventCount = () => { n = 0 }\n },\n configSchema: {\n maxEvents: {\n defaultValue: () => 10,\n message: 'should be a positive integer ≤100',\n validate: val => intRange(1, 100)(val)\n }\n }\n}\n","/*\n * Remove query strings (and fragments) from stacktraces\n */\nconst map = require('@bugsnag/core/lib/es-utils/map')\nconst reduce = require('@bugsnag/core/lib/es-utils/reduce')\n\nmodule.exports = {\n load: (client) => {\n client.addOnError(event => {\n const allFrames = reduce(event.errors, (accum, er) => accum.concat(er.stacktrace), [])\n map(allFrames, frame => {\n frame.file = strip(frame.file)\n })\n })\n }\n}\n\nconst strip = module.exports._strip = str =>\n typeof str === 'string'\n ? str.replace(/\\?.*$/, '').replace(/#.*$/, '')\n : str\n","/*\n * Automatically notifies Bugsnag when window.onerror is called\n */\n\nmodule.exports = (win = window) => ({\n load: (client) => {\n if (!client._config.autoDetectErrors) return\n if (!client._config.enabledErrorTypes.unhandledExceptions) return\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 const handledState = { severity: 'error', unhandled: true, severityReason: { type: 'unhandledException' } }\n\n let event\n\n // 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, 'window onerror', 1)\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo)\n } else if (\n // 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) &&\n (!url || typeof url !== 'string') &&\n !lineNo && !charNo && !error\n ) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n const name = messageOrEvent.type ? `Event: ${messageOrEvent.type}` : 'Error'\n // 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 const message = messageOrEvent.message || messageOrEvent.detail || ''\n\n event = client.Event.create({ name, message }, true, handledState, 'window onerror', 1)\n\n // provide the original thing onerror received – not our error-like object we passed to _notify\n event.originalError = messageOrEvent\n\n // include the raw input as metadata – it might contain more info than we extracted\n event.addMetadata('window onerror', { event: messageOrEvent, extraParameters: url })\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, 'window onerror', 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 const prevOnError = win.onerror\n win.onerror = onerror\n }\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.\nconst decorateStack = (stack, url, lineNo, charNo) => {\n if (!stack[0]) stack.push({})\n const culprit = stack[0]\n if (!culprit.file && typeof url === 'string') culprit.file = url\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo\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\nconst isActualNumber = (n) => typeof n === 'number' && String.call(n) !== 'NaN'\n","const map = require('@bugsnag/core/lib/es-utils/map')\nconst isError = require('@bugsnag/core/lib/iserror')\n\nlet _listener\n/*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\nmodule.exports = (win = window) => {\n const plugin = {\n load: (client) => {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return\n const listener = evt => {\n let error = evt.reason\n let isBluebird = false\n\n // accessing properties on evt.detail can throw errors (see #394)\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason\n isBluebird = true\n }\n } catch (e) {}\n\n const event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: { type: 'unhandledPromiseRejection' }\n }, 'unhandledrejection handler', 1, client._logger)\n\n if (isBluebird) {\n map(event.errors[0].stacktrace, fixBluebirdStacktrace(error))\n }\n\n client._notify(event, (event) => {\n if (isError(event.originalError) && !event.originalError.stack) {\n event.addMetadata('unhandledRejection handler', {\n [Object.prototype.toString.call(event.originalError)]: {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }\n })\n }\n })\n }\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener)\n } else {\n win.onunhandledrejection = (reason, promise) => {\n listener({ detail: { reason, promise } })\n }\n }\n _listener = listener\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n plugin.destroy = (win = window) => {\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener)\n } else {\n win.onunhandledrejection = null\n }\n }\n _listener = null\n }\n }\n\n return plugin\n}\n\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\nconst fixBluebirdStacktrace = (error) => (frame) => {\n if (frame.file === error.toString()) return\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '')\n }\n}\n","const name = 'Bugsnag JavaScript'\nconst version = '7.0.1'\nconst url = 'https://github.com/bugsnag/bugsnag-js'\n\nconst Client = require('@bugsnag/core/client')\nconst Event = require('@bugsnag/core/event')\nconst Session = require('@bugsnag/core/session')\nconst Breadcrumb = require('@bugsnag/core/breadcrumb')\n\nconst map = require('@bugsnag/core/lib/es-utils/map')\nconst keys = require('@bugsnag/core/lib/es-utils/keys')\nconst assign = require('@bugsnag/core/lib/es-utils/assign')\n\n// extend the base config schema with some browser-specific options\nconst schema = assign({}, require('@bugsnag/core/config').schema, require('./config'))\n\nconst pluginWindowOnerror = require('@bugsnag/plugin-window-onerror')\nconst pluginUnhandledRejection = require('@bugsnag/plugin-window-unhandled-rejection')\nconst pluginDevice = require('@bugsnag/plugin-browser-device')\nconst pluginContext = require('@bugsnag/plugin-browser-context')\nconst pluginRequest = require('@bugsnag/plugin-browser-request')\nconst pluginThrottle = require('@bugsnag/plugin-simple-throttle')\nconst pluginConsoleBreadcrumbs = require('@bugsnag/plugin-console-breadcrumbs')\nconst pluginNetworkBreadcrumbs = require('@bugsnag/plugin-network-breadcrumbs')\nconst pluginNavigationBreadcrumbs = require('@bugsnag/plugin-navigation-breadcrumbs')\nconst pluginInteractionBreadcrumbs = require('@bugsnag/plugin-interaction-breadcrumbs')\nconst pluginInlineScriptContent = require('@bugsnag/plugin-inline-script-content')\nconst pluginSession = require('@bugsnag/plugin-browser-session')\nconst pluginIp = require('@bugsnag/plugin-client-ip')\nconst pluginStripQueryString = require('@bugsnag/plugin-strip-query-string')\n\n// delivery mechanisms\nconst dXDomainRequest = require('@bugsnag/delivery-x-domain-request')\nconst dXMLHttpRequest = require('@bugsnag/delivery-xml-http-request')\n\nconst Bugsnag = {\n _client: null,\n createClient: (opts) => {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = { apiKey: opts }\n if (!opts) opts = {}\n\n const internalPlugins = [\n // add browser-specific plugins\n pluginDevice(),\n pluginContext(),\n pluginRequest(),\n pluginThrottle,\n pluginSession,\n pluginIp,\n pluginStripQueryString,\n pluginWindowOnerror(),\n pluginUnhandledRejection(),\n pluginNavigationBreadcrumbs(),\n pluginInteractionBreadcrumbs(),\n pluginNetworkBreadcrumbs(),\n pluginConsoleBreadcrumbs,\n\n // this one added last to avoid wrapping functionality before bugsnag uses it\n pluginInlineScriptContent()\n ]\n\n // configure a client with user supplied options\n const bugsnag = new Client(opts, schema, internalPlugins, { name, version, url })\n\n // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n bugsnag._setDelivery(window.XDomainRequest ? dXDomainRequest : dXMLHttpRequest)\n\n bugsnag._logger.debug('Loaded!')\n\n return bugsnag._config.autoTrackSessions\n ? bugsnag.startSession()\n : bugsnag\n },\n start: (opts) => {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.')\n return Bugsnag._client\n }\n Bugsnag._client = Bugsnag.createClient(opts)\n return Bugsnag._client\n }\n}\n\nmap(['resetEventCount'].concat(keys(Client.prototype)), (m) => {\n if (/^_/.test(m)) return\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(`Bugsnag.${m}() was called before Bugsnag.start()`)\n Bugsnag._client._depth += 1\n const ret = Bugsnag._client[m].apply(Bugsnag._client, arguments)\n Bugsnag._client._depth -= 1\n return ret\n }\n})\n\nmodule.exports = Bugsnag\n\nmodule.exports.Client = Client\nmodule.exports.Event = Event\nmodule.exports.Session = Session\nmodule.exports.Breadcrumb = Breadcrumb\n\n// Export a \"default\" property for compatibility with ESM imports\nmodule.exports.default = Bugsnag\n","const assign = require('@bugsnag/core/lib/es-utils/assign')\n\n/*\n * Sets the event request: { url } to be the current href\n */\nmodule.exports = (win = window) => ({\n load: (client) => {\n client.addOnError(event => {\n if (event.request && event.request.url) return\n event.request = assign({}, event.request, { url: win.location.href })\n }, true)\n }\n})\n","/*\n * Sets the default context to be the current URL\n */\nmodule.exports = (win = window) => ({\n load: (client) => {\n client.addOnError(event => {\n if (event.context !== undefined) return\n event.context = win.location.pathname\n }, true)\n }\n})\n","const assign = require('@bugsnag/core/lib/es-utils/assign')\n\n/*\n * Automatically detects browser device details\n */\nmodule.exports = (nav = navigator) => ({\n load: (client) => {\n const device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n }\n\n client.addOnSession(session => {\n session.device = assign({}, session.device, device)\n })\n\n // add time just as the event is sent\n client.addOnError((event) => {\n event.device = assign({},\n event.device,\n device,\n { time: new Date() }\n )\n }, true)\n }\n})\n","\nreturn _$notifier_2;\n\n});\n"]}